增加初始版本
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..62fbfa9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,1050 @@
+

+                                 Apache License

+                           Version 2.0, January 2004

+                        http://www.apache.org/licenses/

+

+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+   1. Definitions.

+

+      "License" shall mean the terms and conditions for use, reproduction,

+      and distribution as defined by Sections 1 through 9 of this document.

+

+      "Licensor" shall mean the copyright owner or entity authorized by

+      the copyright owner that is granting the License.

+

+      "Legal Entity" shall mean the union of the acting entity and all

+      other entities that control, are controlled by, or are under common

+      control with that entity. For the purposes of this definition,

+      "control" means (i) the power, direct or indirect, to cause the

+      direction or management of such entity, whether by contract or

+      otherwise, or (ii) ownership of fifty percent (50%) or more of the

+      outstanding shares, or (iii) beneficial ownership of such entity.

+

+      "You" (or "Your") shall mean an individual or Legal Entity

+      exercising permissions granted by this License.

+

+      "Source" form shall mean the preferred form for making modifications,

+      including but not limited to software source code, documentation

+      source, and configuration files.

+

+      "Object" form shall mean any form resulting from mechanical

+      transformation or translation of a Source form, including but

+      not limited to compiled object code, generated documentation,

+      and conversions to other media types.

+

+      "Work" shall mean the work of authorship, whether in Source or

+      Object form, made available under the License, as indicated by a

+      copyright notice that is included in or attached to the work

+      (an example is provided in the Appendix below).

+

+      "Derivative Works" shall mean any work, whether in Source or Object

+      form, that is based on (or derived from) the Work and for which the

+      editorial revisions, annotations, elaborations, or other modifications

+      represent, as a whole, an original work of authorship. For the purposes

+      of this License, Derivative Works shall not include works that remain

+      separable from, or merely link (or bind by name) to the interfaces of,

+      the Work and Derivative Works thereof.

+

+      "Contribution" shall mean any work of authorship, including

+      the original version of the Work and any modifications or additions

+      to that Work or Derivative Works thereof, that is intentionally

+      submitted to Licensor for inclusion in the Work by the copyright owner

+      or by an individual or Legal Entity authorized to submit on behalf of

+      the copyright owner. For the purposes of this definition, "submitted"

+      means any form of electronic, verbal, or written communication sent

+      to the Licensor or its representatives, including but not limited to

+      communication on electronic mailing lists, source code control systems,

+      and issue tracking systems that are managed by, or on behalf of, the

+      Licensor for the purpose of discussing and improving the Work, but

+      excluding communication that is conspicuously marked or otherwise

+      designated in writing by the copyright owner as "Not a Contribution."

+

+      "Contributor" shall mean Licensor and any individual or Legal Entity

+      on behalf of whom a Contribution has been received by Licensor and

+      subsequently incorporated within the Work.

+

+   2. Grant of Copyright License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      copyright license to reproduce, prepare Derivative Works of,

+      publicly display, publicly perform, sublicense, and distribute the

+      Work and such Derivative Works in Source or Object form.

+

+   3. Grant of Patent License. Subject to the terms and conditions of

+      this License, each Contributor hereby grants to You a perpetual,

+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable

+      (except as stated in this section) patent license to make, have made,

+      use, offer to sell, sell, import, and otherwise transfer the Work,

+      where such license applies only to those patent claims licensable

+      by such Contributor that are necessarily infringed by their

+      Contribution(s) alone or by combination of their Contribution(s)

+      with the Work to which such Contribution(s) was submitted. If You

+      institute patent litigation against any entity (including a

+      cross-claim or counterclaim in a lawsuit) alleging that the Work

+      or a Contribution incorporated within the Work constitutes direct

+      or contributory patent infringement, then any patent licenses

+      granted to You under this License for that Work shall terminate

+      as of the date such litigation is filed.

+

+   4. Redistribution. You may reproduce and distribute copies of the

+      Work or Derivative Works thereof in any medium, with or without

+      modifications, and in Source or Object form, provided that You

+      meet the following conditions:

+

+      (a) You must give any other recipients of the Work or

+          Derivative Works a copy of this License; and

+

+      (b) You must cause any modified files to carry prominent notices

+          stating that You changed the files; and

+

+      (c) You must retain, in the Source form of any Derivative Works

+          that You distribute, all copyright, patent, trademark, and

+          attribution notices from the Source form of the Work,

+          excluding those notices that do not pertain to any part of

+          the Derivative Works; and

+

+      (d) If the Work includes a "NOTICE" text file as part of its

+          distribution, then any Derivative Works that You distribute must

+          include a readable copy of the attribution notices contained

+          within such NOTICE file, excluding those notices that do not

+          pertain to any part of the Derivative Works, in at least one

+          of the following places: within a NOTICE text file distributed

+          as part of the Derivative Works; within the Source form or

+          documentation, if provided along with the Derivative Works; or,

+          within a display generated by the Derivative Works, if and

+          wherever such third-party notices normally appear. The contents

+          of the NOTICE file are for informational purposes only and

+          do not modify the License. You may add Your own attribution

+          notices within Derivative Works that You distribute, alongside

+          or as an addendum to the NOTICE text from the Work, provided

+          that such additional attribution notices cannot be construed

+          as modifying the License.

+

+      You may add Your own copyright statement to Your modifications and

+      may provide additional or different license terms and conditions

+      for use, reproduction, or distribution of Your modifications, or

+      for any such Derivative Works as a whole, provided Your use,

+      reproduction, and distribution of the Work otherwise complies with

+      the conditions stated in this License.

+

+   5. Submission of Contributions. Unless You explicitly state otherwise,

+      any Contribution intentionally submitted for inclusion in the Work

+      by You to the Licensor shall be under the terms and conditions of

+      this License, without any additional terms or conditions.

+      Notwithstanding the above, nothing herein shall supersede or modify

+      the terms of any separate license agreement you may have executed

+      with Licensor regarding such Contributions.

+

+   6. Trademarks. This License does not grant permission to use the trade

+      names, trademarks, service marks, or product names of the Licensor,

+      except as required for reasonable and customary use in describing the

+      origin of the Work and reproducing the content of the NOTICE file.

+

+   7. Disclaimer of Warranty. Unless required by applicable law or

+      agreed to in writing, Licensor provides the Work (and each

+      Contributor provides its Contributions) on an "AS IS" BASIS,

+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

+      implied, including, without limitation, any warranties or conditions

+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

+      PARTICULAR PURPOSE. You are solely responsible for determining the

+      appropriateness of using or redistributing the Work and assume any

+      risks associated with Your exercise of permissions under this License.

+

+   8. Limitation of Liability. In no event and under no legal theory,

+      whether in tort (including negligence), contract, or otherwise,

+      unless required by applicable law (such as deliberate and grossly

+      negligent acts) or agreed to in writing, shall any Contributor be

+      liable to You for damages, including any direct, indirect, special,

+      incidental, or consequential damages of any character arising as a

+      result of this License or out of the use or inability to use the

+      Work (including but not limited to damages for loss of goodwill,

+      work stoppage, computer failure or malfunction, or any and all

+      other commercial damages or losses), even if such Contributor

+      has been advised of the possibility of such damages.

+

+   9. Accepting Warranty or Additional Liability. While redistributing

+      the Work or Derivative Works thereof, You may choose to offer,

+      and charge a fee for, acceptance of support, warranty, indemnity,

+      or other liability obligations and/or rights consistent with this

+      License. However, in accepting such obligations, You may act only

+      on Your own behalf and on Your sole responsibility, not on behalf

+      of any other Contributor, and only if You agree to indemnify,

+      defend, and hold each Contributor harmless for any liability

+      incurred by, or claims asserted against, such Contributor by reason

+      of your accepting any such warranty or additional liability.

+

+   END OF TERMS AND CONDITIONS

+

+   APPENDIX: How to apply the Apache License to your work.

+

+      To apply the Apache License to your work, attach the following

+      boilerplate notice, with the fields enclosed by brackets "[]"

+      replaced with your own identifying information. (Don't include

+      the brackets!)  The text should be enclosed in the appropriate

+      comment syntax for the file format. We also recommend that a

+      file or class name and description of purpose be included on the

+      same "printed page" as the copyright notice for easier

+      identification within third-party archives.

+

+   Copyright [yyyy] [name of copyright owner]

+

+   Licensed under the Apache License, Version 2.0 (the "License");

+   you may not use this file except in compliance with the License.

+   You may obtain a copy of the License at

+

+       http://www.apache.org/licenses/LICENSE-2.0

+

+   Unless required by applicable law or agreed to in writing, software

+   distributed under the License is distributed on an "AS IS" BASIS,

+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+   See the License for the specific language governing permissions and

+   limitations under the License.

+

+

+

+APACHE TOMCAT SUBCOMPONENTS:

+

+Apache Tomcat includes a number of subcomponents with separate copyright notices

+and license terms. Your use of these subcomponents is subject to the terms and

+conditions of the following licenses.

+

+

+For the ecj-x.x.x.jar component:

+

+Eclipse Public License - v 1.0

+

+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC

+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM

+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

+

+1. DEFINITIONS

+

+"Contribution" means:

+

+a) in the case of the initial Contributor, the initial code and documentation

+distributed under this Agreement, and

+

+b) in the case of each subsequent Contributor:

+

+i) changes to the Program, and

+

+ii) additions to the Program;

+

+where such changes and/or additions to the Program originate from and are

+distributed by that particular Contributor. A Contribution 'originates' from a

+Contributor if it was added to the Program by such Contributor itself or anyone

+acting on such Contributor's behalf. Contributions do not include additions to

+the Program which: (i) are separate modules of software distributed in

+conjunction with the Program under their own license agreement, and (ii) are not

+derivative works of the Program.

+

+"Contributor" means any person or entity that distributes the Program.

+

+"Licensed Patents" mean patent claims licensable by a Contributor which are

+necessarily infringed by the use or sale of its Contribution alone or when

+combined with the Program.

+

+"Program" means the Contributions distributed in accordance with this Agreement.

+

+"Recipient" means anyone who receives the Program under this Agreement,

+including all Contributors.

+

+2. GRANT OF RIGHTS

+

+a) Subject to the terms of this Agreement, each Contributor hereby grants

+Recipient a non-exclusive, worldwide, royalty-free copyright license to

+reproduce, prepare derivative works of, publicly display, publicly perform,

+distribute and sublicense the Contribution of such Contributor, if any, and such

+derivative works, in source code and object code form.

+

+b) Subject to the terms of this Agreement, each Contributor hereby grants

+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed

+Patents to make, use, sell, offer to sell, import and otherwise transfer the

+Contribution of such Contributor, if any, in source code and object code form.

+This patent license shall apply to the combination of the Contribution and the

+Program if, at the time the Contribution is added by the Contributor, such

+addition of the Contribution causes such combination to be covered by the

+Licensed Patents. The patent license shall not apply to any other combinations

+which include the Contribution. No hardware per se is licensed hereunder.

+

+c) Recipient understands that although each Contributor grants the licenses to

+its Contributions set forth herein, no assurances are provided by any

+Contributor that the Program does not infringe the patent or other intellectual

+property rights of any other entity. Each Contributor disclaims any liability to

+Recipient for claims brought by any other entity based on infringement of

+intellectual property rights or otherwise. As a condition to exercising the

+rights and licenses granted hereunder, each Recipient hereby assumes sole

+responsibility to secure any other intellectual property rights needed, if any.

+For example, if a third party patent license is required to allow Recipient to

+distribute the Program, it is Recipient's responsibility to acquire that license

+before distributing the Program.

+

+d) Each Contributor represents that to its knowledge it has sufficient copyright

+rights in its Contribution, if any, to grant the copyright license set forth in

+this Agreement.

+

+3. REQUIREMENTS

+

+A Contributor may choose to distribute the Program in object code form under its

+own license agreement, provided that:

+

+a) it complies with the terms and conditions of this Agreement; and

+

+b) its license agreement:

+

+i) effectively disclaims on behalf of all Contributors all warranties and

+conditions, express and implied, including warranties or conditions of title and

+non-infringement, and implied warranties or conditions of merchantability and

+fitness for a particular purpose;

+

+ii) effectively excludes on behalf of all Contributors all liability for

+damages, including direct, indirect, special, incidental and consequential

+damages, such as lost profits;

+

+iii) states that any provisions which differ from this Agreement are offered by

+that Contributor alone and not by any other party; and

+

+iv) states that source code for the Program is available from such Contributor,

+and informs licensees how to obtain it in a reasonable manner on or through a

+medium customarily used for software exchange.

+

+When the Program is made available in source code form:

+

+a) it must be made available under this Agreement; and

+

+b) a copy of this Agreement must be included with each copy of the Program.

+

+Contributors may not remove or alter any copyright notices contained within the

+Program.

+

+Each Contributor must identify itself as the originator of its Contribution, if

+any, in a manner that reasonably allows subsequent Recipients to identify the

+originator of the Contribution.

+

+4. COMMERCIAL DISTRIBUTION

+

+Commercial distributors of software may accept certain responsibilities with

+respect to end users, business partners and the like. While this license is

+intended to facilitate the commercial use of the Program, the Contributor who

+includes the Program in a commercial product offering should do so in a manner

+which does not create potential liability for other Contributors. Therefore, if

+a Contributor includes the Program in a commercial product offering, such

+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify

+every other Contributor ("Indemnified Contributor") against any losses, damages

+and costs (collectively "Losses") arising from claims, lawsuits and other legal

+actions brought by a third party against the Indemnified Contributor to the

+extent caused by the acts or omissions of such Commercial Contributor in

+connection with its distribution of the Program in a commercial product

+offering. The obligations in this section do not apply to any claims or Losses

+relating to any actual or alleged intellectual property infringement. In order

+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial

+Contributor in writing of such claim, and b) allow the Commercial Contributor

+to control, and cooperate with the Commercial Contributor in, the defense and

+any related settlement negotiations. The Indemnified Contributor may

+participate in any such claim at its own expense.

+

+For example, a Contributor might include the Program in a commercial product

+offering, Product X. That Contributor is then a Commercial Contributor. If that

+Commercial Contributor then makes performance claims, or offers warranties

+related to Product X, those performance claims and warranties are such

+Commercial Contributor's responsibility alone. Under this section, the

+Commercial Contributor would have to defend claims against the other

+Contributors related to those performance claims and warranties, and if a court

+requires any other Contributor to pay any damages as a result, the Commercial

+Contributor must pay those damages.

+

+5. NO WARRANTY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR

+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,

+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each

+Recipient is solely responsible for determining the appropriateness of using and

+distributing the Program and assumes all risks associated with its exercise of

+rights under this Agreement , including but not limited to the risks and costs

+of program errors, compliance with applicable laws, damage to or loss of data,

+programs or equipment, and unavailability or interruption of operations.

+

+6. DISCLAIMER OF LIABILITY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY

+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST

+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,

+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS

+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+

+7. GENERAL

+

+If any provision of this Agreement is invalid or unenforceable under applicable

+law, it shall not affect the validity or enforceability of the remainder of the

+terms of this Agreement, and without further action by the parties hereto, such

+provision shall be reformed to the minimum extent necessary to make such

+provision valid and enforceable.

+

+If Recipient institutes patent litigation against any entity (including a

+cross-claim or counterclaim in a lawsuit) alleging that the Program itself

+(excluding combinations of the Program with other software or hardware)

+infringes such Recipient's patent(s), then such Recipient's rights granted under

+Section 2(b) shall terminate as of the date such litigation is filed.

+

+All Recipient's rights under this Agreement shall terminate if it fails to

+comply with any of the material terms or conditions of this Agreement and does

+not cure such failure in a reasonable period of time after becoming aware of

+such noncompliance. If all Recipient's rights under this Agreement terminate,

+Recipient agrees to cease use and distribution of the Program as soon as

+reasonably practicable. However, Recipient's obligations under this Agreement

+and any licenses granted by Recipient relating to the Program shall continue and

+survive.

+

+Everyone is permitted to copy and distribute copies of this Agreement, but in

+order to avoid inconsistency the Agreement is copyrighted and may only be

+modified in the following manner. The Agreement Steward reserves the right to

+publish new versions (including revisions) of this Agreement from time to time.

+No one other than the Agreement Steward has the right to modify this Agreement.

+The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation

+may assign the responsibility to serve as the Agreement Steward to a suitable

+separate entity. Each new version of the Agreement will be given a

+distinguishing version number. The Program (including Contributions) may always

+be distributed subject to the version of the Agreement under which it was

+received. In addition, after a new version of the Agreement is published,

+Contributor may elect to distribute the Program (including its Contributions)

+under the new version. Except as expressly stated in Sections 2(a) and 2(b)

+above, Recipient receives no rights or licenses to the intellectual property of

+any Contributor under this Agreement, whether expressly, by implication,

+estoppel or otherwise. All rights in the Program not expressly granted under

+this Agreement are reserved.

+

+This Agreement is governed by the laws of the State of New York and the

+intellectual property laws of the United States of America. No party to this

+Agreement will bring a legal action under this Agreement more than one year

+after the cause of action arose. Each party waives its rights to a jury trial in

+any resulting litigation.

+

+

+For the Windows Installer component:

+

+    * All NSIS source code, plug-ins, documentation, examples, header files and

+       graphics, with the exception of the compression modules and where

+       otherwise noted, are licensed under the zlib/libpng license.

+    * The zlib compression module for NSIS is licensed under the zlib/libpng

+       license.

+    * The bzip2 compression module for NSIS is licensed under the bzip2 license.

+    * The lzma compression module for NSIS is licensed under the Common Public

+       License version 1.0.

+

+zlib/libpng license

+

+This software is provided 'as-is', without any express or implied warranty. In

+no event will the authors be held liable for any damages arising from the use of

+this software.

+

+Permission is granted to anyone to use this software for any purpose, including

+commercial applications, and to alter it and redistribute it freely, subject to

+the following restrictions:

+

+   1. The origin of this software must not be misrepresented; you must not claim

+       that you wrote the original software. If you use this software in a

+       product, an acknowledgment in the product documentation would be

+       appreciated but is not required.

+   2. Altered source versions must be plainly marked as such, and must not be

+       misrepresented as being the original software.

+   3. This notice may not be removed or altered from any source distribution.

+

+bzip2 license

+

+Redistribution and use in source and binary forms, with or without modification,

+are permitted provided that the following conditions are met:

+

+   1. Redistributions of source code must retain the above copyright notice,

+       this list of conditions and the following disclaimer.

+   2. The origin of this software must not be misrepresented; you must not claim

+       that you wrote the original software. If you use this software in a

+       product, an acknowledgment in the product documentation would be

+       appreciated but is not required.

+   3. Altered source versions must be plainly marked as such, and must not be

+       misrepresented as being the original software.

+   4. The name of the author may not be used to endorse or promote products

+       derived from this software without specific prior written permission.

+

+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED

+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF

+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT

+SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT

+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING

+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY

+OF SUCH DAMAGE.

+

+Julian Seward, Cambridge, UK.

+

+jseward@acm.org

+Common Public License version 1.0

+

+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC

+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM

+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

+

+1. DEFINITIONS

+

+"Contribution" means:

+

+a) in the case of the initial Contributor, the initial code and documentation

+distributed under this Agreement, and b) in the case of each subsequent

+Contributor:

+

+i) changes to the Program, and

+

+ii) additions to the Program;

+

+where such changes and/or additions to the Program originate from and are

+distributed by that particular Contributor. A Contribution 'originates' from a

+Contributor if it was added to the Program by such Contributor itself or anyone

+acting on such Contributor's behalf. Contributions do not include additions to

+the Program which: (i) are separate modules of software distributed in

+conjunction with the Program under their own license agreement, and (ii) are not

+derivative works of the Program.

+

+"Contributor" means any person or entity that distributes the Program.

+

+"Licensed Patents " mean patent claims licensable by a Contributor which are

+necessarily infringed by the use or sale of its Contribution alone or when

+combined with the Program.

+

+"Program" means the Contributions distributed in accordance with this Agreement.

+

+"Recipient" means anyone who receives the Program under this Agreement,

+including all Contributors.

+

+2. GRANT OF RIGHTS

+

+a) Subject to the terms of this Agreement, each Contributor hereby grants

+Recipient a non-exclusive, worldwide, royalty-free copyright license to

+reproduce, prepare derivative works of, publicly display, publicly perform,

+distribute and sublicense the Contribution of such Contributor, if any, and such

+derivative works, in source code and object code form.

+

+b) Subject to the terms of this Agreement, each Contributor hereby grants

+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed

+Patents to make, use, sell, offer to sell, import and otherwise transfer the

+Contribution of such Contributor, if any, in source code and object code form.

+This patent license shall apply to the combination of the Contribution and the

+Program if, at the time the Contribution is added by the Contributor, such

+addition of the Contribution causes such combination to be covered by the

+Licensed Patents. The patent license shall not apply to any other combinations

+which include the Contribution. No hardware per se is licensed hereunder.

+

+c) Recipient understands that although each Contributor grants the licenses to

+its Contributions set forth herein, no assurances are provided by any

+Contributor that the Program does not infringe the patent or other intellectual

+property rights of any other entity. Each Contributor disclaims any liability to

+Recipient for claims brought by any other entity based on infringement of

+intellectual property rights or otherwise. As a condition to exercising the

+rights and licenses granted hereunder, each Recipient hereby assumes sole

+responsibility to secure any other intellectual property rights needed, if any.

+For example, if a third party patent license is required to allow Recipient to

+distribute the Program, it is Recipient's responsibility to acquire that license

+before distributing the Program.

+

+d) Each Contributor represents that to its knowledge it has sufficient copyright

+rights in its Contribution, if any, to grant the copyright license set forth in

+this Agreement.

+

+3. REQUIREMENTS

+

+A Contributor may choose to distribute the Program in object code form under its

+own license agreement, provided that:

+

+a) it complies with the terms and conditions of this Agreement; and

+

+b) its license agreement:

+

+i) effectively disclaims on behalf of all Contributors all warranties and

+conditions, express and implied, including warranties or conditions of title and

+non-infringement, and implied warranties or conditions of merchantability and

+fitness for a particular purpose;

+

+ii) effectively excludes on behalf of all Contributors all liability for

+damages, including direct, indirect, special, incidental and consequential

+damages, such as lost profits;

+

+iii) states that any provisions which differ from this Agreement are offered by

+that Contributor alone and not by any other party; and

+

+iv) states that source code for the Program is available from such Contributor,

+and informs licensees how to obtain it in a reasonable manner on or through a

+medium customarily used for software exchange.

+

+When the Program is made available in source code form:

+

+a) it must be made available under this Agreement; and

+

+b) a copy of this Agreement must be included with each copy of the Program.

+

+Contributors may not remove or alter any copyright notices contained within the

+Program.

+

+Each Contributor must identify itself as the originator of its Contribution, if

+any, in a manner that reasonably allows subsequent Recipients to identify the

+originator of the Contribution.

+

+4. COMMERCIAL DISTRIBUTION

+

+Commercial distributors of software may accept certain responsibilities with

+respect to end users, business partners and the like. While this license is

+intended to facilitate the commercial use of the Program, the Contributor who

+includes the Program in a commercial product offering should do so in a manner

+which does not create potential liability for other Contributors. Therefore, if

+a Contributor includes the Program in a commercial product offering, such

+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify

+every other Contributor ("Indemnified Contributor") against any losses, damages

+and costs (collectively "Losses") arising from claims, lawsuits and other legal

+actions brought by a third party against the Indemnified Contributor to the

+extent caused by the acts or omissions of such Commercial Contributor in

+connection with its distribution of the Program in a commercial product

+offering. The obligations in this section do not apply to any claims or Losses

+relating to any actual or alleged intellectual property infringement. In order

+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial

+Contributor in writing of such claim, and b) allow the Commercial Contributor to

+control, and cooperate with the Commercial Contributor in, the defense and any

+related settlement negotiations. The Indemnified Contributor may participate in

+any such claim at its own expense.

+

+For example, a Contributor might include the Program in a commercial product

+offering, Product X. That Contributor is then a Commercial Contributor. If that

+Commercial Contributor then makes performance claims, or offers warranties

+related to Product X, those performance claims and warranties are such

+Commercial Contributor's responsibility alone. Under this section, the

+Commercial Contributor would have to defend claims against the other

+Contributors related to those performance claims and warranties, and if a court

+requires any other Contributor to pay any damages as a result, the Commercial

+Contributor must pay those damages.

+

+5. NO WARRANTY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN

+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR

+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,

+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each

+Recipient is solely responsible for determining the appropriateness of using and

+distributing the Program and assumes all risks associated with its exercise of

+rights under this Agreement, including but not limited to the risks and costs of

+program errors, compliance with applicable laws, damage to or loss of data,

+programs or equipment, and unavailability or interruption of operations.

+

+6. DISCLAIMER OF LIABILITY

+

+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY

+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,

+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST

+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,

+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS

+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

+

+7. GENERAL

+

+If any provision of this Agreement is invalid or unenforceable under applicable

+law, it shall not affect the validity or enforceability of the remainder of the

+terms of this Agreement, and without further action by the parties hereto, such

+provision shall be reformed to the minimum extent necessary to make such

+provision valid and enforceable.

+

+If Recipient institutes patent litigation against a Contributor with respect to

+a patent applicable to software (including a cross-claim or counterclaim in a

+lawsuit), then any patent licenses granted by that Contributor to such Recipient

+under this Agreement shall terminate as of the date such litigation is filed. In

+addition, if Recipient institutes patent litigation against any entity

+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program

+itself (excluding combinations of the Program with other software or hardware)

+infringes such Recipient's patent(s), then such Recipient's rights granted under

+Section 2(b) shall terminate as of the date such litigation is filed.

+

+All Recipient's rights under this Agreement shall terminate if it fails to

+comply with any of the material terms or conditions of this Agreement and does

+not cure such failure in a reasonable period of time after becoming aware of

+such noncompliance. If all Recipient's rights under this Agreement terminate,

+Recipient agrees to cease use and distribution of the Program as soon as

+reasonably practicable. However, Recipient's obligations under this Agreement

+and any licenses granted by Recipient relating to the Program shall continue and

+survive.

+

+Everyone is permitted to copy and distribute copies of this Agreement, but in

+order to avoid inconsistency the Agreement is copyrighted and may only be

+modified in the following manner. The Agreement Steward reserves the right to

+publish new versions (including revisions) of this Agreement from time to time.

+No one other than the Agreement Steward has the right to modify this Agreement.

+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve

+as the Agreement Steward to a suitable separate entity. Each new version of the

+Agreement will be given a distinguishing version number. The Program (including

+Contributions) may always be distributed subject to the version of the Agreement

+under which it was received. In addition, after a new version of the Agreement

+is published, Contributor may elect to distribute the Program (including its

+Contributions) under the new version. Except as expressly stated in Sections

+2(a) and 2(b) above, Recipient receives no rights or licenses to the

+intellectual property of any Contributor under this Agreement, whether

+expressly, by implication, estoppel or otherwise. All rights in the Program not

+expressly granted under this Agreement are reserved.

+

+This Agreement is governed by the laws of the State of New York and the

+intellectual property laws of the United States of America. No party to this

+Agreement will bring a legal action under this Agreement more than one year

+after the cause of action arose. Each party waives its rights to a jury trial in

+any resulting litigation.

+

+Special exception for LZMA compression module

+

+Igor Pavlov and Amir Szekely, the authors of the LZMA compression module for

+NSIS, expressly permit you to statically or dynamically link your code (or bind

+by name) to the files from the LZMA compression module for NSIS without

+subjecting your linked code to the terms of the Common Public license version

+1.0. Any modifications or additions to files from the LZMA compression module

+for NSIS, however, are subject to the terms of the Common Public License version

+1.0.

+

+

+For the following XML Schemas for Java EE Deployment Descriptors:

+ - javaee_5.xsd

+ - javaee_web_services_1_2.xsd

+ - javaee_web_services_client_1_2.xsd

+ - javaee_6.xsd

+ - javaee_web_services_1_3.xsd

+ - javaee_web_services_client_1_3.xsd

+ - jsp_2_2.xsd

+ - web-app_3_0.xsd

+ - web-common_3_0.xsd

+ - web-fragment_3_0.xsd

+

+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0

+

+1. Definitions.

+

+   1.1. Contributor. means each individual or entity that creates or contributes

+        to the creation of Modifications.

+

+   1.2. Contributor Version. means the combination of the Original Software,

+        prior Modifications used by a Contributor (if any), and the

+        Modifications made by that particular Contributor.

+

+   1.3. Covered Software. means (a) the Original Software, or (b) Modifications,

+        or (c) the combination of files containing Original Software with files

+        containing Modifications, in each case including portions thereof.

+

+   1.4. Executable. means the Covered Software in any form other than Source

+        Code.

+

+   1.5. Initial Developer. means the individual or entity that first makes

+        Original Software available under this License.

+

+   1.6. Larger Work. means a work which combines Covered Software or portions

+        thereof with code not governed by the terms of this License.

+

+   1.7. License. means this document.

+

+   1.8. Licensable. means having the right to grant, to the maximum extent

+        possible, whether at the time of the initial grant or subsequently

+        acquired, any and all of the rights conveyed herein.

+

+   1.9. Modifications. means the Source Code and Executable form of any of the

+        following:

+

+        A. Any file that results from an addition to, deletion from or

+           modification of the contents of a file containing Original Software

+           or previous Modifications;

+

+        B. Any new file that contains any part of the Original Software or

+           previous Modification; or

+

+        C. Any new file that is contributed or otherwise made available under

+           the terms of this License.

+

+   1.10. Original Software. means the Source Code and Executable form of

+         computer software code that is originally released under this License.

+

+   1.11. Patent Claims. means any patent claim(s), now owned or hereafter

+         acquired, including without limitation, method, process, and apparatus

+         claims, in any patent Licensable by grantor.

+

+   1.12. Source Code. means (a) the common form of computer software code in

+         which modifications are made and (b) associated documentation included

+         in or with such code.

+

+   1.13. You. (or .Your.) means an individual or a legal entity exercising

+         rights under, and complying with all of the terms of, this License. For

+         legal entities, .You. includes any entity which controls, is controlled

+         by, or is under common control with You. For purposes of this

+         definition, .control. means (a) the power, direct or indirect, to cause

+         the direction or management of such entity, whether by contract or

+         otherwise, or (b) ownership of more than fifty percent (50%) of the

+         outstanding shares or beneficial ownership of such entity.

+

+2. License Grants.

+

+      2.1. The Initial Developer Grant.

+

+      Conditioned upon Your compliance with Section 3.1 below and subject to

+      third party intellectual property claims, the Initial Developer hereby

+      grants You a world-wide, royalty-free, non-exclusive license:

+

+        (a) under intellectual property rights (other than patent or trademark)

+            Licensable by Initial Developer, to use, reproduce, modify, display,

+            perform, sublicense and distribute the Original Software (or

+            portions thereof), with or without Modifications, and/or as part of

+            a Larger Work; and

+

+        (b) under Patent Claims infringed by the making, using or selling of

+            Original Software, to make, have made, use, practice, sell, and

+            offer for sale, and/or otherwise dispose of the Original Software

+            (or portions thereof).

+

+        (c) The licenses granted in Sections 2.1(a) and (b) are effective on the

+            date Initial Developer first distributes or otherwise makes the

+            Original Software available to a third party under the terms of this

+            License.

+

+        (d) Notwithstanding Section 2.1(b) above, no patent license is granted:

+            (1) for code that You delete from the Original Software, or (2) for

+            infringements caused by: (i) the modification of the Original

+            Software, or (ii) the combination of the Original Software with

+            other software or devices.

+

+    2.2. Contributor Grant.

+

+    Conditioned upon Your compliance with Section 3.1 below and subject to third

+    party intellectual property claims, each Contributor hereby grants You a

+    world-wide, royalty-free, non-exclusive license:

+

+        (a) under intellectual property rights (other than patent or trademark)

+            Licensable by Contributor to use, reproduce, modify, display,

+            perform, sublicense and distribute the Modifications created by such

+            Contributor (or portions thereof), either on an unmodified basis,

+            with other Modifications, as Covered Software and/or as part of a

+            Larger Work; and

+

+        (b) under Patent Claims infringed by the making, using, or selling of

+            Modifications made by that Contributor either alone and/or in

+            combination with its Contributor Version (or portions of such

+            combination), to make, use, sell, offer for sale, have made, and/or

+            otherwise dispose of: (1) Modifications made by that Contributor (or

+            portions thereof); and (2) the combination of Modifications made by

+            that Contributor with its Contributor Version (or portions of such

+            combination).

+

+        (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on

+            the date Contributor first distributes or otherwise makes the

+            Modifications available to a third party.

+

+        (d) Notwithstanding Section 2.2(b) above, no patent license is granted:

+            (1) for any code that Contributor has deleted from the Contributor

+            Version; (2) for infringements caused by: (i) third party

+            modifications of Contributor Version, or (ii) the combination of

+            Modifications made by that Contributor with other software (except

+            as part of the Contributor Version) or other devices; or (3) under

+            Patent Claims infringed by Covered Software in the absence of

+            Modifications made by that Contributor.

+

+3. Distribution Obligations.

+

+      3.1. Availability of Source Code.

+      Any Covered Software that You distribute or otherwise make available in

+      Executable form must also be made available in Source Code form and that

+      Source Code form must be distributed only under the terms of this License.

+      You must include a copy of this License with every copy of the Source Code

+      form of the Covered Software You distribute or otherwise make available.

+      You must inform recipients of any such Covered Software in Executable form

+      as to how they can obtain such Covered Software in Source Code form in a

+      reasonable manner on or through a medium customarily used for software

+      exchange.

+

+      3.2. Modifications.

+      The Modifications that You create or to which You contribute are governed

+      by the terms of this License. You represent that You believe Your

+      Modifications are Your original creation(s) and/or You have sufficient

+      rights to grant the rights conveyed by this License.

+

+      3.3. Required Notices.

+      You must include a notice in each of Your Modifications that identifies

+      You as the Contributor of the Modification. You may not remove or alter

+      any copyright, patent or trademark notices contained within the Covered

+      Software, or any notices of licensing or any descriptive text giving

+      attribution to any Contributor or the Initial Developer.

+

+      3.4. Application of Additional Terms.

+      You may not offer or impose any terms on any Covered Software in Source

+      Code form that alters or restricts the applicable version of this License

+      or the recipients. rights hereunder. You may choose to offer, and to

+      charge a fee for, warranty, support, indemnity or liability obligations to

+      one or more recipients of Covered Software. However, you may do so only on

+      Your own behalf, and not on behalf of the Initial Developer or any

+      Contributor. You must make it absolutely clear that any such warranty,

+      support, indemnity or liability obligation is offered by You alone, and

+      You hereby agree to indemnify the Initial Developer and every Contributor

+      for any liability incurred by the Initial Developer or such Contributor as

+      a result of warranty, support, indemnity or liability terms You offer.

+

+      3.5. Distribution of Executable Versions.

+      You may distribute the Executable form of the Covered Software under the

+      terms of this License or under the terms of a license of Your choice,

+      which may contain terms different from this License, provided that You are

+      in compliance with the terms of this License and that the license for the

+      Executable form does not attempt to limit or alter the recipient.s rights

+      in the Source Code form from the rights set forth in this License. If You

+      distribute the Covered Software in Executable form under a different

+      license, You must make it absolutely clear that any terms which differ

+      from this License are offered by You alone, not by the Initial Developer

+      or Contributor. You hereby agree to indemnify the Initial Developer and

+      every Contributor for any liability incurred by the Initial Developer or

+      such Contributor as a result of any such terms You offer.

+

+      3.6. Larger Works.

+      You may create a Larger Work by combining Covered Software with other code

+      not governed by the terms of this License and distribute the Larger Work

+      as a single product. In such a case, You must make sure the requirements

+      of this License are fulfilled for the Covered Software.

+

+4. Versions of the License.

+

+      4.1. New Versions.

+      Sun Microsystems, Inc. is the initial license steward and may publish

+      revised and/or new versions of this License from time to time. Each

+      version will be given a distinguishing version number. Except as provided

+      in Section 4.3, no one other than the license steward has the right to

+      modify this License.

+

+      4.2. Effect of New Versions.

+      You may always continue to use, distribute or otherwise make the Covered

+      Software available under the terms of the version of the License under

+      which You originally received the Covered Software. If the Initial

+      Developer includes a notice in the Original Software prohibiting it from

+      being distributed or otherwise made available under any subsequent version

+      of the License, You must distribute and make the Covered Software

+      available under the terms of the version of the License under which You

+      originally received the Covered Software. Otherwise, You may also choose

+      to use, distribute or otherwise make the Covered Software available under

+      the terms of any subsequent version of the License published by the

+      license steward.

+

+      4.3. Modified Versions.

+      When You are an Initial Developer and You want to create a new license for

+      Your Original Software, You may create and use a modified version of this

+      License if You: (a) rename the license and remove any references to the

+      name of the license steward (except to note that the license differs from

+      this License); and (b) otherwise make it clear that the license contains

+      terms which differ from this License.

+

+5. DISCLAIMER OF WARRANTY.

+

+   COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT

+   WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT

+   LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS,

+   MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK

+   AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD

+   ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL

+   DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY

+   SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN

+   ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED

+   HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

+

+6. TERMINATION.

+

+      6.1. This License and the rights granted hereunder will terminate

+           automatically if You fail to comply with terms herein and fail to

+           cure such breach within 30 days of becoming aware of the breach.

+           Provisions which, by their nature, must remain in effect beyond the

+           termination of this License shall survive.

+

+      6.2. If You assert a patent infringement claim (excluding declaratory

+           judgment actions) against Initial Developer or a Contributor (the

+           Initial Developer or Contributor against whom You assert such claim

+           is referred to as .Participant.) alleging that the Participant

+           Software (meaning the Contributor Version where the Participant is a

+           Contributor or the Original Software where the Participant is the

+           Initial Developer) directly or indirectly infringes any patent, then

+           any and all rights granted directly or indirectly to You by such

+           Participant, the Initial Developer (if the Initial Developer is not

+           the Participant) and all Contributors under Sections 2.1 and/or 2.2

+           of this License shall, upon 60 days notice from Participant terminate

+           prospectively and automatically at the expiration of such 60 day

+           notice period, unless if within such 60 day period You withdraw Your

+           claim with respect to the Participant Software against such

+           Participant either unilaterally or pursuant to a written agreement

+           with Participant.

+

+      6.3. In the event of termination under Sections 6.1 or 6.2 above, all end

+           user licenses that have been validly granted by You or any

+           distributor hereunder prior to termination (excluding licenses

+           granted to You by any distributor) shall survive termination.

+

+7. LIMITATION OF LIABILITY.

+

+   UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING

+   NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY

+   OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF

+   ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,

+   INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT

+   LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE,

+   COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR

+   LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF

+   SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR

+   DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT

+   APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE

+   EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS

+   EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.

+

+8. U.S. GOVERNMENT END USERS.

+

+   The Covered Software is a .commercial item,. as that term is defined in 48

+   C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as

+   that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and commercial

+   computer software documentation. as such terms are used in 48 C.F.R. 12.212

+   (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1

+   through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered

+   Software with only those rights set forth herein. This U.S. Government Rights

+   clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or

+   provision that addresses Government rights in computer software under this

+   License.

+

+9. MISCELLANEOUS.

+

+   This License represents the complete agreement concerning subject matter

+   hereof. If any provision of this License is held to be unenforceable, such

+   provision shall be reformed only to the extent necessary to make it

+   enforceable. This License shall be governed by the law of the jurisdiction

+   specified in a notice contained within the Original Software (except to the

+   extent applicable law, if any, provides otherwise), excluding such

+   jurisdiction's conflict-of-law provisions. Any litigation relating to this

+   License shall be subject to the jurisdiction of the courts located in the

+   jurisdiction and venue specified in a notice contained within the Original

+   Software, with the losing party responsible for costs, including, without

+   limitation, court costs and reasonable attorneys. fees and expenses. The

+   application of the United Nations Convention on Contracts for the

+   International Sale of Goods is expressly excluded. Any law or regulation

+   which provides that the language of a contract shall be construed against

+   the drafter shall not apply to this License. You agree that You alone are

+   responsible for compliance with the United States export administration

+   regulations (and the export control laws and regulation of any other

+   countries) when You use, distribute or otherwise make available any Covered

+   Software.

+

+10. RESPONSIBILITY FOR CLAIMS.

+

+   As between Initial Developer and the Contributors, each party is responsible

+   for claims and damages arising, directly or indirectly, out of its

+   utilization of rights under this License and You agree to work with Initial

+   Developer and Contributors to distribute such responsibility on an equitable

+   basis. Nothing herein is intended or shall be deemed to constitute any

+   admission of liability.

+

+   NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION

+   LICENSE (CDDL)

+

+   The code released under the CDDL shall be governed by the laws of the State

+   of California (excluding conflict-of-law provisions). Any litigation relating

+   to this License shall be subject to the jurisdiction of the Federal Courts of

+   the Northern District of California and the state courts of the State of

+   California, with venue lying in Santa Clara County, California.

+

diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..d1f2652
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,36 @@
+Apache Tomcat

+Copyright 1999-2013 The Apache Software Foundation

+

+This product includes software developed by

+The Apache Software Foundation (http://www.apache.org/).

+

+The Windows Installer is built with the Nullsoft

+Scriptable Install System (NSIS), which is

+open source software.  The original software and

+related information is available at

+http://nsis.sourceforge.net.

+

+Java compilation software for JSP pages is provided by Eclipse,

+which is open source software.  The original software and

+related information is available at

+http://www.eclipse.org.

+

+For the bayeux implementation

+The org.apache.cometd.bayeux API is derivative work originating at the Dojo Foundation

+* Copyright 2007-2008 Guy Molinari

+* Copyright 2007-2008 Filip Hanik

+* Copyright 2007 Dojo Foundation

+* Copyright 2007 Mort Bay Consulting Pty. Ltd.

+

+The original XML Schemas for Java EE Deployment Descriptors:

+ - javaee_5.xsd

+ - javaee_web_services_1_2.xsd

+ - javaee_web_services_client_1_2.xsd

+ - javaee_6.xsd

+ - javaee_web_services_1_3.xsd

+ - javaee_web_services_client_1_3.xsd

+ - jsp_2_2.xsd

+ - web-app_3_0.xsd

+ - web-common_3_0.xsd

+ - web-fragment_3_0.xsd

+may be obtained from http://java.sun.com/xml/ns/javaee/

diff --git a/RELEASE-NOTES b/RELEASE-NOTES
new file mode 100644
index 0000000..6681668
--- /dev/null
+++ b/RELEASE-NOTES
@@ -0,0 +1,228 @@
+================================================================================

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+================================================================================

+

+$Id: RELEASE-NOTES 1189163 2011-10-26 12:19:26Z kkolinko $

+

+

+                     Apache Tomcat Version 7.0.42

+                            Release Notes

+

+

+=========

+CONTENTS:

+=========

+

+* Dependency Changes

+* API Stability

+* JNI Based Applications

+* Bundled APIs

+* Web application reloading and static fields in shared libraries

+* Tomcat on Linux

+* Enabling SSI and CGI Support

+* Security manager URLs

+* Symlinking static resources

+* Viewing the Tomcat Change Log

+* Cryptographic software notice

+* When all else fails

+

+

+===================

+Dependency Changes:

+===================

+Tomcat 7.0 is designed to run on Java SE 6 and later.

+

+In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for

+compiling JSP pages.  This means you no longer need to have the complete

+Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment

+(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the

+binary Tomcat distributions.  Tomcat can also be configured to use the

+compiler from the JDK to compile JSPs, or any other Java compiler supported

+by Apache Ant.

+

+

+==============

+API Stability:

+==============

+The public interfaces for the following classes are fixed and will not be

+changed at all during the remaining lifetime of the 7.x series:

+- javax/**/*

+

+The public interfaces for the following classes may be added to in order to

+resolve bugs and/or add new features. No existing interface will be removed or

+changed although it may be deprecated.

+- org/apache/catalina/*

+- org/apache/catalina/comet/*

+

+Note: As Tomcat 7 matures, the above list will be added to. The list is not

+      considered complete at this time.

+

+The remaining classes are considered part of the Tomcat internals and may change

+without notice between point releases.

+

+

+=======================

+JNI Based Applications:

+=======================

+Applications that require native libraries must ensure that the libraries have

+been loaded prior to use.  Typically, this is done with a call like:

+

+  static {

+    System.loadLibrary("path-to-library-file");

+  }

+

+in some class.  However, the application must also ensure that the library is

+not loaded more than once.  If the above code were placed in a class inside

+the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the

+application were reloaded, the loadLibrary() call would be attempted a second

+time.

+

+To avoid this problem, place classes that load native libraries outside of the

+web application, and ensure that the loadLibrary() call is executed only once

+during the lifetime of a particular JVM.

+

+

+=============

+Bundled APIs:

+=============

+A standard installation of Tomcat 7.0 makes all of the following APIs available

+for use by web applications (by placing them in "lib"):

+* annotations-api.jar (Annotations package)

+* catalina.jar (Tomcat Catalina implementation)

+* catalina-ant.jar (Tomcat Catalina Ant tasks)

+* catalina-ha.jar (High availability package)

+* catalina-tribes.jar (Group communication)

+* ecj-4.2.2.jar (Eclipse JDT Java compiler)

+* el-api.jar (EL 2.2 API)

+* jasper.jar (Jasper 2 Compiler and Runtime)

+* jasper-el.jar (Jasper 2 EL implementation)

+* jsp-api.jar (JSP 2.2 API)

+* servlet-api.jar (Servlet 3.0 API)

+* tomcat-api.jar (Interfaces shared by Catalina and Jasper)

+* tomcat-coyote.jar (Tomcat connectors and utility classes)

+* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP)

+

+You can make additional APIs available to all of your web applications by

+putting unpacked classes into a "classes" directory (not created by default),

+or by placing them in JAR files in the "lib" directory.

+

+To override the XML parser implementation or interfaces, use the endorsed

+mechanism of the JVM. The default configuration defines JARs located in

+"endorsed" as endorsed.

+

+

+================================================================

+Web application reloading and static fields in shared libraries:

+================================================================

+Some shared libraries (many are part of the JDK) keep references to objects

+instantiated by the web application. To avoid class loading related problems

+(ClassCastExceptions, messages indicating that the classloader

+is stopped, etc.), the shared libraries state should be reinitialized.

+

+Something which might help is to avoid putting classes which would be

+referenced by a shared static field in the web application classloader,

+and putting them in the shared classloader instead (JARs should be put in the

+"lib" folder, and classes should be put in the "classes" folder).

+

+

+================

+Tomcat on Linux:

+================

+GLIBC 2.2 / Linux 2.4 users should define an environment variable:

+export LD_ASSUME_KERNEL=2.2.5

+

+Redhat Linux 9.0 users should use the following setting to avoid

+stability problems:

+export LD_ASSUME_KERNEL=2.4.1

+

+There are some Linux bugs reported against the NIO sendfile behavior, make sure you

+have a JDK that is up to date, or disable sendfile behavior in the Connector.<br/>

+6427312: (fc) FileChannel.transferTo() throws IOException "system call interrupted"<br/>

+5103988: (fc) FileChannel.transferTo should return -1 for EAGAIN instead throws IOException<br/>

+6253145: (fc) FileChannel.transferTo on Linux fails when going beyond 2GB boundary<br/>

+6470086: (fc) FileChannel.transferTo(2147483647, 1, channel) cause "Value too large" exception<br/>

+

+

+=============================

+Enabling SSI and CGI Support:

+=============================

+Because of the security risks associated with CGI and SSI available

+to web applications, these features are disabled by default.  

+

+To enable and configure CGI support, please see the cgi-howto.html page.

+

+To enable and configue SSI support, please see the ssi-howto.html page.

+

+

+======================

+Security manager URLs:

+======================

+In order to grant security permissions to JARs located inside the

+web application repository, use URLs of of the following format

+in your policy file:

+

+file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar

+

+

+============================

+Symlinking static resources:

+============================

+By default, Unix symlinks will not work when used in a web application to link

+resources located outside the web application root directory.

+

+This behavior is optional, and the "allowLinking" flag may be used to disable

+the check.

+

+

+==============================

+Viewing the Tomcat Change Log:

+==============================

+See changelog.html in this directory.

+

+

+=============================

+Cryptographic software notice

+=============================

+This distribution includes cryptographic software.  The country in

+which you currently reside may have restrictions on the import,

+possession, use, and/or re-export to another country, of

+encryption software.  BEFORE using any encryption software, please

+check your country's laws, regulations and policies concerning the

+import, possession, or use, and re-export of encryption software, to

+see if this is permitted.  See <http://www.wassenaar.org/> for more

+information.

+

+The U.S. Government Department of Commerce, Bureau of Industry and

+Security (BIS), has classified this software as Export Commodity

+Control Number (ECCN) 5D002.C.1, which includes information security

+software using or performing cryptographic functions with asymmetric

+algorithms.  The form and manner of this Apache Software Foundation

+distribution makes it eligible for export under the License Exception

+ENC Technology Software Unrestricted (TSU) exception (see the BIS

+Export Administration Regulations, Section 740.13) for both object

+code and source code.

+

+The following provides more details on the included cryptographic

+software:

+  - Tomcat includes code designed to work with JSSE

+  - Tomcat includes code designed to work with OpenSSL

+

+

+====================

+When all else fails:

+====================

+See the FAQ

+http://tomcat.apache.org/faq/

diff --git a/RUNNING.txt b/RUNNING.txt
new file mode 100644
index 0000000..1a17549
--- /dev/null
+++ b/RUNNING.txt
@@ -0,0 +1,480 @@
+================================================================================

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+================================================================================

+

+$Id: RUNNING.txt 1456725 2013-03-14 23:48:06Z kkolinko $

+

+            ===================================================

+            Running The Apache Tomcat 7.0 Servlet/JSP Container

+            ===================================================

+

+Apache Tomcat 7.0 requires a Java Standard Edition Runtime

+Environment (JRE) version 6 or later.

+

+=============================

+Running With JRE 6 Or Later

+=============================

+

+(1) Download and Install a Java SE Runtime Environment (JRE)

+

+(1.1) Download a Java SE Runtime Environment (JRE),

+      release version 6 or later, from

+      http://www.oracle.com/technetwork/java/javase/downloads/index.html

+

+(1.2) Install the JRE according to the instructions included with the

+      release.

+

+      You may also use a full Java Development Kit (JDK) rather than just

+      a JRE.

+

+

+(2) Download and Install Apache Tomcat

+

+(2.1) Download a binary distribution of Tomcat from:

+

+      http://tomcat.apache.org/

+

+(2.2) Unpack the binary distribution so that it resides in its own

+      directory (conventionally named "apache-tomcat-[version]").

+

+      For the purposes of the remainder of this document, the name

+      "CATALINA_HOME" is used to refer to the full pathname of that

+      directory.

+

+NOTE:  As an alternative to downloading a binary distribution, you can

+create your own from the Tomcat source code, as described in

+"BUILDING.txt".  You can either

+

+  a)  Do the full "release" build and find the created distribution in the

+      "output/release" directory and then proceed with unpacking as above, or

+

+  b)  Do a simple build and use the "output/build" directory as

+      "CATALINA_HOME".  Be warned that there are some differences between the

+      contents of the "output/build" directory and a full "release"

+      distribution.

+

+

+(3) Configure Environment Variables

+

+Tomcat is a Java application and does not use environment variables. The

+variables are used by the Tomcat startup scripts. The scripts use the variables

+to prepare the command that starts Tomcat.

+

+(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)

+

+The CATALINA_HOME environment variable should be set to the location of the

+root directory of the "binary" distribution of Tomcat.

+

+An example was given in (2.2) above.

+

+The Tomcat startup scripts have some logic to set this variable

+automatically if it is absent, based on the location of the startup script

+in *nix and on the current directory in Windows. That logic might not work

+in all circumstances, so setting the variable explicitly is recommended.

+

+The CATALINA_BASE environment variable specifies location of the root

+directory of the "active configuration" of Tomcat. It is optional. It

+defaults to be equal to CATALINA_HOME.

+

+Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is

+recommended to simplify further upgrades and maintenance. It is documented

+in the "Multiple Tomcat Instances" section below.

+

+

+(3.2) Set JRE_HOME or JAVA_HOME (required)

+

+These variables are used to specify location of a Java Runtime

+Environment or of a Java Development Kit that is used to start Tomcat.

+

+The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME

+variable is used to specify location of a JDK.

+

+Using JAVA_HOME provides access to certain additional startup options that

+are not allowed when JRE_HOME is used.

+

+If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.

+

+The recommended place to specify these variables is a "setenv" script. See

+below.

+

+

+(3.3) Other variables (optional)

+

+Other environment variables exist, besides the four described above.

+See the comments at the top of catalina.bat or catalina.sh scripts for

+the list and a description of each of them.

+

+One frequently used variable is CATALINA_OPTS. It allows specification of

+additional options for the java command that starts Tomcat.

+

+See the Java documentation for the options that affect the Java Runtime

+Environment.

+

+See the "System Properties" page in the Tomcat Configuration Reference for

+the system properties that are specific to Tomcat.

+

+A similar variable is JAVA_OPTS. It is used less frequently. It allows

+specification of options that are used both to start and to stop Tomcat as well

+as for other commands.

+

+Note: Do not use JAVA_OPTS to specify memory limits. You do not need much

+memory for a small process that is used to stop Tomcat. Those settings

+belong to CATALINA_OPTS.

+

+Another frequently used variable is CATALINA_PID (on *nix only). It

+specifies the location of the file where process id of the forked Tomcat

+java process will be written. This setting is optional. It will enable the

+following features:

+

+ *  better protection against duplicate start attempts and

+ *  allows forceful termination of Tomcat process when it does not react to

+    the standard shutdown command.

+

+

+(3.4) Using the "setenv" script (optional, recommended)

+

+Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can

+be specified in the "setenv" script. The script is placed either into

+CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named

+setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be

+readable.

+

+By default the setenv script file is absent. If the script file is present

+both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is

+preferred.

+

+For example, to configure the JRE_HOME and CATALINA_PID variables you can

+create the following script file:

+

+On Windows, %CATALINA_BASE%\bin\setenv.bat:

+

+  set "JRE_HOME=%ProgramFiles%\Java\jre6"

+  exit /b 0

+

+On *nix, $CATALINA_BASE/bin/setenv.sh:

+

+  JRE_HOME=/usr/java/latest

+  CATALINA_PID="$CATALINA_BASE/tomcat.pid"

+

+

+The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the

+setenv script, because they are used to locate that file.

+

+All the environment variables described here and the "setenv" script are

+used only if you use the standard scripts to launch Tomcat. For example, if

+you have installed Tomcat as a service on Windows, the service wrapper

+launches Java directly and does not use the script files.

+

+

+(4) Start Up Tomcat

+

+(4.1) Tomcat can be started by executing one of the following commands:

+

+  On Windows:

+

+      %CATALINA_HOME%\bin\startup.bat

+

+    or

+

+      %CATALINA_HOME%\bin\catalina.bat start

+

+  On *nix:

+

+      $CATALINA_HOME/bin/startup.sh

+

+    or

+

+      $CATALINA_HOME/bin/catalina.sh start

+

+(4.2) After startup, the default web applications included with Tomcat will be

+      available by visiting:

+

+      http://localhost:8080/

+

+(4.3) Further information about configuring and running Tomcat can be found in

+      the documentation included here, as well as on the Tomcat web site:

+

+      http://tomcat.apache.org/

+

+

+(5) Shut Down Tomcat

+

+(5.1) Tomcat can be shut down by executing one of the following commands:

+

+  On Windows:

+

+      %CATALINA_HOME%\bin\shutdown.bat

+

+    or

+

+      %CATALINA_HOME%\bin\catalina.bat stop

+

+  On *nix:

+

+      $CATALINA_HOME/bin/shutdown.sh

+

+    or

+

+      $CATALINA_HOME/bin/catalina.sh stop

+

+==================================================

+Advanced Configuration - Multiple Tomcat Instances

+==================================================

+

+In many circumstances, it is desirable to have a single copy of a Tomcat

+binary distribution shared among multiple users on the same server.  To make

+this possible, you can set the CATALINA_BASE environment variable to the

+directory that contains the files for your 'personal' Tomcat instance.

+

+When running with a separate CATALINA_HOME and CATALINA_BASE, the files

+and directories are split as following:

+

+In CATALINA_BASE:

+

+ * bin  - Only the following files:

+

+           * setenv.sh (*nix) or setenv.bat (Windows),

+           * tomcat-juli.jar

+

+          The setenv scripts were described above. The tomcat-juli library

+          is documented in the Logging chapter in the User Guide.

+

+ * conf - Server configuration files (including server.xml)

+

+ * lib  - Libraries and classes, as explained below

+

+ * logs - Log and output files

+

+ * webapps - Automatically loaded web applications

+

+ * work - Temporary working directories for web applications

+

+ * temp - Directory used by the JVM for temporary files (java.io.tmpdir)

+

+

+In CATALINA_HOME:

+

+ * bin  - Startup and shutdown scripts

+

+          The following files will be used only if they are absent in

+          CATALINA_BASE/bin:

+

+          setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar

+

+ * lib  - Libraries and classes, as explained below

+

+ * endorsed - Libraries that override standard "Endorsed Standards"

+              libraries provided by JRE. See Classloading documentation

+              in the User Guide for details.

+

+              By default this "endorsed" directory is absent.

+

+In the default configuration the JAR libraries and classes both in

+CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common

+classpath, but the ones in CATALINA_BASE will be added first and thus will

+be searched first.

+

+The idea is that you may leave the standard Tomcat libraries in

+CATALINA_HOME/lib and add other ones such as database drivers into

+CATALINA_BASE/lib.

+

+In general it is advised to never share libraries between web applications,

+but put them into WEB-INF/lib directories inside the applications. See

+Classloading documentation in the User Guide for details.

+

+

+It might be useful to note that the values of CATALINA_HOME and

+CATALINA_BASE can be referenced in the XML configuration files processed

+by Tomcat as ${catalina.home} and ${catalina.base} respectively.

+

+For example, the standard manager web application can be kept in

+CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using

+the following trick:

+

+ * Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml

+   file as CATALINA_BASE/conf/Catalina/localhost/manager.xml

+

+ * Add docBase attribute as shown below.

+

+The file will look like the following:

+

+  <?xml version="1.0" encoding="UTF-8"?>

+  <Context docBase="${catalina.home}/webapps/manager"

+    antiResourceLocking="false" privileged="true" >

+    <Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         allow="127\.0\.0\.1" />

+  </Context>

+

+See Deployer chapter in User Guide and Context and Host chapters in the

+Configuration Reference for more information on contexts and web

+application deployment.

+

+

+================

+Troubleshooting

+================

+

+There are only really 2 things likely to go wrong during the stand-alone

+Tomcat install:

+

+(1) The most common hiccup is when another web server (or any process for that

+    matter) has laid claim to port 8080.  This is the default HTTP port that

+    Tomcat attempts to bind to at startup.  To change this, open the file:

+

+       $CATALINA_HOME/conf/server.xml

+

+    and search for '8080'.  Change it to a port that isn't in use, and is

+    greater than 1024, as ports less than or equal to 1024 require superuser

+    access to bind under UNIX.

+

+    Restart Tomcat and you're in business.  Be sure that you replace the "8080"

+    in the URL you're using to access Tomcat.  For example, if you change the

+    port to 1977, you would request the URL http://localhost:1977/ in your

+    browser.

+

+(2) The 'localhost' machine isn't found.  This could happen if you're behind a

+    proxy.  If that's the case, make sure the proxy configuration for your

+    browser knows that you shouldn't be going through the proxy to access the

+    "localhost".

+

+    In Firefox, this is under Tools/Preferences -> Advanced/Network ->

+    Connection -> Settings..., and in Internet Explorer it is Tools ->

+    Internet Options -> Connections -> LAN Settings.

+

+

+====================

+Optional Components

+====================

+

+The following optional components may be included with the Apache Tomcat binary

+distribution. If they are not included, you can install them separately.

+

+ 1. Apache Tomcat Native library

+

+ 2. Apache Commons Daemon service launcher

+

+Both of them are implemented in C language and as such have to be compiled

+into binary code. The binary code will be specific for a platform and CPU

+architecture and it must match the Java Runtime Environment executables

+that will be used to launch Tomcat.

+

+The Windows-specific binary distributions of Apache Tomcat include binary

+files for these components. On other platforms you would have to look for

+binary versions elsewhere or compile them yourself.

+

+If you are new to Tomcat, do not bother with these components to start with.

+If you do use them, do not forget to read their documentation.

+

+

+Apache Tomcat Native library

+-----------------------------

+

+It is a library that allows to use the "Apr" variant of HTTP and AJP

+protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache

+Portable Runtime (APR) libraries. Those are the same libraries as used by

+Apache HTTPD Server project.

+

+This feature was especially important in the old days when Java performance

+was poor. It is less important nowadays, but it is still used and respected

+by many. See Tomcat documentation for more details.

+

+For further reading:

+

+ - Apache Tomcat documentation

+

+    * Documentation for APR/Native library in the Tomcat User's Guide

+

+      http://tomcat.apache.org/tomcat-7.0-doc/apr.html

+

+    * Documentation for the HTTP and AJP protocol connectors in the Tomcat

+      Configuration Reference

+

+      http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

+

+      http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html

+

+ - Apache Tomcat Native project home

+

+      http://tomcat.apache.org/native-doc/

+

+ - Other projects

+

+    * OpenSSL

+

+      http://openssl.org/

+

+    * Apache Portable Runtime

+

+      http://apr.apache.org/

+

+    * Apache HTTP Server

+

+      http://httpd.apache.org/

+

+To disable Apache Tomcat Native library:

+

+ - To disable Apache Tomcat Native library when it is installed, or

+ - To remove the warning that is logged during Tomcat startup when the

+   library is not installed:

+

+   Edit the "conf/server.xml" file and remove "AprLifecycleListener" from

+   it.

+

+The binary file of Apache Tomcat Native library is usually named

+

+  - "tcnative-1.dll" on Windows

+  - "libtcnative-1.so" on *nix systems

+

+

+Apache Commons Daemon

+----------------------

+

+Apache Commons Daemon project provides wrappers that can be used to

+install Apache Tomcat as a service on Windows or as a daemon on *nix

+systems.

+

+The Windows-specific implementation of Apache Commons Daemon is called

+"procrun". The *nix-specific one is called "jsvc".

+

+For further reading:

+

+ - Apache Commons Daemon project

+

+      http://commons.apache.org/daemon/

+

+ - Apache Tomcat documentation

+

+    * Installing Apache Tomcat

+

+      http://tomcat.apache.org/tomcat-7.0-doc/setup.html

+

+    * Windows service HOW-TO

+

+      http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html

+

+The binary files of Apache Commons Daemon in Apache Tomcat distributions

+for Windows are named:

+

+  - "tomcat7.exe"

+  - "tomcat7w.exe"

+

+These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from

+Apache Commons Daemon distribution. The file names have a meaning: they are

+used as the service name to register the service in Windows, as well as the

+key name to store distinct configuration for this installation of

+"procrun". If you would like to install several instances of Tomcat 7.0

+in parallel, you have to further rename those files, using the same naming

+scheme.

diff --git a/bin/bootstrap.jar b/bin/bootstrap.jar
new file mode 100644
index 0000000..7ed72fb
--- /dev/null
+++ b/bin/bootstrap.jar
Binary files differ
diff --git a/bin/catalina-tasks.xml b/bin/catalina-tasks.xml
new file mode 100644
index 0000000..c121d9b
--- /dev/null
+++ b/bin/catalina-tasks.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!--

+  XML file for importing Catalina ant tasks.

+  <import file="${catalina.home}/bin/catalina-tasks.xml"/>

+-->

+

+<project name="catalina-tasks">

+  <description>Catalina Ant Manager, JMX and JSPC Tasks</description>

+  <!-- set catalina.home if it's not already set -->

+  <dirname property="catalina.home.bin.dir" file="${ant.file.catalina-tasks}"/>

+  <property name="catalina.home" value="${catalina.home.bin.dir}/.."/>

+  <typedef resource="org/apache/catalina/ant/catalina.tasks">

+    <classpath>

+      <fileset file="${catalina.home}/bin/tomcat-juli.jar"/>

+      <fileset file="${catalina.home}/lib/tomcat-api.jar"/>

+      <fileset file="${catalina.home}/lib/tomcat-util.jar"/>

+      <fileset file="${catalina.home}/lib/jasper.jar"/>

+      <fileset file="${catalina.home}/lib/jasper-el.jar"/>

+      <fileset file="${catalina.home}/lib/el-api.jar"/>

+      <fileset file="${catalina.home}/lib/jsp-api.jar"/>

+      <fileset file="${catalina.home}/lib/servlet-api.jar"/>

+      <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

+      <fileset file="${catalina.home}/lib/tomcat-coyote.jar"/>

+    </classpath>

+  </typedef>

+  <typedef resource="org/apache/catalina/ant/jmx/jmxaccessor.tasks">

+    <classpath>

+      <fileset file="${catalina.home}/lib/catalina-ant.jar"/>

+    </classpath>

+  </typedef>

+</project>

diff --git a/bin/catalina.bat b/bin/catalina.bat
new file mode 100644
index 0000000..1bf315d
--- /dev/null
+++ b/bin/catalina.bat
@@ -0,0 +1,323 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Start/Stop Script for the CATALINA Server

+rem

+rem Environment Variable Prerequisites

+rem

+rem   Do not set the variables in this script. Instead put them into a script

+rem   setenv.bat in CATALINA_BASE/bin to keep your customizations separate.

+rem

+rem   CATALINA_HOME   May point at your Catalina "build" directory.

+rem

+rem   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions

+rem                   of a Catalina installation.  If not present, resolves to

+rem                   the same directory that CATALINA_HOME points to.

+rem

+rem   CATALINA_OPTS   (Optional) Java runtime options used when the "start",

+rem                   "run" or "debug" command is executed.

+rem                   Include here and not in JAVA_OPTS all options, that should

+rem                   only be used by Tomcat itself, not by the stop process,

+rem                   the version command etc.

+rem                   Examples are heap size, GC logging, JMX ports etc.

+rem

+rem   CATALINA_TMPDIR (Optional) Directory path location of temporary directory

+rem                   the JVM should use (java.io.tmpdir).  Defaults to

+rem                   %CATALINA_BASE%\temp.

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem                   Required to run the with the "debug" argument.

+rem

+rem   JRE_HOME        Must point at your Java Runtime installation.

+rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME

+rem                   are both set, JRE_HOME is used.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options used when any command

+rem                   is executed.

+rem                   Include here and not in CATALINA_OPTS all options, that

+rem                   should be used by Tomcat and also by the stop process,

+rem                   the version command etc.

+rem                   Most options should go into CATALINA_OPTS.

+rem

+rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories

+rem                   containing some jars in order to allow replacement of APIs

+rem                   created outside of the JCP (i.e. DOM and SAX from W3C).

+rem                   It can also be used to update the XML parser implementation.

+rem                   Defaults to $CATALINA_HOME/endorsed.

+rem

+rem   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"

+rem                   command is executed. The default is "dt_socket".

+rem

+rem   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"

+rem                   command is executed. The default is 8000.

+rem

+rem   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"

+rem                   command is executed. Specifies whether JVM should suspend

+rem                   execution immediately after startup. Default is "n".

+rem

+rem   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"

+rem                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,

+rem                   and JPDA_SUSPEND are ignored. Thus, all required jpda

+rem                   options MUST be specified. The default is:

+rem

+rem                   -agentlib:jdwp=transport=%JPDA_TRANSPORT%,

+rem                       address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

+rem

+rem   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file

+rem                   Example (all one line)

+rem                   set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties"

+rem

+rem   LOGGING_MANAGER (Optional) Override Tomcat's logging manager

+rem                   Example (all one line)

+rem                   set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

+rem

+rem   TITLE           (Optional) Specify the title of Tomcat window. The default

+rem                   TITLE is Tomcat if it's not specified.

+rem                   Example (all one line)

+rem                   set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%]

+rem

+rem

+rem

+rem $Id: catalina.bat 1344732 2012-05-31 14:08:02Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Suppress Terminate batch job on CTRL+C

+if not ""%1"" == ""run"" goto mainEntry

+if "%TEMP%" == "" goto mainEntry

+if exist "%TEMP%\%~nx0.run" goto mainEntry

+echo Y>"%TEMP%\%~nx0.run"

+if not exist "%TEMP%\%~nx0.run" goto mainEntry

+echo Y>"%TEMP%\%~nx0.Y"

+call "%~f0" %* <"%TEMP%\%~nx0.Y"

+rem Use provided errorlevel

+set RETVAL=%ERRORLEVEL%

+del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1

+exit /B %RETVAL%

+:mainEntry

+del /Q "%TEMP%\%~nx0.run" >NUL 2>&1

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+rem Copy CATALINA_BASE from CATALINA_HOME if not defined

+if not "%CATALINA_BASE%" == "" goto gotBase

+set "CATALINA_BASE=%CATALINA_HOME%"

+:gotBase

+

+rem Ensure that any user defined CLASSPATH variables are not used on startup,

+rem but allow them to be specified in setenv.bat, in rare case when it is needed.

+set CLASSPATH=

+

+rem Get standard environment variables

+if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome

+call "%CATALINA_BASE%\bin\setenv.bat"

+goto setenvDone

+:checkSetenvHome

+if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"

+:setenvDone

+

+rem Get standard Java environment variables

+if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath

+echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"

+echo This file is needed to run this program

+goto end

+:okSetclasspath

+call "%CATALINA_HOME%\bin\setclasspath.bat" %1

+if errorlevel 1 goto end

+

+rem Add on extra jar file to CLASSPATH

+rem Note that there are no quotes as we do not want to introduce random

+rem quotes into the CLASSPATH

+if "%CLASSPATH%" == "" goto emptyClasspath

+set "CLASSPATH=%CLASSPATH%;"

+:emptyClasspath

+set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"

+

+if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir

+set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"

+:gotTmpdir

+

+rem Add tomcat-juli.jar to classpath

+rem tomcat-juli.jar can be over-ridden per instance

+if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome

+set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar"

+goto juliClasspathDone

+:juliClasspathHome

+set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"

+:juliClasspathDone

+

+if not "%LOGGING_CONFIG%" == "" goto noJuliConfig

+set LOGGING_CONFIG=-Dnop

+if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig

+set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

+:noJuliConfig

+set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

+

+if not "%LOGGING_MANAGER%" == "" goto noJuliManager

+set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

+:noJuliManager

+set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%

+

+rem ----- Execute The Requested Command ---------------------------------------

+

+echo Using CATALINA_BASE:   "%CATALINA_BASE%"

+echo Using CATALINA_HOME:   "%CATALINA_HOME%"

+echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"

+if ""%1"" == ""debug"" goto use_jdk

+echo Using JRE_HOME:        "%JRE_HOME%"

+goto java_dir_displayed

+:use_jdk

+echo Using JAVA_HOME:       "%JAVA_HOME%"

+:java_dir_displayed

+echo Using CLASSPATH:       "%CLASSPATH%"

+

+set _EXECJAVA=%_RUNJAVA%

+set MAINCLASS=org.apache.catalina.startup.Bootstrap

+set ACTION=start

+set SECURITY_POLICY_FILE=

+set DEBUG_OPTS=

+set JPDA=

+

+if not ""%1"" == ""jpda"" goto noJpda

+set JPDA=jpda

+if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport

+set JPDA_TRANSPORT=dt_socket

+:gotJpdaTransport

+if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress

+set JPDA_ADDRESS=8000

+:gotJpdaAddress

+if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend

+set JPDA_SUSPEND=n

+:gotJpdaSuspend

+if not "%JPDA_OPTS%" == "" goto gotJpdaOpts

+set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

+:gotJpdaOpts

+shift

+:noJpda

+

+if ""%1"" == ""debug"" goto doDebug

+if ""%1"" == ""run"" goto doRun

+if ""%1"" == ""start"" goto doStart

+if ""%1"" == ""stop"" goto doStop

+if ""%1"" == ""configtest"" goto doConfigTest

+if ""%1"" == ""version"" goto doVersion

+

+echo Usage:  catalina ( commands ... )

+echo commands:

+echo   debug             Start Catalina in a debugger

+echo   debug -security   Debug Catalina with a security manager

+echo   jpda start        Start Catalina under JPDA debugger

+echo   run               Start Catalina in the current window

+echo   run -security     Start in the current window with security manager

+echo   start             Start Catalina in a separate window

+echo   start -security   Start in a separate window with security manager

+echo   stop              Stop Catalina

+echo   configtest        Run a basic syntax check on server.xml

+echo   version           What version of tomcat are you running?

+goto end

+

+:doDebug

+shift

+set _EXECJAVA=%_RUNJDB%

+set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java"

+if not ""%1"" == ""-security"" goto execCmd

+shift

+echo Using Security Manager

+set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"

+goto execCmd

+

+:doRun

+shift

+if not ""%1"" == ""-security"" goto execCmd

+shift

+echo Using Security Manager

+set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"

+goto execCmd

+

+:doStart

+shift

+if not "%OS%" == "Windows_NT" goto noTitle

+if "%TITLE%" == "" set TITLE=Tomcat

+set _EXECJAVA=start "%TITLE%" %_RUNJAVA%

+goto gotTitle

+:noTitle

+set _EXECJAVA=start %_RUNJAVA%

+:gotTitle

+if not ""%1"" == ""-security"" goto execCmd

+shift

+echo Using Security Manager

+set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"

+goto execCmd

+

+:doStop

+shift

+set ACTION=stop

+set CATALINA_OPTS=

+goto execCmd

+

+:doConfigTest

+shift

+set ACTION=configtest

+set CATALINA_OPTS=

+goto execCmd

+

+:doVersion

+%_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo

+goto end

+

+

+:execCmd

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+rem Execute Java with the applicable properties

+if not "%JPDA%" == "" goto doJpda

+if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+:doSecurity

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+:doJpda

+if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+:doSecurityJpda

+%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

+goto end

+

+:end

diff --git a/bin/catalina.sh b/bin/catalina.sh
new file mode 100755
index 0000000..c8d5493
--- /dev/null
+++ b/bin/catalina.sh
@@ -0,0 +1,547 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+# Control Script for the CATALINA Server
+#
+# Environment Variable Prerequisites
+#
+#   Do not set the variables in this script. Instead put them into a script
+#   setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
+#
+#   CATALINA_HOME   May point at your Catalina "build" directory.
+#
+#   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
+#                   of a Catalina installation.  If not present, resolves to
+#                   the same directory that CATALINA_HOME points to.
+#
+#   CATALINA_OUT    (Optional) Full path to a file where stdout and stderr
+#                   will be redirected.
+#                   Default is $CATALINA_BASE/logs/catalina.out
+#
+#   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
+#                   "run" or "debug" command is executed.
+#                   Include here and not in JAVA_OPTS all options, that should
+#                   only be used by Tomcat itself, not by the stop process,
+#                   the version command etc.
+#                   Examples are heap size, GC logging, JMX ports etc.
+#
+#   CATALINA_TMPDIR (Optional) Directory path location of temporary directory
+#                   the JVM should use (java.io.tmpdir).  Defaults to
+#                   $CATALINA_BASE/temp.
+#
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#                   Required to run the with the "debug" argument.
+#
+#   JRE_HOME        Must point at your Java Runtime installation.
+#                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
+#                   are both set, JRE_HOME is used.
+#
+#   JAVA_OPTS       (Optional) Java runtime options used when any command
+#                   is executed.
+#                   Include here and not in CATALINA_OPTS all options, that
+#                   should be used by Tomcat and also by the stop process,
+#                   the version command etc.
+#                   Most options should go into CATALINA_OPTS.
+#
+#   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
+#                   containing some jars in order to allow replacement of APIs
+#                   created outside of the JCP (i.e. DOM and SAX from W3C).
+#                   It can also be used to update the XML parser implementation.
+#                   Defaults to $CATALINA_HOME/endorsed.
+#
+#   JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start"
+#                   command is executed. The default is "dt_socket".
+#
+#   JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start"
+#                   command is executed. The default is 8000.
+#
+#   JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start"
+#                   command is executed. Specifies whether JVM should suspend
+#                   execution immediately after startup. Default is "n".
+#
+#   JPDA_OPTS       (Optional) Java runtime options used when the "jpda start"
+#                   command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,
+#                   and JPDA_SUSPEND are ignored. Thus, all required jpda
+#                   options MUST be specified. The default is:
+#
+#                   -agentlib:jdwp=transport=$JPDA_TRANSPORT,
+#                       address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND
+#
+#   CATALINA_PID    (Optional) Path of the file which should contains the pid
+#                   of the catalina startup java process, when start (fork) is
+#                   used
+#
+#   LOGGING_CONFIG  (Optional) Override Tomcat's logging config file
+#                   Example (all one line)
+#                   LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
+#
+#   LOGGING_MANAGER (Optional) Override Tomcat's logging manager
+#                   Example (all one line)
+#                   LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+#
+# $Id: catalina.sh 1498485 2013-07-01 14:37:43Z markt $
+# -----------------------------------------------------------------------------
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false
+darwin=false
+os400=false
+case "`uname`" in
+CYGWIN*) cygwin=true;;
+Darwin*) darwin=true;;
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ]; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+# Get standard environment variables
+PRGDIR=`dirname "$PRG"`
+
+# Only set CATALINA_HOME if not already set
+[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
+
+# Copy CATALINA_BASE from CATALINA_HOME if not already set
+[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
+
+# Ensure that any user defined CLASSPATH variables are not used on startup,
+# but allow them to be specified in setenv.sh, in rare case when it is needed.
+CLASSPATH=
+
+if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
+  . "$CATALINA_BASE/bin/setenv.sh"
+elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
+  . "$CATALINA_HOME/bin/setenv.sh"
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin; then
+  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
+  [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
+  [ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
+  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For OS400
+if $os400; then
+  # Set job priority to standard for interactive (interactive - 6) by using
+  # the interactive priority - 6, the helper threads that respond to requests
+  # will be running at the same priority as interactive jobs.
+  COMMAND='chgjob job('$JOBNAME') runpty(6)'
+  system $COMMAND
+
+  # Enable multi threading
+  export QIBM_MULTI_THREADED=Y
+fi
+
+# Get standard Java environment variables
+if $os400; then
+  # -r will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  . "$CATALINA_HOME"/bin/setclasspath.sh
+else
+  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
+    . "$CATALINA_HOME"/bin/setclasspath.sh
+  else
+    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+# Add on extra jar files to CLASSPATH
+if [ ! -z "$CLASSPATH" ] ; then
+  CLASSPATH="$CLASSPATH":
+fi
+CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
+
+if [ -z "$CATALINA_OUT" ] ; then
+  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
+fi
+
+if [ -z "$CATALINA_TMPDIR" ] ; then
+  # Define the java.io.tmpdir to use for Catalina
+  CATALINA_TMPDIR="$CATALINA_BASE"/temp
+fi
+
+# Add tomcat-juli.jar to classpath
+# tomcat-juli.jar can be over-ridden per instance
+if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
+  CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar
+else
+  CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar
+fi
+
+# Bugzilla 37848: When no TTY is available, don't output to console
+have_tty=0
+if [ "`tty`" != "not a tty" ]; then
+    have_tty=1
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
+  JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
+  CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
+  CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"`
+  CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"`
+  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
+fi
+
+# Set juli LogManager config file if it is present and an override has not been issued
+if [ -z "$LOGGING_CONFIG" ]; then
+  if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then
+    LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
+  else
+    # Bugzilla 45585
+    LOGGING_CONFIG="-Dnop"
+  fi
+fi
+
+if [ -z "$LOGGING_MANAGER" ]; then
+  LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+fi
+
+# Uncomment the following line to make the umask available when using the
+# org.apache.catalina.security.SecurityListener
+#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
+
+# ----- Execute The Requested Command -----------------------------------------
+
+# Bugzilla 37848: only output this if we have a TTY
+if [ $have_tty -eq 1 ]; then
+  echo "Using CATALINA_BASE:   $CATALINA_BASE"
+  echo "Using CATALINA_HOME:   $CATALINA_HOME"
+  echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"
+  if [ "$1" = "debug" ] ; then
+    echo "Using JAVA_HOME:       $JAVA_HOME"
+  else
+    echo "Using JRE_HOME:        $JRE_HOME"
+  fi
+  echo "Using CLASSPATH:       $CLASSPATH"
+  if [ ! -z "$CATALINA_PID" ]; then
+    echo "Using CATALINA_PID:    $CATALINA_PID"
+  fi
+fi
+
+if [ "$1" = "jpda" ] ; then
+  if [ -z "$JPDA_TRANSPORT" ]; then
+    JPDA_TRANSPORT="dt_socket"
+  fi
+  if [ -z "$JPDA_ADDRESS" ]; then
+    JPDA_ADDRESS="8000"
+  fi
+  if [ -z "$JPDA_SUSPEND" ]; then
+    JPDA_SUSPEND="n"
+  fi
+  if [ -z "$JPDA_OPTS" ]; then
+    JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
+  fi
+  CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
+  shift
+fi
+
+if [ "$1" = "debug" ] ; then
+  if $os400; then
+    echo "Debug command not available on OS400"
+    exit 1
+  else
+    shift
+    if [ "$1" = "-security" ] ; then
+      if [ $have_tty -eq 1 ]; then
+        echo "Using Security Manager"
+      fi
+      shift
+      exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+        -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+        -sourcepath "$CATALINA_HOME"/../../java \
+        -Djava.security.manager \
+        -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
+        -Dcatalina.base="$CATALINA_BASE" \
+        -Dcatalina.home="$CATALINA_HOME" \
+        -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+        org.apache.catalina.startup.Bootstrap "$@" start
+    else
+      exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+        -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+        -sourcepath "$CATALINA_HOME"/../../java \
+        -Dcatalina.base="$CATALINA_BASE" \
+        -Dcatalina.home="$CATALINA_HOME" \
+        -Djava.io.tmpdir="$CATALINA_TMPDIR" \
+        org.apache.catalina.startup.Bootstrap "$@" start
+    fi
+  fi
+
+elif [ "$1" = "run" ]; then
+
+  shift
+  if [ "$1" = "-security" ] ; then
+    if [ $have_tty -eq 1 ]; then
+      echo "Using Security Manager"
+    fi
+    shift
+    eval exec \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Djava.security.manager \
+      -Djava.security.policy==\"$CATALINA_BASE/conf/catalina.policy\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start
+  else
+    eval exec \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start
+  fi
+
+elif [ "$1" = "start" ] ; then
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    if [ -f "$CATALINA_PID" ]; then
+      if [ -s "$CATALINA_PID" ]; then
+        echo "Existing PID file found during start."
+        if [ -r "$CATALINA_PID" ]; then
+          PID=`cat "$CATALINA_PID"`
+          ps -p $PID >/dev/null 2>&1
+          if [ $? -eq 0 ] ; then
+            echo "Tomcat appears to still be running with PID $PID. Start aborted."
+            exit 1
+          else
+            echo "Removing/clearing stale PID file."
+            rm -f "$CATALINA_PID" >/dev/null 2>&1
+            if [ $? != 0 ]; then
+              if [ -w "$CATALINA_PID" ]; then
+                cat /dev/null > "$CATALINA_PID"
+              else
+                echo "Unable to remove or clear stale PID file. Start aborted."
+                exit 1
+              fi
+            fi
+          fi
+        else
+          echo "Unable to read PID file. Start aborted."
+          exit 1
+        fi
+      else
+        rm -f "$CATALINA_PID" >/dev/null 2>&1
+        if [ $? != 0 ]; then
+          if [ ! -w "$CATALINA_PID" ]; then
+            echo "Unable to remove or write to empty PID file. Start aborted."
+            exit 1
+          fi
+        fi
+      fi
+    fi
+  fi
+
+  shift
+  touch "$CATALINA_OUT"
+  if [ "$1" = "-security" ] ; then
+    if [ $have_tty -eq 1 ]; then
+      echo "Using Security Manager"
+    fi
+    shift
+    eval \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Djava.security.manager \
+      -Djava.security.policy==\"$CATALINA_BASE/conf/catalina.policy\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start \
+      >> "$CATALINA_OUT" 2>&1 "&"
+
+  else
+    eval \"$_RUNJAVA\" \"$LOGGING_CONFIG\" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap "$@" start \
+      >> "$CATALINA_OUT" 2>&1 "&"
+
+  fi
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    echo $! > "$CATALINA_PID"
+  fi
+
+elif [ "$1" = "stop" ] ; then
+
+  shift
+
+  SLEEP=5
+  if [ ! -z "$1" ]; then
+    echo $1 | grep "[^0-9]" >/dev/null 2>&1
+    if [ $? -gt 0 ]; then
+      SLEEP=$1
+      shift
+    fi
+  fi
+
+  FORCE=0
+  if [ "$1" = "-force" ]; then
+    shift
+    FORCE=1
+  fi
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    if [ -f "$CATALINA_PID" ]; then
+      if [ -s "$CATALINA_PID" ]; then
+        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
+        if [ $? -gt 0 ]; then
+          echo "PID file found but no matching process was found. Stop aborted."
+          exit 1
+        fi
+      else
+        echo "PID file is empty and has been ignored."
+      fi
+    else
+      echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
+      exit 1
+    fi
+  fi
+
+  eval \"$_RUNJAVA\" $LOGGING_MANAGER $JAVA_OPTS \
+    -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+    -Dcatalina.base=\"$CATALINA_BASE\" \
+    -Dcatalina.home=\"$CATALINA_HOME\" \
+    -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+    org.apache.catalina.startup.Bootstrap "$@" stop
+
+  if [ ! -z "$CATALINA_PID" ]; then
+    if [ -f "$CATALINA_PID" ]; then
+      while [ $SLEEP -ge 0 ]; do
+        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
+        if [ $? -gt 0 ]; then
+          rm -f "$CATALINA_PID" >/dev/null 2>&1
+          if [ $? != 0 ]; then
+            if [ -w "$CATALINA_PID" ]; then
+              cat /dev/null > "$CATALINA_PID"
+            else
+              echo "Tomcat stopped but the PID file could not be removed or cleared."
+            fi
+          fi
+          break
+        fi
+        if [ $SLEEP -gt 0 ]; then
+          sleep 1
+        fi
+        if [ $SLEEP -eq 0 ]; then
+          if [ $FORCE -eq 0 ]; then
+            echo "Tomcat did not stop in time. PID file was not removed."
+          fi
+        fi
+        SLEEP=`expr $SLEEP - 1 `
+      done
+    fi
+  fi
+
+  KILL_SLEEP_INTERVAL=5
+  if [ $FORCE -eq 1 ]; then
+    if [ -z "$CATALINA_PID" ]; then
+      echo "Kill failed: \$CATALINA_PID not set"
+    else
+      if [ -f "$CATALINA_PID" ]; then
+        PID=`cat "$CATALINA_PID"`
+        echo "Killing Tomcat with the PID: $PID"
+        kill -9 $PID
+        while [ $KILL_SLEEP_INTERVAL -ge 0 ]; do
+            kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
+            if [ $? -gt 0 ]; then
+                rm -f "$CATALINA_PID" >/dev/null 2>&1
+                if [ $? != 0 ]; then
+                    echo "Tomcat was killed but the PID file could not be removed."
+                fi
+                break
+            fi
+            if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then
+                sleep 1
+            fi
+            KILL_SLEEP_INTERVAL=`expr $KILL_SLEEP_INTERVAL - 1 `
+        done
+        if [ $KILL_SLEEP_INTERVAL -gt 0 ]; then
+            echo "Tomcat has not been killed completely yet. The process might be waiting on some system call or might be UNINTERRUPTIBLE."
+        fi
+      fi
+    fi
+  fi
+
+elif [ "$1" = "configtest" ] ; then
+
+    eval \"$_RUNJAVA\" $LOGGING_MANAGER $JAVA_OPTS \
+      -Djava.endorsed.dirs=\"$JAVA_ENDORSED_DIRS\" -classpath \"$CLASSPATH\" \
+      -Dcatalina.base=\"$CATALINA_BASE\" \
+      -Dcatalina.home=\"$CATALINA_HOME\" \
+      -Djava.io.tmpdir=\"$CATALINA_TMPDIR\" \
+      org.apache.catalina.startup.Bootstrap configtest
+    result=$?
+    if [ $result -ne 0 ]; then
+        echo "Configuration error detected!"
+    fi
+    exit $result
+
+elif [ "$1" = "version" ] ; then
+
+    "$_RUNJAVA"   \
+      -classpath "$CATALINA_HOME/lib/catalina.jar" \
+      org.apache.catalina.util.ServerInfo
+
+else
+
+  echo "Usage: catalina.sh ( commands ... )"
+  echo "commands:"
+  if $os400; then
+    echo "  debug             Start Catalina in a debugger (not available on OS400)"
+    echo "  debug -security   Debug Catalina with a security manager (not available on OS400)"
+  else
+    echo "  debug             Start Catalina in a debugger"
+    echo "  debug -security   Debug Catalina with a security manager"
+  fi
+  echo "  jpda start        Start Catalina under JPDA debugger"
+  echo "  run               Start Catalina in the current window"
+  echo "  run -security     Start in the current window with security manager"
+  echo "  start             Start Catalina in a separate window"
+  echo "  start -security   Start in a separate window with security manager"
+  echo "  stop              Stop Catalina, waiting up to 5 seconds for the process to end"
+  echo "  stop n            Stop Catalina, waiting up to n seconds for the process to end"
+  echo "  stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running"
+  echo "  stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running"
+  echo "  configtest        Run a basic syntax check on server.xml - check exit code for result"
+  echo "  version           What version of tomcat are you running?"
+  echo "Note: Waiting for the process to end and use of the -force option require that \$CATALINA_PID is defined"
+  exit 1
+
+fi
diff --git a/bin/commons-daemon-native.tar.gz b/bin/commons-daemon-native.tar.gz
new file mode 100644
index 0000000..6d25918
--- /dev/null
+++ b/bin/commons-daemon-native.tar.gz
Binary files differ
diff --git a/bin/commons-daemon.jar b/bin/commons-daemon.jar
new file mode 100644
index 0000000..2b6b9c6
--- /dev/null
+++ b/bin/commons-daemon.jar
Binary files differ
diff --git a/bin/configtest.bat b/bin/configtest.bat
new file mode 100644
index 0000000..c3bfd89
--- /dev/null
+++ b/bin/configtest.bat
@@ -0,0 +1,59 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Configuration test script for the CATALINA Server

+rem

+rem $Id: configtest.bat 1137560 2011-06-20 09:27:44Z rjung $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" configtest %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/configtest.sh b/bin/configtest.sh
new file mode 100755
index 0000000..f084e78
--- /dev/null
+++ b/bin/configtest.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+# Configuration Test Script for the CATALINA Server
+#
+# $Id: configtest.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" configtest "$@"
diff --git a/bin/cpappend.bat b/bin/cpappend.bat
new file mode 100644
index 0000000..b9b90c1
--- /dev/null
+++ b/bin/cpappend.bat
@@ -0,0 +1,35 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+rem ---------------------------------------------------------------------------

+rem Append to CLASSPATH

+rem

+rem $Id: cpappend.bat 562770 2007-08-04 22:13:58Z markt $

+rem ---------------------------------------------------------------------------

+

+rem Process the first argument

+if ""%1"" == """" goto end

+set CLASSPATH=%CLASSPATH%;%1

+shift

+

+rem Process the remaining arguments

+:setArgs

+if ""%1"" == """" goto doneSetArgs

+set CLASSPATH=%CLASSPATH% %1

+shift

+goto setArgs

+:doneSetArgs

+:end

diff --git a/bin/daemon.sh b/bin/daemon.sh
new file mode 100755
index 0000000..9a4640d
--- /dev/null
+++ b/bin/daemon.sh
@@ -0,0 +1,241 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+#
+# -----------------------------------------------------------------------------
+# Commons Daemon wrapper script.
+#
+# $Id: daemon.sh 1202058 2011-11-15 06:37:12Z mturk $
+# -----------------------------------------------------------------------------
+#
+# resolve links - $0 may be a softlink
+ARG0="$0"
+while [ -h "$ARG0" ]; do
+  ls=`ls -ld "$ARG0"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    ARG0="$link"
+  else
+    ARG0="`dirname $ARG0`/$link"
+  fi
+done
+DIRNAME="`dirname $ARG0`"
+PROGRAM="`basename $ARG0`"
+while [ ".$1" != . ]
+do
+  case "$1" in
+    --java-home )
+        JAVA_HOME="$2"
+        shift; shift;
+        continue
+    ;;
+    --catalina-home )
+        CATALINA_HOME="$2"
+        shift; shift;
+        continue
+    ;;
+    --catalina-base )
+        CATALINA_BASE="$2"
+        shift; shift;
+        continue
+    ;;
+    --catalina-pid )
+        CATALINA_PID="$2"
+        shift; shift;
+        continue
+    ;;
+    --tomcat-user )
+        TOMCAT_USER="$2"
+        shift; shift;
+        continue
+    ;;
+    * )
+        break
+    ;;
+  esac
+done
+# OS specific support (must be 'true' or 'false').
+cygwin=false;
+darwin=false;
+case "`uname`" in
+    CYGWIN*)
+        cygwin=true
+        ;;
+    Darwin*)
+        darwin=true
+        ;;
+esac
+
+# Use the maximum available, or set MAX_FD != -1 to use that
+test ".$MAX_FD" = . && MAX_FD="maximum"
+# Setup parameters for running the jsvc
+#
+test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat
+# Set JAVA_HOME to working JDK or JRE
+# JAVA_HOME=/opt/jdk-1.6.0.22
+# If not set we'll try to guess the JAVA_HOME
+# from java binary if on the PATH
+#
+if [ -z "$JAVA_HOME" ]; then
+    JAVA_BIN="`which java 2>/dev/null || type java 2>&1`"
+    test -x "$JAVA_BIN" && JAVA_HOME="`dirname $JAVA_BIN`"
+    test ".$JAVA_HOME" != . && JAVA_HOME=`cd "$JAVA_HOME/.." >/dev/null; pwd`
+else
+    JAVA_BIN="$JAVA_HOME/bin/java"
+fi
+
+# Only set CATALINA_HOME if not already set
+test ".$CATALINA_HOME" = . && CATALINA_HOME=`cd "$DIRNAME/.." >/dev/null; pwd`
+test ".$CATALINA_BASE" = . && CATALINA_BASE="$CATALINA_HOME"
+test ".$CATALINA_MAIN" = . && CATALINA_MAIN=org.apache.catalina.startup.Bootstrap
+test ".$JSVC" = . && JSVC="$CATALINA_BASE/bin/jsvc"
+
+# Ensure that any user defined CLASSPATH variables are not used on startup,
+# but allow them to be specified in setenv.sh, in rare case when it is needed.
+CLASSPATH=
+JAVA_OPTS=
+if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
+  . "$CATALINA_BASE/bin/setenv.sh"
+elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
+  . "$CATALINA_HOME/bin/setenv.sh"
+fi
+
+# Add on extra jar files to CLASSPATH
+test ".$CLASSPATH" != . && CLASSPATH="${CLASSPATH}:"
+CLASSPATH="$CLASSPATH$CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/commons-daemon.jar"
+
+test ".$CATALINA_OUT" = . && CATALINA_OUT="$CATALINA_BASE/logs/catalina-daemon.out"
+test ".$CATALINA_TMP" = . && CATALINA_TMP="$CATALINA_BASE/temp"
+
+# Add tomcat-juli.jar to classpath
+# tomcat-juli.jar can be over-ridden per instance
+if [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; then
+  CLASSPATH="$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar"
+else
+  CLASSPATH="$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar"
+fi
+# Set juli LogManager config file if it is present and an override has not been issued
+if [ -z "$LOGGING_CONFIG" ]; then
+  if [ -r "$CATALINA_BASE/conf/logging.properties" ]; then
+    LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
+  else
+    # Bugzilla 45585
+    LOGGING_CONFIG="-Dnop"
+  fi
+fi
+
+test ".$LOGGING_MANAGER" = . && LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"
+
+# Set -pidfile
+test ".$CATALINA_PID" = . && CATALINA_PID="$CATALINA_BASE/logs/catalina-daemon.pid"
+
+# Increase the maximum file descriptors if we can
+if [ "$cygwin" = "false" ]; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ "$?" -eq 0 ]; then
+        # Darwin does not allow RLIMIT_INFINITY on file soft limit
+        if [ "$darwin" = "true" -a "$MAX_FD_LIMIT" = "unlimited" ]; then
+            MAX_FD_LIMIT=`/usr/sbin/sysctl -n kern.maxfilesperproc`
+        fi
+        test ".$MAX_FD" = ".maximum" && MAX_FD="$MAX_FD_LIMIT"
+        ulimit -n $MAX_FD
+        if [ "$?" -ne 0 ]; then
+            echo "$PROGRAM: Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        echo "$PROGRAM: Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# ----- Execute The Requested Command -----------------------------------------
+case "$1" in
+    run     )
+      shift
+      "$JSVC" $* \
+      $JSVC_OPTS \
+      -java-home "$JAVA_HOME" \
+      -pidfile "$CATALINA_PID" \
+      -wait 10 \
+      -nodetach \
+      -outfile "&1" \
+      -errfile "&2" \
+      -classpath "$CLASSPATH" \
+      "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
+      -Dcatalina.base="$CATALINA_BASE" \
+      -Dcatalina.home="$CATALINA_HOME" \
+      -Djava.io.tmpdir="$CATALINA_TMP" \
+      $CATALINA_MAIN
+      exit $?
+    ;;
+    start   )
+      "$JSVC" $JSVC_OPTS \
+      -java-home "$JAVA_HOME" \
+      -user $TOMCAT_USER \
+      -pidfile "$CATALINA_PID" \
+      -wait 10 \
+      -outfile "$CATALINA_OUT" \
+      -errfile "&1" \
+      -classpath "$CLASSPATH" \
+      "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
+      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
+      -Dcatalina.base="$CATALINA_BASE" \
+      -Dcatalina.home="$CATALINA_HOME" \
+      -Djava.io.tmpdir="$CATALINA_TMP" \
+      $CATALINA_MAIN
+      exit $?
+    ;;
+    stop    )
+      "$JSVC" $JSVC_OPTS \
+      -stop \
+      -pidfile "$CATALINA_PID" \
+      -classpath "$CLASSPATH" \
+      -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
+      -Dcatalina.base="$CATALINA_BASE" \
+      -Dcatalina.home="$CATALINA_HOME" \
+      -Djava.io.tmpdir="$CATALINA_TMP" \
+      $CATALINA_MAIN
+      exit $?
+    ;;
+    version  )
+      "$JSVC" \
+      -java-home "$JAVA_HOME" \
+      -pidfile "$CATALINA_PID" \
+      -classpath "$CLASSPATH" \
+      -errfile "&2" \
+      -version \
+      -check \
+      $CATALINA_MAIN
+      if [ "$?" = 0 ]; then
+        "$JAVA_BIN" \
+        -classpath "$CATALINA_HOME/lib/catalina.jar" \
+        org.apache.catalina.util.ServerInfo
+      fi
+      exit $?
+    ;;
+    *       )
+      echo "Unknown command: \`$1'"
+      echo "Usage: $PROGRAM ( commands ... )"
+      echo "commands:"
+      echo "  run               Start Tomcat without detaching from console"
+      echo "  start             Start Tomcat"
+      echo "  stop              Stop Tomcat"
+      echo "  version           What version of commons daemon and Tomcat"
+      echo "                    are you running?"
+      exit 1
+    ;;
+esac
diff --git a/bin/digest.bat b/bin/digest.bat
new file mode 100644
index 0000000..41491dc
--- /dev/null
+++ b/bin/digest.bat
@@ -0,0 +1,59 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Script to digest password using the algorithm specified

+rem

+rem $Id: digest.bat 1137559 2011-06-20 09:27:30Z rjung $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\tool-wrapper.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" -server org.apache.catalina.realm.RealmBase %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/digest.sh b/bin/digest.sh
new file mode 100755
index 0000000..7aa0c40
--- /dev/null
+++ b/bin/digest.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+# Script to digest password using the algorithm specified
+#
+# $Id: digest.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=tool-wrapper.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" -server org.apache.catalina.realm.RealmBase "$@"
diff --git a/bin/setclasspath.bat b/bin/setclasspath.bat
new file mode 100644
index 0000000..e29b41a
--- /dev/null
+++ b/bin/setclasspath.bat
@@ -0,0 +1,88 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+rem ---------------------------------------------------------------------------

+rem Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings

+rem are valid and consistent with the selected start-up options and set up the

+rem endorsed directory.

+rem

+rem $Id: setclasspath.bat 1202062 2011-11-15 06:50:02Z mturk $

+rem ---------------------------------------------------------------------------

+

+rem Make sure prerequisite environment variables are set

+

+rem In debug mode we need a real JDK (JAVA_HOME)

+if ""%1"" == ""debug"" goto needJavaHome

+

+rem Otherwise either JRE or JDK are fine

+if not "%JRE_HOME%" == "" goto gotJreHome

+if not "%JAVA_HOME%" == "" goto gotJavaHome

+echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

+echo At least one of these environment variable is needed to run this program

+goto exit

+

+:needJavaHome

+rem Check if we have a usable JDK

+if "%JAVA_HOME%" == "" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome

+if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome

+set "JRE_HOME=%JAVA_HOME%"

+goto okJava

+

+:noJavaHome

+echo The JAVA_HOME environment variable is not defined correctly.

+echo It is needed to run this program in debug mode.

+echo NB: JAVA_HOME should point to a JDK not a JRE.

+goto exit

+

+:gotJavaHome

+rem No JRE given, use JAVA_HOME as JRE_HOME

+set "JRE_HOME=%JAVA_HOME%"

+

+:gotJreHome

+rem Check if we have a usable JRE

+if not exist "%JRE_HOME%\bin\java.exe" goto noJreHome

+if not exist "%JRE_HOME%\bin\javaw.exe" goto noJreHome

+goto okJava

+

+:noJreHome

+rem Needed at least a JRE

+echo The JRE_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto exit

+

+:okJava

+rem Don't override the endorsed dir if the user has set it previously

+if not "%JAVA_ENDORSED_DIRS%" == "" goto gotEndorseddir

+rem Set the default -Djava.endorsed.dirs argument

+set "JAVA_ENDORSED_DIRS=%CATALINA_HOME%\endorsed"

+:gotEndorseddir

+

+rem Set standard command for invoking Java.

+rem Note that NT requires a window name argument when using start.

+rem Also note the quoting as JAVA_HOME may contain spaces.

+set _RUNJAVA="%JRE_HOME%\bin\java"

+set _RUNJDB="%JAVA_HOME%\bin\jdb"

+

+goto end

+

+:exit

+exit /b 1

+

+:end

+exit /b 0

diff --git a/bin/setclasspath.sh b/bin/setclasspath.sh
new file mode 100755
index 0000000..b6c42dd
--- /dev/null
+++ b/bin/setclasspath.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+#  Set JAVA_HOME or JRE_HOME if not already set, ensure any provided settings
+#  are valid and consistent with the selected start-up options and set up the
+#  endorsed directory.
+#
+#  $Id: setclasspath.sh 1430568 2013-01-08 22:08:57Z schultz $
+# -----------------------------------------------------------------------------
+
+# Make sure prerequisite environment variables are set
+if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then
+  if $darwin; then
+    # Bugzilla 54390
+    if [ -x '/usr/libexec/java_home' ] ; then
+      export JAVA_HOME=`/usr/libexec/java_home`
+    # Bugzilla 37284 (reviewed).
+    elif [ -d "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home" ]; then
+      export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home"
+    fi
+  else
+    JAVA_PATH=`which java 2>/dev/null`
+    if [ "x$JAVA_PATH" != "x" ]; then
+      JAVA_PATH=`dirname $JAVA_PATH 2>/dev/null`
+      JRE_HOME=`dirname $JAVA_PATH 2>/dev/null`
+    fi
+    if [ "x$JRE_HOME" = "x" ]; then
+      # XXX: Should we try other locations?
+      if [ -x /usr/bin/java ]; then
+        JRE_HOME=/usr
+      fi
+    fi
+  fi
+  if [ -z "$JAVA_HOME" -a -z "$JRE_HOME" ]; then
+    echo "Neither the JAVA_HOME nor the JRE_HOME environment variable is defined"
+    echo "At least one of these environment variable is needed to run this program"
+    exit 1
+  fi
+fi
+if [ -z "$JAVA_HOME" -a "$1" = "debug" ]; then
+  echo "JAVA_HOME should point to a JDK in order to run in debug mode."
+  exit 1
+fi
+if [ -z "$JRE_HOME" ]; then
+  JRE_HOME="$JAVA_HOME"
+fi
+
+# If we're running under jdb, we need a full jdk.
+if [ "$1" = "debug" ] ; then
+  if [ "$os400" = "true" ]; then
+    if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/javac ]; then
+      echo "The JAVA_HOME environment variable is not defined correctly"
+      echo "This environment variable is needed to run this program"
+      echo "NB: JAVA_HOME should point to a JDK not a JRE"
+      exit 1
+    fi
+  else
+    if [ ! -x "$JAVA_HOME"/bin/java -o ! -x "$JAVA_HOME"/bin/jdb -o ! -x "$JAVA_HOME"/bin/javac ]; then
+      echo "The JAVA_HOME environment variable is not defined correctly"
+      echo "This environment variable is needed to run this program"
+      echo "NB: JAVA_HOME should point to a JDK not a JRE"
+      exit 1
+    fi
+  fi
+fi
+
+# Don't override the endorsed dir if the user has set it previously
+if [ -z "$JAVA_ENDORSED_DIRS" ]; then
+  # Set the default -Djava.endorsed.dirs argument
+  JAVA_ENDORSED_DIRS="$CATALINA_HOME"/endorsed
+fi
+
+# Set standard commands for invoking Java.
+_RUNJAVA="$JRE_HOME"/bin/java
+if [ "$os400" != "true" ]; then
+  _RUNJDB="$JAVA_HOME"/bin/jdb
+fi
diff --git a/bin/shutdown.bat b/bin/shutdown.bat
new file mode 100644
index 0000000..0f30951
--- /dev/null
+++ b/bin/shutdown.bat
@@ -0,0 +1,59 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Stop script for the CATALINA Server

+rem

+rem $Id: shutdown.bat 895392 2010-01-03 14:02:31Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" stop %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/shutdown.sh b/bin/shutdown.sh
new file mode 100755
index 0000000..ca243f6
--- /dev/null
+++ b/bin/shutdown.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+# Stop script for the CATALINA Server
+#
+# $Id: shutdown.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" stop "$@"
diff --git a/bin/startup.bat b/bin/startup.bat
new file mode 100644
index 0000000..d9ce1ac
--- /dev/null
+++ b/bin/startup.bat
@@ -0,0 +1,59 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Start script for the CATALINA Server

+rem

+rem $Id: startup.bat 895392 2010-01-03 14:02:31Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" start %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/startup.sh b/bin/startup.sh
new file mode 100755
index 0000000..3fd902d
--- /dev/null
+++ b/bin/startup.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+# Start Script for the CATALINA Server
+#
+# $Id: startup.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" start "$@"
diff --git a/bin/tomcat-juli.jar b/bin/tomcat-juli.jar
new file mode 100644
index 0000000..3a6755b
--- /dev/null
+++ b/bin/tomcat-juli.jar
Binary files differ
diff --git a/bin/tomcat-native.tar.gz b/bin/tomcat-native.tar.gz
new file mode 100644
index 0000000..a764da7
--- /dev/null
+++ b/bin/tomcat-native.tar.gz
Binary files differ
diff --git a/bin/tool-wrapper.bat b/bin/tool-wrapper.bat
new file mode 100644
index 0000000..0d4dae6
--- /dev/null
+++ b/bin/tool-wrapper.bat
@@ -0,0 +1,97 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Wrapper script for command line tools

+rem

+rem Environment Variable Prerequisites

+rem

+rem   CATALINA_HOME   May point at your Catalina "build" directory.

+rem

+rem   TOOL_OPTS       (Optional) Java runtime options.

+rem

+rem   JAVA_HOME       Must point at your Java Development Kit installation.

+rem                   Using JRE_HOME instead works as well.

+rem

+rem   JRE_HOME        Must point at your Java Runtime installation.

+rem                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME

+rem                   are both set, JRE_HOME is used.

+rem

+rem   JAVA_OPTS       (Optional) Java runtime options.

+rem

+rem   JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories

+rem                   containing some jars in order to allow replacement of APIs

+rem                   created outside of the JCP (i.e. DOM and SAX from W3C).

+rem                   It can also be used to update the XML parser implementation.

+rem                   Defaults to $CATALINA_HOME/endorsed.

+rem

+rem $Id: tool-wrapper.bat 1138835 2011-06-23 11:27:57Z rjung $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\tool-wrapper.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+rem Ensure that any user defined CLASSPATH variables are not used on startup,

+rem but allow them to be specified in setenv.bat, in rare case when it is needed.

+set CLASSPATH=

+

+rem Get standard environment variables

+if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"

+

+rem Get standard Java environment variables

+if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath

+echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"

+echo This file is needed to run this program

+goto end

+:okSetclasspath

+call "%CATALINA_HOME%\bin\setclasspath.bat" %1

+if errorlevel 1 goto end

+

+rem Add on extra jar files to CLASSPATH

+rem Note that there are no quotes as we do not want to introduce random

+rem quotes into the CLASSPATH

+if "%CLASSPATH%" == "" goto emptyClasspath

+set "CLASSPATH=%CLASSPATH%;"

+:emptyClasspath

+set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_HOME%\bin\tomcat-juli.jar;%CATALINA_HOME%\lib\servlet-api.jar"

+

+set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+%_RUNJAVA% %JAVA_OPTS% %TOOL_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.home="%CATALINA_HOME%" org.apache.catalina.startup.Tool %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/tool-wrapper.sh b/bin/tool-wrapper.sh
new file mode 100755
index 0000000..8979209
--- /dev/null
+++ b/bin/tool-wrapper.sh
@@ -0,0 +1,141 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+# Wrapper script for command line tools
+#
+# Environment Variable Prerequisites
+#
+#   CATALINA_HOME   May point at your Catalina "build" directory.
+#
+#   TOOL_OPTS       (Optional) Java runtime options.
+#
+#   JAVA_HOME       Must point at your Java Development Kit installation.
+#                   Using JRE_HOME instead works as well.
+#
+#   JRE_HOME        Must point at your Java Runtime installation.
+#                   Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME
+#                   are both set, JRE_HOME is used.
+#
+#   JAVA_OPTS       (Optional) Java runtime options.
+#
+#   JAVA_ENDORSED_DIRS (Optional) Lists of of colon separated directories
+#                   containing some jars in order to allow replacement of APIs
+#                   created outside of the JCP (i.e. DOM and SAX from W3C).
+#                   It can also be used to update the XML parser implementation.
+#                   Defaults to $CATALINA_HOME/endorsed.
+#
+# $Id: tool-wrapper.sh 1138835 2011-06-23 11:27:57Z rjung $
+# -----------------------------------------------------------------------------
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false
+darwin=false
+os400=false
+case "`uname`" in
+CYGWIN*) cygwin=true;;
+Darwin*) darwin=true;;
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ]; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+# Get standard environment variables
+PRGDIR=`dirname "$PRG"`
+
+# Only set CATALINA_HOME if not already set
+[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
+
+# Ensure that any user defined CLASSPATH variables are not used on startup,
+# but allow them to be specified in setenv.sh, in rare case when it is needed.
+CLASSPATH=
+
+if [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
+  . "$CATALINA_HOME/bin/setenv.sh"
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin; then
+  [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+  [ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
+  [ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
+  [ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For OS400
+if $os400; then
+  # Set job priority to standard for interactive (interactive - 6) by using
+  # the interactive priority - 6, the helper threads that respond to requests
+  # will be running at the same priority as interactive jobs.
+  COMMAND='chgjob job('$JOBNAME') runpty(6)'
+  system $COMMAND
+
+  # Enable multi threading
+  export QIBM_MULTI_THREADED=Y
+fi
+
+# Get standard Java environment variables
+if $os400; then
+  # -r will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  . "$CATALINA_HOME"/bin/setclasspath.sh
+else
+  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
+    . "$CATALINA_HOME"/bin/setclasspath.sh
+  else
+    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+# Add on extra jar files to CLASSPATH
+if [ ! -z "$CLASSPATH" ] ; then
+  CLASSPATH="$CLASSPATH":
+fi
+CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar:"$CATALINA_HOME"/bin/tomcat-juli.jar:"$CATALINA_HOME"/lib/servlet-api.jar
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
+  JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
+  CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
+  CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+  JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
+fi
+
+JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
+
+# ----- Execute The Requested Command -----------------------------------------
+
+exec "$_RUNJAVA" $JAVA_OPTS $TOOL_OPTS \
+  -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
+  -Dcatalina.home="$CATALINA_HOME" \
+  org.apache.catalina.startup.Tool "$@"
diff --git a/bin/version.bat b/bin/version.bat
new file mode 100644
index 0000000..3a67165
--- /dev/null
+++ b/bin/version.bat
@@ -0,0 +1,59 @@
+@echo off

+rem Licensed to the Apache Software Foundation (ASF) under one or more

+rem contributor license agreements.  See the NOTICE file distributed with

+rem this work for additional information regarding copyright ownership.

+rem The ASF licenses this file to You under the Apache License, Version 2.0

+rem (the "License"); you may not use this file except in compliance with

+rem the License.  You may obtain a copy of the License at

+rem

+rem     http://www.apache.org/licenses/LICENSE-2.0

+rem

+rem Unless required by applicable law or agreed to in writing, software

+rem distributed under the License is distributed on an "AS IS" BASIS,

+rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

+rem See the License for the specific language governing permissions and

+rem limitations under the License.

+

+if "%OS%" == "Windows_NT" setlocal

+rem ---------------------------------------------------------------------------

+rem Version script for the CATALINA Server

+rem

+rem $Id: version.bat 895392 2010-01-03 14:02:31Z kkolinko $

+rem ---------------------------------------------------------------------------

+

+rem Guess CATALINA_HOME if not defined

+set "CURRENT_DIR=%cd%"

+if not "%CATALINA_HOME%" == "" goto gotHome

+set "CATALINA_HOME=%CURRENT_DIR%"

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+cd ..

+set "CATALINA_HOME=%cd%"

+cd "%CURRENT_DIR%"

+:gotHome

+if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome

+echo The CATALINA_HOME environment variable is not defined correctly

+echo This environment variable is needed to run this program

+goto end

+:okHome

+

+set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

+

+rem Check that target executable exists

+if exist "%EXECUTABLE%" goto okExec

+echo Cannot find "%EXECUTABLE%"

+echo This file is needed to run this program

+goto end

+:okExec

+

+rem Get remaining unshifted command line arguments and save them in the

+set CMD_LINE_ARGS=

+:setArgs

+if ""%1""=="""" goto doneSetArgs

+set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

+shift

+goto setArgs

+:doneSetArgs

+

+call "%EXECUTABLE%" version %CMD_LINE_ARGS%

+

+:end

diff --git a/bin/version.sh b/bin/version.sh
new file mode 100755
index 0000000..c664f75
--- /dev/null
+++ b/bin/version.sh
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# 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.
+
+# -----------------------------------------------------------------------------
+# Version Script for the CATALINA Server
+#
+# $Id: version.sh 1202062 2011-11-15 06:50:02Z mturk $
+# -----------------------------------------------------------------------------
+
+# Better OS/400 detection: see Bugzilla 31132
+os400=false
+case "`uname`" in
+OS400*) os400=true;;
+esac
+
+# resolve links - $0 may be a softlink
+PRG="$0"
+
+while [ -h "$PRG" ] ; do
+  ls=`ls -ld "$PRG"`
+  link=`expr "$ls" : '.*-> \(.*\)$'`
+  if expr "$link" : '/.*' > /dev/null; then
+    PRG="$link"
+  else
+    PRG=`dirname "$PRG"`/"$link"
+  fi
+done
+
+PRGDIR=`dirname "$PRG"`
+EXECUTABLE=catalina.sh
+
+# Check that target executable exists
+if $os400; then
+  # -x will Only work on the os400 if the files are:
+  # 1. owned by the user
+  # 2. owned by the PRIMARY group of the user
+  # this will not work if the user belongs in secondary groups
+  eval
+else
+  if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
+    echo "Cannot find $PRGDIR/$EXECUTABLE"
+    echo "The file is absent or does not have execute permission"
+    echo "This file is needed to run this program"
+    exit 1
+  fi
+fi
+
+exec "$PRGDIR"/"$EXECUTABLE" version "$@"
diff --git a/conf/Catalina/localhost/cms.xml.tpl b/conf/Catalina/localhost/cms.xml.tpl
new file mode 100644
index 0000000..95d429d
--- /dev/null
+++ b/conf/Catalina/localhost/cms.xml.tpl
@@ -0,0 +1,17 @@
+<Context path="" crossContext="true">
+
+    
+    <Resource  
+        name="jdbc/cms"  
+        auth="Container"  
+        type="javax.sql.DataSource"  
+        driverClassName="oracle.jdbc.driver.OracleDriver"  
+        url="jdbc:oracle:thin:@192.168.1.200:1521:yktv4"  
+        username="lportal"  
+        password="kingstar"  
+        maxActive="20"  
+        maxIdle="10"  
+        maxWait="100"  
+    />  
+    
+</Context>
diff --git a/conf/catalina.policy b/conf/catalina.policy
new file mode 100644
index 0000000..998dc59
--- /dev/null
+++ b/conf/catalina.policy
@@ -0,0 +1,245 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more

+// contributor license agreements.  See the NOTICE file distributed with

+// this work for additional information regarding copyright ownership.

+// 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.

+

+// ============================================================================

+// catalina.policy - Security Policy Permissions for Tomcat 7

+//

+// This file contains a default set of security policies to be enforced (by the

+// JVM) when Catalina is executed with the "-security" option.  In addition

+// to the permissions granted here, the following additional permissions are

+// granted to each web application:

+//

+// * Read access to the web application's document root directory

+// * Read, write and delete access to the web application's working directory

+//

+// $Id: catalina.policy 1460221 2013-03-23 20:17:29Z kkolinko $

+// ============================================================================

+

+

+// ========== SYSTEM CODE PERMISSIONS =========================================

+

+

+// These permissions apply to javac

+grant codeBase "file:${java.home}/lib/-" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to all shared system extensions

+grant codeBase "file:${java.home}/jre/lib/ext/-" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre

+grant codeBase "file:${java.home}/../lib/-" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to all shared system extensions when

+// ${java.home} points at $JAVA_HOME/jre

+grant codeBase "file:${java.home}/lib/ext/-" {

+        permission java.security.AllPermission;

+};

+

+

+// ========== CATALINA CODE PERMISSIONS =======================================

+

+

+// These permissions apply to the daemon code

+grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to the logging API

+// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},

+// update this section accordingly.

+//  grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}

+grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {

+        permission java.io.FilePermission

+         "${java.home}${file.separator}lib${file.separator}logging.properties", "read";

+

+        permission java.io.FilePermission

+         "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";

+        permission java.io.FilePermission

+         "${catalina.base}${file.separator}logs", "read, write";

+        permission java.io.FilePermission

+         "${catalina.base}${file.separator}logs${file.separator}*", "read, write";

+

+        permission java.lang.RuntimePermission "shutdownHooks";

+        permission java.lang.RuntimePermission "getClassLoader";

+        permission java.lang.RuntimePermission "setContextClassLoader";

+

+        permission java.util.logging.LoggingPermission "control";

+

+        permission java.util.PropertyPermission "java.util.logging.config.class", "read";

+        permission java.util.PropertyPermission "java.util.logging.config.file", "read";

+        permission java.util.PropertyPermission "catalina.base", "read";

+

+        // Note: To enable per context logging configuration, permit read access to

+        // the appropriate file. Be sure that the logging configuration is

+        // secure before enabling such access.

+        // E.g. for the examples web application (uncomment and unwrap

+        // the following to be on a single line):

+        // permission java.io.FilePermission "${catalina.base}${file.separator}

+        //  webapps${file.separator}examples${file.separator}WEB-INF

+        //  ${file.separator}classes${file.separator}logging.properties", "read";

+};

+

+// These permissions apply to the server startup code

+grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to the servlet API classes

+// and those that are shared across all class loaders

+// located in the "lib" directory

+grant codeBase "file:${catalina.home}/lib/-" {

+        permission java.security.AllPermission;

+};

+

+

+// If using a per instance lib directory, i.e. ${catalina.base}/lib,

+// then the following permission will need to be uncommented

+// grant codeBase "file:${catalina.base}/lib/-" {

+//         permission java.security.AllPermission;

+// };

+

+

+// ========== WEB APPLICATION PERMISSIONS =====================================

+

+

+// These permissions are granted by default to all web applications

+// In addition, a web application will be given a read FilePermission

+// and JndiPermission for all files and directories in its document root.

+grant {

+    // Required for JNDI lookup of named JDBC DataSource's and

+    // javamail named MimePart DataSource used to send mail

+    permission java.util.PropertyPermission "java.home", "read";

+    permission java.util.PropertyPermission "java.naming.*", "read";

+    permission java.util.PropertyPermission "javax.sql.*", "read";

+

+    // OS Specific properties to allow read access

+    permission java.util.PropertyPermission "os.name", "read";

+    permission java.util.PropertyPermission "os.version", "read";

+    permission java.util.PropertyPermission "os.arch", "read";

+    permission java.util.PropertyPermission "file.separator", "read";

+    permission java.util.PropertyPermission "path.separator", "read";

+    permission java.util.PropertyPermission "line.separator", "read";

+

+    // JVM properties to allow read access

+    permission java.util.PropertyPermission "java.version", "read";

+    permission java.util.PropertyPermission "java.vendor", "read";

+    permission java.util.PropertyPermission "java.vendor.url", "read";

+    permission java.util.PropertyPermission "java.class.version", "read";

+    permission java.util.PropertyPermission "java.specification.version", "read";

+    permission java.util.PropertyPermission "java.specification.vendor", "read";

+    permission java.util.PropertyPermission "java.specification.name", "read";

+

+    permission java.util.PropertyPermission "java.vm.specification.version", "read";

+    permission java.util.PropertyPermission "java.vm.specification.vendor", "read";

+    permission java.util.PropertyPermission "java.vm.specification.name", "read";

+    permission java.util.PropertyPermission "java.vm.version", "read";

+    permission java.util.PropertyPermission "java.vm.vendor", "read";

+    permission java.util.PropertyPermission "java.vm.name", "read";

+

+    // Required for OpenJMX

+    permission java.lang.RuntimePermission "getAttribute";

+

+    // Allow read of JAXP compliant XML parser debug

+    permission java.util.PropertyPermission "jaxp.debug", "read";

+

+    // All JSPs need to be able to read this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";

+

+    // Precompiled JSPs need access to these packages.

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";

+    permission java.lang.RuntimePermission

+     "accessClassInPackage.org.apache.jasper.runtime.*";

+

+    // Precompiled JSPs need access to these system properties.

+    permission java.util.PropertyPermission

+     "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";

+    permission java.util.PropertyPermission

+     "org.apache.el.parser.COERCE_TO_ZERO", "read";

+

+    // The cookie code needs these.

+    permission java.util.PropertyPermission

+     "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";

+

+    // Applications using Comet need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.comet";

+

+    // Applications using WebSocket need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.websocket";

+};

+

+

+// The Manager application needs access to the following packages to support the

+// session display functionality. These settings support the following

+// configurations:

+// - default CATALINA_HOME == CATALINA_BASE

+// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE

+// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME

+grant codeBase "file:${catalina.base}/webapps/manager/-" {

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

+};

+grant codeBase "file:${catalina.home}/webapps/manager/-" {

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

+};

+

+// You can assign additional permissions to particular web applications by

+// adding additional "grant" entries here, based on the code base for that

+// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.

+//

+// Different permissions can be granted to JSP pages, classes loaded from

+// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/

+// directory, or even to individual jar files in the /WEB-INF/lib/ directory.

+//

+// For instance, assume that the standard "examples" application

+// included a JDBC driver that needed to establish a network connection to the

+// corresponding database and used the scrape taglib to get the weather from

+// the NOAA web server.  You might create a "grant" entries like this:

+//

+// The permissions granted to the context root directory apply to JSP pages.

+// grant codeBase "file:${catalina.base}/webapps/examples/-" {

+//      permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";

+//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";

+// };

+//

+// The permissions granted to the context WEB-INF/classes directory

+// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {

+// };

+//

+// The permission granted to your JDBC driver

+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {

+//      permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";

+// };

+// The permission granted to the scrape taglib

+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {

+//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";

+// };

+

diff --git a/conf/catalina.properties b/conf/catalina.properties
new file mode 100644
index 0000000..1e5c36b
--- /dev/null
+++ b/conf/catalina.properties
@@ -0,0 +1,127 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more

+# contributor license agreements.  See the NOTICE file distributed with

+# this work for additional information regarding copyright ownership.

+# 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.

+

+#

+# List of comma-separated packages that start with or equal this string

+# will cause a security exception to be thrown when

+# passed to checkPackageAccess unless the

+# corresponding RuntimePermission ("accessClassInPackage."+package) has

+# been granted.

+package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.

+#

+# List of comma-separated packages that start with or equal this string

+# will cause a security exception to be thrown when

+# passed to checkPackageDefinition unless the

+# corresponding RuntimePermission ("defineClassInPackage."+package) has

+# been granted.

+#

+# by default, no packages are restricted for definition, and none of

+# the class loaders supplied with the JDK call checkPackageDefinition.

+#

+package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.

+

+#

+#

+# List of comma-separated paths defining the contents of the "common"

+# classloader. Prefixes should be used to define what is the repository type.

+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.

+# If left as blank,the JVM system loader will be used as Catalina's "common"

+# loader.

+# Examples:

+#     "foo": Add this folder as a class repository

+#     "foo/*.jar": Add all the JARs of the specified folder as class

+#                  repositories

+#     "foo/bar.jar": Add bar.jar as a class repository

+common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar

+

+#

+# List of comma-separated paths defining the contents of the "server"

+# classloader. Prefixes should be used to define what is the repository type.

+# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.

+# If left as blank, the "common" loader will be used as Catalina's "server"

+# loader.

+# Examples:

+#     "foo": Add this folder as a class repository

+#     "foo/*.jar": Add all the JARs of the specified folder as class

+#                  repositories

+#     "foo/bar.jar": Add bar.jar as a class repository

+server.loader=

+

+#

+# List of comma-separated paths defining the contents of the "shared"

+# classloader. Prefixes should be used to define what is the repository type.

+# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,

+# the "common" loader will be used as Catalina's "shared" loader.

+# Examples:

+#     "foo": Add this folder as a class repository

+#     "foo/*.jar": Add all the JARs of the specified folder as class

+#                  repositories

+#     "foo/bar.jar": Add bar.jar as a class repository

+# Please note that for single jars, e.g. bar.jar, you need the URL form

+# starting with file:.

+shared.loader=

+

+# List of JAR files that should not be scanned using the JarScanner

+# functionality. This is typically used to scan JARs for configuration

+# information. JARs that do not contain such information may be excluded from

+# the scan to speed up the scanning process. This is the default list. JARs on

+# this list are excluded from all scans. Scan specific lists (to exclude JARs

+# from individual scans) follow this. The list must be a comma separated list of

+# JAR file names.

+# The JARs listed below include:

+# - Tomcat Bootstrap JARs

+# - Tomcat API JARs

+# - Catalina JARs

+# - Jasper JARs

+# - Tomcat JARs

+# - Common non-Tomcat JARs

+tomcat.util.scan.DefaultJarScanner.jarsToSkip=\

+bootstrap.jar,commons-daemon.jar,tomcat-juli.jar,\

+annotations-api.jar,el-api.jar,jsp-api.jar,servlet-api.jar,\

+catalina.jar,catalina-ant.jar,catalina-ha.jar,catalina-tribes.jar,\

+jasper.jar,jasper-el.jar,ecj-*.jar,\

+tomcat-api.jar,tomcat-util.jar,tomcat-coyote.jar,tomcat-dbcp.jar,\

+tomcat-jni.jar,tomcat-spdy.jar,\

+tomcat-i18n-en.jar,tomcat-i18n-es.jar,tomcat-i18n-fr.jar,tomcat-i18n-ja.jar,\

+tomcat-juli-adapters.jar,catalina-jmx-remote.jar,catalina-ws.jar,\

+tomcat-jdbc.jar,\

+tools.jar,\

+commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,\

+commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,\

+commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,\

+commons-math*.jar,commons-pool*.jar,\

+jstl.jar,\

+geronimo-spec-jaxrpc*.jar,wsdl4j*.jar,\

+ant.jar,ant-junit*.jar,aspectj*.jar,jmx.jar,h2*.jar,hibernate*.jar,httpclient*.jar,\

+jmx-tools.jar,jta*.jar,log4j*.jar,mail*.jar,slf4j*.jar,\

+xercesImpl.jar,xmlParserAPIs.jar,xml-apis.jar,\

+junit.jar,junit-*.jar,ant-launcher.jar

+

+# Additional JARs (over and above the default JARs listed above) to skip when

+# scanning for Servlet 3.0 pluggability features. These features include web

+# fragments, annotations, SCIs and classes that match @HandlesTypes. The list

+# must be a comma separated list of JAR file names.

+org.apache.catalina.startup.ContextConfig.jarsToSkip=

+

+# Additional JARs (over and above the default JARs listed above) to skip when

+# scanning for TLDs. The list must be a comma separated list of JAR file names.

+org.apache.catalina.startup.TldConfig.jarsToSkip=

+

+#

+# String cache configuration.

+tomcat.util.buf.StringCache.byte.enabled=true

+#tomcat.util.buf.StringCache.char.enabled=true

+#tomcat.util.buf.StringCache.trainThreshold=500000

+#tomcat.util.buf.StringCache.cacheSize=5000

diff --git a/conf/context.xml b/conf/context.xml
new file mode 100644
index 0000000..e313459
--- /dev/null
+++ b/conf/context.xml
@@ -0,0 +1,35 @@
+<?xml version='1.0' encoding='utf-8'?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!-- The contents of this file will be loaded for each web application -->

+<Context>

+

+    <!-- Default set of monitored resources -->

+    <WatchedResource>WEB-INF/web.xml</WatchedResource>

+

+    <!-- Uncomment this to disable session persistence across Tomcat restarts -->

+    <!--

+    <Manager pathname="" />

+    -->

+

+    <!-- Uncomment this to enable Comet connection tacking (provides events

+         on session expiration as well as webapp lifecycle) -->

+    <!--

+    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />

+    -->

+

+</Context>
\ No newline at end of file
diff --git a/conf/logging.properties b/conf/logging.properties
new file mode 100644
index 0000000..90d7ea7
--- /dev/null
+++ b/conf/logging.properties
@@ -0,0 +1,64 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more

+# contributor license agreements.  See the NOTICE file distributed with

+# this work for additional information regarding copyright ownership.

+# 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.

+

+handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

+

+.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

+

+############################################################

+# Handler specific properties.

+# Describes specific configuration info for Handlers.

+############################################################

+

+1catalina.org.apache.juli.FileHandler.level = FINE

+1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+1catalina.org.apache.juli.FileHandler.prefix = catalina.

+

+2localhost.org.apache.juli.FileHandler.level = FINE

+2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+2localhost.org.apache.juli.FileHandler.prefix = localhost.

+

+3manager.org.apache.juli.FileHandler.level = FINE

+3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+3manager.org.apache.juli.FileHandler.prefix = manager.

+

+4host-manager.org.apache.juli.FileHandler.level = FINE

+4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+4host-manager.org.apache.juli.FileHandler.prefix = host-manager.

+

+java.util.logging.ConsoleHandler.level = FINE

+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

+

+

+############################################################

+# Facility specific properties.

+# Provides extra control for each logger.

+############################################################

+

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler

+

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler

+

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler

+

+# For example, set the org.apache.catalina.util.LifecycleBase logger to log

+# each component that extends LifecycleBase changing state:

+#org.apache.catalina.util.LifecycleBase.level = FINE

+

+# To see debug messages in TldLocationsCache, uncomment the following line:

+#org.apache.jasper.compiler.TldLocationsCache.level = FINE

diff --git a/conf/server.xml b/conf/server.xml
new file mode 100644
index 0000000..a85f6c1
--- /dev/null
+++ b/conf/server.xml
@@ -0,0 +1,142 @@
+<?xml version='1.0' encoding='utf-8'?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!-- Note:  A "Server" is not itself a "Container", so you may not

+     define subcomponents such as "Valves" at this level.

+     Documentation at /docs/config/server.html

+ -->

+<Server port="8006" shutdown="SHUTDOWN">

+  <!-- Security listener. Documentation at /docs/config/listeners.html

+  <Listener className="org.apache.catalina.security.SecurityListener" />

+  -->

+  <!--APR library loader. Documentation at /docs/apr.html -->

+  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

+  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->

+  <Listener className="org.apache.catalina.core.JasperListener" />

+  <!-- Prevent memory leaks due to use of particular java/javax APIs-->

+  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

+  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

+  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

+

+  <!-- Global JNDI resources

+       Documentation at /docs/jndi-resources-howto.html

+  -->

+  <GlobalNamingResources>

+    <!-- Editable user database that can also be used by

+         UserDatabaseRealm to authenticate users

+    -->

+    <Resource name="UserDatabase" auth="Container"

+              type="org.apache.catalina.UserDatabase"

+              description="User database that can be updated and saved"

+              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

+              pathname="conf/tomcat-users.xml" />

+  </GlobalNamingResources>

+

+  <!-- A "Service" is a collection of one or more "Connectors" that share

+       a single "Container" Note:  A "Service" is not itself a "Container",

+       so you may not define subcomponents such as "Valves" at this level.

+       Documentation at /docs/config/service.html

+   -->

+  <Service name="Catalina">

+

+    <!--The connectors can use a shared executor, you can define one or more named thread pools-->

+    <!--

+    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"

+        maxThreads="150" minSpareThreads="4"/>

+    -->

+

+

+    <!-- A "Connector" represents an endpoint by which requests are received

+         and responses are returned. Documentation at :

+         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

+         Java AJP  Connector: /docs/config/ajp.html

+         APR (HTTP/AJP) Connector: /docs/apr.html

+         Define a non-SSL HTTP/1.1 Connector on port 8080

+    -->

+    <Connector port="8999" protocol="HTTP/1.1"

+               connectionTimeout="20000"

+               redirectPort="8443" />

+    <!-- A "Connector" using the shared thread pool-->

+    <!--

+    <Connector executor="tomcatThreadPool"

+               port="8080" protocol="HTTP/1.1"

+               connectionTimeout="20000"

+               redirectPort="8443" />

+    -->

+    <!-- Define a SSL HTTP/1.1 Connector on port 8443

+         This connector uses the JSSE configuration, when using APR, the

+         connector should be using the OpenSSL style configuration

+         described in the APR documentation -->

+    <!--

+    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

+               maxThreads="150" scheme="https" secure="true"

+               clientAuth="false" sslProtocol="TLS" />

+    -->

+

+    <!-- Define an AJP 1.3 Connector on port 8009 -->

+    <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

+

+

+    <!-- An Engine represents the entry point (within Catalina) that processes

+         every request.  The Engine implementation for Tomcat stand alone

+         analyzes the HTTP headers included with the request, and passes them

+         on to the appropriate Host (virtual host).

+         Documentation at /docs/config/engine.html -->

+

+    <!-- You should set jvmRoute to support load-balancing via AJP ie :

+    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

+    -->

+    <Engine name="Catalina" defaultHost="localhost">

+

+      <!--For clustering, please take a look at documentation at:

+          /docs/cluster-howto.html  (simple how to)

+          /docs/config/cluster.html (reference documentation) -->

+      <!--

+      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

+      -->

+

+      <!-- Use the LockOutRealm to prevent attempts to guess user passwords

+           via a brute-force attack -->

+      <Realm className="org.apache.catalina.realm.LockOutRealm">

+        <!-- This Realm uses the UserDatabase configured in the global JNDI

+             resources under the key "UserDatabase".  Any edits

+             that are performed against this UserDatabase are immediately

+             available for use by the Realm.  -->

+        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

+               resourceName="UserDatabase"/>

+      </Realm>

+

+      <Host name="localhost"  appBase="webapps"

+            unpackWARs="true" autoDeploy="true">

+

+        <!-- SingleSignOn valve, share authentication between web applications

+             Documentation at: /docs/config/valve.html -->

+        <!--

+        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

+        -->

+

+        <!-- Access log processes all example.

+             Documentation at: /docs/config/valve.html

+             Note: The pattern used is equivalent to using pattern="common" -->

+        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

+               prefix="localhost_access_log." suffix=".txt"

+               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

+

+      </Host>

+    </Engine>

+  </Service>

+</Server>

diff --git a/conf/tomcat-users.xml b/conf/tomcat-users.xml
new file mode 100644
index 0000000..34e268d
--- /dev/null
+++ b/conf/tomcat-users.xml
@@ -0,0 +1,36 @@
+<?xml version='1.0' encoding='utf-8'?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<tomcat-users>

+<!--

+  NOTE:  By default, no user is included in the "manager-gui" role required

+  to operate the "/manager/html" web application.  If you wish to use this app,

+  you must define such a user - the username and password are arbitrary.

+-->

+<!--

+  NOTE:  The sample user and role entries below are wrapped in a comment

+  and thus are ignored when reading this file. Do not forget to remove

+  <!.. ..> that surrounds them.

+-->

+<!--

+  <role rolename="tomcat"/>

+  <role rolename="role1"/>

+  <user username="tomcat" password="tomcat" roles="tomcat"/>

+  <user username="both" password="tomcat" roles="tomcat,role1"/>

+  <user username="role1" password="tomcat" roles="role1"/>

+-->

+</tomcat-users>

diff --git a/conf/web.xml b/conf/web.xml
new file mode 100644
index 0000000..f9a506b
--- /dev/null
+++ b/conf/web.xml
@@ -0,0 +1,4607 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<web-app xmlns="http://java.sun.com/xml/ns/javaee"

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0">

+

+  <!-- ======================== Introduction ============================== -->

+  <!-- This document defines default values for *all* web applications      -->

+  <!-- loaded into this instance of Tomcat.  As each application is         -->

+  <!-- deployed, this file is processed, followed by the                    -->

+  <!-- "/WEB-INF/web.xml" deployment descriptor from your own               -->

+  <!-- applications.                                                        -->

+  <!--                                                                      -->

+  <!-- WARNING:  Do not configure application-specific resources here!      -->

+  <!-- They should go in the "/WEB-INF/web.xml" file in your application.   -->

+

+

+  <!-- ================== Built In Servlet Definitions ==================== -->

+

+

+  <!-- The default servlet for all web applications, that serves static     -->

+  <!-- resources.  It processes all requests that are not mapped to other   -->

+  <!-- servlets with servlet mappings (defined either here or in your own   -->

+  <!-- web.xml file).  This servlet supports the following initialization   -->

+  <!-- parameters (default values are in square brackets):                  -->

+  <!--                                                                      -->

+  <!--   debug               Debugging detail level for messages logged     -->

+  <!--                       by this servlet.  [0]                          -->

+  <!--                                                                      -->

+  <!--   fileEncoding        Encoding to be used to read static resources   -->

+  <!--                       [platform default]                             -->

+  <!--                                                                      -->

+  <!--   input               Input buffer size (in bytes) when reading      -->

+  <!--                       resources to be served.  [2048]                -->

+  <!--                                                                      -->

+  <!--   listings            Should directory listings be produced if there -->

+  <!--                       is no welcome file in this directory?  [false] -->

+  <!--                       WARNING: Listings for directories with many    -->

+  <!--                       entries can be slow and may consume            -->

+  <!--                       significant proportions of server resources.   -->

+  <!--                                                                      -->

+  <!--   output              Output buffer size (in bytes) when writing     -->

+  <!--                       resources to be served.  [2048]                -->

+  <!--                                                                      -->

+  <!--   readonly            Is this context "read only", so HTTP           -->

+  <!--                       commands like PUT and DELETE are               -->

+  <!--                       rejected?  [true]                              -->

+  <!--                                                                      -->

+  <!--   readmeFile          File to display together with the directory    -->

+  <!--                       contents. [null]                               -->

+  <!--                                                                      -->

+  <!--   sendfileSize        If the connector used supports sendfile, this  -->

+  <!--                       represents the minimal file size in KB for     -->

+  <!--                       which sendfile will be used. Use a negative    -->

+  <!--                       value to always disable sendfile.  [48]        -->

+  <!--                                                                      -->

+  <!--   useAcceptRanges     Should the Accept-Ranges header be included    -->

+  <!--                       in responses where appropriate? [true]         -->

+  <!--                                                                      -->

+  <!--  For directory listing customization. Checks localXsltFile, then     -->

+  <!--  globalXsltFile, then defaults to original behavior.                 -->

+  <!--                                                                      -->

+  <!--   localXsltFile       Make directory listings an XML doc and         -->

+  <!--                       pass the result to this style sheet residing   -->

+  <!--                       in that directory. This overrides              -->

+  <!--                       contextXsltFile and globalXsltFile[null]       -->

+  <!--                                                                      -->

+  <!--   contextXsltFile     Make directory listings an XML doc and         -->

+  <!--                       pass the result to this style sheet which is   -->

+  <!--                       relative to the context root. This overrides   -->

+  <!--                       globalXsltFile[null]                           -->

+  <!--                                                                      -->

+  <!--   globalXsltFile      Site wide configuration version of             -->

+  <!--                       localXsltFile This argument is expected        -->

+  <!--                       to be a physical file. [null]                  -->

+  <!--                                                                      -->

+  <!--                                                                      -->

+

+    <servlet>

+        <servlet-name>default</servlet-name>

+        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

+        <init-param>

+            <param-name>debug</param-name>

+            <param-value>0</param-value>

+        </init-param>

+        <init-param>

+            <param-name>listings</param-name>

+            <param-value>false</param-value>

+        </init-param>

+        <load-on-startup>1</load-on-startup>

+    </servlet>

+

+

+  <!-- The JSP page compiler and execution servlet, which is the mechanism  -->

+  <!-- used by Tomcat to support JSP pages.  Traditionally, this servlet    -->

+  <!-- is mapped to the URL pattern "*.jsp".  This servlet supports the     -->

+  <!-- following initialization parameters (default values are in square    -->

+  <!-- brackets):                                                           -->

+  <!--                                                                      -->

+  <!--   checkInterval       If development is false and checkInterval is   -->

+  <!--                       greater than zero, background compilations are -->

+  <!--                       enabled. checkInterval is the time in seconds  -->

+  <!--                       between checks to see if a JSP page (and its   -->

+  <!--                       dependent files) needs to  be recompiled. [0]  -->

+  <!--                                                                      -->

+  <!--   classdebuginfo      Should the class file be compiled with         -->

+  <!--                       debugging information?  [true]                 -->

+  <!--                                                                      -->

+  <!--   classpath           What class path should I use while compiling   -->

+  <!--                       generated servlets?  [Created dynamically      -->

+  <!--                       based on the current web application]          -->

+  <!--                                                                      -->

+  <!--   compiler            Which compiler Ant should use to compile JSP   -->

+  <!--                       pages.  See the jasper documentation for more  -->

+  <!--                       information.                                   -->

+  <!--                                                                      -->

+  <!--   compilerSourceVM    Compiler source VM. [1.6]                      -->

+  <!--                                                                      -->

+  <!--   compilerTargetVM    Compiler target VM. [1.6]                      -->

+  <!--                                                                      -->

+  <!--   development         Is Jasper used in development mode? If true,   -->

+  <!--                       the frequency at which JSPs are checked for    -->

+  <!--                       modification may be specified via the          -->

+  <!--                       modificationTestInterval parameter. [true]     -->

+  <!--                                                                      -->

+  <!--   displaySourceFragment                                              -->

+  <!--                       Should a source fragment be included in        -->

+  <!--                       exception messages? [true]                     -->

+  <!--                                                                      -->

+  <!--   dumpSmap            Should the SMAP info for JSR45 debugging be    -->

+  <!--                       dumped to a file? [false]                      -->

+  <!--                       False if suppressSmap is true                  -->

+  <!--                                                                      -->

+  <!--   enablePooling       Determines whether tag handler pooling is      -->

+  <!--                       enabled. This is a compilation option. It will -->

+  <!--                       not alter the behaviour of JSPs that have      -->

+  <!--                       already been compiled. [true]                  -->

+  <!--                                                                      -->

+  <!--   engineOptionsClass  Allows specifying the Options class used to    -->

+  <!--                       configure Jasper. If not present, the default  -->

+  <!--                       EmbeddedServletOptions will be used.           -->

+  <!--                                                                      -->

+  <!--   errorOnUseBeanInvalidClassAttribute                                -->

+  <!--                       Should Jasper issue an error when the value of -->

+  <!--                       the class attribute in an useBean action is    -->

+  <!--                       not a valid bean class?  [true]                -->

+  <!--                                                                      -->

+  <!--   fork                Tell Ant to fork compiles of JSP pages so that -->

+  <!--                       a separate JVM is used for JSP page compiles   -->

+  <!--                       from the one Tomcat is running in. [true]      -->

+  <!--                                                                      -->

+  <!--   genStringAsCharArray                                               -->

+  <!--                       Should text strings be generated as char       -->

+  <!--                       arrays, to improve performance in some cases?  -->

+  <!--                       [false]                                        -->

+  <!--                                                                      -->

+  <!--   ieClassId           The class-id value to be sent to Internet      -->

+  <!--                       Explorer when using <jsp:plugin> tags.         -->

+  <!--                       [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93]   -->

+  <!--                                                                      -->

+  <!--   javaEncoding        Java file encoding to use for generating java  -->

+  <!--                       source files. [UTF8]                           -->

+  <!--                                                                      -->

+  <!--   keepgenerated       Should we keep the generated Java source code  -->

+  <!--                       for each page instead of deleting it? [true]   -->

+  <!--                                                                      -->

+  <!--   mappedfile          Should we generate static content with one     -->

+  <!--                       print statement per input line, to ease        -->

+  <!--                       debugging?  [true]                             -->

+  <!--                                                                      -->

+  <!--   maxLoadedJsps       The maximum number of JSPs that will be loaded -->

+  <!--                       for a web application. If more than this       -->

+  <!--                       number of JSPs are loaded, the least recently  -->

+  <!--                       used JSPs will be unloaded so that the number  -->

+  <!--                       of JSPs loaded at any one time does not exceed -->

+  <!--                       this limit. A value of zero or less indicates  -->

+  <!--                       no limit. [-1]                                 -->

+  <!--                                                                      -->

+  <!--   jspIdleTimeout      The amount of time in seconds a JSP can be     -->

+  <!--                       idle before it is unloaded. A value of zero    -->

+  <!--                       or less indicates never unload. [-1]           -->

+  <!--                                                                      -->

+  <!--   modificationTestInterval                                           -->

+  <!--                       Causes a JSP (and its dependent files) to not  -->

+  <!--                       be checked for modification during the         -->

+  <!--                       specified time interval (in seconds) from the  -->

+  <!--                       last time the JSP was checked for              -->

+  <!--                       modification. A value of 0 will cause the JSP  -->

+  <!--                       to be checked on every access.                 -->

+  <!--                       Used in development mode only. [4]             -->

+  <!--                                                                      -->

+  <!--   recompileOnFail     If a JSP compilation fails should the          -->

+  <!--                       modificationTestInterval be ignored and the    -->

+  <!--                       next access trigger a re-compilation attempt?  -->

+  <!--                       Used in development mode only and is disabled  -->

+  <!--                       by default as compilation may be expensive and -->

+  <!--                       could lead to excessive resource usage.        -->

+  <!--                       [false]                                        -->

+  <!--                                                                      -->

+  <!--   scratchdir          What scratch directory should we use when      -->

+  <!--                       compiling JSP pages?  [default work directory  -->

+  <!--                       for the current web application]               -->

+  <!--                                                                      -->

+  <!--   suppressSmap        Should the generation of SMAP info for JSR45   -->

+  <!--                       debugging be suppressed?  [false]              -->

+  <!--                                                                      -->

+  <!--   trimSpaces          Should white spaces in template text between   -->

+  <!--                       actions or directives be trimmed?  [false]     -->

+  <!--                                                                      -->

+  <!--   xpoweredBy          Determines whether X-Powered-By response       -->

+  <!--                       header is added by generated servlet.  [false] -->

+

+    <servlet>

+        <servlet-name>jsp</servlet-name>

+        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

+        <init-param>

+            <param-name>fork</param-name>

+            <param-value>false</param-value>

+        </init-param>

+        <init-param>

+            <param-name>xpoweredBy</param-name>

+            <param-value>false</param-value>

+        </init-param>

+        <load-on-startup>3</load-on-startup>

+    </servlet>

+

+

+  <!-- NOTE: An SSI Filter is also available as an alternative SSI          -->

+  <!-- implementation. Use either the Servlet or the Filter but NOT both.   -->

+  <!--                                                                      -->

+  <!-- Server Side Includes processing servlet, which processes SSI         -->

+  <!-- directives in HTML pages consistent with similar support in web      -->

+  <!-- servers like Apache.  Traditionally, this servlet is mapped to the   -->

+  <!-- URL pattern "*.shtml".  This servlet supports the following          -->

+  <!-- initialization parameters (default values are in square brackets):   -->

+  <!--                                                                      -->

+  <!--   buffered            Should output from this servlet be buffered?   -->

+  <!--                       (0=false, 1=true)  [0]                         -->

+  <!--                                                                      -->

+  <!--   debug               Debugging detail level for messages logged     -->

+  <!--                       by this servlet.  [0]                          -->

+  <!--                                                                      -->

+  <!--   expires             The number of seconds before a page with SSI   -->

+  <!--                       directives will expire.  [No default]          -->

+  <!--                                                                      -->

+  <!--   isVirtualWebappRelative                                            -->

+  <!--                       Should "virtual" paths be interpreted as       -->

+  <!--                       relative to the context root, instead of       -->

+  <!--                       the server root? [false]                       -->

+  <!--                                                                      -->

+  <!--   inputEncoding       The encoding to assume for SSI resources if    -->

+  <!--                       one is not available from the resource.        -->

+  <!--                       [Platform default]                             -->

+  <!--                                                                      -->

+  <!--   outputEncoding      The encoding to use for the page that results  -->

+  <!--                       from the SSI processing. [UTF-8]               -->

+  <!--                                                                      -->

+  <!--   allowExec           Is use of the exec command enabled? [false]    -->

+

+<!--

+    <servlet>

+        <servlet-name>ssi</servlet-name>

+        <servlet-class>

+          org.apache.catalina.ssi.SSIServlet

+        </servlet-class>

+        <init-param>

+          <param-name>buffered</param-name>

+          <param-value>1</param-value>

+        </init-param>

+        <init-param>

+          <param-name>debug</param-name>

+          <param-value>0</param-value>

+        </init-param>

+        <init-param>

+          <param-name>expires</param-name>

+          <param-value>666</param-value>

+        </init-param>

+        <init-param>

+          <param-name>isVirtualWebappRelative</param-name>

+          <param-value>false</param-value>

+        </init-param>

+        <load-on-startup>4</load-on-startup>

+    </servlet>

+-->

+

+

+  <!-- Common Gateway Includes (CGI) processing servlet, which supports     -->

+  <!-- execution of external applications that conform to the CGI spec      -->

+  <!-- requirements.  Typically, this servlet is mapped to the URL pattern  -->

+  <!-- "/cgi-bin/*", which means that any CGI applications that are         -->

+  <!-- executed must be present within the web application.  This servlet   -->

+  <!-- supports the following initialization parameters (default values     -->

+  <!-- are in square brackets):                                             -->

+  <!--                                                                      -->

+  <!--   cgiPathPrefix        The CGI search path will start at             -->

+  <!--                        webAppRootDir + File.separator + this prefix. -->

+  <!--                        [WEB-INF/cgi]                                 -->

+  <!--                                                                      -->

+  <!--   debug                Debugging detail level for messages logged    -->

+  <!--                        by this servlet.  [0]                         -->

+  <!--                                                                      -->

+  <!--   executable           Name of the executable used to run the        -->

+  <!--                        script. [perl]                                -->

+  <!--                                                                      -->

+  <!--   parameterEncoding    Name of parameter encoding to be used with    -->

+  <!--                        CGI servlet.                                  -->

+  <!--                        [System.getProperty("file.encoding","UTF-8")] -->

+  <!--                                                                      -->

+  <!--   passShellEnvironment Should the shell environment variables (if    -->

+  <!--                        any) be passed to the CGI script? [false]     -->

+  <!--                                                                      -->

+  <!--   stderrTimeout        The time (in milliseconds) to wait for the    -->

+  <!--                        reading of stderr to complete before          -->

+  <!--                        terminating the CGI process. [2000]           -->

+

+<!--

+    <servlet>

+        <servlet-name>cgi</servlet-name>

+        <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>

+        <init-param>

+          <param-name>debug</param-name>

+          <param-value>0</param-value>

+        </init-param>

+        <init-param>

+          <param-name>cgiPathPrefix</param-name>

+          <param-value>WEB-INF/cgi</param-value>

+        </init-param>

+         <load-on-startup>5</load-on-startup>

+    </servlet>

+-->

+

+

+  <!-- ================ Built In Servlet Mappings ========================= -->

+

+

+  <!-- The servlet mappings for the built in servlets defined above.  Note  -->

+  <!-- that, by default, the CGI and SSI servlets are *not* mapped.  You    -->

+  <!-- must uncomment these mappings (or add them to your application's own -->

+  <!-- web.xml deployment descriptor) to enable these services              -->

+

+    <!-- The mapping for the default servlet -->

+    <servlet-mapping>

+        <servlet-name>default</servlet-name>

+        <url-pattern>/</url-pattern>

+    </servlet-mapping>

+

+    <!-- The mappings for the JSP servlet -->

+    <servlet-mapping>

+        <servlet-name>jsp</servlet-name>

+        <url-pattern>*.jsp</url-pattern>

+        <url-pattern>*.jspx</url-pattern>

+    </servlet-mapping>

+

+    <!-- The mapping for the SSI servlet -->

+<!--

+    <servlet-mapping>

+        <servlet-name>ssi</servlet-name>

+        <url-pattern>*.shtml</url-pattern>

+    </servlet-mapping>

+-->

+

+    <!-- The mapping for the CGI Gateway servlet -->

+

+<!--

+    <servlet-mapping>

+        <servlet-name>cgi</servlet-name>

+        <url-pattern>/cgi-bin/*</url-pattern>

+    </servlet-mapping>

+-->

+

+

+  <!-- ================== Built In Filter Definitions ===================== -->

+

+  <!-- A filter that sets character encoding that is used to decode -->

+  <!-- parameters in a POST request -->

+<!--

+    <filter>

+        <filter-name>setCharacterEncodingFilter</filter-name>

+        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>

+        <init-param>

+            <param-name>encoding</param-name>

+            <param-value>UTF-8</param-value>

+        </init-param>

+        <async-supported>true</async-supported>

+    </filter>

+-->

+

+  <!-- A filter that triggers request parameters parsing and rejects the    -->

+  <!-- request if some parameters were skipped because of parsing errors or -->

+  <!-- request size limitations.                                            -->

+<!--

+    <filter>

+        <filter-name>failedRequestFilter</filter-name>

+        <filter-class>

+          org.apache.catalina.filters.FailedRequestFilter

+        </filter-class>

+        <async-supported>true</async-supported>

+    </filter>

+-->

+

+

+  <!-- NOTE: An SSI Servlet is also available as an alternative SSI         -->

+  <!-- implementation. Use either the Servlet or the Filter but NOT both.   -->

+  <!--                                                                      -->

+  <!-- Server Side Includes processing filter, which processes SSI          -->

+  <!-- directives in HTML pages consistent with similar support in web      -->

+  <!-- servers like Apache.  Traditionally, this filter is mapped to the    -->

+  <!-- URL pattern "*.shtml", though it can be mapped to "*" as it will     -->

+  <!-- selectively enable/disable SSI processing based on mime types. For   -->

+  <!-- this to work you will need to uncomment the .shtml mime type         -->

+  <!-- definition towards the bottom of this file.                          -->

+  <!-- The contentType init param allows you to apply SSI processing to JSP -->

+  <!-- pages, javascript, or any other content you wish.  This filter       -->

+  <!-- supports the following initialization parameters (default values are -->

+  <!-- in square brackets):                                                 -->

+  <!--                                                                      -->

+  <!--   contentType         A regex pattern that must be matched before    -->

+  <!--                       SSI processing is applied.                     -->

+  <!--                       [text/x-server-parsed-html(;.*)?]              -->

+  <!--                                                                      -->

+  <!--   debug               Debugging detail level for messages logged     -->

+  <!--                       by this servlet.  [0]                          -->

+  <!--                                                                      -->

+  <!--   expires             The number of seconds before a page with SSI   -->

+  <!--                       directives will expire.  [No default]          -->

+  <!--                                                                      -->

+  <!--   isVirtualWebappRelative                                            -->

+  <!--                       Should "virtual" paths be interpreted as       -->

+  <!--                       relative to the context root, instead of       -->

+  <!--                       the server root? [false]                       -->

+  <!--                                                                      -->

+  <!--   allowExec           Is use of the exec command enabled? [false]    -->

+

+<!--

+    <filter>

+        <filter-name>ssi</filter-name>

+        <filter-class>

+          org.apache.catalina.ssi.SSIFilter

+        </filter-class>

+        <init-param>

+          <param-name>contentType</param-name>

+          <param-value>text/x-server-parsed-html(;.*)?</param-value>

+        </init-param>

+        <init-param>

+          <param-name>debug</param-name>

+          <param-value>0</param-value>

+        </init-param>

+        <init-param>

+          <param-name>expires</param-name>

+          <param-value>666</param-value>

+        </init-param>

+        <init-param>

+          <param-name>isVirtualWebappRelative</param-name>

+          <param-value>false</param-value>

+        </init-param>

+    </filter>

+-->

+

+

+  <!-- ==================== Built In Filter Mappings ====================== -->

+

+  <!-- The mapping for the Set Character Encoding Filter -->

+<!--

+    <filter-mapping>

+        <filter-name>setCharacterEncodingFilter</filter-name>

+        <url-pattern>/*</url-pattern>

+    </filter-mapping>

+-->

+

+  <!-- The mapping for the Failed Request Filter -->

+<!--

+    <filter-mapping>

+        <filter-name>failedRequestFilter</filter-name>

+        <url-pattern>/*</url-pattern>

+    </filter-mapping>

+-->

+

+  <!-- The mapping for the SSI Filter -->

+<!--

+    <filter-mapping>

+        <filter-name>ssi</filter-name>

+        <url-pattern>*.shtml</url-pattern>

+    </filter-mapping>

+-->

+

+

+  <!-- ==================== Default Session Configuration ================= -->

+  <!-- You can set the default session timeout (in minutes) for all newly   -->

+  <!-- created sessions by modifying the value below.                       -->

+

+    <session-config>

+        <session-timeout>30</session-timeout>

+    </session-config>

+

+

+  <!-- ===================== Default MIME Type Mappings =================== -->

+  <!-- When serving static resources, Tomcat will automatically generate    -->

+  <!-- a "Content-Type" header based on the resource's filename extension,  -->

+  <!-- based on these mappings.  Additional mappings can be added here (to  -->

+  <!-- apply to all web applications), or in your own application's web.xml -->

+  <!-- deployment descriptor.                                               -->

+

+    <mime-mapping>

+        <extension>123</extension>

+        <mime-type>application/vnd.lotus-1-2-3</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>3dml</extension>

+        <mime-type>text/vnd.in3d.3dml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>3ds</extension>

+        <mime-type>image/x-3ds</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>3g2</extension>

+        <mime-type>video/3gpp2</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>3gp</extension>

+        <mime-type>video/3gpp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>7z</extension>

+        <mime-type>application/x-7z-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aab</extension>

+        <mime-type>application/x-authorware-bin</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aac</extension>

+        <mime-type>audio/x-aac</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aam</extension>

+        <mime-type>application/x-authorware-map</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aas</extension>

+        <mime-type>application/x-authorware-seg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>abs</extension>

+        <mime-type>audio/x-mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>abw</extension>

+        <mime-type>application/x-abiword</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ac</extension>

+        <mime-type>application/pkix-attr-cert</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>acc</extension>

+        <mime-type>application/vnd.americandynamics.acc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ace</extension>

+        <mime-type>application/x-ace-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>acu</extension>

+        <mime-type>application/vnd.acucobol</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>acutc</extension>

+        <mime-type>application/vnd.acucorp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>adp</extension>

+        <mime-type>audio/adpcm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aep</extension>

+        <mime-type>application/vnd.audiograph</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>afm</extension>

+        <mime-type>application/x-font-type1</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>afp</extension>

+        <mime-type>application/vnd.ibm.modcap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ahead</extension>

+        <mime-type>application/vnd.ahead.space</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ai</extension>

+        <mime-type>application/postscript</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aif</extension>

+        <mime-type>audio/x-aiff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aifc</extension>

+        <mime-type>audio/x-aiff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aiff</extension>

+        <mime-type>audio/x-aiff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aim</extension>

+        <mime-type>application/x-aim</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>air</extension>

+        <mime-type>application/vnd.adobe.air-application-installer-package+zip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ait</extension>

+        <mime-type>application/vnd.dvb.ait</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ami</extension>

+        <mime-type>application/vnd.amiga.ami</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>anx</extension>

+        <mime-type>application/annodex</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>apk</extension>

+        <mime-type>application/vnd.android.package-archive</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>appcache</extension>

+        <mime-type>text/cache-manifest</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>application</extension>

+        <mime-type>application/x-ms-application</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>apr</extension>

+        <mime-type>application/vnd.lotus-approach</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>arc</extension>

+        <mime-type>application/x-freearc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>art</extension>

+        <mime-type>image/x-jg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>asc</extension>

+        <mime-type>application/pgp-signature</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>asf</extension>

+        <mime-type>video/x-ms-asf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>asm</extension>

+        <mime-type>text/x-asm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aso</extension>

+        <mime-type>application/vnd.accpac.simply.aso</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>asx</extension>

+        <mime-type>video/x-ms-asf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>atc</extension>

+        <mime-type>application/vnd.acucorp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>atom</extension>

+        <mime-type>application/atom+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>atomcat</extension>

+        <mime-type>application/atomcat+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>atomsvc</extension>

+        <mime-type>application/atomsvc+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>atx</extension>

+        <mime-type>application/vnd.antix.game-component</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>au</extension>

+        <mime-type>audio/basic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>avi</extension>

+        <mime-type>video/x-msvideo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>avx</extension>

+        <mime-type>video/x-rad-screenplay</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>aw</extension>

+        <mime-type>application/applixware</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>axa</extension>

+        <mime-type>audio/annodex</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>axv</extension>

+        <mime-type>video/annodex</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>azf</extension>

+        <mime-type>application/vnd.airzip.filesecure.azf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>azs</extension>

+        <mime-type>application/vnd.airzip.filesecure.azs</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>azw</extension>

+        <mime-type>application/vnd.amazon.ebook</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bat</extension>

+        <mime-type>application/x-msdownload</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bcpio</extension>

+        <mime-type>application/x-bcpio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bdf</extension>

+        <mime-type>application/x-font-bdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bdm</extension>

+        <mime-type>application/vnd.syncml.dm+wbxml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bed</extension>

+        <mime-type>application/vnd.realvnc.bed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bh2</extension>

+        <mime-type>application/vnd.fujitsu.oasysprs</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bin</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>blb</extension>

+        <mime-type>application/x-blorb</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>blorb</extension>

+        <mime-type>application/x-blorb</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bmi</extension>

+        <mime-type>application/vnd.bmi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bmp</extension>

+        <mime-type>image/bmp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>body</extension>

+        <mime-type>text/html</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>book</extension>

+        <mime-type>application/vnd.framemaker</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>box</extension>

+        <mime-type>application/vnd.previewsystems.box</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>boz</extension>

+        <mime-type>application/x-bzip2</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bpk</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>btif</extension>

+        <mime-type>image/prs.btif</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bz</extension>

+        <mime-type>application/x-bzip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>bz2</extension>

+        <mime-type>application/x-bzip2</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c</extension>

+        <mime-type>text/x-c</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c11amc</extension>

+        <mime-type>application/vnd.cluetrust.cartomobile-config</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c11amz</extension>

+        <mime-type>application/vnd.cluetrust.cartomobile-config-pkg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c4d</extension>

+        <mime-type>application/vnd.clonk.c4group</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c4f</extension>

+        <mime-type>application/vnd.clonk.c4group</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c4g</extension>

+        <mime-type>application/vnd.clonk.c4group</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c4p</extension>

+        <mime-type>application/vnd.clonk.c4group</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>c4u</extension>

+        <mime-type>application/vnd.clonk.c4group</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cab</extension>

+        <mime-type>application/vnd.ms-cab-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>caf</extension>

+        <mime-type>audio/x-caf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cap</extension>

+        <mime-type>application/vnd.tcpdump.pcap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>car</extension>

+        <mime-type>application/vnd.curl.car</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cat</extension>

+        <mime-type>application/vnd.ms-pki.seccat</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cb7</extension>

+        <mime-type>application/x-cbr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cba</extension>

+        <mime-type>application/x-cbr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cbr</extension>

+        <mime-type>application/x-cbr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cbt</extension>

+        <mime-type>application/x-cbr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cbz</extension>

+        <mime-type>application/x-cbr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cc</extension>

+        <mime-type>text/x-c</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cct</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ccxml</extension>

+        <mime-type>application/ccxml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdbcmsg</extension>

+        <mime-type>application/vnd.contact.cmsg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdf</extension>

+        <mime-type>application/x-cdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdkey</extension>

+        <mime-type>application/vnd.mediastation.cdkey</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdmia</extension>

+        <mime-type>application/cdmi-capability</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdmic</extension>

+        <mime-type>application/cdmi-container</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdmid</extension>

+        <mime-type>application/cdmi-domain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdmio</extension>

+        <mime-type>application/cdmi-object</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdmiq</extension>

+        <mime-type>application/cdmi-queue</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdx</extension>

+        <mime-type>chemical/x-cdx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdxml</extension>

+        <mime-type>application/vnd.chemdraw+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cdy</extension>

+        <mime-type>application/vnd.cinderella</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cer</extension>

+        <mime-type>application/pkix-cert</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cfs</extension>

+        <mime-type>application/x-cfs-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cgm</extension>

+        <mime-type>image/cgm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>chat</extension>

+        <mime-type>application/x-chat</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>chm</extension>

+        <mime-type>application/vnd.ms-htmlhelp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>chrt</extension>

+        <mime-type>application/vnd.kde.kchart</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cif</extension>

+        <mime-type>chemical/x-cif</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cii</extension>

+        <mime-type>application/vnd.anser-web-certificate-issue-initiation</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cil</extension>

+        <mime-type>application/vnd.ms-artgalry</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cla</extension>

+        <mime-type>application/vnd.claymore</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>class</extension>

+        <mime-type>application/java</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>clkk</extension>

+        <mime-type>application/vnd.crick.clicker.keyboard</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>clkp</extension>

+        <mime-type>application/vnd.crick.clicker.palette</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>clkt</extension>

+        <mime-type>application/vnd.crick.clicker.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>clkw</extension>

+        <mime-type>application/vnd.crick.clicker.wordbank</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>clkx</extension>

+        <mime-type>application/vnd.crick.clicker</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>clp</extension>

+        <mime-type>application/x-msclip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cmc</extension>

+        <mime-type>application/vnd.cosmocaller</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cmdf</extension>

+        <mime-type>chemical/x-cmdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cml</extension>

+        <mime-type>chemical/x-cml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cmp</extension>

+        <mime-type>application/vnd.yellowriver-custom-menu</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cmx</extension>

+        <mime-type>image/x-cmx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cod</extension>

+        <mime-type>application/vnd.rim.cod</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>com</extension>

+        <mime-type>application/x-msdownload</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>conf</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cpio</extension>

+        <mime-type>application/x-cpio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cpp</extension>

+        <mime-type>text/x-c</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cpt</extension>

+        <mime-type>application/mac-compactpro</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>crd</extension>

+        <mime-type>application/x-mscardfile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>crl</extension>

+        <mime-type>application/pkix-crl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>crt</extension>

+        <mime-type>application/x-x509-ca-cert</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cryptonote</extension>

+        <mime-type>application/vnd.rig.cryptonote</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>csh</extension>

+        <mime-type>application/x-csh</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>csml</extension>

+        <mime-type>chemical/x-csml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>csp</extension>

+        <mime-type>application/vnd.commonspace</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>css</extension>

+        <mime-type>text/css</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cst</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>csv</extension>

+        <mime-type>text/csv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cu</extension>

+        <mime-type>application/cu-seeme</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>curl</extension>

+        <mime-type>text/vnd.curl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cww</extension>

+        <mime-type>application/prs.cww</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cxt</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>cxx</extension>

+        <mime-type>text/x-c</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dae</extension>

+        <mime-type>model/vnd.collada+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>daf</extension>

+        <mime-type>application/vnd.mobius.daf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dart</extension>

+        <mime-type>application/vnd.dart</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dataless</extension>

+        <mime-type>application/vnd.fdsn.seed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>davmount</extension>

+        <mime-type>application/davmount+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dbk</extension>

+        <mime-type>application/docbook+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dcr</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dcurl</extension>

+        <mime-type>text/vnd.curl.dcurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dd2</extension>

+        <mime-type>application/vnd.oma.dd2+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ddd</extension>

+        <mime-type>application/vnd.fujixerox.ddd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>deb</extension>

+        <mime-type>application/x-debian-package</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>def</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>deploy</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>der</extension>

+        <mime-type>application/x-x509-ca-cert</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dfac</extension>

+        <mime-type>application/vnd.dreamfactory</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dgc</extension>

+        <mime-type>application/x-dgc-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dib</extension>

+        <mime-type>image/bmp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dic</extension>

+        <mime-type>text/x-c</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dir</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dis</extension>

+        <mime-type>application/vnd.mobius.dis</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dist</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>distz</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>djv</extension>

+        <mime-type>image/vnd.djvu</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>djvu</extension>

+        <mime-type>image/vnd.djvu</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dll</extension>

+        <mime-type>application/x-msdownload</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dmg</extension>

+        <mime-type>application/x-apple-diskimage</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dmp</extension>

+        <mime-type>application/vnd.tcpdump.pcap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dms</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dna</extension>

+        <mime-type>application/vnd.dna</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>doc</extension>

+        <mime-type>application/msword</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>docm</extension>

+        <mime-type>application/vnd.ms-word.document.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>docx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dot</extension>

+        <mime-type>application/msword</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dotm</extension>

+        <mime-type>application/vnd.ms-word.template.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dotx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dp</extension>

+        <mime-type>application/vnd.osgi.dp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dpg</extension>

+        <mime-type>application/vnd.dpgraph</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dra</extension>

+        <mime-type>audio/vnd.dra</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dsc</extension>

+        <mime-type>text/prs.lines.tag</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dssc</extension>

+        <mime-type>application/dssc+der</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dtb</extension>

+        <mime-type>application/x-dtbook+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dtd</extension>

+        <mime-type>application/xml-dtd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dts</extension>

+        <mime-type>audio/vnd.dts</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dtshd</extension>

+        <mime-type>audio/vnd.dts.hd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dump</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dv</extension>

+        <mime-type>video/x-dv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dvb</extension>

+        <mime-type>video/vnd.dvb.file</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dvi</extension>

+        <mime-type>application/x-dvi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dwf</extension>

+        <mime-type>model/vnd.dwf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dwg</extension>

+        <mime-type>image/vnd.dwg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dxf</extension>

+        <mime-type>image/vnd.dxf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dxp</extension>

+        <mime-type>application/vnd.spotfire.dxp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>dxr</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ecelp4800</extension>

+        <mime-type>audio/vnd.nuera.ecelp4800</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ecelp7470</extension>

+        <mime-type>audio/vnd.nuera.ecelp7470</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ecelp9600</extension>

+        <mime-type>audio/vnd.nuera.ecelp9600</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ecma</extension>

+        <mime-type>application/ecmascript</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>edm</extension>

+        <mime-type>application/vnd.novadigm.edm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>edx</extension>

+        <mime-type>application/vnd.novadigm.edx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>efif</extension>

+        <mime-type>application/vnd.picsel</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ei6</extension>

+        <mime-type>application/vnd.pg.osasli</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>elc</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>emf</extension>

+        <mime-type>application/x-msmetafile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>eml</extension>

+        <mime-type>message/rfc822</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>emma</extension>

+        <mime-type>application/emma+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>emz</extension>

+        <mime-type>application/x-msmetafile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>eol</extension>

+        <mime-type>audio/vnd.digital-winds</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>eot</extension>

+        <mime-type>application/vnd.ms-fontobject</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>eps</extension>

+        <mime-type>application/postscript</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>epub</extension>

+        <mime-type>application/epub+zip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>es3</extension>

+        <mime-type>application/vnd.eszigno3+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>esa</extension>

+        <mime-type>application/vnd.osgi.subsystem</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>esf</extension>

+        <mime-type>application/vnd.epson.esf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>et3</extension>

+        <mime-type>application/vnd.eszigno3+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>etx</extension>

+        <mime-type>text/x-setext</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>eva</extension>

+        <mime-type>application/x-eva</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>evy</extension>

+        <mime-type>application/x-envoy</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>exe</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>exi</extension>

+        <mime-type>application/exi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ext</extension>

+        <mime-type>application/vnd.novadigm.ext</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ez</extension>

+        <mime-type>application/andrew-inset</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ez2</extension>

+        <mime-type>application/vnd.ezpix-album</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ez3</extension>

+        <mime-type>application/vnd.ezpix-package</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>f</extension>

+        <mime-type>text/x-fortran</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>f4v</extension>

+        <mime-type>video/x-f4v</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>f77</extension>

+        <mime-type>text/x-fortran</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>f90</extension>

+        <mime-type>text/x-fortran</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fbs</extension>

+        <mime-type>image/vnd.fastbidsheet</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fcdt</extension>

+        <mime-type>application/vnd.adobe.formscentral.fcdt</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fcs</extension>

+        <mime-type>application/vnd.isac.fcs</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fdf</extension>

+        <mime-type>application/vnd.fdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fe_launch</extension>

+        <mime-type>application/vnd.denovo.fcselayout-link</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fg5</extension>

+        <mime-type>application/vnd.fujitsu.oasysgp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fgd</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fh</extension>

+        <mime-type>image/x-freehand</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fh4</extension>

+        <mime-type>image/x-freehand</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fh5</extension>

+        <mime-type>image/x-freehand</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fh7</extension>

+        <mime-type>image/x-freehand</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fhc</extension>

+        <mime-type>image/x-freehand</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fig</extension>

+        <mime-type>application/x-xfig</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>flac</extension>

+        <mime-type>audio/flac</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fli</extension>

+        <mime-type>video/x-fli</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>flo</extension>

+        <mime-type>application/vnd.micrografx.flo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>flv</extension>

+        <mime-type>video/x-flv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>flw</extension>

+        <mime-type>application/vnd.kde.kivio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>flx</extension>

+        <mime-type>text/vnd.fmi.flexstor</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fly</extension>

+        <mime-type>text/vnd.fly</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fm</extension>

+        <mime-type>application/vnd.framemaker</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fnc</extension>

+        <mime-type>application/vnd.frogans.fnc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>for</extension>

+        <mime-type>text/x-fortran</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fpx</extension>

+        <mime-type>image/vnd.fpx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>frame</extension>

+        <mime-type>application/vnd.framemaker</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fsc</extension>

+        <mime-type>application/vnd.fsc.weblaunch</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fst</extension>

+        <mime-type>image/vnd.fst</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ftc</extension>

+        <mime-type>application/vnd.fluxtime.clip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fti</extension>

+        <mime-type>application/vnd.anser-web-funds-transfer-initiation</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fvt</extension>

+        <mime-type>video/vnd.fvt</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fxp</extension>

+        <mime-type>application/vnd.adobe.fxp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fxpl</extension>

+        <mime-type>application/vnd.adobe.fxp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>fzs</extension>

+        <mime-type>application/vnd.fuzzysheet</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>g2w</extension>

+        <mime-type>application/vnd.geoplan</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>g3</extension>

+        <mime-type>image/g3fax</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>g3w</extension>

+        <mime-type>application/vnd.geospace</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gac</extension>

+        <mime-type>application/vnd.groove-account</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gam</extension>

+        <mime-type>application/x-tads</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gbr</extension>

+        <mime-type>application/rpki-ghostbusters</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gca</extension>

+        <mime-type>application/x-gca-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gdl</extension>

+        <mime-type>model/vnd.gdl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>geo</extension>

+        <mime-type>application/vnd.dynageo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gex</extension>

+        <mime-type>application/vnd.geometry-explorer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ggb</extension>

+        <mime-type>application/vnd.geogebra.file</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ggt</extension>

+        <mime-type>application/vnd.geogebra.tool</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ghf</extension>

+        <mime-type>application/vnd.groove-help</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gif</extension>

+        <mime-type>image/gif</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gim</extension>

+        <mime-type>application/vnd.groove-identity-message</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gml</extension>

+        <mime-type>application/gml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gmx</extension>

+        <mime-type>application/vnd.gmx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gnumeric</extension>

+        <mime-type>application/x-gnumeric</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gph</extension>

+        <mime-type>application/vnd.flographit</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gpx</extension>

+        <mime-type>application/gpx+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gqf</extension>

+        <mime-type>application/vnd.grafeq</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gqs</extension>

+        <mime-type>application/vnd.grafeq</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gram</extension>

+        <mime-type>application/srgs</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gramps</extension>

+        <mime-type>application/x-gramps-xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gre</extension>

+        <mime-type>application/vnd.geometry-explorer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>grv</extension>

+        <mime-type>application/vnd.groove-injector</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>grxml</extension>

+        <mime-type>application/srgs+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gsf</extension>

+        <mime-type>application/x-font-ghostscript</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gtar</extension>

+        <mime-type>application/x-gtar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gtm</extension>

+        <mime-type>application/vnd.groove-tool-message</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gtw</extension>

+        <mime-type>model/vnd.gtw</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gv</extension>

+        <mime-type>text/vnd.graphviz</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gxf</extension>

+        <mime-type>application/gxf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gxt</extension>

+        <mime-type>application/vnd.geonext</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>gz</extension>

+        <mime-type>application/x-gzip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>h</extension>

+        <mime-type>text/x-c</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>h261</extension>

+        <mime-type>video/h261</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>h263</extension>

+        <mime-type>video/h263</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>h264</extension>

+        <mime-type>video/h264</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hal</extension>

+        <mime-type>application/vnd.hal+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hbci</extension>

+        <mime-type>application/vnd.hbci</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hdf</extension>

+        <mime-type>application/x-hdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hh</extension>

+        <mime-type>text/x-c</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hlp</extension>

+        <mime-type>application/winhlp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hpgl</extension>

+        <mime-type>application/vnd.hp-hpgl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hpid</extension>

+        <mime-type>application/vnd.hp-hpid</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hps</extension>

+        <mime-type>application/vnd.hp-hps</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hqx</extension>

+        <mime-type>application/mac-binhex40</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>htc</extension>

+        <mime-type>text/x-component</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>htke</extension>

+        <mime-type>application/vnd.kenameaapp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>htm</extension>

+        <mime-type>text/html</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>html</extension>

+        <mime-type>text/html</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hvd</extension>

+        <mime-type>application/vnd.yamaha.hv-dic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hvp</extension>

+        <mime-type>application/vnd.yamaha.hv-voice</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>hvs</extension>

+        <mime-type>application/vnd.yamaha.hv-script</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>i2g</extension>

+        <mime-type>application/vnd.intergeo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>icc</extension>

+        <mime-type>application/vnd.iccprofile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ice</extension>

+        <mime-type>x-conference/x-cooltalk</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>icm</extension>

+        <mime-type>application/vnd.iccprofile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ico</extension>

+        <mime-type>image/x-icon</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ics</extension>

+        <mime-type>text/calendar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ief</extension>

+        <mime-type>image/ief</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ifb</extension>

+        <mime-type>text/calendar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ifm</extension>

+        <mime-type>application/vnd.shana.informed.formdata</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>iges</extension>

+        <mime-type>model/iges</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>igl</extension>

+        <mime-type>application/vnd.igloader</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>igm</extension>

+        <mime-type>application/vnd.insors.igm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>igs</extension>

+        <mime-type>model/iges</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>igx</extension>

+        <mime-type>application/vnd.micrografx.igx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>iif</extension>

+        <mime-type>application/vnd.shana.informed.interchange</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>imp</extension>

+        <mime-type>application/vnd.accpac.simply.imp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ims</extension>

+        <mime-type>application/vnd.ms-ims</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>in</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ink</extension>

+        <mime-type>application/inkml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>inkml</extension>

+        <mime-type>application/inkml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>install</extension>

+        <mime-type>application/x-install-instructions</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>iota</extension>

+        <mime-type>application/vnd.astraea-software.iota</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ipfix</extension>

+        <mime-type>application/ipfix</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ipk</extension>

+        <mime-type>application/vnd.shana.informed.package</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>irm</extension>

+        <mime-type>application/vnd.ibm.rights-management</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>irp</extension>

+        <mime-type>application/vnd.irepository.package+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>iso</extension>

+        <mime-type>application/x-iso9660-image</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>itp</extension>

+        <mime-type>application/vnd.shana.informed.formtemplate</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ivp</extension>

+        <mime-type>application/vnd.immervision-ivp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ivu</extension>

+        <mime-type>application/vnd.immervision-ivu</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jad</extension>

+        <mime-type>text/vnd.sun.j2me.app-descriptor</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jam</extension>

+        <mime-type>application/vnd.jam</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jar</extension>

+        <mime-type>application/java-archive</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>java</extension>

+        <mime-type>text/x-java-source</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jisp</extension>

+        <mime-type>application/vnd.jisp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jlt</extension>

+        <mime-type>application/vnd.hp-jlyt</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jnlp</extension>

+        <mime-type>application/x-java-jnlp-file</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>joda</extension>

+        <mime-type>application/vnd.joost.joda-archive</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jpe</extension>

+        <mime-type>image/jpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jpeg</extension>

+        <mime-type>image/jpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jpg</extension>

+        <mime-type>image/jpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jpgm</extension>

+        <mime-type>video/jpm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jpgv</extension>

+        <mime-type>video/jpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jpm</extension>

+        <mime-type>video/jpm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>js</extension>

+        <mime-type>application/javascript</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jsf</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>json</extension>

+        <mime-type>application/json</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jsonml</extension>

+        <mime-type>application/jsonml+json</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>jspf</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kar</extension>

+        <mime-type>audio/midi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>karbon</extension>

+        <mime-type>application/vnd.kde.karbon</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kfo</extension>

+        <mime-type>application/vnd.kde.kformula</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kia</extension>

+        <mime-type>application/vnd.kidspiration</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kml</extension>

+        <mime-type>application/vnd.google-earth.kml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kmz</extension>

+        <mime-type>application/vnd.google-earth.kmz</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kne</extension>

+        <mime-type>application/vnd.kinar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>knp</extension>

+        <mime-type>application/vnd.kinar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kon</extension>

+        <mime-type>application/vnd.kde.kontour</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kpr</extension>

+        <mime-type>application/vnd.kde.kpresenter</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kpt</extension>

+        <mime-type>application/vnd.kde.kpresenter</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kpxx</extension>

+        <mime-type>application/vnd.ds-keypoint</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ksp</extension>

+        <mime-type>application/vnd.kde.kspread</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ktr</extension>

+        <mime-type>application/vnd.kahootz</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ktx</extension>

+        <mime-type>image/ktx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ktz</extension>

+        <mime-type>application/vnd.kahootz</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kwd</extension>

+        <mime-type>application/vnd.kde.kword</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>kwt</extension>

+        <mime-type>application/vnd.kde.kword</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lasxml</extension>

+        <mime-type>application/vnd.las.las+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>latex</extension>

+        <mime-type>application/x-latex</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lbd</extension>

+        <mime-type>application/vnd.llamagraphics.life-balance.desktop</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lbe</extension>

+        <mime-type>application/vnd.llamagraphics.life-balance.exchange+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>les</extension>

+        <mime-type>application/vnd.hhe.lesson-player</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lha</extension>

+        <mime-type>application/x-lzh-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>link66</extension>

+        <mime-type>application/vnd.route66.link66+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>list</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>list3820</extension>

+        <mime-type>application/vnd.ibm.modcap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>listafp</extension>

+        <mime-type>application/vnd.ibm.modcap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lnk</extension>

+        <mime-type>application/x-ms-shortcut</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>log</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lostxml</extension>

+        <mime-type>application/lost+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lrf</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lrm</extension>

+        <mime-type>application/vnd.ms-lrm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ltf</extension>

+        <mime-type>application/vnd.frogans.ltf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lvp</extension>

+        <mime-type>audio/vnd.lucent.voice</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lwp</extension>

+        <mime-type>application/vnd.lotus-wordpro</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>lzh</extension>

+        <mime-type>application/x-lzh-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m13</extension>

+        <mime-type>application/x-msmediaview</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m14</extension>

+        <mime-type>application/x-msmediaview</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m1v</extension>

+        <mime-type>video/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m21</extension>

+        <mime-type>application/mp21</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m2a</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m2v</extension>

+        <mime-type>video/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m3a</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m3u</extension>

+        <mime-type>audio/x-mpegurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m3u8</extension>

+        <mime-type>application/vnd.apple.mpegurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m4a</extension>

+        <mime-type>audio/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m4b</extension>

+        <mime-type>audio/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m4r</extension>

+        <mime-type>audio/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m4u</extension>

+        <mime-type>video/vnd.mpegurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>m4v</extension>

+        <mime-type>video/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ma</extension>

+        <mime-type>application/mathematica</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mac</extension>

+        <mime-type>image/x-macpaint</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mads</extension>

+        <mime-type>application/mads+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mag</extension>

+        <mime-type>application/vnd.ecowin.chart</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>maker</extension>

+        <mime-type>application/vnd.framemaker</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>man</extension>

+        <mime-type>text/troff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mar</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mathml</extension>

+        <mime-type>application/mathml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mb</extension>

+        <mime-type>application/mathematica</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mbk</extension>

+        <mime-type>application/vnd.mobius.mbk</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mbox</extension>

+        <mime-type>application/mbox</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mc1</extension>

+        <mime-type>application/vnd.medcalcdata</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mcd</extension>

+        <mime-type>application/vnd.mcd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mcurl</extension>

+        <mime-type>text/vnd.curl.mcurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mdb</extension>

+        <mime-type>application/x-msaccess</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mdi</extension>

+        <mime-type>image/vnd.ms-modi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>me</extension>

+        <mime-type>text/troff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mesh</extension>

+        <mime-type>model/mesh</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>meta4</extension>

+        <mime-type>application/metalink4+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>metalink</extension>

+        <mime-type>application/metalink+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mets</extension>

+        <mime-type>application/mets+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mfm</extension>

+        <mime-type>application/vnd.mfmp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mft</extension>

+        <mime-type>application/rpki-manifest</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mgp</extension>

+        <mime-type>application/vnd.osgeo.mapguide.package</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mgz</extension>

+        <mime-type>application/vnd.proteus.magazine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mid</extension>

+        <mime-type>audio/midi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>midi</extension>

+        <mime-type>audio/midi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mie</extension>

+        <mime-type>application/x-mie</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mif</extension>

+        <mime-type>application/x-mif</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mime</extension>

+        <mime-type>message/rfc822</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mj2</extension>

+        <mime-type>video/mj2</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mjp2</extension>

+        <mime-type>video/mj2</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mk3d</extension>

+        <mime-type>video/x-matroska</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mka</extension>

+        <mime-type>audio/x-matroska</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mks</extension>

+        <mime-type>video/x-matroska</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mkv</extension>

+        <mime-type>video/x-matroska</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mlp</extension>

+        <mime-type>application/vnd.dolby.mlp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mmd</extension>

+        <mime-type>application/vnd.chipnuts.karaoke-mmd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mmf</extension>

+        <mime-type>application/vnd.smaf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mmr</extension>

+        <mime-type>image/vnd.fujixerox.edmics-mmr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mng</extension>

+        <mime-type>video/x-mng</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mny</extension>

+        <mime-type>application/x-msmoney</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mobi</extension>

+        <mime-type>application/x-mobipocket-ebook</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mods</extension>

+        <mime-type>application/mods+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mov</extension>

+        <mime-type>video/quicktime</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>movie</extension>

+        <mime-type>video/x-sgi-movie</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp1</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp2</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp21</extension>

+        <mime-type>application/mp21</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp2a</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp3</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp4</extension>

+        <mime-type>video/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp4a</extension>

+        <mime-type>audio/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp4s</extension>

+        <mime-type>application/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mp4v</extension>

+        <mime-type>video/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpa</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpc</extension>

+        <mime-type>application/vnd.mophun.certificate</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpe</extension>

+        <mime-type>video/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpeg</extension>

+        <mime-type>video/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpega</extension>

+        <mime-type>audio/x-mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpg</extension>

+        <mime-type>video/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpg4</extension>

+        <mime-type>video/mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpga</extension>

+        <mime-type>audio/mpeg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpkg</extension>

+        <mime-type>application/vnd.apple.installer+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpm</extension>

+        <mime-type>application/vnd.blueice.multipass</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpn</extension>

+        <mime-type>application/vnd.mophun.application</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpp</extension>

+        <mime-type>application/vnd.ms-project</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpt</extension>

+        <mime-type>application/vnd.ms-project</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpv2</extension>

+        <mime-type>video/mpeg2</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mpy</extension>

+        <mime-type>application/vnd.ibm.minipay</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mqy</extension>

+        <mime-type>application/vnd.mobius.mqy</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mrc</extension>

+        <mime-type>application/marc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mrcx</extension>

+        <mime-type>application/marcxml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ms</extension>

+        <mime-type>text/troff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mscml</extension>

+        <mime-type>application/mediaservercontrol+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mseed</extension>

+        <mime-type>application/vnd.fdsn.mseed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mseq</extension>

+        <mime-type>application/vnd.mseq</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>msf</extension>

+        <mime-type>application/vnd.epson.msf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>msh</extension>

+        <mime-type>model/mesh</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>msi</extension>

+        <mime-type>application/x-msdownload</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>msl</extension>

+        <mime-type>application/vnd.mobius.msl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>msty</extension>

+        <mime-type>application/vnd.muvee.style</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mts</extension>

+        <mime-type>model/vnd.mts</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mus</extension>

+        <mime-type>application/vnd.musician</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>musicxml</extension>

+        <mime-type>application/vnd.recordare.musicxml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mvb</extension>

+        <mime-type>application/x-msmediaview</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mwf</extension>

+        <mime-type>application/vnd.mfer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mxf</extension>

+        <mime-type>application/mxf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mxl</extension>

+        <mime-type>application/vnd.recordare.musicxml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mxml</extension>

+        <mime-type>application/xv+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mxs</extension>

+        <mime-type>application/vnd.triscape.mxs</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>mxu</extension>

+        <mime-type>video/vnd.mpegurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>n-gage</extension>

+        <mime-type>application/vnd.nokia.n-gage.symbian.install</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>n3</extension>

+        <mime-type>text/n3</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nb</extension>

+        <mime-type>application/mathematica</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nbp</extension>

+        <mime-type>application/vnd.wolfram.player</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nc</extension>

+        <mime-type>application/x-netcdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ncx</extension>

+        <mime-type>application/x-dtbncx+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nfo</extension>

+        <mime-type>text/x-nfo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ngdat</extension>

+        <mime-type>application/vnd.nokia.n-gage.data</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nitf</extension>

+        <mime-type>application/vnd.nitf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nlu</extension>

+        <mime-type>application/vnd.neurolanguage.nlu</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nml</extension>

+        <mime-type>application/vnd.enliven</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nnd</extension>

+        <mime-type>application/vnd.noblenet-directory</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nns</extension>

+        <mime-type>application/vnd.noblenet-sealer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nnw</extension>

+        <mime-type>application/vnd.noblenet-web</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>npx</extension>

+        <mime-type>image/vnd.net-fpx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nsc</extension>

+        <mime-type>application/x-conference</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nsf</extension>

+        <mime-type>application/vnd.lotus-notes</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ntf</extension>

+        <mime-type>application/vnd.nitf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>nzb</extension>

+        <mime-type>application/x-nzb</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oa2</extension>

+        <mime-type>application/vnd.fujitsu.oasys2</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oa3</extension>

+        <mime-type>application/vnd.fujitsu.oasys3</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oas</extension>

+        <mime-type>application/vnd.fujitsu.oasys</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>obd</extension>

+        <mime-type>application/x-msbinder</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>obj</extension>

+        <mime-type>application/x-tgif</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oda</extension>

+        <mime-type>application/oda</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Database -->

+        <extension>odb</extension>

+        <mime-type>application/vnd.oasis.opendocument.database</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Chart -->

+        <extension>odc</extension>

+        <mime-type>application/vnd.oasis.opendocument.chart</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Formula -->

+        <extension>odf</extension>

+        <mime-type>application/vnd.oasis.opendocument.formula</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>odft</extension>

+        <mime-type>application/vnd.oasis.opendocument.formula-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Drawing -->

+        <extension>odg</extension>

+        <mime-type>application/vnd.oasis.opendocument.graphics</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Image -->

+        <extension>odi</extension>

+        <mime-type>application/vnd.oasis.opendocument.image</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Master Document -->

+        <extension>odm</extension>

+        <mime-type>application/vnd.oasis.opendocument.text-master</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Presentation -->

+        <extension>odp</extension>

+        <mime-type>application/vnd.oasis.opendocument.presentation</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Spreadsheet -->

+        <extension>ods</extension>

+        <mime-type>application/vnd.oasis.opendocument.spreadsheet</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Text -->

+        <extension>odt</extension>

+        <mime-type>application/vnd.oasis.opendocument.text</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oga</extension>

+        <mime-type>audio/ogg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ogg</extension>

+        <mime-type>audio/ogg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ogv</extension>

+        <mime-type>video/ogg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- xiph mime types -->

+        <extension>ogx</extension>

+        <mime-type>application/ogg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>omdoc</extension>

+        <mime-type>application/omdoc+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>onepkg</extension>

+        <mime-type>application/onenote</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>onetmp</extension>

+        <mime-type>application/onenote</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>onetoc</extension>

+        <mime-type>application/onenote</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>onetoc2</extension>

+        <mime-type>application/onenote</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>opf</extension>

+        <mime-type>application/oebps-package+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>opml</extension>

+        <mime-type>text/x-opml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oprc</extension>

+        <mime-type>application/vnd.palm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>org</extension>

+        <mime-type>application/vnd.lotus-organizer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>osf</extension>

+        <mime-type>application/vnd.yamaha.openscoreformat</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>osfpvg</extension>

+        <mime-type>application/vnd.yamaha.openscoreformat.osfpvg+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>otc</extension>

+        <mime-type>application/vnd.oasis.opendocument.chart-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>otf</extension>

+        <mime-type>application/x-font-otf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Drawing Template -->

+        <extension>otg</extension>

+        <mime-type>application/vnd.oasis.opendocument.graphics-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- HTML Document Template -->

+        <extension>oth</extension>

+        <mime-type>application/vnd.oasis.opendocument.text-web</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oti</extension>

+        <mime-type>application/vnd.oasis.opendocument.image-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Presentation Template -->

+        <extension>otp</extension>

+        <mime-type>application/vnd.oasis.opendocument.presentation-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Spreadsheet Template -->

+        <extension>ots</extension>

+        <mime-type>application/vnd.oasis.opendocument.spreadsheet-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- OpenDocument Text Template -->

+        <extension>ott</extension>

+        <mime-type>application/vnd.oasis.opendocument.text-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oxps</extension>

+        <mime-type>application/oxps</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>oxt</extension>

+        <mime-type>application/vnd.openofficeorg.extension</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p</extension>

+        <mime-type>text/x-pascal</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p10</extension>

+        <mime-type>application/pkcs10</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p12</extension>

+        <mime-type>application/x-pkcs12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p7b</extension>

+        <mime-type>application/x-pkcs7-certificates</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p7c</extension>

+        <mime-type>application/pkcs7-mime</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p7m</extension>

+        <mime-type>application/pkcs7-mime</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p7r</extension>

+        <mime-type>application/x-pkcs7-certreqresp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p7s</extension>

+        <mime-type>application/pkcs7-signature</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>p8</extension>

+        <mime-type>application/pkcs8</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pas</extension>

+        <mime-type>text/x-pascal</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>paw</extension>

+        <mime-type>application/vnd.pawaafile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pbd</extension>

+        <mime-type>application/vnd.powerbuilder6</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pbm</extension>

+        <mime-type>image/x-portable-bitmap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pcap</extension>

+        <mime-type>application/vnd.tcpdump.pcap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pcf</extension>

+        <mime-type>application/x-font-pcf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pcl</extension>

+        <mime-type>application/vnd.hp-pcl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pclxl</extension>

+        <mime-type>application/vnd.hp-pclxl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pct</extension>

+        <mime-type>image/pict</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pcurl</extension>

+        <mime-type>application/vnd.curl.pcurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pcx</extension>

+        <mime-type>image/x-pcx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pdb</extension>

+        <mime-type>application/vnd.palm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pdf</extension>

+        <mime-type>application/pdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pfa</extension>

+        <mime-type>application/x-font-type1</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pfb</extension>

+        <mime-type>application/x-font-type1</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pfm</extension>

+        <mime-type>application/x-font-type1</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pfr</extension>

+        <mime-type>application/font-tdpfr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pfx</extension>

+        <mime-type>application/x-pkcs12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pgm</extension>

+        <mime-type>image/x-portable-graymap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pgn</extension>

+        <mime-type>application/x-chess-pgn</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pgp</extension>

+        <mime-type>application/pgp-encrypted</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pic</extension>

+        <mime-type>image/pict</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pict</extension>

+        <mime-type>image/pict</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pkg</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pki</extension>

+        <mime-type>application/pkixcmp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pkipath</extension>

+        <mime-type>application/pkix-pkipath</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>plb</extension>

+        <mime-type>application/vnd.3gpp.pic-bw-large</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>plc</extension>

+        <mime-type>application/vnd.mobius.plc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>plf</extension>

+        <mime-type>application/vnd.pocketlearn</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pls</extension>

+        <mime-type>audio/x-scpls</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pml</extension>

+        <mime-type>application/vnd.ctc-posml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>png</extension>

+        <mime-type>image/png</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pnm</extension>

+        <mime-type>image/x-portable-anymap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pnt</extension>

+        <mime-type>image/x-macpaint</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>portpkg</extension>

+        <mime-type>application/vnd.macports.portpkg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pot</extension>

+        <mime-type>application/vnd.ms-powerpoint</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>potm</extension>

+        <mime-type>application/vnd.ms-powerpoint.template.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>potx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ppam</extension>

+        <mime-type>application/vnd.ms-powerpoint.addin.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ppd</extension>

+        <mime-type>application/vnd.cups-ppd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ppm</extension>

+        <mime-type>image/x-portable-pixmap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pps</extension>

+        <mime-type>application/vnd.ms-powerpoint</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ppsm</extension>

+        <mime-type>application/vnd.ms-powerpoint.slideshow.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ppsx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slideshow</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ppt</extension>

+        <mime-type>application/vnd.ms-powerpoint</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pptm</extension>

+        <mime-type>application/vnd.ms-powerpoint.presentation.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pptx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.presentation</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pqa</extension>

+        <mime-type>application/vnd.palm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>prc</extension>

+        <mime-type>application/x-mobipocket-ebook</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pre</extension>

+        <mime-type>application/vnd.lotus-freelance</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>prf</extension>

+        <mime-type>application/pics-rules</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ps</extension>

+        <mime-type>application/postscript</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>psb</extension>

+        <mime-type>application/vnd.3gpp.pic-bw-small</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>psd</extension>

+        <mime-type>image/vnd.adobe.photoshop</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>psf</extension>

+        <mime-type>application/x-font-linux-psf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pskcxml</extension>

+        <mime-type>application/pskc+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ptid</extension>

+        <mime-type>application/vnd.pvi.ptid1</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pub</extension>

+        <mime-type>application/x-mspublisher</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pvb</extension>

+        <mime-type>application/vnd.3gpp.pic-bw-var</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pwn</extension>

+        <mime-type>application/vnd.3m.post-it-notes</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pya</extension>

+        <mime-type>audio/vnd.ms-playready.media.pya</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>pyv</extension>

+        <mime-type>video/vnd.ms-playready.media.pyv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qam</extension>

+        <mime-type>application/vnd.epson.quickanime</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qbo</extension>

+        <mime-type>application/vnd.intu.qbo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qfx</extension>

+        <mime-type>application/vnd.intu.qfx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qps</extension>

+        <mime-type>application/vnd.publishare-delta-tree</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qt</extension>

+        <mime-type>video/quicktime</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qti</extension>

+        <mime-type>image/x-quicktime</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qtif</extension>

+        <mime-type>image/x-quicktime</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qwd</extension>

+        <mime-type>application/vnd.quark.quarkxpress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qwt</extension>

+        <mime-type>application/vnd.quark.quarkxpress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qxb</extension>

+        <mime-type>application/vnd.quark.quarkxpress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qxd</extension>

+        <mime-type>application/vnd.quark.quarkxpress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qxl</extension>

+        <mime-type>application/vnd.quark.quarkxpress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>qxt</extension>

+        <mime-type>application/vnd.quark.quarkxpress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ra</extension>

+        <mime-type>audio/x-pn-realaudio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ram</extension>

+        <mime-type>audio/x-pn-realaudio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rar</extension>

+        <mime-type>application/x-rar-compressed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ras</extension>

+        <mime-type>image/x-cmu-raster</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rcprofile</extension>

+        <mime-type>application/vnd.ipunplugged.rcprofile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rdf</extension>

+        <mime-type>application/rdf+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rdz</extension>

+        <mime-type>application/vnd.data-vision.rdz</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rep</extension>

+        <mime-type>application/vnd.businessobjects</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>res</extension>

+        <mime-type>application/x-dtbresource+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rgb</extension>

+        <mime-type>image/x-rgb</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rif</extension>

+        <mime-type>application/reginfo+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rip</extension>

+        <mime-type>audio/vnd.rip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ris</extension>

+        <mime-type>application/x-research-info-systems</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rl</extension>

+        <mime-type>application/resource-lists+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rlc</extension>

+        <mime-type>image/vnd.fujixerox.edmics-rlc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rld</extension>

+        <mime-type>application/resource-lists-diff+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rm</extension>

+        <mime-type>application/vnd.rn-realmedia</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rmi</extension>

+        <mime-type>audio/midi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rmp</extension>

+        <mime-type>audio/x-pn-realaudio-plugin</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rms</extension>

+        <mime-type>application/vnd.jcp.javame.midlet-rms</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rmvb</extension>

+        <mime-type>application/vnd.rn-realmedia-vbr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rnc</extension>

+        <mime-type>application/relax-ng-compact-syntax</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>roa</extension>

+        <mime-type>application/rpki-roa</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>roff</extension>

+        <mime-type>text/troff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rp9</extension>

+        <mime-type>application/vnd.cloanto.rp9</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rpss</extension>

+        <mime-type>application/vnd.nokia.radio-presets</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rpst</extension>

+        <mime-type>application/vnd.nokia.radio-preset</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rq</extension>

+        <mime-type>application/sparql-query</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rs</extension>

+        <mime-type>application/rls-services+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rsd</extension>

+        <mime-type>application/rsd+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rss</extension>

+        <mime-type>application/rss+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rtf</extension>

+        <mime-type>application/rtf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>rtx</extension>

+        <mime-type>text/richtext</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>s</extension>

+        <mime-type>text/x-asm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>s3m</extension>

+        <mime-type>audio/s3m</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>saf</extension>

+        <mime-type>application/vnd.yamaha.smaf-audio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sbml</extension>

+        <mime-type>application/sbml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sc</extension>

+        <mime-type>application/vnd.ibm.secure-container</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>scd</extension>

+        <mime-type>application/x-msschedule</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>scm</extension>

+        <mime-type>application/vnd.lotus-screencam</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>scq</extension>

+        <mime-type>application/scvp-cv-request</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>scs</extension>

+        <mime-type>application/scvp-cv-response</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>scurl</extension>

+        <mime-type>text/vnd.curl.scurl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sda</extension>

+        <mime-type>application/vnd.stardivision.draw</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sdc</extension>

+        <mime-type>application/vnd.stardivision.calc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sdd</extension>

+        <mime-type>application/vnd.stardivision.impress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sdkd</extension>

+        <mime-type>application/vnd.solent.sdkm+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sdkm</extension>

+        <mime-type>application/vnd.solent.sdkm+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sdp</extension>

+        <mime-type>application/sdp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sdw</extension>

+        <mime-type>application/vnd.stardivision.writer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>see</extension>

+        <mime-type>application/vnd.seemail</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>seed</extension>

+        <mime-type>application/vnd.fdsn.seed</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sema</extension>

+        <mime-type>application/vnd.sema</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>semd</extension>

+        <mime-type>application/vnd.semd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>semf</extension>

+        <mime-type>application/vnd.semf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ser</extension>

+        <mime-type>application/java-serialized-object</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>setpay</extension>

+        <mime-type>application/set-payment-initiation</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>setreg</extension>

+        <mime-type>application/set-registration-initiation</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sfd-hdstx</extension>

+        <mime-type>application/vnd.hydrostatix.sof-data</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sfs</extension>

+        <mime-type>application/vnd.spotfire.sfs</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sfv</extension>

+        <mime-type>text/x-sfv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sgi</extension>

+        <mime-type>image/sgi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sgl</extension>

+        <mime-type>application/vnd.stardivision.writer-global</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sgm</extension>

+        <mime-type>text/sgml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sgml</extension>

+        <mime-type>text/sgml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sh</extension>

+        <mime-type>application/x-sh</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>shar</extension>

+        <mime-type>application/x-shar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>shf</extension>

+        <mime-type>application/shf+xml</mime-type>

+    </mime-mapping>

+    <!--

+    <mime-mapping>

+        <extension>shtml</extension>

+        <mime-type>text/x-server-parsed-html</mime-type>

+    </mime-mapping>

+    -->

+    <mime-mapping>

+        <extension>sid</extension>

+        <mime-type>image/x-mrsid-image</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sig</extension>

+        <mime-type>application/pgp-signature</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sil</extension>

+        <mime-type>audio/silk</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>silo</extension>

+        <mime-type>model/mesh</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sis</extension>

+        <mime-type>application/vnd.symbian.install</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sisx</extension>

+        <mime-type>application/vnd.symbian.install</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sit</extension>

+        <mime-type>application/x-stuffit</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sitx</extension>

+        <mime-type>application/x-stuffitx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>skd</extension>

+        <mime-type>application/vnd.koan</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>skm</extension>

+        <mime-type>application/vnd.koan</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>skp</extension>

+        <mime-type>application/vnd.koan</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>skt</extension>

+        <mime-type>application/vnd.koan</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sldm</extension>

+        <mime-type>application/vnd.ms-powerpoint.slide.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sldx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.presentationml.slide</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>slt</extension>

+        <mime-type>application/vnd.epson.salt</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sm</extension>

+        <mime-type>application/vnd.stepmania.stepchart</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>smf</extension>

+        <mime-type>application/vnd.stardivision.math</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>smi</extension>

+        <mime-type>application/smil+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>smil</extension>

+        <mime-type>application/smil+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>smv</extension>

+        <mime-type>video/x-smv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>smzip</extension>

+        <mime-type>application/vnd.stepmania.package</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>snd</extension>

+        <mime-type>audio/basic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>snf</extension>

+        <mime-type>application/x-font-snf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>so</extension>

+        <mime-type>application/octet-stream</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>spc</extension>

+        <mime-type>application/x-pkcs7-certificates</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>spf</extension>

+        <mime-type>application/vnd.yamaha.smaf-phrase</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>spl</extension>

+        <mime-type>application/x-futuresplash</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>spot</extension>

+        <mime-type>text/vnd.in3d.spot</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>spp</extension>

+        <mime-type>application/scvp-vp-response</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>spq</extension>

+        <mime-type>application/scvp-vp-request</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>spx</extension>

+        <mime-type>audio/ogg</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sql</extension>

+        <mime-type>application/x-sql</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>src</extension>

+        <mime-type>application/x-wais-source</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>srt</extension>

+        <mime-type>application/x-subrip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sru</extension>

+        <mime-type>application/sru+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>srx</extension>

+        <mime-type>application/sparql-results+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ssdl</extension>

+        <mime-type>application/ssdl+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sse</extension>

+        <mime-type>application/vnd.kodak-descriptor</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ssf</extension>

+        <mime-type>application/vnd.epson.ssf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ssml</extension>

+        <mime-type>application/ssml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>st</extension>

+        <mime-type>application/vnd.sailingtracker.track</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>stc</extension>

+        <mime-type>application/vnd.sun.xml.calc.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>std</extension>

+        <mime-type>application/vnd.sun.xml.draw.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>stf</extension>

+        <mime-type>application/vnd.wt.stf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sti</extension>

+        <mime-type>application/vnd.sun.xml.impress.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>stk</extension>

+        <mime-type>application/hyperstudio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>stl</extension>

+        <mime-type>application/vnd.ms-pki.stl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>str</extension>

+        <mime-type>application/vnd.pg.format</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>stw</extension>

+        <mime-type>application/vnd.sun.xml.writer.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sub</extension>

+        <mime-type>text/vnd.dvb.subtitle</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sus</extension>

+        <mime-type>application/vnd.sus-calendar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>susp</extension>

+        <mime-type>application/vnd.sus-calendar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sv4cpio</extension>

+        <mime-type>application/x-sv4cpio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sv4crc</extension>

+        <mime-type>application/x-sv4crc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>svc</extension>

+        <mime-type>application/vnd.dvb.service</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>svd</extension>

+        <mime-type>application/vnd.svd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>svg</extension>

+        <mime-type>image/svg+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>svgz</extension>

+        <mime-type>image/svg+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>swa</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>swf</extension>

+        <mime-type>application/x-shockwave-flash</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>swi</extension>

+        <mime-type>application/vnd.aristanetworks.swi</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sxc</extension>

+        <mime-type>application/vnd.sun.xml.calc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sxd</extension>

+        <mime-type>application/vnd.sun.xml.draw</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sxg</extension>

+        <mime-type>application/vnd.sun.xml.writer.global</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sxi</extension>

+        <mime-type>application/vnd.sun.xml.impress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sxm</extension>

+        <mime-type>application/vnd.sun.xml.math</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>sxw</extension>

+        <mime-type>application/vnd.sun.xml.writer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>t</extension>

+        <mime-type>text/troff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>t3</extension>

+        <mime-type>application/x-t3vm-image</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>taglet</extension>

+        <mime-type>application/vnd.mynfc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tao</extension>

+        <mime-type>application/vnd.tao.intent-module-archive</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tar</extension>

+        <mime-type>application/x-tar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tcap</extension>

+        <mime-type>application/vnd.3gpp2.tcap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tcl</extension>

+        <mime-type>application/x-tcl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>teacher</extension>

+        <mime-type>application/vnd.smart.teacher</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tei</extension>

+        <mime-type>application/tei+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>teicorpus</extension>

+        <mime-type>application/tei+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tex</extension>

+        <mime-type>application/x-tex</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>texi</extension>

+        <mime-type>application/x-texinfo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>texinfo</extension>

+        <mime-type>application/x-texinfo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>text</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tfi</extension>

+        <mime-type>application/thraud+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tfm</extension>

+        <mime-type>application/x-tex-tfm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tga</extension>

+        <mime-type>image/x-tga</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>thmx</extension>

+        <mime-type>application/vnd.ms-officetheme</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tif</extension>

+        <mime-type>image/tiff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tiff</extension>

+        <mime-type>image/tiff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tmo</extension>

+        <mime-type>application/vnd.tmobile-livetv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>torrent</extension>

+        <mime-type>application/x-bittorrent</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tpl</extension>

+        <mime-type>application/vnd.groove-tool-template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tpt</extension>

+        <mime-type>application/vnd.trid.tpt</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tr</extension>

+        <mime-type>text/troff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tra</extension>

+        <mime-type>application/vnd.trueapp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>trm</extension>

+        <mime-type>application/x-msterminal</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tsd</extension>

+        <mime-type>application/timestamped-data</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>tsv</extension>

+        <mime-type>text/tab-separated-values</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ttc</extension>

+        <mime-type>application/x-font-ttf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ttf</extension>

+        <mime-type>application/x-font-ttf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ttl</extension>

+        <mime-type>text/turtle</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>twd</extension>

+        <mime-type>application/vnd.simtech-mindmapper</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>twds</extension>

+        <mime-type>application/vnd.simtech-mindmapper</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>txd</extension>

+        <mime-type>application/vnd.genomatix.tuxedo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>txf</extension>

+        <mime-type>application/vnd.mobius.txf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>txt</extension>

+        <mime-type>text/plain</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>u32</extension>

+        <mime-type>application/x-authorware-bin</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>udeb</extension>

+        <mime-type>application/x-debian-package</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ufd</extension>

+        <mime-type>application/vnd.ufdl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ufdl</extension>

+        <mime-type>application/vnd.ufdl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ulw</extension>

+        <mime-type>audio/basic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ulx</extension>

+        <mime-type>application/x-glulx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>umj</extension>

+        <mime-type>application/vnd.umajin</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>unityweb</extension>

+        <mime-type>application/vnd.unity</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uoml</extension>

+        <mime-type>application/vnd.uoml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uri</extension>

+        <mime-type>text/uri-list</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uris</extension>

+        <mime-type>text/uri-list</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>urls</extension>

+        <mime-type>text/uri-list</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>ustar</extension>

+        <mime-type>application/x-ustar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>utz</extension>

+        <mime-type>application/vnd.uiq.theme</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uu</extension>

+        <mime-type>text/x-uuencode</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uva</extension>

+        <mime-type>audio/vnd.dece.audio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvd</extension>

+        <mime-type>application/vnd.dece.data</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvf</extension>

+        <mime-type>application/vnd.dece.data</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvg</extension>

+        <mime-type>image/vnd.dece.graphic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvh</extension>

+        <mime-type>video/vnd.dece.hd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvi</extension>

+        <mime-type>image/vnd.dece.graphic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvm</extension>

+        <mime-type>video/vnd.dece.mobile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvp</extension>

+        <mime-type>video/vnd.dece.pd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvs</extension>

+        <mime-type>video/vnd.dece.sd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvt</extension>

+        <mime-type>application/vnd.dece.ttml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvu</extension>

+        <mime-type>video/vnd.uvvu.mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvv</extension>

+        <mime-type>video/vnd.dece.video</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvva</extension>

+        <mime-type>audio/vnd.dece.audio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvd</extension>

+        <mime-type>application/vnd.dece.data</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvf</extension>

+        <mime-type>application/vnd.dece.data</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvg</extension>

+        <mime-type>image/vnd.dece.graphic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvh</extension>

+        <mime-type>video/vnd.dece.hd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvi</extension>

+        <mime-type>image/vnd.dece.graphic</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvm</extension>

+        <mime-type>video/vnd.dece.mobile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvp</extension>

+        <mime-type>video/vnd.dece.pd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvs</extension>

+        <mime-type>video/vnd.dece.sd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvt</extension>

+        <mime-type>application/vnd.dece.ttml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvu</extension>

+        <mime-type>video/vnd.uvvu.mp4</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvv</extension>

+        <mime-type>video/vnd.dece.video</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvx</extension>

+        <mime-type>application/vnd.dece.unspecified</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvvz</extension>

+        <mime-type>application/vnd.dece.zip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvx</extension>

+        <mime-type>application/vnd.dece.unspecified</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>uvz</extension>

+        <mime-type>application/vnd.dece.zip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vcard</extension>

+        <mime-type>text/vcard</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vcd</extension>

+        <mime-type>application/x-cdlink</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vcf</extension>

+        <mime-type>text/x-vcard</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vcg</extension>

+        <mime-type>application/vnd.groove-vcard</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vcs</extension>

+        <mime-type>text/x-vcalendar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vcx</extension>

+        <mime-type>application/vnd.vcx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vis</extension>

+        <mime-type>application/vnd.visionary</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>viv</extension>

+        <mime-type>video/vnd.vivo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vob</extension>

+        <mime-type>video/x-ms-vob</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vor</extension>

+        <mime-type>application/vnd.stardivision.writer</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vox</extension>

+        <mime-type>application/x-authorware-bin</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vrml</extension>

+        <mime-type>model/vrml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vsd</extension>

+        <mime-type>application/vnd.visio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vsf</extension>

+        <mime-type>application/vnd.vsf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vss</extension>

+        <mime-type>application/vnd.visio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vst</extension>

+        <mime-type>application/vnd.visio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vsw</extension>

+        <mime-type>application/vnd.visio</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vtu</extension>

+        <mime-type>model/vnd.vtu</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>vxml</extension>

+        <mime-type>application/voicexml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>w3d</extension>

+        <mime-type>application/x-director</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wad</extension>

+        <mime-type>application/x-doom</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wav</extension>

+        <mime-type>audio/x-wav</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wax</extension>

+        <mime-type>audio/x-ms-wax</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- Wireless Bitmap -->

+        <extension>wbmp</extension>

+        <mime-type>image/vnd.wap.wbmp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wbs</extension>

+        <mime-type>application/vnd.criticaltools.wbs+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wbxml</extension>

+        <mime-type>application/vnd.wap.wbxml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wcm</extension>

+        <mime-type>application/vnd.ms-works</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wdb</extension>

+        <mime-type>application/vnd.ms-works</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wdp</extension>

+        <mime-type>image/vnd.ms-photo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>weba</extension>

+        <mime-type>audio/webm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>webm</extension>

+        <mime-type>video/webm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>webp</extension>

+        <mime-type>image/webp</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wg</extension>

+        <mime-type>application/vnd.pmi.widget</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wgt</extension>

+        <mime-type>application/widget</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wks</extension>

+        <mime-type>application/vnd.ms-works</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wm</extension>

+        <mime-type>video/x-ms-wm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wma</extension>

+        <mime-type>audio/x-ms-wma</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wmd</extension>

+        <mime-type>application/x-ms-wmd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wmf</extension>

+        <mime-type>application/x-msmetafile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- WML Source -->

+        <extension>wml</extension>

+        <mime-type>text/vnd.wap.wml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- Compiled WML -->

+        <extension>wmlc</extension>

+        <mime-type>application/vnd.wap.wmlc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- WML Script Source -->

+        <extension>wmls</extension>

+        <mime-type>text/vnd.wap.wmlscript</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <!-- Compiled WML Script -->

+        <extension>wmlsc</extension>

+        <mime-type>application/vnd.wap.wmlscriptc</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wmv</extension>

+        <mime-type>video/x-ms-wmv</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wmx</extension>

+        <mime-type>video/x-ms-wmx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wmz</extension>

+        <mime-type>application/x-msmetafile</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>woff</extension>

+        <mime-type>application/x-font-woff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wpd</extension>

+        <mime-type>application/vnd.wordperfect</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wpl</extension>

+        <mime-type>application/vnd.ms-wpl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wps</extension>

+        <mime-type>application/vnd.ms-works</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wqd</extension>

+        <mime-type>application/vnd.wqd</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wri</extension>

+        <mime-type>application/x-mswrite</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wrl</extension>

+        <mime-type>model/vrml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wsdl</extension>

+        <mime-type>application/wsdl+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wspolicy</extension>

+        <mime-type>application/wspolicy+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wtb</extension>

+        <mime-type>application/vnd.webturbo</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>wvx</extension>

+        <mime-type>video/x-ms-wvx</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>x32</extension>

+        <mime-type>application/x-authorware-bin</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>x3d</extension>

+        <mime-type>model/x3d+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>x3db</extension>

+        <mime-type>model/x3d+binary</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>x3dbz</extension>

+        <mime-type>model/x3d+binary</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>x3dv</extension>

+        <mime-type>model/x3d+vrml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>x3dvz</extension>

+        <mime-type>model/x3d+vrml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>x3dz</extension>

+        <mime-type>model/x3d+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xaml</extension>

+        <mime-type>application/xaml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xap</extension>

+        <mime-type>application/x-silverlight-app</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xar</extension>

+        <mime-type>application/vnd.xara</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xbap</extension>

+        <mime-type>application/x-ms-xbap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xbd</extension>

+        <mime-type>application/vnd.fujixerox.docuworks.binder</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xbm</extension>

+        <mime-type>image/x-xbitmap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xdf</extension>

+        <mime-type>application/xcap-diff+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xdm</extension>

+        <mime-type>application/vnd.syncml.dm+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xdp</extension>

+        <mime-type>application/vnd.adobe.xdp+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xdssc</extension>

+        <mime-type>application/dssc+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xdw</extension>

+        <mime-type>application/vnd.fujixerox.docuworks</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xenc</extension>

+        <mime-type>application/xenc+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xer</extension>

+        <mime-type>application/patch-ops-error+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xfdf</extension>

+        <mime-type>application/vnd.adobe.xfdf</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xfdl</extension>

+        <mime-type>application/vnd.xfdl</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xht</extension>

+        <mime-type>application/xhtml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xhtml</extension>

+        <mime-type>application/xhtml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xhvml</extension>

+        <mime-type>application/xv+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xif</extension>

+        <mime-type>image/vnd.xiff</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xla</extension>

+        <mime-type>application/vnd.ms-excel</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlam</extension>

+        <mime-type>application/vnd.ms-excel.addin.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlc</extension>

+        <mime-type>application/vnd.ms-excel</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlf</extension>

+        <mime-type>application/x-xliff+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlm</extension>

+        <mime-type>application/vnd.ms-excel</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xls</extension>

+        <mime-type>application/vnd.ms-excel</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlsb</extension>

+        <mime-type>application/vnd.ms-excel.sheet.binary.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlsm</extension>

+        <mime-type>application/vnd.ms-excel.sheet.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlsx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlt</extension>

+        <mime-type>application/vnd.ms-excel</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xltm</extension>

+        <mime-type>application/vnd.ms-excel.template.macroenabled.12</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xltx</extension>

+        <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.template</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xlw</extension>

+        <mime-type>application/vnd.ms-excel</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xm</extension>

+        <mime-type>audio/xm</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xml</extension>

+        <mime-type>application/xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xo</extension>

+        <mime-type>application/vnd.olpc-sugar</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xop</extension>

+        <mime-type>application/xop+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xpi</extension>

+        <mime-type>application/x-xpinstall</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xpl</extension>

+        <mime-type>application/xproc+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xpm</extension>

+        <mime-type>image/x-xpixmap</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xpr</extension>

+        <mime-type>application/vnd.is-xpr</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xps</extension>

+        <mime-type>application/vnd.ms-xpsdocument</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xpw</extension>

+        <mime-type>application/vnd.intercon.formnet</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xpx</extension>

+        <mime-type>application/vnd.intercon.formnet</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xsl</extension>

+        <mime-type>application/xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xslt</extension>

+        <mime-type>application/xslt+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xsm</extension>

+        <mime-type>application/vnd.syncml+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xspf</extension>

+        <mime-type>application/xspf+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xul</extension>

+        <mime-type>application/vnd.mozilla.xul+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xvm</extension>

+        <mime-type>application/xv+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xvml</extension>

+        <mime-type>application/xv+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xwd</extension>

+        <mime-type>image/x-xwindowdump</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xyz</extension>

+        <mime-type>chemical/x-xyz</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>xz</extension>

+        <mime-type>application/x-xz</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>yang</extension>

+        <mime-type>application/yang</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>yin</extension>

+        <mime-type>application/yin+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z</extension>

+        <mime-type>application/x-compress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>Z</extension>

+        <mime-type>application/x-compress</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z1</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z2</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z3</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z4</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z5</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z6</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z7</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>z8</extension>

+        <mime-type>application/x-zmachine</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>zaz</extension>

+        <mime-type>application/vnd.zzazz.deck+xml</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>zip</extension>

+        <mime-type>application/zip</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>zir</extension>

+        <mime-type>application/vnd.zul</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>zirz</extension>

+        <mime-type>application/vnd.zul</mime-type>

+    </mime-mapping>

+    <mime-mapping>

+        <extension>zmm</extension>

+        <mime-type>application/vnd.handheld-entertainment+xml</mime-type>

+    </mime-mapping>

+

+  <!-- ==================== Default Welcome File List ===================== -->

+  <!-- When a request URI refers to a directory, the default servlet looks  -->

+  <!-- for a "welcome file" within that directory and, if present, to the   -->

+  <!-- corresponding resource URI for display.                              -->

+  <!-- If no welcome files are present, the default servlet either serves a -->

+  <!-- directory listing (see default servlet configuration on how to       -->

+  <!-- customize) or returns a 404 status, depending on the value of the    -->

+  <!-- listings setting.                                                    -->

+  <!--                                                                      -->

+  <!-- If you define welcome files in your own application's web.xml        -->

+  <!-- deployment descriptor, that list *replaces* the list configured      -->

+  <!-- here, so be sure to include any of the default values that you wish  -->

+  <!-- to use within your application.                                       -->

+

+    <welcome-file-list>

+        <welcome-file>index.html</welcome-file>

+        <welcome-file>index.htm</welcome-file>

+        <welcome-file>index.jsp</welcome-file>

+    </welcome-file-list>

+

+</web-app>

diff --git a/lib/annotations-api.jar b/lib/annotations-api.jar
new file mode 100644
index 0000000..8c8a097
--- /dev/null
+++ b/lib/annotations-api.jar
Binary files differ
diff --git a/lib/catalina-ant.jar b/lib/catalina-ant.jar
new file mode 100644
index 0000000..66268a4
--- /dev/null
+++ b/lib/catalina-ant.jar
Binary files differ
diff --git a/lib/catalina-ha.jar b/lib/catalina-ha.jar
new file mode 100644
index 0000000..b0c5afc
--- /dev/null
+++ b/lib/catalina-ha.jar
Binary files differ
diff --git a/lib/catalina-tribes.jar b/lib/catalina-tribes.jar
new file mode 100644
index 0000000..ed1862f
--- /dev/null
+++ b/lib/catalina-tribes.jar
Binary files differ
diff --git a/lib/catalina.jar b/lib/catalina.jar
new file mode 100644
index 0000000..2d39bbd
--- /dev/null
+++ b/lib/catalina.jar
Binary files differ
diff --git a/lib/ecj-4.2.2.jar b/lib/ecj-4.2.2.jar
new file mode 100644
index 0000000..0f9a1da
--- /dev/null
+++ b/lib/ecj-4.2.2.jar
Binary files differ
diff --git a/lib/el-api.jar b/lib/el-api.jar
new file mode 100644
index 0000000..8696056
--- /dev/null
+++ b/lib/el-api.jar
Binary files differ
diff --git a/lib/jasper-el.jar b/lib/jasper-el.jar
new file mode 100644
index 0000000..8823666
--- /dev/null
+++ b/lib/jasper-el.jar
Binary files differ
diff --git a/lib/jasper.jar b/lib/jasper.jar
new file mode 100644
index 0000000..971c057
--- /dev/null
+++ b/lib/jasper.jar
Binary files differ
diff --git a/lib/jsp-api.jar b/lib/jsp-api.jar
new file mode 100644
index 0000000..8642a47
--- /dev/null
+++ b/lib/jsp-api.jar
Binary files differ
diff --git a/lib/servlet-api.jar b/lib/servlet-api.jar
new file mode 100644
index 0000000..5048dbb
--- /dev/null
+++ b/lib/servlet-api.jar
Binary files differ
diff --git a/lib/tomcat-api.jar b/lib/tomcat-api.jar
new file mode 100644
index 0000000..da0f0bb
--- /dev/null
+++ b/lib/tomcat-api.jar
Binary files differ
diff --git a/lib/tomcat-coyote.jar b/lib/tomcat-coyote.jar
new file mode 100644
index 0000000..9820054
--- /dev/null
+++ b/lib/tomcat-coyote.jar
Binary files differ
diff --git a/lib/tomcat-dbcp.jar b/lib/tomcat-dbcp.jar
new file mode 100644
index 0000000..f4e52c6
--- /dev/null
+++ b/lib/tomcat-dbcp.jar
Binary files differ
diff --git a/lib/tomcat-i18n-es.jar b/lib/tomcat-i18n-es.jar
new file mode 100644
index 0000000..b4b64dd
--- /dev/null
+++ b/lib/tomcat-i18n-es.jar
Binary files differ
diff --git a/lib/tomcat-i18n-fr.jar b/lib/tomcat-i18n-fr.jar
new file mode 100644
index 0000000..d6bed03
--- /dev/null
+++ b/lib/tomcat-i18n-fr.jar
Binary files differ
diff --git a/lib/tomcat-i18n-ja.jar b/lib/tomcat-i18n-ja.jar
new file mode 100644
index 0000000..6ee0770
--- /dev/null
+++ b/lib/tomcat-i18n-ja.jar
Binary files differ
diff --git a/lib/tomcat-jdbc.jar b/lib/tomcat-jdbc.jar
new file mode 100644
index 0000000..b7362b9
--- /dev/null
+++ b/lib/tomcat-jdbc.jar
Binary files differ
diff --git a/lib/tomcat-util.jar b/lib/tomcat-util.jar
new file mode 100644
index 0000000..7dfb6c9
--- /dev/null
+++ b/lib/tomcat-util.jar
Binary files differ
diff --git a/logs/safeRemoveMe b/logs/safeRemoveMe
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/logs/safeRemoveMe
diff --git a/webapps/ROOT/RELEASE-NOTES.txt b/webapps/ROOT/RELEASE-NOTES.txt
new file mode 100644
index 0000000..6681668
--- /dev/null
+++ b/webapps/ROOT/RELEASE-NOTES.txt
@@ -0,0 +1,228 @@
+================================================================================

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+================================================================================

+

+$Id: RELEASE-NOTES 1189163 2011-10-26 12:19:26Z kkolinko $

+

+

+                     Apache Tomcat Version 7.0.42

+                            Release Notes

+

+

+=========

+CONTENTS:

+=========

+

+* Dependency Changes

+* API Stability

+* JNI Based Applications

+* Bundled APIs

+* Web application reloading and static fields in shared libraries

+* Tomcat on Linux

+* Enabling SSI and CGI Support

+* Security manager URLs

+* Symlinking static resources

+* Viewing the Tomcat Change Log

+* Cryptographic software notice

+* When all else fails

+

+

+===================

+Dependency Changes:

+===================

+Tomcat 7.0 is designed to run on Java SE 6 and later.

+

+In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for

+compiling JSP pages.  This means you no longer need to have the complete

+Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment

+(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the

+binary Tomcat distributions.  Tomcat can also be configured to use the

+compiler from the JDK to compile JSPs, or any other Java compiler supported

+by Apache Ant.

+

+

+==============

+API Stability:

+==============

+The public interfaces for the following classes are fixed and will not be

+changed at all during the remaining lifetime of the 7.x series:

+- javax/**/*

+

+The public interfaces for the following classes may be added to in order to

+resolve bugs and/or add new features. No existing interface will be removed or

+changed although it may be deprecated.

+- org/apache/catalina/*

+- org/apache/catalina/comet/*

+

+Note: As Tomcat 7 matures, the above list will be added to. The list is not

+      considered complete at this time.

+

+The remaining classes are considered part of the Tomcat internals and may change

+without notice between point releases.

+

+

+=======================

+JNI Based Applications:

+=======================

+Applications that require native libraries must ensure that the libraries have

+been loaded prior to use.  Typically, this is done with a call like:

+

+  static {

+    System.loadLibrary("path-to-library-file");

+  }

+

+in some class.  However, the application must also ensure that the library is

+not loaded more than once.  If the above code were placed in a class inside

+the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the

+application were reloaded, the loadLibrary() call would be attempted a second

+time.

+

+To avoid this problem, place classes that load native libraries outside of the

+web application, and ensure that the loadLibrary() call is executed only once

+during the lifetime of a particular JVM.

+

+

+=============

+Bundled APIs:

+=============

+A standard installation of Tomcat 7.0 makes all of the following APIs available

+for use by web applications (by placing them in "lib"):

+* annotations-api.jar (Annotations package)

+* catalina.jar (Tomcat Catalina implementation)

+* catalina-ant.jar (Tomcat Catalina Ant tasks)

+* catalina-ha.jar (High availability package)

+* catalina-tribes.jar (Group communication)

+* ecj-4.2.2.jar (Eclipse JDT Java compiler)

+* el-api.jar (EL 2.2 API)

+* jasper.jar (Jasper 2 Compiler and Runtime)

+* jasper-el.jar (Jasper 2 EL implementation)

+* jsp-api.jar (JSP 2.2 API)

+* servlet-api.jar (Servlet 3.0 API)

+* tomcat-api.jar (Interfaces shared by Catalina and Jasper)

+* tomcat-coyote.jar (Tomcat connectors and utility classes)

+* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP)

+

+You can make additional APIs available to all of your web applications by

+putting unpacked classes into a "classes" directory (not created by default),

+or by placing them in JAR files in the "lib" directory.

+

+To override the XML parser implementation or interfaces, use the endorsed

+mechanism of the JVM. The default configuration defines JARs located in

+"endorsed" as endorsed.

+

+

+================================================================

+Web application reloading and static fields in shared libraries:

+================================================================

+Some shared libraries (many are part of the JDK) keep references to objects

+instantiated by the web application. To avoid class loading related problems

+(ClassCastExceptions, messages indicating that the classloader

+is stopped, etc.), the shared libraries state should be reinitialized.

+

+Something which might help is to avoid putting classes which would be

+referenced by a shared static field in the web application classloader,

+and putting them in the shared classloader instead (JARs should be put in the

+"lib" folder, and classes should be put in the "classes" folder).

+

+

+================

+Tomcat on Linux:

+================

+GLIBC 2.2 / Linux 2.4 users should define an environment variable:

+export LD_ASSUME_KERNEL=2.2.5

+

+Redhat Linux 9.0 users should use the following setting to avoid

+stability problems:

+export LD_ASSUME_KERNEL=2.4.1

+

+There are some Linux bugs reported against the NIO sendfile behavior, make sure you

+have a JDK that is up to date, or disable sendfile behavior in the Connector.<br/>

+6427312: (fc) FileChannel.transferTo() throws IOException "system call interrupted"<br/>

+5103988: (fc) FileChannel.transferTo should return -1 for EAGAIN instead throws IOException<br/>

+6253145: (fc) FileChannel.transferTo on Linux fails when going beyond 2GB boundary<br/>

+6470086: (fc) FileChannel.transferTo(2147483647, 1, channel) cause "Value too large" exception<br/>

+

+

+=============================

+Enabling SSI and CGI Support:

+=============================

+Because of the security risks associated with CGI and SSI available

+to web applications, these features are disabled by default.  

+

+To enable and configure CGI support, please see the cgi-howto.html page.

+

+To enable and configue SSI support, please see the ssi-howto.html page.

+

+

+======================

+Security manager URLs:

+======================

+In order to grant security permissions to JARs located inside the

+web application repository, use URLs of of the following format

+in your policy file:

+

+file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar

+

+

+============================

+Symlinking static resources:

+============================

+By default, Unix symlinks will not work when used in a web application to link

+resources located outside the web application root directory.

+

+This behavior is optional, and the "allowLinking" flag may be used to disable

+the check.

+

+

+==============================

+Viewing the Tomcat Change Log:

+==============================

+See changelog.html in this directory.

+

+

+=============================

+Cryptographic software notice

+=============================

+This distribution includes cryptographic software.  The country in

+which you currently reside may have restrictions on the import,

+possession, use, and/or re-export to another country, of

+encryption software.  BEFORE using any encryption software, please

+check your country's laws, regulations and policies concerning the

+import, possession, or use, and re-export of encryption software, to

+see if this is permitted.  See <http://www.wassenaar.org/> for more

+information.

+

+The U.S. Government Department of Commerce, Bureau of Industry and

+Security (BIS), has classified this software as Export Commodity

+Control Number (ECCN) 5D002.C.1, which includes information security

+software using or performing cryptographic functions with asymmetric

+algorithms.  The form and manner of this Apache Software Foundation

+distribution makes it eligible for export under the License Exception

+ENC Technology Software Unrestricted (TSU) exception (see the BIS

+Export Administration Regulations, Section 740.13) for both object

+code and source code.

+

+The following provides more details on the included cryptographic

+software:

+  - Tomcat includes code designed to work with JSSE

+  - Tomcat includes code designed to work with OpenSSL

+

+

+====================

+When all else fails:

+====================

+See the FAQ

+http://tomcat.apache.org/faq/

diff --git a/webapps/ROOT/WEB-INF/web.xml b/webapps/ROOT/WEB-INF/web.xml
new file mode 100644
index 0000000..fae48dd
--- /dev/null
+++ b/webapps/ROOT/WEB-INF/web.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<web-app xmlns="http://java.sun.com/xml/ns/javaee"

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

+

+  <display-name>Welcome to Tomcat</display-name>

+  <description>

+     Welcome to Tomcat

+  </description>

+

+</web-app>

diff --git a/webapps/ROOT/asf-logo-wide.gif b/webapps/ROOT/asf-logo-wide.gif
new file mode 100644
index 0000000..b240328
--- /dev/null
+++ b/webapps/ROOT/asf-logo-wide.gif
Binary files differ
diff --git a/webapps/ROOT/asf-logo.png b/webapps/ROOT/asf-logo.png
new file mode 100644
index 0000000..d8e908c
--- /dev/null
+++ b/webapps/ROOT/asf-logo.png
Binary files differ
diff --git a/webapps/ROOT/bg-button.png b/webapps/ROOT/bg-button.png
new file mode 100644
index 0000000..b544bbf
--- /dev/null
+++ b/webapps/ROOT/bg-button.png
Binary files differ
diff --git a/webapps/ROOT/bg-middle.png b/webapps/ROOT/bg-middle.png
new file mode 100644
index 0000000..0c95a82
--- /dev/null
+++ b/webapps/ROOT/bg-middle.png
Binary files differ
diff --git a/webapps/ROOT/bg-nav-item.png b/webapps/ROOT/bg-nav-item.png
new file mode 100644
index 0000000..ece86a1
--- /dev/null
+++ b/webapps/ROOT/bg-nav-item.png
Binary files differ
diff --git a/webapps/ROOT/bg-nav.png b/webapps/ROOT/bg-nav.png
new file mode 100644
index 0000000..d44b094
--- /dev/null
+++ b/webapps/ROOT/bg-nav.png
Binary files differ
diff --git a/webapps/ROOT/bg-upper.png b/webapps/ROOT/bg-upper.png
new file mode 100644
index 0000000..7d9ae7b
--- /dev/null
+++ b/webapps/ROOT/bg-upper.png
Binary files differ
diff --git a/webapps/ROOT/build.xml b/webapps/ROOT/build.xml
new file mode 100644
index 0000000..871daa7
--- /dev/null
+++ b/webapps/ROOT/build.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<project name="ROOT" default="build-main" basedir=".">

+

+

+  <!-- ===================== Initialize Property Values =================== -->

+

+  <!-- See "build.properties.sample" in the top level directory for all     -->

+  <!-- property values you must customize for successful building!!!        -->

+  <property file="build.properties"/>

+  <property file="../build.properties"/>

+  <property file="../../build.properties"/>

+  <property file="${user.home}/build.properties"/>

+

+  <property name="build.compiler"  value="modern"/>

+  <property name="webapps.build"   value="../build"/>

+  <property name="webapps.dist"    value="../dist"/>

+  <property name="webapp.name"     value="ROOT"/>

+

+

+  <!-- =================== BUILD: Create Directories ====================== -->

+  <target name="build-prepare">

+    <mkdir dir="${webapps.build}"/>

+    <mkdir dir="${webapps.build}/${webapp.name}"/>

+  </target>

+

+

+  <!-- ================ BUILD: Copy Static Files ========================== -->

+  <target name="build-static" depends="build-prepare">

+    <copy todir="${webapps.build}/${webapp.name}">

+      <fileset dir=".">

+        <exclude name="build.*"/>

+      </fileset>

+    </copy>

+  </target>

+

+

+  <!-- ================= BUILD: Compile Server Components ================= -->

+  <target name="build-main" depends="build-static"/>

+

+

+  <!-- ==================== BUILD: Rebuild Everything ===================== -->

+  <target name="all" depends="build-clean,build-main"

+   description="Clean and build ROOT webapp"/>

+

+

+  <!-- ======================= BUILD: Clean Directory ===================== -->

+  <target name="build-clean">

+    <delete dir="${webapps.build}/${webapp.name}"/>

+  </target>

+

+

+  <!-- ======================= DIST: Create Directories =================== -->

+  <target name="dist-prepare">

+    <mkdir dir="${webapps.dist}"/>

+  </target>

+

+

+  <!-- ======================= DIST: Create Distribution Files ============ -->

+  <target name="dist" depends="build-main,dist-prepare"

+   description="Create ROOT webapp binary distribution">

+      <jar   jarfile="${webapps.dist}/${webapp.name}.war"

+             basedir="${webapps.build}/${webapp.name}" includes="**"/>

+  </target>

+

+

+  <!-- ======================= DIST: Clean Directory ====================== -->

+  <target name="dist-clean">

+    <delete dir="${webapps.dist}/${webapp.name}"/>

+  </target>

+

+

+  <!-- ====================== Convenient Synonyms ========================= -->

+  <target name="clean" depends="build-clean,dist-clean"

+   description="Clean build and dist directories"/>

+

+

+</project>

diff --git a/webapps/ROOT/favicon.ico b/webapps/ROOT/favicon.ico
new file mode 100644
index 0000000..6c5bd2c
--- /dev/null
+++ b/webapps/ROOT/favicon.ico
Binary files differ
diff --git a/webapps/ROOT/index.jsp b/webapps/ROOT/index.jsp
new file mode 100644
index 0000000..c24e751
--- /dev/null
+++ b/webapps/ROOT/index.jsp
@@ -0,0 +1,222 @@
+<%--

+Licensed to the Apache Software Foundation (ASF) under one or more

+contributor license agreements.  See the NOTICE file distributed with

+this work for additional information regarding copyright ownership.

+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.

+--%>

+<!DOCTYPE html>

+<%@ page session="false" %>

+<%

+java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy");

+request.setAttribute("year", sdf.format(new java.util.Date()));

+request.setAttribute("tomcat7Url", "http://tomcat.apache.org/");

+request.setAttribute("tomcat7DocUrl", "/docs/");

+request.setAttribute("tomcat7ExamplesUrl", "/examples/");

+%>

+<html lang="en">

+    <head>

+        <title><%=request.getServletContext().getServerInfo() %></title>

+        <link href="favicon.ico" rel="icon" type="image/x-icon" />

+        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />

+        <link href="tomcat.css" rel="stylesheet" type="text/css" />

+    </head>

+

+    <body>

+        <div id="wrapper">

+            <div id="navigation" class="curved container">

+                <span id="nav-home"><a href="${tomcat7Url}">Home</a></span>

+                <span id="nav-hosts"><a href="${tomcat7DocUrl}">Documentation</a></span>

+                <span id="nav-config"><a href="${tomcat7DocUrl}config/">Configuration</a></span>

+                <span id="nav-examples"><a href="${tomcat7ExamplesUrl}">Examples</a></span>

+                <span id="nav-wiki"><a href="http://wiki.apache.org/tomcat/FrontPage">Wiki</a></span>

+                <span id="nav-lists"><a href="${tomcat7Url}lists.html">Mailing Lists</a></span>

+                <span id="nav-help"><a href="${tomcat7Url}findhelp.html">Find Help</a></span>

+                <br class="separator" />

+            </div>

+            <div id="asf-box">

+                <h1>${pageContext.servletContext.serverInfo}</h1>

+            </div>

+            <div id="upper" class="curved container">

+                <div id="congrats" class="curved container">

+                    <h2>If you're seeing this, you've successfully installed Tomcat. Congratulations!</h2>

+                </div>

+                <div id="notice">

+                    <img src="tomcat.png" alt="[tomcat logo]" />

+                    <div id="tasks">

+                        <h3>Recommended Reading:</h3>

+                        <h4><a href="${tomcat7DocUrl}security-howto.html">Security Considerations HOW-TO</a></h4>

+                        <h4><a href="${tomcat7DocUrl}manager-howto.html">Manager Application HOW-TO</a></h4>

+                        <h4><a href="${tomcat7DocUrl}cluster-howto.html">Clustering/Session Replication HOW-TO</a></h4>

+                    </div>

+                </div>

+                <div id="actions">

+                    <div class="button">

+                        <a class="container shadow" href="/manager/status"><span>Server Status</span></a>

+                    </div>

+                    <div class="button">

+                        <a class="container shadow" href="/manager/html"><span>Manager App</span></a>

+                    </div>

+                    <div class="button">

+                        <a class="container shadow" href="/host-manager/html"><span>Host Manager</span></a>

+                    </div>

+                </div>

+                <!--

+                <br class="separator" />

+                -->

+                <br class="separator" />

+            </div>

+            <div id="middle" class="curved container">

+                <h3>Developer Quick Start</h3>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="${tomcat7DocUrl}setup.html">Tomcat Setup</a></p>

+                        <p><a href="${tomcat7DocUrl}appdev/">First Web Application</a></p>

+                    </div>

+                </div>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="${tomcat7DocUrl}realm-howto.html">Realms &amp; AAA</a></p>

+                        <p><a href="${tomcat7DocUrl}jndi-datasource-examples-howto.html">JDBC DataSources</a></p>

+                    </div>

+                </div>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="${tomcat7ExamplesUrl}">Examples</a></p>

+                    </div>

+                </div>

+                <div class="col25">

+                    <div class="container">

+                        <p><a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specifications</a></p>

+                        <p><a href="http://wiki.apache.org/tomcat/TomcatVersions">Tomcat Versions</a></p>

+                    </div>

+                </div>

+                <br class="separator" />

+            </div>

+            <div id="lower">

+                <div id="low-manage" class="">

+                    <div class="curved container">

+                        <h3>Managing Tomcat</h3>

+                        <p>For security, access to the <a href="/manager/html">manager webapp</a> is restricted.

+                        Users are defined in:</p>

+                        <pre>$CATALINA_HOME/conf/tomcat-users.xml</pre>

+                        <p>In Tomcat 7.0 access to the manager application is split between

+                           different users. &nbsp; <a href="${tomcat7DocUrl}manager-howto.html">Read more...</a></p>

+                        <br />

+                        <h4><a href="${tomcat7DocUrl}RELEASE-NOTES.txt">Release Notes</a></h4>

+                        <h4><a href="${tomcat7DocUrl}changelog.html">Changelog</a></h4>

+                        <h4><a href="${tomcat7Url}migration.html">Migration Guide</a></h4>

+                        <h4><a href="${tomcat7Url}security.html">Security Notices</a></h4>

+                    </div>

+                </div>

+                <div id="low-docs" class="">

+                    <div class="curved container">

+                        <h3>Documentation</h3>

+                        <h4><a href="${tomcat7DocUrl}">Tomcat 7.0 Documentation</a></h4>

+                        <h4><a href="${tomcat7DocUrl}config/">Tomcat 7.0 Configuration</a></h4>

+                        <h4><a href="http://wiki.apache.org/tomcat/FrontPage">Tomcat Wiki</a></h4>

+                        <p>Find additional important configuration information in:</p>

+                        <pre>$CATALINA_HOME/RUNNING.txt</pre>

+                        <p>Developers may be interested in:</p>

+                        <ul>

+                            <li><a href="http://tomcat.apache.org/bugreport.html">Tomcat 7.0 Bug Database</a></li>

+                            <li><a href="${tomcat7DocUrl}api/index.html">Tomcat 7.0 JavaDocs</a></li>

+                            <li><a href="http://svn.apache.org/repos/asf/tomcat/tc7.0.x/">Tomcat 7.0 SVN Repository</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div id="low-help" class="">

+                    <div class="curved container">

+                        <h3>Getting Help</h3>

+                        <h4><a href="${tomcat7Url}faq/">FAQ</a> and <a href="${tomcat7Url}lists.html">Mailing Lists</a></h4>

+                        <p>The following mailing lists are available:</p>

+                        <ul>

+                            <li id="list-announce"><strong><a href="mailto:announce-subscribe@tomcat.apache.org">announce@tomcat.apache.org</a><br />

+                                Important announcements, releases, security vulnerability notifications. (Low volume).</strong>

+                            </li>

+                            <li><a href="mailto:users-subscribe@tomcat.apache.org">users@tomcat.apache.org</a><br />

+                                User support and discussion

+                            </li>

+                            <li><a href="mailto:taglibs-user-subscribe@tomcat.apache.org">taglibs-user@tomcat.apache.org</a><br />

+                                User support and discussion for <a href="${tomcat7Url}taglibs/">Apache Taglibs</a>

+                            </li>

+                            <li><a href="mailto:dev-subscribe@tomcat.apache.org">dev@tomcat.apache.org</a><br />

+                                Development mailing list, including commit messages

+                            </li>

+                        </ul>

+                    </div>

+                </div>

+                <br class="separator" />

+            </div>

+            <div id="footer" class="curved container">

+                <div class="col20">

+                    <div class="container">

+                        <h4>Other Downloads</h4>

+                        <ul>

+                            <li><a href="${tomcat7Url}download-connectors.cgi">Tomcat Connectors</a></li>

+                            <li><a href="${tomcat7Url}download-native.cgi">Tomcat Native</a></li>

+                            <li><a href="${tomcat7Url}taglibs/">Taglibs</a></li>

+                            <li><a href="${tomcat7DocUrl}deployer-howto.html">Deployer</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Other Documentation</h4>

+                        <ul>

+                            <li><a href="${tomcat7Url}connectors-doc/">Tomcat Connectors</a></li>

+                            <li><a href="${tomcat7Url}connectors-doc/">mod_jk Documentation</a></li>

+                            <li><a href="${tomcat7Url}native-doc/">Tomcat Native</a></li>

+                            <li><a href="${tomcat7DocUrl}deployer-howto.html">Deployer</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Get Involved</h4>

+                        <ul>

+                            <li><a href="${tomcat7Url}getinvolved.html">Overview</a></li>

+                            <li><a href="${tomcat7Url}svn.html">SVN Repositories</a></li>

+                            <li><a href="${tomcat7Url}lists.html">Mailing Lists</a></li>

+                            <li><a href="http://wiki.apache.org/tomcat/FrontPage">Wiki</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Miscellaneous</h4>

+                        <ul>

+                            <li><a href="${tomcat7Url}contact.html">Contact</a></li>

+                            <li><a href="${tomcat7Url}legal.html">Legal</a></li>

+                            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>

+                            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <div class="col20">

+                    <div class="container">

+                        <h4>Apache Software Foundation</h4>

+                        <ul>

+                            <li><a href="${tomcat7Url}whoweare.html">Who We Are</a></li>

+                            <li><a href="${tomcat7Url}heritage.html">Heritage</a></li>

+                            <li><a href="http://www.apache.org">Apache Home</a></li>

+                            <li><a href="${tomcat7Url}resources.html">Resources</a></li>

+                        </ul>

+                    </div>

+                </div>

+                <br class="separator" />

+            </div>

+            <p class="copyright">Copyright &copy;1999-${year} Apache Software Foundation.  All Rights Reserved</p>

+        </div>

+    </body>

+

+</html>

diff --git a/webapps/ROOT/tomcat-power.gif b/webapps/ROOT/tomcat-power.gif
new file mode 100644
index 0000000..01c400b
--- /dev/null
+++ b/webapps/ROOT/tomcat-power.gif
Binary files differ
diff --git a/webapps/ROOT/tomcat.css b/webapps/ROOT/tomcat.css
new file mode 100644
index 0000000..73d8fba
--- /dev/null
+++ b/webapps/ROOT/tomcat.css
@@ -0,0 +1,351 @@
+/*

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+*/

+body {

+    margin: 10px 20px;

+    text-align: center;

+    font-family: Arial, sans-serif;

+}

+

+h1, h2, h3, h4, h5, h6, p, ul, ol {

+    margin: 0 0 0.5em;

+}

+h1 {

+    font-size: 18pt;

+    margin: 0.5em 0 0;

+}

+h2 {

+    font-size: 16pt;

+}

+h3 {

+    font-size: 13pt;

+}

+h4 {

+    font-size: 12pt;

+}

+h5 {

+    font-size: 11pt;

+}

+p {

+    font-size: 11pt

+}

+

+ul {

+    margin: 0;

+    padding: 0 0 0 0.25em;

+    text-indent: 0;

+    list-style: none;

+}

+li {

+    margin: 0;

+    padding: 0 0 0.25em;

+    text-indent: 0;

+    font-size: 80%;

+}

+

+pre {

+    text-indent: 0.25em;

+    width: 90%;

+    font-size: 90%;

+}

+

+br.separator {

+    margin: 0;

+    padding: 0;

+    clear: both;

+}

+

+a img {

+    border: 0 none;

+}

+

+.container {

+    padding: 10px;

+    margin: 0 0 10px;

+}

+

+.col20 {

+    float: left;

+    width: 20%;

+}

+

+.col25 {

+    float: left;

+    width: 25%;

+}

+

+#wrapper {

+    display: block;

+    margin: 0 auto;

+    text-align: left;

+    min-width: 720px;

+    max-width: 1000px;

+}

+.curved {

+    border-radius: 10px;

+    -moz-border-radius: 10px;

+    -webkit-border-radius: 10px;

+    -khtml-border-radius: 10px;

+}

+

+#navigation {

+    background: #eee url(bg-nav.png) repeat-x top left;

+    margin: 0 0 10px;

+    padding: 0;

+}

+#navigation span {

+    float: left;

+}

+#navigation span a {

+    display: block;

+    padding: 10px;

+    font-weight: bold;

+    text-shadow: 1px 1px 1px #fff;

+}

+#navigation span a:link,

+#navigation span a:visited,

+#navigation span a:hover,

+#navigation span a:active {

+    color: #666;

+    text-decoration: none;

+}

+#navigation span#nav-help {

+    float: right;

+    margin-right: 0;

+}

+

+#asf-box {

+    height: 40px;

+    background: #fff url(asf-logo.png) no-repeat top right;}

+#asf-box h1 {

+    padding: 0;

+    margin: 0;

+}

+

+#upper {

+    background: #fff url(bg-upper.png) repeat-x top left;

+}

+

+#congrats {

+    text-align: center;

+    padding: 10px;

+    margin: 0 40px 20px;

+    background-color: #9c9;

+}

+#congrats h2 {

+    font-size: 14pt;

+    padding: 0;

+    margin: 0;

+    color: #fff;

+}

+

+#notice {

+    float: left;

+    width: 560px;

+    color: #696;

+}

+#notice a:link,

+#notice a:visited,

+#notice a:hover,

+#notice a:active {

+    color: #090;

+    text-decoration: none;

+}

+#notice img,

+#notice #tasks {

+    float: left;

+}

+#tasks a:link,

+#tasks a:visited,

+#tasks a:hover,

+#tasks a:active {

+    text-decoration: underline;

+}

+#notice img {

+    margin-right: 20px;

+}

+

+#actions {

+    float: right;

+    width: 140px;

+}

+

+#actions .button {

+    display: block;

+    padding: 0;

+    height: 36px;

+    background: url(bg-button.png) no-repeat top left;

+}

+

+#actions .button a {

+    display: block;

+    padding: 0;

+}

+

+#actions .button a:link,

+#actions .button a:visited,

+#actions .button a:hover,

+#actions .button a:active {

+    color: #696;

+    text-decoration: none;

+}

+

+#actions .button a span {

+    display: block;

+    padding: 6px 10px;

+    color: #666;

+    text-shadow: 1px 1px 1px #fff;

+    font-size: 10pt;

+    font-weight: bold;

+}

+

+#middle {

+    background: #eef url(bg-middle.png) repeat-x top left;

+    margin: 20px 0;

+    padding: 1px 10px;

+}

+#middle h3 {

+    margin: 0 0 10px;

+    color: #033;

+}

+#middle p {

+    font-size: 10pt;

+}

+#middle a:link,

+#middle a:visited,

+#middle a:hover,

+#middle a:active {

+    color: #366;

+    font-weight: bold;

+}

+#middle .col25 .container {

+    padding: 0 0 1px;

+}

+

+#developers {

+    float: left;

+    width: 40%;

+}

+#security {

+    float: right;

+    width: 50%;

+}

+

+#lower {

+    padding: 0;

+}

+

+#lower a:link,

+#lower a:visited,

+#lower a:hover,

+#lower a:active {

+    color: #600;

+}

+

+#lower strong a:link,

+#lower strong a:visited,

+#lower strong a:hover,

+#lower strong a:active {

+    color: #c00;

+}

+

+#lower h3 {

+    color: #963;

+    font-size: 14pt;

+}

+#lower h4 {

+    font-size: 12pt;

+}

+#lower ul {

+    padding: 0;

+    margin: 0.5em 0;

+}

+#lower p,

+#lower li {

+    font-size: 9pt;

+    color: #753;

+    margin: 0 0 0.1em;

+}

+#lower li {

+    padding: 3px 5px;

+}

+#lower li strong {

+    color: #a53;

+}

+#lower li#list-announce {

+    border: 1px solid #f90;

+    background-color: #ffe8c8;

+}

+#lower p {

+    font-size: 10.5pt;

+}

+

+#low-manage,

+#low-docs,

+#low-help {

+    float: left;

+    width: 32%;

+}

+#low-docs {

+    margin: 0 0 0 2.2%;

+}

+#low-help {

+    float: right;

+}

+

+#low-manage div,

+#low-docs div,

+#low-help div {

+    min-height: 280px;

+    border: 3px solid #ffdc75;

+    background-color: #fff1c8;

+    padding: 10px;

+}

+

+#footer {

+    padding: 0;

+    margin: 20px 0;

+    color: #999;

+    background-color: #eee;

+}

+#footer h4 {

+    margin: 0 0 10px;

+    font-size: 10pt;

+}

+#footer p {

+    margin: 0 0 10px;

+    font-size: 10pt;

+}

+#footer ul {

+    margin: 6px 0 1px;

+    padding: 0;

+}

+#footer li {

+    margin: 0;

+    font-size: 9pt;

+}

+

+#footer a:link,

+#footer a:visited,

+#footer a:hover,

+#footer a:active {

+    color: #666;

+}

+

+.copyright {

+    font-size: 10pt;

+    color: #666;

+}
\ No newline at end of file
diff --git a/webapps/ROOT/tomcat.gif b/webapps/ROOT/tomcat.gif
new file mode 100644
index 0000000..f2aa6f8
--- /dev/null
+++ b/webapps/ROOT/tomcat.gif
Binary files differ
diff --git a/webapps/ROOT/tomcat.png b/webapps/ROOT/tomcat.png
new file mode 100644
index 0000000..209b07f
--- /dev/null
+++ b/webapps/ROOT/tomcat.png
Binary files differ
diff --git a/webapps/ROOT/tomcat.svg b/webapps/ROOT/tomcat.svg
new file mode 100644
index 0000000..706d9f0
--- /dev/null
+++ b/webapps/ROOT/tomcat.svg
@@ -0,0 +1,589 @@
+<?xml version="1.0" encoding="utf-8"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->

+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [

+    <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">

+    <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">

+    <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">

+    <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">

+    <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">

+    <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">

+    <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">

+    <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">

+    <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">

+    <!ENTITY ns_svg "http://www.w3.org/2000/svg">

+    <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">

+]>

+<svg

+     xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="176.7139 486.707" i:rulerOrigin="-156 -296" i:pageBounds="156 496 456 296"

+     xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"

+     width="260.162" height="184.413" viewBox="0 0 260.162 184.413" overflow="visible" enable-background="new 0 0 260.162 184.413"

+     xml:space="preserve">

+    <metadata>

+        <variableSets  xmlns="&ns_vars;">

+            <variableSet  varSetName="binding1" locked="none">

+                <variables></variables>

+                <v:sampleDataSets  xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>

+            </variableSet>

+        </variableSets>

+        <sfw  xmlns="&ns_sfw;">

+            <slices></slices>

+            <sliceSourceBounds  y="302.294" x="176.714" width="260.162" height="184.413" bottomLeftOrigin="true"></sliceSourceBounds>

+        </sfw>

+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>

+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>

+

+ <rdf:Description rdf:about=''

+  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>

+ </rdf:Description>

+

+ <rdf:Description rdf:about=''

+  xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>

+ </rdf:Description>

+

+ <rdf:Description rdf:about=''

+  xmlns:xap='http://ns.adobe.com/xap/1.0/'

+  xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>

+  <xap:CreateDate>2006-05-09T08:17:21Z</xap:CreateDate>

+  <xap:ModifyDate>2006-05-09T08:37:38Z</xap:ModifyDate>

+  <xap:CreatorTool>Illustrator</xap:CreatorTool>

+  <xap:Thumbnails>

+   <rdf:Alt>

+    <rdf:li rdf:parseType='Resource'>

+     <xapGImg:format>JPEG</xapGImg:format>

+     <xapGImg:width>256</xapGImg:width>

+     <xapGImg:height>184</xapGImg:height>

+     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/&#xA;85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS&#xA;iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F&#xA;CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz&#xA;D+T3l+6uHMl1aRPYTsxqSbVzEhJ7kxKhxV6VirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVfHn/ADlxdSa7+bvlvyvGx4RW0EVARtNfXJVqf7BY+uRlKgT3JAt5r/zkD5ZGgfmfqSRR+nZ6&#xA;gsd9agdOMq0f/ksj5h9nZvEwgnmNi2Z4cMiw/wAqebPMHlTXLfW9BvHstQtjVZEPwstQWjkXo6NT&#xA;4lOxzOan3v8Akl+cel/mX5a+tAJa69ZcU1fTlJojGvGWLluYpKbV6GqmtKlV6NirsVdirsVdirsV&#xA;eWfnr+eGl/lroywwBLzzPfox02wJqqL0+sT03EanoOrnYdyFXwh5i8x655j1i41jW7yS+1K6blNc&#xA;SmpPgABQKo6BVFB2xVnf5Q+SjrWh+d9Yli5w6XolylsadbqSNnTj8kiYf7IZg6zUeHKERzlIfL8U&#xA;3YoWCe4Pff8AnCfVTN5D1zTCamz1P11HcLcQIAPlWE5nNL6KxV2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KvjD8wm/Sv/OX8UTGsdrqGnCMNUU+rW0Mp6f5ammY2sNYZ/1T9zZi+oe9m/8A&#xA;zkx+Xc/mPytFrunRepqehc3ljUVeS0cAyAU6mMqHA8OXfNB2PqhCfAeUvv8A2uZqcdix0fIedQ69&#xA;m35OefrryN+YOla2kpjsjKttqqDo9nMwEoI78ftr/lKMVfaeqf8AOSH5KaaSs3meCZx0W1inuanf&#xA;YNDG69vHFWM3v/OYn5QW5YQ/pK8ArQwWqitPD1pIuvviqVT/APObH5cKR6GjaxIP2i8dqhB9qTvi&#xA;qmP+c2fIFd9C1Wnfa2/6q4qmFv8A85n/AJUSvxksdZtx/NJb25H/ACTuHOKp3bf85XfkpPBI7avN&#xA;BIisywS2lwGcqCeIZUdKmm1WGKvijzz5x1bzl5q1HzFqjlrm+lLrHWqxRDaOFP8AJjSij7+uKpNb&#xA;W1xdXMVtbRtNcTuscMKAszu54qqgbkkmgwE1uVfbHkL8uk8o/lTPoMiK+o3drPNqZHRrieIhlr4I&#xA;tEB9q5yWo1fi6gS/hBFfN2UMfDAjqwT/AJwdvyt/5usC20sVlOq77em0yMR2/wB2Cudc619ZYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXxZKTJ/zmFc+oedNTmA5b/ZtG49fCgpmH2h/&#xA;cS9zbh+sPqDrsc4t2r57/Nf/AJxkGo3c+teSTFb3ExMlxo0hEcTMdybd/spU/sN8PgQNs3+i7Xoc&#xA;OX5/rcLLpusWIaF/zif56vFWTVr6y0pG6xgtczL81QLH90mZWTtnFH6bk1x0sjz2Z1pf/OIvlOIL&#xA;+lNbvrthSv1dYrZSe+zC4ND88wp9uTP0xA9+/wCptGkHUsms/wDnGf8AKS3AEunT3dOpmupxXam/&#xA;pNFmPPtjOeRA+H67bBpoPDv+ch/yt03yXrdjeaFbG30HUouCQ8pJBFcQ0DqXkZ2+NSrCrfzeGbns&#xA;vWHNAiX1BxdRi4TtySH8jfJdn5u/MOy07UIfrGl28ct3fw1IDRxrxUEqQaGV0By7X6g4sRkOfRhh&#xA;hxSp9N3X/OO/5P3FSdBETGnxRXN0nT/JEvH8M50dq6gfxfYHOOnh3JDqP/OKn5a3NTazajYt+yIp&#xA;0dfpEsbn/hsvj21lHMRP497A6SPmwzW/+cQr9A76H5himO/CG9haL5AyxGT/AIhmXj7cifqiR7t/&#xA;1NUtIehZh+S3/OP8Xk+5GveYXivNfTkLSKIloLYGqlwzBecjL3p8P45i9odqeIOCH09fNtw6fh3P&#xA;N7DfIz2VwijkzRuFA6klTmpxmpD3uRLk+bf+cJrrj+Yet2tT+90hpeP7J9O5hWp9/wB5tneunfZm&#xA;KuxV2KuxV2KuxV2KuxVZLNFDG0srrHGu7O5CqB7k4qks3nzyNC5jm8xaZHIOqPeW6nf2L4qmFhrW&#xA;j6iK6ff294KVrbypLt1r8BPjirAvzb/Pnyf+WrW9rqKS6hq90vqRaba8eaxVp6krMQEUkEL1JPbq&#xA;cVYFof8Azmp5BupVj1fR9Q0wNsZo/SuY1/1qGN6fJDir2Xyf+Yfkrzjam48taxb6iqgGSKNisyA9&#xA;PUhcLKn+yXFWRYq7FXYq7FXxRrBNj/zl/NVwC+rL8XtcWw+Hf/jJTMXXC8M/6pbMP1h9SZxLtnYq&#xA;7FWG+afzg/LnyvdNZ6vrUSXqGj2sKvcSofB1hV+B/wBamZmHs/NkFxjt8mqWaMeZRPk78zvI/nF5&#xA;ItA1RLm5hHKS1dXhmC1pyEcoRmXputRkdRosuLeQ2TDLGXJCfm/5JXzj5D1HSo05X8a/WtNPcXMI&#xA;JUD/AFxVP9lk+z9R4WUE8jsWOaHFGnl3/OI/lpodN1zzFMlGuJUsLcsKELCPUlpXsWkQfNc2Xbmb&#xA;eMPj+r9LRpI8y+hc0DmuxV2KuxV2Kvl//nClHP5oas4B4Lok6luwLXdqQPpoc9AdK+08VdirsVdi&#xA;rsVdiqXeYPMOi+XtIudY1q7jsdNtF5z3EpooHQAd2ZjsqjcnYYq+VfPf/OV3nXzNqp0D8stPlto5&#xA;mMcF0IfrGoT+8UIDrGD8mbvVcVSqz/5xn/Pjzs66h5t1RbUueX+5W7kurgA/yxx+sq/6pZaeGKsj&#xA;h/5wanMYM3nNUk7qmml1/wCCN0n6sVQt7/zhDr8B56Z5stppEIMZntZLfcb1qkk9KHFXzr5mtdUs&#xA;tfv9O1S5a7vtOuJbKaZndwWt3MZ4mSjcartUDFUsxVFabqeo6XfQ3+m3UtlfW7c4Lq3dopUbxV1I&#xA;IxV9Sfkr/wA5aNcT2+gfmG6K8hWO18wqAi1OwF2q0Vf+Mi0H8w6tir6lVlZQykMrCqsNwQe4xVvF&#xA;XYq+Kfzzro3/ADlLa6oxKJLdaReFiaApGsMLeG1ISMqzw4sco94LKBogvqPOEdw7FXkf55/mBrlj&#xA;Jp3kbykX/wAVeYSFE0Zo8FuzFOSt+wzlW+P9lQx2NDm27N0sZXlyfRFxs+Qj0jmUd5B/IHyP5bsI&#xA;31Oyh1zWnAa6vb1BMnqHciKKSqKAehI5e+Q1XamTIfSeGPlzTj08YjfcsJ/PDy5pXkHX/LH5geW7&#xA;WPTGhvlt9Rt7RBFHKpBk+wgCjnGkiPQbg5m9m5jnhLFM3s1Z4iBEg+hOu4zn3NQOkaLpuj20ltp8&#xA;IghlnnunRe8tzK0sh/4JzQdhtlmXLKZuXdXyYxiByR2VsnYqxjV/zO/L3SJWh1DzDYQzoaPD66PI&#xA;p/ykQsw+kZlY9Dmnyifu+9qOWI6pvoOvaRr+kwato9yt3p1zz9C4UMob03MbbMFOzoR0ynLiljkY&#xA;yFEM4yBFhV1WVYdLvJWJCxwSOxHWioTjhFzA8wsuRfPn/OEVoX83eZLzekOnxQnpSsswb/mVneOn&#xA;fYOKuxV2KuxV2KqF9e2lhZT315KsFpaxtNcTuaKkcYLMzHwAFcVfFHnPzR50/wCchPzJi8veXlaH&#xA;y7aO5sYnqsUUCkK97dU/bYdB2qFXcklV9U/lj+UnlH8u9IWz0a2WS+dQL7VpVBuLhh1q37KV+yg2&#xA;Huakqs1xV2KuxV8v/nf/AM4patrnmG+80eSp4Xn1GR7m/wBIuW9ImdyWd4JSOH7xjUq9KGvxb0Cr&#xA;5/1j8mPzX0iRkvfKepgL9qSC3e5jG9P7yASJ1PjiqRjyb5vMvpDQ9QMtePpi1m5culKca1xVPtG/&#xA;JT82dYdUsvKepUf7MlxA1rGe395cekn44q+zf+cffKv5m+VvJ50bzvPbzRwFf0RFHK01xbxU+KCV&#xA;6cCqmnDizU3FaUAVeo4q7FXx5/zmxpD2vnTy7rcdUN5YPbh12POzmL1qO4FyuKsl/Lz/AJyc8ra2&#xA;sNj5mUaHqZAU3TGtnI3Qnn1ir1o/wj+bOY1XY8474/UO7r+1z8epB2Oz2iKWKaJJYnWSKQBkkQhl&#xA;ZTuCCNiDmnIINFygVGXTNOmvYb6W1hkvbbkLe6eNWljDgq3ByOS1UkGhwjJIDhs0ei0LtE5FLxD/&#xA;AJyycP5F0ezQcp59WjaNdt+NvMp/GQZuuxI/vJH+j+lxNWfSPe9rgiEMEcQNRGoQE9+IpmmlKyS5&#xA;QCpgSsllihieWVxHFGpeR2NFVVFSST0AGEAk0EEvn2fVfOv5269e6foN9Jof5e6fIYbm9QMst2af&#xA;ZIBUtyG4QkKqkFqmgzfiGLRQBkOLKfx+C4ZMspobRZzof/OOv5U6VCiyaUdSnUUa4vZZJGb5opSL&#xA;7kzBydrZ5HY8PuDbHTQDP9G0XStE02HTNJtks9Pt+Xo20Qoi83LtQe7MTmBkyynLikbJboxAFBJv&#xA;zO1Aaf8Al35lu60ZNNuljP8AlvEyJ/wzDL9FDizQH9IfYxymol59/wA4P6S0eg+adXI+G6ura0Vv&#xA;e2jeRgP+kkZ2zqX01irsVdirsVdir50/5zJ/MGbSfK1j5PspOFxrrGa/KmhFpAwon/PWWn0KR3xV&#xA;mf8Azjd+WEPkj8vrae5iA17XES91KQijorrWG333HpI24/mLYq9YxV2KuxV2KuxV2KuxV2KuxV2K&#xA;obUdT03TbR7zUbuGytI/7y4uJFijX5u5VRir5U/5yz/MX8tfNfl7S7DQtZh1LW9NvS5W2V3iFvJG&#xA;yyUnC+kfjVPsscVSv8i/yi/LTzn5Ij1XVLSafU4J5rW9C3EkaFlIdCFQrT926980XaOuy4cnDGqI&#xA;vk5eDDGQsvdvKXkby35StXtdBgmtrZ6Vge6uZ4wf5ljmkkRCe5UCuaPPqp5Tc9/gHLhjEeSN8x3+&#xA;o6foGoX2m2hv9QtoJJbWyFazSKpKxjjv8R22yOCEZTAkaBZTJAsPHv8AlcP53/8Altpv+BuP+ac3&#xA;H8n6X/VPti4vjZP5rzz8wfPP5i+bfNvluw1Dyq1rqWjzG+g0ROZmuRVZDVGHPjxgbcDpXNhpdNiw&#xA;wkYy9Mutj8dWnJOUiAQ9D/5XD+d//ltpv+BuP+ac1/8AJ+l/1T7Yt3jZP5rv+Vw/nf8A+W2m/wCB&#xA;uP8AmnH+T9L/AKp9sV8bJ/NYp+ZX5v8A5qXnli40LVfKbaCutAWkdyxlWRwWXnHGrheRdfhI8DmV&#xA;pNBgE+KMuLh9zXkzTIoirR/kbzf+bvlHy1Y+XtO/LedobYENM6zK0kjtyeRzxoOTH6BtkNTp9Plm&#xA;ZyyfaEwnOIoRej+RPO35o6xr62fmPyf+hdNMTub71C1HWnFaV/azX6rS4IQuE+KXds348kyaIZ7q&#xA;jaqthKdKSCS/pSBbp3jhr4uY1kbbwA38Rmux8PF6r4fJuldbPlv8+YvzstdPS483apafoO7nEEVh&#xA;pcjJbl6NIA0bKkjgenWsnKhpnTdnHTH+7HqHfz+f6nAz8f8AFyfQ3/OLHl06N+TWkyOnCfVpJ9Rm&#xA;Hj6r+nEfphiQ5t3GeuYq7FXYq7FXYq+MfzQhXzz/AM5YWmgz1lsLe7sbB4zvW3gRbi5TvSrNLir7&#xA;OxV2KuxV2KuxV2KuxV2KuxV5j59/5yM/K7yb6kFxqQ1TU0qP0dpvG4cMO0kgIij36hn5e2KvAvMv&#xA;/OWP5p+arl9P8laWukxtXiYIzfXvHpUuy+mg+UdR/NkJ5IwFyIA80xiSaDF/+VT/AJo+b7sah5w1&#xA;h1kavx3sz3k617KgYoo9uYp4ZptR7QYIbRuZ8uXzP7XMx6GcuezJYf8AnH3yrBptwjXFxd6g8LrB&#xA;NIwSNJSpCOEQA7NvRmOak+0eQzGwjCxfU11/FOT/ACfEDnZYH+S+sfmZZeajoHlC8htrq6ZnubC/&#xA;K/VnMAPLkrAtyUdfT+Kg8BnSa7HhMOLINg6/CZA1F9k6KdbOmw/pxbZdTp/pH1IyNAW8U9UK9Pnn&#xA;I5eDi9F8PnzdlG63R2VsmndUUu5CooJZiaAAdSTiBaHhP5N8/On5r+bPzEkBbT7dv0do7EGhWgUM&#xA;tRswgjUsP+LM3vaH7nBDCOZ5/j3/AHOJh9UzJ7vmicx2KvEf+clQLS78i63cEjT9O1cC6O3H4mjl&#xA;FR/qwPm77G3GSPUj9f63E1XQvbQQQCDUHoc0jlN4pSXzN5z8q+V7ZLjX9Tg0+OSvpLK37x+PXhGv&#xA;J3pXfiMuw6bJlNQFsJ5BHmXzJ+dn5haf+Z/mby75e8qtLPbLN6EbyI0YluruRI0oh+KigChIHU50&#xA;/ZmilhieL6i4GoyiZ2fbWh6Ra6Noun6PaClpp1tFaW4/4rgQRr+C5s3HR2KuxV2KuxV2KvjfymCP&#xA;+c0p/rdK/pTU+POlKfUp/S/4144q+yMVdirsVdirsVdirsVeQfmX/wA5Ofl55MaaxtZv0/rcdVNl&#xA;ZMDEj+E1x8SL4ELyYdxir5W/Mf8A5yD/ADJ88GSC6vjpmjyVC6VYFoYmQ1FJXr6kte/I8fADFXme&#xA;Kvpj8jdTtb3yJBFFGkdxYyyW9zwVU5MDzRzTqSjipPU1zhvaDHKOosk8Mht5d/6/i7rQSBh5h6Fm&#xA;ic12Kvnvz6l35B/Nqz8z2CEQyzLqMSqeIY143UVf8upr7Pnedl5RqdLwS5gcJ/R9n2uj1MPDyWPe&#xA;+wdL1Ky1TTbXUrGQTWd5Ek9vKOjJIoZT9xznMkDCRieYc2JsWisgyYZ+b1p5vvfIGqWPlSFZ9Tu0&#xA;9F1LiN/q77TelXYuV+EAkddt6A5vZ8sccoMzsPv6NOYSMdnzl+Wn5m/mVoKR+RtEtNLsrmGWSsOp&#xA;q1vM87t8Su8ssS+p0UKaGgAGdDqtHhyfvJ2fd3fBwseWUfSHq36V/wCcqf8AqzaN/wAGn/ZRms4N&#xA;B/OP2/qci83c79K/85U/9WbRv+DT/sox4NB/OP2/qW83c8o/Mj8z/wAy/MAm8i6zaaZfXU0sY9HT&#xA;Ea4lSdGqqxvFLKvqbFSBXqQc2el0eHH+8jY2693xcfJllL0l9KflXb+bbXyJpVp5riWLV7aIQsqu&#xA;JGMSbRGUio9ThQNQnx70znNccZyk4+R+9zsIkIi2W5iNqB1xdH/RF2+sxQy6XFE8t4tyiyRelGpZ&#xA;i6uCpAAyzFxcQ4D6ixlVb8nzj/zjB5UtfNn5xal5tisltNE0Rpbu1tEUCOOa6ZktYgBt+7j5tt3U&#xA;Z3UIkRAJt1BO77PySHYq7FXYq7FXYq+M/wAyX/wb/wA5b2WsP+7s7q90+7Zz8NILlEt7htqV3EmK&#xA;vszFXYq7FXYq7FWGfmR+bnkn8vrD6xr16PrkilrXS4KPdTdacY6jitRTmxC++Kvjz80/+clPPvnk&#xA;TWVq50Py45KfULRj6kqntcTjiz1H7K8V8QeuKsQ/KyLyvP5wtbTzFbC4trn91bc2IjW4JBj9QAjk&#xA;G+zQ7VIrmB2mcowE4jUh93Vv0wiZgS5Po7zD5J8ta/pa6bf2UfoQrxtWiAjeDbb0io+Hp06eIzht&#xA;N2jmwz4oyu+d7373dZNPCYoh8/effyj17yuZLu3B1DRgSRdRr8cS9f3yD7P+sPh+XTOz7P7Wxajb&#xA;6Z936u90+fSyx78wnP8Azj5r4s/M11o8jUi1OHlED/v63qwA+cbP92YvtDp+PCJjnA/Ydv1NugyV&#xA;Ou99C5xDuWDeefKvnzV9WiufL+v/AKKskt1jkt+Ui8pQ7sX+AEbqyj6M3XZ2t02LGRlhxyvnQO23&#xA;e4eow5JSuJoe8sD81/lL+ZF9pj3Go65Hq7WKPLBbMZGc7VZY+S9WC9O+bnSdsaQTEYQ4OLyAHxou&#xA;Jl0mWrJuvel/5Q/8rK80ySeXdA85S6P9Qh9W2spZ51RouXx+kEDD4CwqPfbvmz1pw4xxzhxX5Bxc&#xA;XFLYGnv35Y+RfzR0DXri881+af03p0lq8MVp6s0nGZpI2WSkiqNkRh9OaLW6rBkgBjjwm+4D7nMx&#xA;Y5g7m3p2axyGGfmF+U3k/wA82pGq23paii8bfVIAFuEpWgLU+NN/st9FDvmZpddkwnbePc1ZMMZ+&#xA;95R/iv8AMz8lbm20/wAzMPMvk2Z/Ssr5XpcIBvxXmSwKr/ut6r2Vxm28HDrAZQ9OTr+P0uNxzxbH&#xA;cNSeb/zJ/Om9uNM8pk+XPJ0Lelf6g7D13DD7L8DyJZf91oafzNTEYMOjAlP1ZOn7P1qZyymhsHrH&#xA;5d/lN5R8i2gXS7f1tRdaXGqTgNcPXqAeiJ/kr9NTvmq1euyZjvtHucjHhEPezPMJuePedvy3/OXV&#xA;fNF/qGg+c/0ZpM7KbWx9a4X0wI1VhxRSoqwJ2zc6fWaaMAJQuXuDizxZCbB2eNfm7F+Z3lQQaDr3&#xA;nKXV21SJmm0+GedgIQwCmVXC7OwIUd6HNtopYcvrhDhrrQcbKJR2JeieSv8AnHD8+9H0SJtG83Q+&#xA;XlvlS5udPinuonSR0Hwy+nHxLqPhO5zYtD2r8mvJH5m+V/0x/jjzN/iL659W/R/76eb0PS9X1f75&#xA;Vpz5p08MVel4q7FXYq7FXYq+Xv8AnNjya81joXnG3Sv1Vm0y/YCp4SEy25PgquJB82GKva/yY87J&#xA;5z/LXRNbaTneNALfUfEXVv8Au5SR25leY9mGKs2xV2KrZJI4o2kkYJGgLO7EBVUCpJJ6AYq+aPzm&#xA;/wCctrTTWn0L8vmjvL1ax3GvOA9vEehFsh2lYH9tvg8A1cVeMfl95AvPzCvLrzP5l1SW6iNwUueT&#xA;tJdTyqqsQ7tXgvFgPGmwp1zS9rdrflqjEXMj4OZpdL4m5Oz3O18seXrXSP0PDp0C6ZSjWhjVkb3c&#xA;NXk3ud842etzSyeIZHi73bDDAR4a2eaeb/yBsLlmvPK9x9QuQeX1OYs0JPX4JN3j/EfLN9ovaIj0&#xA;5hfmP0j9XycLNoBzh8noHku+1y50OKLXrV7XWLT9xeB6FZGUCkyOvwsHG549DUds03aOLHHJxYiD&#xA;jluPLy8v1OXp5SMakPUE9IBBBFQdiDmCDTe841/8pLaHW7bzL5U42OqWkyzvYfZt5+JqyrT+6LrV&#xA;f5fl1zoNL21xQOLPvGQri6j39/3+9wMujo8UOY6PSB06U9s54uewnzt5H8z69qsV5pXme60W3jgW&#xA;F7WAyhWcO7GQ+nLGKkMB07Zt9BrsGGBjkxiZvnt5d7iZ8M5m4ypj/wDyqbz9/wBT/f8A/BXP/ZRm&#xA;d/K+k/1CPyj+pp/K5f55+15z518keZ/y91G01W01SZ2nLiPVrYyW8qTMDzQurFgXQnfl8Qrm90Pa&#xA;GLVxIrl/CXCz4JYiHv8A+Qeia/NDH5tufO155k0u+s3gGm3Tzt9XufUjZuQkmlUPHwZdh0NQaHfV&#xA;9qTgP3YgIyB57bhv04PO7eyZp3KYZ+afm/zN5Z0KGby5okmtanezC1gVAXSF3UlXkRPjYbdqDxYd&#xA;83Q6eGWR45cIG7TmmYjYMC8p/kVrGu6ovmj81b1tV1Njyi0YODBEOoWQp8FB/vuP4fEtXM7P2nGE&#xA;eDAKHf8Aj7y1QwEm5orzX+Rd9pepP5n/ACuvm0HWlq0mlhqWc46lFBqqV/kYFP8AVyODtMSHBnHF&#xA;Hv8Ax9/NM8BBuGxZB+VP5j+ZPMs9/ovmbQJ9J13R1Q3s3ErbPzNEoGPJWehIA5KQKhu2Ua7RwxgT&#xA;hK4yZYcplsRuHo2a1yHh35u+SvN1nNrXnD/lYl/omiIFli0yB7gBSEVFiiC3EacpHGwAG5zd6HPi&#xA;lw4/DEpd+3z5OJmhIXLi2eW/lJ+UXnn829Svtdl1ue0XTjGo127MtzM9ytDHHG5dXrGg5E8vh+Hx&#xA;zo4QERQFBwSSeb2z/oXX86P/AC8Gq/8AI2+/7Kskh6L+UP5dedPJv6W/xN5wu/Nf1/6v9U+tvO/1&#xA;f0fV9Th68s3956i1pT7OKvRcVdirsVdirsVY/wCf/J9l5x8nar5bvKLFqMDRpKRX05R8UUlP8iRV&#xA;b6MVfLf/ADiz50vvJX5han+XXmGtsmoztDHE/SLU4Dw4jt++Qca9yEpir7ExVK/MnmbQvLOjXGs6&#xA;5eR2Om2q8pZ5TT5KoG7M3RVUVJ6Yq+M/zS/PHzr+bWrnyv5Vt5rPy67fDZoaS3CqaerduDRU/wAi&#xA;vEd+RplWbNDFEymaiGUIGRoc0Nc/846uugI1vqXPX1BaRGFLVtv7tTTmtP5z18BnOw9pInLRj+77&#xA;+vv/AB9rsD2eeHY+pV/Io6rofmDWPK2rwSWlzJEl3FBIKCsbem5UjZuYddxUHjke34xy4YZYGwDW&#xA;3n/YuhJjMxL2rOSdq7FXYq7FXYq7FXYq7FUt8w6Bp2v6Pc6VqCc7a5XiSPtIw3V0J6Mp3GZGl1M8&#xA;GQTjzH2+TXlxicaLxryB5w1r8nPPM+i63yl8v3rKbrgCVKE0ju4V8R0ZR13HUDO3ywx67CJw59P1&#xA;H8ebpgZYZ0X1xZXlpfWkN5ZyrPa3CLLBNGQyOjiqspHUEZzE4mJo8w54N7q2RS7FXYq73xVTuLi3&#xA;treS4uJFht4VMk00hCoiKKszMdgAOpwxiSaHNBNPlfzv5j8wfnh+Yll5O8qBhoVtKTFKwIQqvwzX&#xA;047IgNEB33p9p6Z13Z2iGGNn6zz/AFOtz5eM+T7B8j+TdG8m+V7Hy7o8fCzso+Jc/blkO8ksh7s7&#xA;bn7htTNi0J9irsVdirsVdirsVdirsVfLP/OXf5WXENxb/mXoKNHNCY4tbMNVdWQhbe7BG9RtGx/1&#xA;PfFWefl3/wA5I+VdQ/KqTzN5mu0ttV0YLbavarT1Z7gqfSaCPbl9YCkgdFIb9la4q+cvNPm3z/8A&#xA;nr5uCUNnolo1YLRSxtrOIkgSSdPUmYd+p7cV6Yms1mPTw4pn3DqW3FhlkNB695O8l6J5U00Wemx/&#xA;vHAN1duB6szDux8B2XoM4LXdoZNTK5cug7vx3u7w4I4xQT/MFvUJbGzluYbqSFGubfl6ExA5oHFG&#xA;AbrQjqMsjmkImIPplzDEwBIPUNahew2Nhc3s54wWsTzSt4JGpZj9wxw4zOYiP4iB81nLhBPc8w/J&#xA;Tzn5v8y3mqHV7oXFlaIhjHpojLJKxIAZQtQFQ9a50XbujwYYRMI8MifsH4DgaLNOZNmwHq+cy7F2&#xA;KuxV2KuxV2KuxVjXnzyLpnm/SDZ3P7m7hq9leAVaJyO/ijftL/EDNj2d2jLTTsbxPMfjq4+o04yD&#xA;zeb/AJZ/mj5g/KrXZPKnmyKSTQS9QFq5t+Z/v7c/txP1ZR8x8VQet1Gmx6vGMmM+r8bF1UJyxS4Z&#xA;PqrTNT0/VLCDUNOuI7qyuVDwXETBkZT3BGczkxygeGQohzgQRYRWRZOxVSurq2tLaW6upUgtoVLz&#xA;TSMEREUVLMxoABhjEyNDcoJp8v8A5n/mrr/5n65D5E8hQTTadcy+kxQcZL1lNeTV+xbpTl8VNvia&#xA;nTOp7O7OGL1S+v7v2uvz5+LYcn0j+SX5N6V+Wvlv6uCl1r96FfV9RUGjMKlYoq7iKOu38x+I+A2z&#xA;jPR8VdirsVdirsVdirsVdirsVSDz3rvlfQ/KWp6h5oaMaGsDx3kUgDCZJFK+iqEjm0leIXvir81d&#xA;SfTpdTupdPhkt9MedzawyMJJI4WYmNGeihmCbV74q+q/y8tfLEHlOyPlsV06VefqGnqvJ0czH/fl&#xA;RQ+HQbUzzrtWeY5z4v1D5V5eTv8ATCAgOFkma5yHYq7FWIfm3qBsfy81mRftSxLbge08ixN/wrHN&#xA;r2Jj4tVHys/Z+txdZKsZSD/nH3TRb+S5rwj4767kYH/IjVYwP+CDZm+0mQnNGPQR+/8AAauz4+gn&#xA;zenZzrnuxV2KuxV2KuxV2KuxVjnnbyLovm3Tfqt+np3MYJtL1APUiY+Feqn9pe/zocz9B2jk00rj&#xA;vHqPx1aM+njkG/N4/ovmf8xfyX1w2rr9b0W4fkbVyxtLgDq8T0Jikp12r4gimdkPA12PiHP7R7/x&#xA;7nUETwyovpX8vvzc8m+eLZf0ZdCDUgKzaVcEJcKR1KitJF/ykr70O2aHVaDJhO4uPf8Ajk5ePNGX&#xA;vTXzl578seTtMOoa9eLboa+hAPimmYfsxRjdj+A7kZVp9LPMaiP1Mp5BEbvmXzJ54/Mb87vMcflj&#xA;y1ZyQ6SzhksENFCKf96L2YbcV60+yDQAM1Cep0eghgF85d/6nX5cxn7n1H+S35IaB+Wmkkxlb3zD&#xA;eIo1LVGHyJhgrukQbfxbqewGe0vSsVdirsVdirsVdirsVdirsVQup6np+l6fc6jqNwlrY2kbTXNx&#xA;KeKJGgqzMfYYq+HfzQ/MTzL+dvnmHSNFR4PLtm7fo+2eoUIKh7y5pX42BoB+yPhG5JajU6mGGBnM&#xA;7BnjxmZoPQ4Pyv8AK8fk1vK5i5W8g5yXVAJjcU2nr/MO3am3TOGl2xmOfxfs6V3ft73dDSQ4OH7X&#xA;kehaz5g/KfzbLpWqK0+jXLB5VQfDJGaqlxDU7MKfEv0HsR0uowYu0MAlA+ocvI9x/HmHXY5ywTo8&#xA;n0Fp2o2OpWMN9YzLcWlwoeGZDUEH/Pcds4jNhljkYyFSDuYTEhY5KzTQoaPIqnwJAOCOOR3AKmQH&#xA;VyzQueKyKx8AQTiccgLIKiQPV5t/zkDctD5FijHS5voYm37BJJP1x5vPZwf4Qf6h+8OH2h/dj3p3&#xA;+UNt9X/LnRkoQXjklNRQ/vJnf9TbZjdtyvVT+H3Bs0Y/dBmOalynYq7FXYq7FXYq7FXYq7FUHq+j&#xA;6ZrFhLYanbJdWkwo8Tjb2II3Vh2I3GXYNRPFLigaLCeMSFF4R50/JTXdCnOq+VpJby1ib1FjjJF5&#xA;ARuCvGhenYr8Xt3zstB25jzenJ6Z/Yf1fF1OfRShvHcJFJ5F/M7zRY3PmTUI7m8eKMFHvZHa6mRe&#xA;0SvV2CjcdK/s1OZsu0NNimMVgHy5D39zQMGSQ4qfTP8AziV518hXnlX/AA3p1lBpPmi0XnqUIr6l&#xA;6F2+sq7lnfr8SV+A9AFIzYtD6BxV2KuxV2KuxV2KuxV2KuxV2KvjX/nI7847/wA+eYk/L/ye7XGj&#xA;QTiO4kgNRfXSnswNDBEeh6Egt0CnIZMkYRMpGgExiSaDJvy88h2PlDRRbJxl1G4o9/dAfbcDZVPX&#xA;gn7P3988/wC0+0Zamd8oDkP0+93um04xx82vOP5meVvKoMV7OZ7+lVsLejy+3PcKg/1j8q4dF2Tm&#xA;1G4HDDvP6O9c2qhj25l47r/mfzt+ak6aXovlxrmO3f1I47SF7meOuxLzAURT32UZ1/Z/ZcNNdEkn&#xA;n3fJ1OfUnJzDFvNXl7z35Lu/8P8AmCG60uQoLhbNpaxMsg+2nps0TVpQkHqKHcZseEXdbtFsbySH&#xA;Yqu9ST0/T5H068uFTx5UpWnjir2HyZ+T/wCfGr+U9O1/yreSS6VdKzWkEOo+iQI5HRlMcjxoPjjI&#xA;pXKMmmxT+qMT7wGcckhyJCOudA/5yq0IfvtM1G4VDuscNvqFadqwidj07HMXJ2Tpp84D4bfc2x1W&#xA;QdUvl/Oj8y9CmEPmHQ0iPQpc209pKT1/aNP+FzCyezunly4o/H9bbHX5Bzop1pv/ADkboslBqWkX&#xA;FsfG3dJx8/j9HNfl9mZfwTB94r9bkR7RHUMv0r82/wAvtSoserx28ndLoNb0/wBlIFT7mzWZuxdT&#xA;D+HiHlv9nP7HIhrMcutMst7i3uIlmt5Umib7MkbBlPyIqM1s8coGpAg+bkxkDuFTIJdirsVdirsV&#xA;dirH/PXm608q+XZ9Umo8391ZwH/dk7A8V+Qpyb2GZ/Z2iOoyiP8AD19zRqMwxxvq+cfL9n+Yf19/&#xA;Omi29ytzYytfnU41CgPyLOyhqCTqeSqDt1FM7+WoxYyIGQBOwDoxjlIE0+1/yK/O7S/zJ0IpP6dp&#xA;5nsVA1LT1OzrsPrEAO5jYncdVOx/ZJyGt6jirsVdirsVdirsVdirsVfO/wDzlT+dh8vaa/kfQJ6a&#xA;7qUf+5S4jPxWtrINoxTpJMD8wm/7SnFWA/k3+W48v6eNZ1OL/c1ep8EbDe3hbfhQ9Hbq3h08a8V2&#xA;52n4svCgfRHn5n9Q/HR3Gi03COI8yl/5qfm5LYTt5d8sP6mqM3pXd3GOZiY7elFStZa9T+z0+10v&#xA;7I7G4gMmUbdI/pP6mGr1demPzZX+UH/OJcl6I/MP5lNKZJj6sehB2EjV35XkoPKp68FNfFuq51wF&#xA;OqfT2j6Jo+i2Een6RZQafYxf3dtbRrFGPfigAqe5xVj35mflh5Y/MLy++k61CBKgLWGoIB69tKf2&#xA;o2PY0HJejD6CFXwV+Z35WeaPy715tL1qHlbyFmsNRjB9C4jBoGU/st/Mh3X5UJVYdirsVfb3/OHX&#xA;mKPUfyrfSS9Z9EvpovTrUiK4/wBIRvYM7yD6MVe7YqsmhhniaKaNZYnFHjcBlI8CDtirDde/JX8q&#xA;Ne5HUvK1g0j15zQRC1lJPcyW/pOT9OKvMfMn/OF/5eXwZ9D1K+0aY/ZRit3AP9g/CT/krirzTVv+&#xA;cTvzh8tSPdeVNVh1EDoLS4exuWp4rIVj/wCSpyGTHGYqQBHmmMiNwxq58/fnT5ImW382aVMYgeIO&#xA;oWzRch0pHcRhUfp1+LNVn7C02TcDhPl+rk5UNbkj1tlGgf8AOQHlS94x6rBNpUx6uR68P/BIOf8A&#xA;wmaPUezmWO+MiX2H9X2uZj7QifqFPRNK1vR9Wg9fTL2G9iHVoHV6V7NQ7H2OaTPpsmI1OJi5sMkZ&#xA;cjaNyhm7FXYqlGq+VNC1fULe91S2F69opW2hn+OFCxqzekfhLGg3avTbMzDrsuKBhA8N8yOfz/U0&#xA;zwRlKzumyqqqFUAKBQKNgAO2YhJJttp84edta0nyl+Y0Gu+Qr/0NQtH9W4WAfuI5wfiRSDxdJBUO&#xA;lOPUd6D0PsqWc4R4w36d5Hm6HUiAn6H2P+TH5xaN+ZXlwXcIW11u0ATVdM5VMbnpJHXcxP8Asnt0&#xA;PTNk470PFXYq7FXYq7FXYqwf84fzP078uvJtxrU/GXUJawaTZMf765YbVA34IPic+G3UjFXyR+U/&#xA;lPUvNnmK589+ZXa65XDzRPKB/pF2Wq0h7cIz0AFK7D7NM5/tztLwo+HA+uXPyH6z+OjnaLT8R4jy&#xA;DOPzf89t5Y8v+hZScdX1HlHbEdY0A/eS/MVovufbNJ2J2f4+TikPRD7T3fr/AGubrM/BGhzKf/8A&#xA;OK/5HQWtjb/mF5ltxLqV3+90K2mBPoxHpdMD1kk6x+C/F1O3dukfTGKuxV2KpL5v8neXfN+hz6J5&#xA;gs0vLCffi2zxuPsyROPiR17EfqxV8N/nR/zj/wCZfy5umvYeep+VpXpb6mq/FFyPwx3Kj7Ddg32W&#xA;7UO2KvKcVeu/84z/AJoQeRvPwi1KX0tC11Vs7+RjRIpA1YJ29kZipJ6KxPbFX3sCCKjcHocVbxV2&#xA;KuxV2Kqc9vBcQvBcRrNDIOMkUihlYHsVNQcVeX+cP+cZ/wAovM3OQ6QNIvH/AOPrSmFsQf8AjDRo&#xA;D/yLrirw/wA0f84fef8AQZ21DyRrKal6dTHEWNhejwVH5GJvmXT5ZGURIURYSCRyYf8A8rL/ADW8&#xA;jXo03zjpUslK8Y7+JreVlXasU6rxdf8AKo3zzT6rsHBk3j6D5cvl+qnLx62cee7P/LX5zeSdbKxS&#xA;XJ0y7bb0byiKT/kygmP5VIPtnO6rsLPi3iOOPlz+X6rc/HrYS57FnSsrKGUhlIqCNwRmmIINFywW&#xA;8CWLebfLnmTzCG0+PVV0jRm2n+rK0lzOpG6s7FFjXtRa17nembXRavBp/VwmeTz2A93P5uLmxTnt&#xA;dRSjR/yO8g6cVea2l1GVTUPdyEiv+pH6aEfMHL83tBqJ/TUfcP12whocY57sS80+XfMH5YeaLfz3&#xA;5JdorSKStxbAExxBz8UUigjlbydP8n58Tm97H7WGccE/7wf7L9vf8/dhavS8BsfT9z6x/Kf81NB/&#xA;MbyzHq2nEQXsVI9U0xmDSW03genJHpVHpuPAggb1wmbYq7FXYq7FVK6ure0tprq5lWG2gRpZ5nIV&#xA;ERByZmJ2AAFTir4W89eZtV/PD81xHas8Xlyw5RWXb0bJGHqTsDt6s7U/4Vei1zE12rjp8Rmfh5lt&#xA;w4jOVB7Zp2n2enWMFjZxiG1tkWKGMdAqig655xmyyyTM5G5F6CEREUOTxPS9Gb81/wA/YNJlLNo1&#xA;tMUuKbUsrEky0I6es9QD25jPQ+zNL4OCMevM+8/inQ6nJxzJfdcUUUUSRRIscUahY41AVVVRQAAb&#xA;AAZntC/FXYq7FXYqo3dnaXtrLaXkKXFrOpjnglUOjowoVZWqCD74q+T/AM7f+cTri0a48wfl7E09&#xA;pvJdeX6lpY+5NqTu6/8AFZ+Ifs16BV8xyRyRSNHIpSRCVdGBDBgaEEHoRiqLv9b1nUEjS/v7m7SF&#xA;VjhWeV5QiIOKqocmgUbADFU/8k/mp588l38N1oOrzwxREcrCR2ktJFH7MkDHgRTaoow7EYq/Qb8v&#xA;POFv5y8laR5mt4/RXUoBI8NeXpyqxjlQNtULIjCuKsixV2KuxV2KuxVB6rpGlavZSWGq2cF/ZS7S&#xA;W1zGssbfNHBGKvD/AD5/zh75B1r1Lny1PL5cvmqREtbizY/8YnYOlT/K9B/LirxDWPy7/Pr8pmea&#xA;GKW90OI8nuLOt5ZcQakvERzhHixVfnmJqdDhzj1xvz6/Ntx5pw5FNvKv/OQWi3fCDzDbNp0/Q3UI&#xA;aWAmnUqKyJv2+L55zWr9nJDfEeLyPP58vudhi7QB2kKepWGo6fqNst1YXMd1bP8AZmhcOp+lSc57&#xA;LhnjPDMGJ83YRmJCwbROVMlk0MU8LwzIJIZVKSRsKqysKEEHqCMlCZiQRsQggEUXiepWHmf8m/OM&#xA;PnDyiS+jSH07i3erxhHYFrafuY2oOD9QadwCe77J7UGojwy2yD7fN0mq0xxmx9L7C/Lr8wvL/n3y&#xA;zBr+iyExSfBc2z/3tvOAC8Ug8RXY9CNxm5cRk+KuxV2Kvm7/AJzA/NOTTNHg8haVKRf6ugn1ZkJ5&#xA;JacqJDt3mdTyH8op0bFUg/KjyOvlfy2n1iMDVr8LNfsaVXb4Ia/8Vg7/AOVXOB7Z1/j5aH0R5fpL&#xA;vNJg4I2eZZRr1/8Ao/Q9Rv8A/lktZp/+RUZf+Ga7SwE8sInkZAfa35ZVEnyYp/zg/o0Ump+atccV&#xA;mghtbKJu/Gd3ll/GBM9PecfWeKuxV2KuxV2KuxV2KvOfPf5Aflj521UatrGmtHqRFJ7m0kMDTdKG&#xA;Xjs7CmzUr+GKsb/6FD/Jv/lmvv8ApLb+mKu/6FD/ACb/AOWa+/6S2/pir0/yZ5Q0byf5as/LmirI&#xA;mmWPqfV1lcyOPWleZ6sevxyHFU7xV2KuxV2KuxV2KuxV2KvMfzC/5x1/LLzr6lzcaf8AovVn3/Se&#xA;ncYJGbrWSOhikr3LLy9xir5080f846/nH+XVzJqnlK6k1nT1NTLpwYXHFenrWR58/kvMZTmwQyx4&#xA;ZgSDKEzE2DSH8r/85ABZRZea7IwSoeD3lup+FgaH1YT8Qp34/wDA5zes9nBzwn4H9B/X83Y4u0Ok&#xA;w9b0nWdK1e0W80y7iu7ZukkTBgD4Hup9jvnM59PkxS4ZgxLsYZIyFg2q31jaX9pNZ3kKz2s6lJoX&#xA;FVZT2ORxZZY5CUTUgmURIUeTxy2svzN/KLzbcaj5Eil1DS9RRkNuIZLqMqDVUnij35Rk/A+3z3YZ&#xA;3Wg7YxZYXOQhMc7NfK/wHS59JKMthYZVB/zlL+eWlMZNc8owTWiEmRzaXlsaClaS83jp/sTmxx6r&#xA;FM1GUZe4guPLHIcwQ9C8jf8AOYH5ea7NFaa9bzeW7uUhRLMwns+RNADOgVl+bxhR3OXsHulvcW9z&#xA;BHcW0qTW8yh4Zo2Do6MKqysKggjoRir849U/MZtX/M6688azZnUTNdNcxWTSekFVPhtk5cZPhhVV&#xA;FKb0yjU4pZMZjE8JPVnjkIyBItnP/Qyn/fuf9Pv/AF4zm/8AQx/tn+x/487D+Uv6P2/sQWuf85A/&#xA;pXRNQ0z9A+j9etprb1vrfLh60ZTlx9Fa05VpXLcHs74eSM+O+Eg/T3f5zGev4okcPPz/AGPU/wDn&#xA;B7UUbTvNmmkgPFNaXCjuRIsqH7vTH350zrn1DirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirBPzB/JP8uvPivJremKmpFaJqtofQul2oKuopJTsJFYYq+afOP8AzjN+afkK7fWP&#xA;JF7LrNjGeX+iVjvVUb0ktqlZh/qcq/yjK8uKGSPDIAjzZRkYmwl/lf8AP1opf0f5vsmgnjb05LyB&#xA;CCrA0PqwH4lI78f+BzmtZ7OA74T8D+g/r+bsMPaHSfzet6TrOlavZreaZdR3ds3SSJgwB8D3B9jv&#xA;nMZ9PkxS4ZgxLsoZIyFg2jMpZsJ87flR5Z8zxSTLCthqxBKX0Kgcm/4uQUEg9/te+bjQds5cBAke&#xA;KHcf0H8BxM+kjPlsWPfkJ+aPmL8t/PS+QfNEjHQbycWyo7FktbiZh6U8LH/dMpYcxsN+WxBr3OHN&#xA;HLATibiXSzgYmjzfWP8AyrzyB/1LOlf9INt/zRlrF3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+&#xA;kG2/5oxVHaV5Z8uaRJJJpOlWenySgLK9rbxQMyg1AYxqtRiqZYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT8xvyU/L/AM/xFtbsBHqQXjFq1pSG6XsKuARIB2EisB2x&#xA;V856t/ziZ+bHl/VpT5M1qO4sZhtcpcPYT0B2SVFJBp4hj8hleTFCYqQEh5i2UZGPI0of9C+f85Nf&#xA;9XeT/uLS/wDNWUfkNP8A6nD/AEo/Uz8ef84/N3/Qvn/OTX/V3k/7i0v/ADVj+Q0/+pw/0o/Uvjz/&#xA;AJx+aX3n/OK/576ldpcalLBdTgKguLi/MzqoNQAzVagqTTMjHijAVECI8tmEpEmybf/Z</xapGImg:image>

+    </rdf:li>

+   </rdf:Alt>

+  </xap:Thumbnails>

+ </rdf:Description>

+

+ <rdf:Description rdf:about=''

+  xmlns:dc='http://purl.org/dc/elements/1.1/'>

+  <dc:format>image/svg+xml</dc:format>

+ </rdf:Description>

+

+</rdf:RDF>

+</x:xmpmeta>

+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <?xpacket end='w'?>

+            </metadata>

+        <switch>

+            <foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">

+                <i:pgfRef  xlink:href="#adobe_illustrator_pgf">

+                </i:pgfRef>

+            </foreignObject>

+            <g i:extraneous="self">

+                <g id="colors" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">

+                    <path i:knockout="Off" fill="#F8DC75" d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4

+                        c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3

+                        c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399

+                        c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421

+                        c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083

+                        c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"/>

+                    <path i:knockout="Off" fill="#D2A41F" d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191

+                        c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861

+                        l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292

+                        c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668

+                        c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"/>

+                </g>

+                <g id="tomcat" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">

+                    <path i:knockout="Off" d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588

+                        c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279

+                        c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12

+                        C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064

+                        C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141

+                        C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48

+                        c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57

+                        c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"/>

+                    <g>

+                        <rect x="133.209" y="90.51" i:knockout="Off" width="26.245" height="3.239"/>

+                        <rect x="133.209" y="82.732" i:knockout="Off" width="26.245" height="3.24"/>

+                        <rect x="213.35" y="90.51" i:knockout="Off" width="26.244" height="3.239"/>

+                        <rect x="213.35" y="82.732" i:knockout="Off" width="26.244" height="3.24"/>

+                        <g>

+                            <path i:knockout="Off" d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125

+                                c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024

+                                c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0

+                                c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"

+                                />

+                            <path i:knockout="Off" d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015

+                                c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021

+                                c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382

+                                l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733

+                                l-12.317-7.755l24.071,0.006L187.156,86.733z"/>

+                        </g>

+                    </g>

+                    <polygon i:knockout="Off" points="114.745,73.635 122.087,95.391 99.788,80.434 "/>

+                    <polygon i:knockout="Off" points="93.261,83.153 101.147,96.75 84.559,88.32 "/>

+                    <polygon i:knockout="Off" points="75.313,93.759 79.12,107.356 67.699,99.47 "/>

+                    <polygon i:knockout="Off" points="196.871,130.199 189.801,141.077 202.31,135.366 "/>

+                    <polygon i:knockout="Off" points="208.021,142.709 196.6,151.411 212.372,147.332 "/>

+                    <polygon i:knockout="Off" points="180.282,24.686 188.713,43.178 194.151,24.414 "/>

+                    <polygon i:knockout="Off" points="137.588,51.608 150.913,58.678 138.947,59.494 "/>

+                    <polygon i:knockout="Off" points="140.851,66.021 149.009,69.284 142.211,71.188 "/>

+                    <polygon i:knockout="Off" points="236.031,56.775 225.153,61.398 234.127,62.757 "/>

+                    <polygon i:knockout="Off" points="231.68,70.1 223.25,72.548 230.048,74.995 "/>

+                    <path i:knockout="Off" d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861

+                        l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075

+                        c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177

+                        c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077

+                        c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396

+                        c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899

+                        C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049

+                        c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455

+                        c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198

+                        c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668

+                        c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109

+                        h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347

+                        c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z

+                         M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76

+                        c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"/>

+                </g>

+            </g>

+        </switch>

+        <i:pgf  id="adobe_illustrator_pgf">

+            <![CDATA[

+            eJzdffle8sqy6H0B3gFUFGQwEyEBB2YHUEFwwJlJRJlkWGuv88d59lvVSUgICWmQ75x1716/7aed

+Tnd1dXXN1fF6iuVQsjmot0J8mHG7vN70qFWbDEYxN2l1n3e70/FkhE2+G7+bZcMMdEqeS29qx7vW

+aNwZ9GPkEXmYw7d951e565vTrN/t80NbpTPptqB1Mug1apPw+K+2X5sLXs7UJvAwciAfMKKbZWJ8

+1J28hOepwbTf7PTbqcF/YPyo6OYZzi3AU0GKwuOzzk1rbO4TjrK8jB3DnAy/CLwYluBNQYInDL6V

+GTSmvVZ/UhwNGq3xOD3oDkbjmDv9T63vvqy14UnNXW11u4O/3alurfHtgtVG3nKdbgsW1qtN3FFc

+ZfKcfyOv3o7hHXgdf8fm6Nt5D1rKrckEoIKBESXpy2reOB9Aqv7ne7pptTsEw4CIF78ycqXVG3YB

+KWRRPCCFl0XtX7UHwEOehqJsmJdlGfAmhiMy9BMlPiwwjAC/RMgj5Q193a2/Oq2/Y+6rQb+lLC45

+mpQ7/9XCqRg3xzBK68202xrd9jsTWASHTbKy4stBs9VVm8i7uW6NLJT8x+o/lQ6V2qjdmsBODbrT

+CaEUSZvhator1P5pjfQJroetfmVwR+ALiUJYFMWIWxQY5Rc2HHFLouyOMoA6ScEgC8tUp2TJtKwy

+No6E42gTRHHvi7Az16NOu9OPsYLoDnHYint2Ouo09S2Lcm5J+UHWEZYM/5e1/ysAw9onk1Zf2eZs

+v5ke9BDJY6Re2Ng+7Hp30FaezX4nT2C66VCBlfz9BvtRHHX6CIPrijyR3ordKTw6HQ2mw/P+x8Dl

+U05lEScd9a/78MunOzWajj/dlcGgC6dtroP6SBkFH44mxt5L54C+9uPrA601drrW7Xbao9rws9Ow

+Gt7i+Wweu3eXTgjbNGrpY5A/Z/8ufbPcIKi0gnL+0WxwizeWz/BPrz7odsY9fWBDi/67E0XARnVb

+/eZ4Nozypw5YofOX1rh8sEzrA1idYWtJa7b/V6s7GBrQOGup9Zvu+9poaDcsQvfR6TcBK+VpZ9LS

+N3rQGyIDd5c/a0NsXuipnBA4PcbzEQotPzgrvyArT5ARTv7ptsaug3x/8Hef/OGOuXxPgJLatDt5

+8bsPrmq9ljvoOih3gEm3tC6M+9rFqDzwG367cWn8MO/SuCLjfvgH/riAX76g6W+34L50P70w7ia0

+Pty4kIE9NF0HxRoA54673AcwLfxLAIQV6eA5rrFY6wI7axEginWXnbhBkMauhdZiY/bGt+XTYmoG

+gjbTKvgtwHBGpC6skHRYZyNZRnmkHBsc5v+ozTCQqdFmcBVWTV6CclJzed8OtL9hr/GvTgOxURv9

+o/z9cFm4ArlI/vBtN9W+QC3lCQzedvv+0+v2oUMIf/SBgvxAQt436+d/1bpTtYPsPjiHOeceT/4Z

+qk8PkqNRzQqCXmtSawLgvweAXQ+Av2qjTq3eRT1o/G8A4n8dhv9JLMT1Po3PTrc5avXVPiayNXQE

+mTXq1KcTBDRIHgUX1xIb15Dn4ZH4H95Y6iXNQ4zvOIPp2+2P3xpg5wx6cZvOBpi5/9lt0NawuB3k

+QewvuuUBHY7/rYvDNQRpyHFNKoC1A7leEYQ44areIeYk++9DlXEVi8TQHTS+W03n9fXB6vv3rU2D

+/k9SwQq84N98WCiRNL/28cff/2sScNztNP6/EH9kIeXBdNRoEa/Tv3JN8yD/4wjizFN2cNOqdf81

+pP6PpcBzXM3MAfjvWs1/rFbzd6c5+XRcEScyYVbk2H/ZilTgF1f12eq0P53VbVYSwgLL/9uWpUG/

+uK76YALqYaH1MVEciM4rdB+kBoN/z9IWF/AvEbYgm/4fl7WbEzgbAt7ggMAWRsVd8pxl3TM/BnFA

+uwu1fntaa7fcxcFwOjSRLnmhOGqNW6O/Wu5K6z8Td7bZmdTqnW5norJoMRLhI7MJZHdtNKkPaqOm

+u4HBAjfrHmmKnWPP9qilrdexb31GGRFO4CT7rpwOgGNPAwCOfesLQnyx2zzp4vPJqNYfD2uwr41/

+YLpO0z3u/Fdrtk0a2mX3sDZsjeBhb9olfjdNWjMax8RO19PJcDpx39TGk9ao81+ko1sPtajgRebe

+uWyNPx3eYOb2X6Mldwd61SYtWHmL2EhLO3/3QaUfAHBtdAOrx/3pstXsTHuGCV8MJ9+KPNX4CqCC

+kOHEbbB/TEdCIxfAvIr4qIb55rATNkFb63bGpqZebfytolnUMDasNXWzJHnuTk4ngxn2tP1nDAeM

+cX/MQB6RfqG/Wo0JkEy91q31G4t7PfcKYKzb6bfcEzhrdD3Hk9HgWzv7rE3nRrczBJJE581/4Dy0

+AW0Obwy1Uz/4qzUaooN0xl4ANY3BqNlqLm6D++BqMJl7vCrvcRhOp5YDne8djJqjcVhx4JgV74Vu

+tX5/MJmtXdnlhU4aHsbjeQ662HHabzh0AXkHJ6ZJdQSML/9nGNYlpdXo0GEwbE4dOoydRmgM5tmY

+qQOSzvIOgz6QyEShw6VzqT112iasyaonMOJ5lsQzNj1H5p7RiHXHueNnufNDZd+X7zp0AjY038/A

+lc1dP2vN1qi1fLwuiyezNlnaCXA3Ia6bpX16eGzHRkZu1a/fagPj/2v5YPUOnsF5CWYGvPVXq2s/

+yEd/Eh5P6+MlC8Muze5w9DGY8RcrKlO69UDbUbUDS3S3e9/hXm30PR58fIQVdZe6+0jX+yl6TwZD

+6r5d0LhnCLDpDPyh1TRDTdHdADVF7xnUFH3noF7ce+xLNJx6bbSMuLHfyBA9dOg6BGHQ6X8MnGYe

+GVZi3YUsRO0T5iK2C262PlCKGsxZa2ZMOn8N6hNMZHLsqIiij0532RHDjmMMdjr0mZMfVr0ao2Z4

+Ahq5ppFZnSDsM240+ssOo9Jn2G38Y9BrFvGmdKt1W+G/KPt9LiE77DUYtbWxlvZRx7Fi8NhlOBh3

+lhMZ9oL9Hn4ORv+lcraoXb/BqIO5YA4DdkfhmYJUx3Sx5X01WTkcTJYcG+ypMztrOgNadFAPsEe9

+M+nVhmYRadebrKI2Vl6i6DpYTuGzfnXVW7qsY7M17rT7TugeDkdhYkItoxbs9AlMbNxaxhtJt7/p

+uhndQksGc2Qi0Enfs2iUDwuWjAm6dTCJcE4cROSIU3eDOGClsLVsmnWeSQNWdOqqC4OozNl1NeJI

+ZG27GZBkxaewS1NJC1nCFqGTs7Y/nnTVXsNh035G7KbOOOtnPyB0wZPZtfLxL/RF2m+N5lyCS6dX

++muGgiHlyGoGEL/dFjGVdJM4PnPZYAJRUuvsRpuKyryyO504WW3icNZHoA6Oxi0cbWS/YOw5/u4M

+gVv2v504HCoEcNzbluu7GNQxvcywOt0TA52yxbL72mS8zvlP1D4FtKIxexGz2IiPa6kHRX3rdFRr

+ooAgbyk+FTtDZPaO4jc4uFP8ASk7f4AKumrfV3RrybZP2c4HoHRLo/WfVq3/G6P1T+ORwRGWuGFY

+o9eqP9D9Be5On7gcUCpbuWwWqc/3ZEg3d69B/1Z2Cq6hmMm9pYmN1TG6Lq3IU+uueT0NEKHrE8BI

+14aKA7TTWmKyaOOcItbg6FQ+p716v9bpLpGD2juYtwz/5pZKV61zDojqvlXHd5yhIQncmcHffSWR

+J9/pNw0kTvuamdI5zkols3mZpMcn64O/dFtu+atp3arV4V2+0/NvlaY1fc+5iOOEmFtf1r17yzZ3

+VPtndWzOv7UaMuffXQWX+ObKqDS9tAIm8U16RF4O+oPG52jQa1mh09r5s+xdM1KFpRuCI9gjVaCa

+2xK1y4+i8gJIHudDXhl1epfoUXDuCvydsich9tRSA37GDQEl50sNc51vEiUGQajMwnN2Jrh5efct

+BzeM9sI1UdtzgHhA39+D0XdhpqKu9l7KyU1k++bNuqBWlrphtNdS6MAoLPcdzfW9cTBR5jqvAIMR

+Q8voWQG4019iAWtds716q3meThdHxILUpOjSU16e1hGNg/7kBo1EZ3hmqh+FCFW0m4ohNkelHi0Z

+C54rmtKVIdNmKbLNL17W/rNED6UaodO31Ulp3lf01JTJb079OmqdqtKp6JyrD6Hqt2WH0ILD6xVj

+LM1R4Us2RoN6baLUjc3MDuihrmqmdppNDtkc3hrW+pp7XJOx5btTJGGFmCcLHjv1cWHQqC3OAA/J

+wVGsCJWm9GcAXqOju/4NM2b7jYEerxX0B6TUQufSM00eHpHyHKRdOBANi+daheLik2L7Y7HxoWZO

+LcDpu53GDKz4ojmgF77M12Lgjik1Griz2jMX2UljC5oYyXL6/FyKZGDcJlbteAPHYmgnMfY/bGXy

+F42PnL/EJRM/qVefcHL9fhy955lmvBXz9smf8fPx4CP3Xpju5TyBJ8bUFji5qx8wXHcSSd5UcpVE

+bPgii49i79HlPQy95wZkMJgvPk6Wp7e+ZL/eHqvvHP/0kvn77PZodFzrn3bvvuqp98tSMhnssy/x

+E/ZOymw3p9lM+uz5hQwVOD4aeoUxv1MKnHxOeAKIy0sBygqAHNWTweHVRSIvj4+ls8P7cG7wKNy5

+vNnR8yOTecxVK7mj5FHDCp7jof9wCBOchdLcztF7JjxN3Cajz29VsTpki7nd0kNXna+R3M18DP1s

+snIxmeptLq/Smn/wT2Cci2kmfP15OBoJmQ7DiVvDxN1eeUfpzjLFWs4/2a1lgy9XBykxyG2p47wP

+EqNRfFwBeIPnDBv6iunIiqdu0i2XdyzlJnfc6+B7Vyy19gMRT9p/LRyWYpXA0Y34OXphxodhviBz

+geNTz64w5saXAM2dFD4YS6eC9BP/gj/9fqa5W83MT/o8erl8LpFJgcbmp4V3o6+R2Plr2HLS152r

+gu2kYid/6rWa1OUdjQ49vtGY9Y6s1jqWiuyzsMXF9q0mHe8FL0M2k0Y+fbW9apZM6vIurFXwPwcO

+uXbJctKt3KuwfTvsFqwmZXKpfMJqUpcXphW3d/oj/5E1goXqK5P7uCpbT3rqOdxlL94qlpOennEV

+Mime/UUEc4/HlXcyKbufrGfnd/V+9Dw9LuCk8cU99VX5py7rh0lDQX1SmEUhpQKTUtda3NszTRqJ

+9N6GdpO+jV4++xWbSRM1MZrbYV1e07QqKZ2839hNerbD++LP1pMeel7G25+tG9OkwGGUaUtp//HP

+Tq9gNWkg3o0d20wa+dw/eUxcW08qVKtMTmaugMas1rqVa0d3bnrctdWkTO7lJWczqbjt/e5fpk2T

+wizatDXmNPh+Zz3pKZPca/miVUv0TraDJ+qk1ZDPhN6TK+Ho2aWcVTb7/J2bW+vjIVOIhlic9HBh

+0rPWQLyphTiYlAmZV1p4eqyZJiWzqGuNfjdzr3aTZpjL/RfZetLzn1jia3R1YzlpOb7Hw6m0Xqu4

+nW+VecZm0qcQU37zb1lPmj9rXT09+n36pC6vYdq7vX7bdtLyZ+m9bjfpKXOXHx5aTw==

+            ]]>

+            <![CDATA[

+            WuC9Lu9tLnF4ZLnWu+HFlu2kd2+nWxO7Sa+Z+5N8Rp8U1mKY9vI4+/ZaenmxnPTl+vvcdtKvaqSZ

+s5n0Gbgl8zLuhqzXevU17F3LEm856dt5qG876chbDnj0SVGKGc/qLZPt9C4sJ5WuQluexEsoC5Py

+YfOhmb5F39RJ67zfdGhcXv9jobZPpuX2jn1n82stMO/7sSROemyaFIb9+tGYvnhgnnQ82D1SJ52c

+BGBf5tfqea49+ZVJU1X2fJ4VBkfj22MPTppY5EnnIW2lh6xpUsBY/GxLVKY9YfMhEysMDoUrRdLw

+O7F0fn7SndGoVu/jpCnzSkfJ1kCj3hTQmFmUR75iqqQ5iZXCJgRvDVrvFUWmtmpv4jxIZ7e7r4OY

+1VMikSNn1RLbu7N7+5M5e/dObZ8C683s2jyFHdgNpL0qt2RaX62o6bkosW8a3ONvyfy0/7n1YPs0

+WjyPPetPF3Zf4vZv3m3flj5rr3u2T5Pc7mPD6qmqwxQC/RPO9u1C/fojbvv0eqtRP7N5Kp3tnh3e

+jjWMfez9yKa3bwMdTT39YLdi5qf1i3Lf9uldJvA90p8uYOzeWz/w2L59/5yJHdk+ffe+RnesnqoY

++5oUh2e2b3/fcamS7dPed+741e4poKoUj8wwtvj8ghOOH2yfNvr1csHu6a5n9/x53x5ju9nkZb1l

++/YFd7LF2j1Nergdf8wWY5EzJnu0r6065oubznSgUhqfqE/T4UPT08r76X7S+FQI3iBDKSnGXDq0

+nwbdcjJ8fUm3Pyvo1EseHctnO0hZ9z7VWj5pxGzMvvFD4u7jtpysVLz3hEUlK5dNIVsbPXkDqcH4

+Sm8Du7I2etwjfC7GSp4rwsw8+/k46wlmbu49wbvXsif41qx4fE/+Kf5WBBL8TntC+bfIolFYbSdL

+fFkCqNMBsE4H3+JOVP5AS3yf82h25YuUe5s81xLxIbuVuQhsR7Sl7faSg8wrkOm2vMXtHRWPM639

+rJecOzRnnjQsWvdzKT3R2pKX9yT9jmPpp6pjPzDD6js333o/l9e257730DNwHFHcpl0L2GLRG/8L

+xYg7fT7+RtHPe925rFGsRdxGod6gGHHvvB5ua/22e7n0x4V0cHnRisKf+9vJ6GOXV2xkPwjHj0OF

+Tpgx101Wkv0ccxER9hWyQfcHWMsRThe84lZVuMw+Nn4+DjpHdb/4KBbOVLs5ujuaCeB0cvBz60cO

+s7glft/JU3c5eGhLv9AAt5WrhY1eBVvwmFz+sGgCz3I3hKvMuxVwhFvq4FXfqMA73RFpgDstbT8a

+dH478KSzOWKxxV31ZjlwQGPK1l7l72jAy2ZvczPcZZLl4PcODFCqHnS2Y8G5CQKHZhqLGUBh9yKv

+mY9KhkeQBVzaob5SNnjLhvRJR1M+zVBMCjr//LREO15z0kBsMMnipEOCFoabJj7Tn8Kbui+gah4P

+M9lGsSJqbsX2NNuoth6UNo2P5zPnzSPQlHLTbjReui6ib5GbPb3B38AI/5bPAergdy59EiuTbTdY

+FuPA8XF2D6At7yOMYbLq46GvOVZdNfMORmWlbW83ebt9hFoBs5Usdz2jXFa6OVAHvWr8BI6LuwOY

+BYWZOPGxp+qLO82MojYDZKmDz1bGq/wAOriHwYqiam3BfLMtIcvIoJMhN7+MjMGrQJbhNfzAmWPv

+P8WYQbTOgfezEnDkVC4Fr86fWYFnAdy+LXC4FhW8MQ14hEIJVaojXkh2y53q42m7b7tg+HGjLFfx

+3VgsF4yrwvLlulbZjb2tNUlF5ckLu3Fa7CERt/EgbStcR7wgauyddCyf3hbBctr1kh/c3glzjoCc

+z4YqaZyvKELnpwzsCxhId5T7S0F8A3Y/9ZVjWDnyleATj6jB7fpmvosK04Rd9Xq1H8K+eiCJy2Au

+AhF7H43rsE3xEC0CXXSn7fT55zcI1LVxFYWoJz/++oDoCORSj/IF+i3nULgSAi042o0VR5udympw

+aMYyM3xNr8fRsgjNqY4RVSJb4+Q0v4sz31jufvb5emLaq8jwQC6a9oqwd5fXlsHPjXjnoRhR/VF7

+yCCCzmx3/zXL78Tzhbm92t6z3KtWMbyr7osFxk5ipcvNYCwToNzJXZfKD615w2sWHQX3Jvm6Okgu

+LwIVpgXKASSwWatWIFnISic8MU4gDQJHugpBWIFyXi6WgJcOPy3F2K6uihhPL3FeamC6vBbnt7xE

+I6lzCyLf+fSSfbE8vzkrxcpi43Xd6omMqAbW5sZzeZURT3zZPBUpGYTMpWzNI2G5CmOenTqiw5jO

+nU+yVv3mUG2giNrWJbcci3he5mhCXzq8PTmdLX2ojy1VdvcuTyvPX02GTT23M+Gb26Ae7iczw1C3

+I50nqbLSSiYtV2PnRnwYL5dxLu8cITrrWd/SZHW9zeVdOuJ0M5rgTIp9yx6qEY/q+/o5sKJa7HyK

+3v0LM082SXYa82JuXz63N70v8s6m90Wmsm5W2RdppMhSJ5UGjVCCVFXtOrXhtM1TXWt1eZeqXTRM

+St3u07uB7eYAT17nGN4tCJmlqHR5nY/hiK3t7J39BpUmHQaQSafBroLK+hilmKOWvbJhfmsSgzN7

+n2BnckxlXNKpsWe6GutAY7pqb6lscKmHT7PSaYUMl8HosN79yQmVNbn0aJowdkLFPuiM5zPdeP4t

+xqpbu5vB2PGYjvXMrKlFDV3RYYAcTsv9lSxHW5BWtpGtzQYEqTpcCSQlwmsNFBVfoQDpbUR19uct

+bDulun1moVQv8Y/NLOxyfD70dKMNe+hLRl89Ye5lXE+lP6Nnw0w+/5PSgjVk0q9zprlXyxJkuLz0

+RjjJFrIg55dx34EBuLwWODmzwcnX+Yp7pQHnMqd5auBNHNSSleSey8u9TLzUJGBlZpuWu2hk0/iU

+bHdjEtijBc5FsxuYg3C7qgfIaN3M8eQTX2ZixSDWJ75PbhZ7XUUu2nD58+UuNKOmREvOq7vQiAZr

+YyAiAokT7TcIJAxu5k9WtY97eyP8hL1YMGcoXWiWnt4LkxNtTe8LvxPz7ZC9Aj7m7ESjON0wYtgs

+m/XxFnbf8XT3LlZ3odlgbN6JtjbG5B9m8bys46/qXVC40Fy0QPG/caGpUR4FKDsn2sp4iphAAilG

+QfNzvpI5igezgcI561qmOqgpJ9eGIOJJrDixCyLmkc6zlB5FZ/89UOD2SttkoOR52hnmTT4um2NB

+ZTKTUwkjvkxTeZqDhj+WSxX+5DbmM+0V6JbWrnT/LuECdhjzbwpjFnJ4HcI+ufXyixHedRgAgPSx

+9/NgC9JcJNERKPNpowXJZO8jUAvi1tYba61Pz+2fxypiZUtZ1j5vC1MfyWc7btLQdT72ULY9uusE

+3k6LPTb7Mj416fxrBHPSALdg1o+s+RitzEXCPqDWLubtdEtZiTAe0YTWHE4voo0/uatc0u2+E9r8

+PmcPPM25I7Sx4M2jXd+8hwRWuPwQ0x5h3ES/brj9msb8C4FxC4pw0UpfMiJtlM48noHGLGIfrz9L

+Ylen5T6toHN5KUQd7n7lN+GmmY08B+MqLNPrwDJxPDgvjrFCpxEtnBqob/p1Xcflndd20sARYpTH

+giJ95OGWGCmEJ//2bIy/HRjcjJJpIyPAAFZXeHAtNioPwugQIaTkTrd4XjZhqyBIgUX/prpIrLBb

+gaVgrk1w9fXNPIomwlj0TK4lX+4GxFzZEI0FFnmN0S9AMiHnA8eOfBPR5hjlmQsbu+hNF8SibeAY

+xZL9hilnf6WIRxoenI9W2jU7fzLAvWn75eFuo1kEAKHJ8WCVRUB3crLPz2YHqi3aXN5l5A7bvREj

+BuULUMeiH3HN9Vkn8Gj1lSvwvjsr7+HaNLZW7p21WCYV3DiiTbThN7EGZGEBIpZdXqtMZmAuBUqc

+0IhlktO7Ce8hws3ScRh6sfz8s5JYdjl4IhBG4ddiWeEw9xsSywBSyEos28Qslh++2tblatlzth4S

+WN+mxPLzD3KYTfgRCbJsxbKuw6wqlq3yuezEMkpkLcePTiy/jZaI5ZiPnlvSiGUA7snJWG9Nbg8s

+rSS7wOrDg0Vm/9JsRf1sl+O2PPlttHG5/7BZuf82WkHu2/mr5rdb3KgljnlDNLa9YTw7Xx9usrMj

+ZEY7NA4/Jb7vfPZpMl2tvH5c6qGaJF4/l3cxMv9Q3azXD/OUdL+fDcGumEqKKoSZ9VhERqhSSY1k

+kXr43lq+k2pkhNqtCIDSOpUNbkXAmE1oGGGcmAP/zoqMJYtSzn6VXiLTkG59bFKvl2baL0tRQtwd

+OKrXKuXMPL3OZz/18OboZFhMTCdYnJf7qtjSdYpUrPMafEiWgw+D5E2/nk+FpMH1Ap5md2iZb8vi

+xm1PqF96c3mxejrrCSX5V0/oQs6qhdMXctUT/Pyq4I8wtuWw1DpN6q3xBonDZPm795Ft3J80cC1Z

+rMisZmrl40LOPzpD9+rOXi7zHdrCKmpB1ZSUAuviWaWYDYz5XV3Sikdf9fNsPZRYLLa9OrnR92pJ

+v+IBM1f3at+zFCtS9BtN38Mhq34u72LPGEsz81bu1XLExX7NA7q1bOW+KGce8lRrwQuyIlQjnoZk

+Qz+7StnROBYYG+4hsS/kFR4+C7P7CewKeQ+3fLaFvBizMGwJG6YAL3AY7904Aidub/+I02c98m5f

+Z/xEV6PdcyggV28GY3KDSoUCvN1C67PpXATdMgEH1qtlfftV6YECd0z26umUYmNd3rnCf3vwSmsX

+Ru8fHRhojLoeG6ux4ytN6vIa1o/3Da0zqeAvKpOqroXCQyKW89ZUGJRYktgflhOHnckDjn2bDew3

+w8lr9uQe2qZbJhVrSTgmNx052vu6OWCvwVsZTcXdnl0aRkbX6hwyh/cpyygX6hnnbT9DJNEYMLWv

+Gl1wp9AAZ2clFXcXsOxcqGILHHKYhYKt3yTwZywMroy5sn4Fk6u4R12XQ1fDu6gTrkYq8xHe4u6A

+LkccmB5dyXJghXxLGuKjrUyZVwjtq74tAtoOCCT5lsuqvqkSkp0QiLOoKFyIBv7igJgSy5ZU2C1B

+oBVHqwb7dhwtq9wISmGp0nG0atCSMa/ugX/Nru6gUSq57OLtMOJGEsu03c8+Vx3sXCofZTVkmYq3

+DsZWj8lYZ9pjIIXWs+NYCQ1HeANRUQSJMvJOA5RTloS9V8geY/YRiOX2sNXpVXZfO791bmB3fnO/

+Ob0WOSR1jio9nDqMUue3qHMUKUq3csSvZ3Xq1PtgLTyFzj7mWo62It5lsXTHCh7QtxM2FTzNU72C

+Z3nNCH3NqWNRhjqUGk2gKpSkUist9TbLvL5Tytt6qEs5qXXL+XNgX1tsWcA4x5NpzIu5fVmUPr/e

+F+dLgFbdFzqVdaV9obsJaJVqZXPYCj0kv7mcCauVnSuZXKsdQ0rl1YzK2W3zVoeG7k4gClSqOgwi

+0zH6uCoq9Zqm5TWJKxvmk+MfKzGo172aBeH6hvnk2CwG7Whsptpb00H7bCWTY3anyg==

+            ]]>

+            <![CDATA[

+            wu6fUTK4oKJdvHOv77ZHU8OYhfm8tvE8OTGL+bUxRjK1N4IxOtaj62N2xDDGU7kop5dYjvYgrWwj

+2wK1GBCkAsngUZwBRcVXKEDSbbblZ3/ewrYJUGKQaSFlxto/ZrKwna65GX7YX3PzMm6bkxhcXmcj

+fEkRNOU2uSjLZH/MVudKwJki71/ny1NNV1U/YTxUc2jvhXOq3+JeJj77GxbsfUpLarRXYS5OudZY

+tLyOB8jCulF48vlyBrH6ck1aiOXtQBZycUnJMoU8cy0e8SUIdDjitgi01GDPraozV0TgnO7h8qrV

+mezF2M4Iv/i1C22+sp7NL5gf69X1Utw/ttLphhGdXWgu+urMnRhrvuJgreonwJhDSRZ9JTR93oVT

+2TF1FcbyGw6xEnoThV0uLwL1+xxUFSQbF9oKt50Y9+9iungVwpJct1m2rVOe1oN9EBFLQilreaj8

+9/k1k5mNGRFaES1Lk51EfRXCyW10b+Gum5XuEzVV5tpehbBaLU9+zTxmK4x5Hd2vlJXQs6sQDBHe

+Ncuzac6ai648+5cpzKq9j0DRJIFSpoDmrSNWK2bSWSYuF3u2GjreBV17o6rGpzu4WFMaNitda90S

+gHCvFLYy1FjZlomWf51XvFApvJHbgBFtiSnt7juhjTZ25aIqX/5tPZGijZNiY+p7ih0rvReM7LVp

+bKWbEVzOhb44In2Zr6U0V2ZZLPT9avlsv4zANHePaOr4dEE3k/u2NxB8tRwvTHYMNyla3wxGjr7e

+XB/Rtn4dxjugvrfHdkSr+vWRla4zu90US1QXfFhWx4IqfQTFpCFErHGY9eqMaS9ypo6MYLVrYbqm

+wmNTKbwYa1mzuJffzK1NpHh5wb9pnWlPU77sfAWU7fpUzq+XLzuWKlBXeoc3R2M2gWNT2NgQ5XHO

+08eqb6c6TMtUApRijiUmoK8cH9sEjkmBqpPPwbVCxOO0Olxz18z+5PRK30Ogqv/Y++E2mUWQts3d

+mcsioDo51eGiR3Gte+HSK30UwbF4+W5Aa/E5rW9Td0Mpld4L3sO1acz5ywj0lgwZj13re0mOYnkS

+WHYXNGiFmxTLYCjSaxfLqeieQizPqjgpxXJt640yZ84olpdVCm9GLAPaIpu5S40ULy8Ry6abJ53K

+l9cUywseElK+vCGxXNu63NDNkwRZTmIZ7f3VKj8BbSuLZWqPYnFZPhcpZF0ill1GK4pKLL+NVq/7

+tF7LfC3watmKVnWfCzwZetZpvlpEL/djPmGjch8g/N6hlfsUt35jzfcKdZ8UlvjbiD6J16buU/X1

+kfp+2spP6rrPvaM71vnsr5DpOuf1q49NXr85ywJLWTfo9eNSD82p453DK6aSYuG3zXUFhsiI/YUF

+NmRRH9O6Falvn6tu+va5+pjarUhzXUE6HF3h7NOVLK9834X9Jq96XQHF2Qfq/+11BarcV8SWzhuO

+xRKfvBkkaqluNN87DDCZV4tjMftQ9eInqX03O1GsmC5jxXTB5fWEpNCb5Yeq9ytJcc0PVZs+U+3y

+/pEPVZs+U004/+Y/VG3q5/L+kQ9Vmz5TvXwta3+o2nYtG/1Qtekz1XgTxR/4ULXVl743/6FqE3Au

+7x/5UHVg/jPVsJY/8aFqE3DEB7v5D1WbPlOt1b5t+EPVps9UY5baH/hQtWlS/Dr2H/hQNcJg+Ez1

+zKuw2Q9Vz0sfowd+kx+qXjVz2KGM0uZD1RaRRINm88sPVdsBZ7aSaD9UTVtAPqar4V3vQ9Wm8Rbv

+6nQ0uWg+VL1SDS/dh6qdSUVZC/WHqqlLluc/U22fb0lLfJYfqnbOt/zth6otEGj7pe8Vk8eXIxDv

+7KK6LJP2gAysvrFjVWFHjcAF14nTLQEOZu+y8uwNR3lsyrMp/HYLX5Te4P15enE27dcZnDJLlxdn

+r+KDtSnPXgdjm7ky11Sc/ZuoqFqevYGsG4rybAqQyL78rjybojjbDmNrOq1sirO1L0pv8nKFxeJs

+my8ZrVKeTZ2j+KvybAqPmm2Uh748m6I4Wz+Va5dnU3A527XQl2dTf7X8V+XZFptoLs6212FWGNGx

+dtFKiq1Ynm2gWrvi7CX7QluevcK+/KI82xKL87GGjeyLo/a74l2dVuXZv/8CO015NoWyoX+Vae3y

+bIribGM04beV7vbF2evdaj5Xnk2BSrv85BXKsymKs1eOii6WZ1OUGlvl9a1Ynk1RnO1wLxxNeTZF

+cfZ81s1a5dlrY2zFCkrH4myn80JRdkwhpV2UQK1YfWkCaZZtu3559iJIFnnjvy7Ppqys/2V5tnNx

+tjHXGtfaMicOUq/U6uad2bezre7oNn49m75Wfdm3s6m+J05dNm7HmEw1VrTgrfjtbKdM+818O1uX

+yNZfz157N+a+nU19k96vvp1tpcEuq6OmUmkWlmv7bfRPuotcHAvRSRU1sffX8Out9u1sy7s6qRFI

+p8jQ36vwuVAZR319CahDBj9//s9VjNvc1LrhinEKL9wGKsYXa0X/RMW4PcY2WTG+gRsOKSrGaW84

+/F3FuDHn6s9VjNN80eD3FeMuh4SjzVSML2YQ/YmK8VmFnWWx8aYqxvVK4SjlQVunYnzdb9itVjG+

+HGObqhjH/OT1a6doK8bNsdc/UzFuWVm/8Ypx+rsIflMxPl+V9qcqxpfljm6uYnyluwfXrhi3/VrW

+RivGN1OX5FQxvkJd0i8qxhdy4P9IxfgGaIyiYtxFL31/UTE+R2N/rGJ8lW/Wr18xbvPN+g1XjJMb

+QTna6Oq6FeMu7+I3zzdfMb6hGiuHinEDJdOXpq1cMa74+uxUnk1VjCvaBb8ptNmUpq1e97pOxbi1

+72LTFeObo7HFWPbi3YMrlqatWDHuWsl0Wbdi3Hxn15+pGLe/qXWTFeOz6qc96vvX1qgY/81dN/QV

+4y6KD17/XtnQvlpOUdLyi4pxu+/ybLZifDmNLVaMr1rfPXc7kOVHHzZXMY7f4LbKl95sxbjyjdTf

+524trxg3c5g/UzHucvZEbKBifMZh2C3ar5KuUTG+5t1QK1aML/GQbLBiHLTxWc34H6kYJ2LZ/gsg

+m6wY178AssK3gleuGKeIjGygYtzCSvoDFeNk923LiTdVMW6oeqZ1WK9RMb7eDYerVoyvZImvXTFu

+cUfEH6gYJxVDd5v8NtKc10+tGHd5rT9xv9mKcVjLrGb8z1WMW0ZGNl4xrkdGqN2Ka1SMk7w+20/c

+b6pifHb20+Hon6sYd8i031DF+Er3j61dMW5z/9jyivFFPC2pGMfacPwG95+qDtdrw+Hs/7HqcL0f

+YuxPVYfr/VzeP1cdvnwtm6oO1/u5vH+uOlwvtl380vfmqsP12nC9amDz1eE6cHNfYd5wdThdZf1v

+q8NNlfV/qDrcsbJ+I9Xhepk26Px/rDpcrw3X5MufqA5XRUK3PQWM/bHqcF0xVK2kP1IdbpcDv9nq

+cJMO84eqw80+pT9THb65L+Utqw5fo15sjerwpV8v3Vh1uF4bvkZOL3V1uL5cy69mbKg63CKj+w9U

+h1tmdG+8OlwPYzvUWfyqOtzKStpYdbiGO6s6iz9QHa4jw+VIT+tXhy/U8P6R6nC6/LHfVocbswj+

+XHX4YtXzn6gOX5ajuLnqcKcI72aqw/XacIds219Vh9thbLPV4XptOE3m8LrV4TbZgxuuDtdlvVrN

+8Ueqw3VEm+5V2Gh1uJ6M5PL+uepw27VstDpcrw0309gmq8PtdZhNVodbSbHNV4cv2ZcNVofrteGb

+3Re7T3f/Yl9W+HT3Eovv19Xh+mZb6Pwbqw7XNxtj4n+qOtypinMz1eFzttgfqw6nuleB+SgIz0tR

+afAbqAs3xpENCRIur5Yi0WvZf8A39fC6+gdAz23PfvtsU4W8lLdq6NLeUsOD9X1TfQH4nXtFz1Wn

++MA6kFLq4cd8K/ZKpZwLGFuxlNMOY7T3XThjbPHm3xXu7Jpbmq0JvxJIJJL4RpWO5Py9dFtmZZ/X

+Z4unFYtI56xXE1Br3OJmF+giX2Cnrfek0PlxpQu5O7jSOZ3fwlK31/RPfJmRnaZ/brLTf/0V5uxC

+GZoN56er9l3L6Wh7EziAt2AU/8bpCON5V/gyi6PT8dzW6bg8D9Z+N/ZWOjQOVtL5eldSLqust0gJ

++90nwGcC0eXdxM0Jnwvp7fMItPkO7xIELknctkWgrQ6DxetOyWHUCMRZsHjdyZ5QcWchIS0yRsft

+JbVv/I48pKlsoPPB9i6sdn+NrMCLjX/172KzXzQALrFwsNcrfdbzvX+LMccP/tH5LbF6ekPfSL0g

+Gd+/zxsnIFmkelvd1EqBJ0c/03zKnlLLY5eihcXrv/w86sw7Olfsxp9UJhkb79Iwv2aWt7UPlj+5

+DZhvgFlnm2IlLSrqlFNHK95jJftjtsaN0/nVE7xtMXbk3wjGPFq92C8TqfMUSWR0X/xEoH6T222I

+8eWtfBtr4skUNVoe5XFS8rF0nSYd0LV6gcZwScIClsZaHNy1b5zGuBB1kY/L61RTTCdzl0vcue8j

+n73HzO6W9S+KwNJ17fQaIrxrfWm39kZzwYOLshSbSvDakrj+FWasW9/EbRFK1fr8EV73Vg1StR7c

+HI2tKn2tZK9uv5AR69Q0tkLyeLmPPNnGj4iOHqoybmdBp+9+uW97HdLqYWyEcF9nmY66pWFEuzIP

+MuLSa3VcXooRLWtT95ORI7simFtLD8n6sVAQkxTizUVzNgDuHA3x2TruF+ssgAHQ3j1DVZu6nywu

+3j24VvnY3WB5berc7juWYu+vaT6Z/MmEOjZTm4rl15qz9LfyBavWnWtTaWksvpAgYXYiLctAsPlm

+vQXfNDtCKArlZoFxwpO1ezoAj/u2yaJs9jlNYxRa+Rws13K30lVZSyuKKb9dSx01A/N3o3fcIYyr

+3fdg/33ku5Xuy1peiK1V1/76kga7FCVLi8/5S+freB+svl+JdetrXZplhSyrexStXKSUH8PEEe3C

+H1Y0tsKVEbWt0xM7sXyvi2UHbkkplp9/lovlFeRLbeuBxqtpJZZt7iGB3ac9dzRimdS91jfgc0G0

+2Yrlxd13/Hg3taavHz1Lnny/MbGM5dcgljdwi6ZStb5ULK9EY5eOFzzYiOVl36zfnFhe8Chi2DVo

+K5YBxlsa08wklu3X8uAslqkrV3Ur6W3kqFgtfPPcuX6d27TcfxttWO7HfLQXSnjnIolLyuv7v7xq

+cd4Sf1jBEaKOaIs7kxuEourZWUxi/brz2aepYLfw+r15lnn96oaPECy3xOm8fh/psIONiH4YmysX

+lpU0fzpduDCfgeuiuNOg+mu34sI9ilY5Sb9wK1Yt8y3Xvn2YlK7TS2S6z50fUKvXWi2PjdiyTC1a

+48KF+bNfpfHzr2JN6kIL8y0LQthebL2M2w7Xg6nLWPZdiHnr9TZ2YDsfRcTcdr7ZjTqqxxHxWKhk

+6weNXrLfCA2Ske700iQDyFSpbktkEoff18+5/d1rjbk0kruZj6GfTebvHwuzfQYrSQ==

+            ]]>

+            <![CDATA[

+            r7xXT5G5+/uV3l3vrNRqqTgpXKe6kodNX92XWrnD7HMY1nfvy/lLXDLxk3r1YWWKYg7MWk8aORyx

+mIhXSlOsjz6TQp7dafY+de+ZP1zFTCNWa2Yb79niaMSNk5799qh0EPLGdvn7y0gyIgbGn+cHg2nN

+5d07a0ny/snTzuOW53zi9yRzNwdb1VcxtlO+3854v/vlwl7rcxgSy4Wft+h3s9BOfL9ffeZbZVm+

+ej77uSuzw/xH+bPU6d6eHlxO795O/b63t3TA/1WNfF33ioH4h8s7DDwmJiNv2bc3GvE7nq1Ba3Dg

+ZXY+4/7HQuMuIAcufcc/O71CjHu/OUoyh4dbo9FJrOjZfzm99HCp624g3hASTI45OWZylfscc7o9

+uGJOr68+R6POSWg0/TwGbjneC17Vw3xBjiXL2+09UkIO63vOhqKF3S8pepLOp7rRUoAUb8NKKxWA

+odUMWFy4YJHnoOyky2t55YK/05U9ga5Qwul5nXRjXG2vlDgMnQlKQfte6ufGGsddVih/3u78jBJ9

+8crl9dxf5QMOKJq+h3f2d70PxR0p3k15i+XTi7338vmRIO9eirCqlCdZOaifYIF8JXB0ELpH4KKJ

++MtrN3Ph852Qr2NXS0z2Lvo2Grcvthmu9LydjL4kWpnz3slDIjZ8OTR58oFHXv5kg9I4LBcvSp3Z

+6TXQOciFYlo/FC6vdixeLnXxznDdyWH6U7yuwl6NX5OwF/dz4zx5rcY2433/JTf1BD+/HvC+i7vX

+rCd4ef/g8YVqW3jLxQX+iHtCSb7oCR3svuI2HXtC/dKzJ9AIy4iOSPKm8ryXrTPxKBk7es8zTXLz

+Bfkt3notfgL3vffBqrYP8Tbgs4+XTGs0CiZ7g8IYVnX/g23NXDrl2Up8bSe76U7tgGWY8ftupn79

+dpWUgsNBIHv3cAadH7ZgvsA7ov+ceztrBhn2ddub6l2/SLl0clpLDMdsXfvi57HYCGYbje39RPzi

+G459Pj8hRhPDTSfbidF2c5QKSd0rht3zt5Plxt40WdqX7pKDQbiAiuqOWM3384nYdfor+x5qTxKH

+J4I3kyrcNXAtUZc39/52PUxWMo8ckHvwKPPBVPFaD5kla8U/3xOHomeEx8I/a+sd+hOFcqrb3wvh

+YLe4k5HU90/Mmyold8SUMAk85XyDdzbzEXq6Jpz/XQCiak5wnGrm4+U+muomujyOSOJBnvTnU2Ma

+uwzwT0gHeQI8kFfoIpe9vJNynuBNLvfmf8qLk+FrEfbqJAiAeHynk7dhHVb1ICBPvpgGEvGCB+/V

+3d/O5PNnUXh7Ozw3jm9P25zMCBc+zqVboaeUEOn7CQloe/rgTX+Gzptn22FvVN9nPPvv51sAfI8N

+ZILeac53dn4eu0pNnzLn54ldvS3e5qrfqbPb/o8yHzethmCRzS29i/gofj0lbz7ao8zHwc5btrH9

+fUKmgrUAAP5c9uc5ltv3BwPiduyhnG0ED0Nzi7ziYNJUn7iOdBhT35c3B0AHzyO8iyBNeFvmI3Uv

+5TKRRw4IqVrIZTk/6DAGdHDbb98JPnXwpfzJtqMDgDa9bVhQ/vF0YAD+KPdzRnYNtuSplBhNc3tA

+DNU7hvdsSZnw9WeGbCLoYx+9+E6y5Km2YRnRi8zF+3gX5N3RC8MFW92UmLj/IfKVYQfVLrCmh0ny

+mg2V1c1pDktkf9UuqXorcfdxew8Mda+QKlVPGYIMQmMfsIM3vXLu+azQSl6nU9VM/txzt/CgzVyQ

+033kCwXfxWrhNpF7be1UM+fdwFXmYzA6VhgXHy/vptqPpbv4x7SYRsJ9hrOPh1PRrggLm3U68k25

+99PDoa+We/fHMhhuu1ZhfNr/zgY6jxNxO339tgCS2JzAvpzswMjnfTwvd2Qtzy9HL/nsQaYd8tWT

+khgN5zLVShDQFn1iuEk8KRe97Yf4RapxnzsZnxZz73fVJChTFQGPVCpZDu1cpi+P+mmVWzQK41Sp

+dH2bavSnr+q+SP32M5+tlx5QF8yHxRPx4TSdvREmKgnkq9108z54n/kojd+QCd/msuxoJxOs/eAK

+HkOZg9rhbqzd37sFuCK+TGt8Iqi48wgyUYJAt+S5wiT3FryLoRpbMpoNVr4prnAPxBmXcP+KtDOD

+fLGYe+WZc+nPaF710CJHAz6dq6AElMXbI7wVMHm7G38nnfAukXt85yLV9VYq6XZ77AG4LyUET8o2

+Iu/+6F23cKqfl+hd6akCP3q13OHp0ylhZqQtdtWOd2KdV+kDHrCwFvVAAgCZVmfwdOo9ff7K1ivZ

+iD4YcLTUrfhQG96R7UbiLGdaD35+9ud76ps78mhC5GwPr35pprrhmwBYQS9+QmPZXaB5IZvztU5e

+koPP633VAtMfNL+esrVaRD6Wz7mBgtnLs7vvxOi0B/qD/7WUCd80OPJ0XudPI59+gbW0PytvoFsn

+jyx02ZjBLQ5MagtY6+1OIj7oVVPXk9o43op5+4oFdj4efOTeC9M9PUtAb5vd1nj80yNX1YDiGN2L

+7Q44ARTjn7vEwWQ/E5AjwiH8dniROBgPT+DB5UVmWitew4Ojk5y8c9NMv1xsnxEFK3oX2rrMvV/u

+RlWn4zAJVtL8Mb0GkLlptvF4RITjDUixwxGezw7uwTnoAjxPfBd44ivkyEXjjYeQqV82sC9+iEdf

+9fNsPZQ4V7I7duIfZweV5DUzvERCO1dE+bTH12HPfyrkphhyKxdwgYc0UWjhnAs+YKg/DaJsHIbe

+cwP99i5JHhx8JMuT4TSZf/RLsBYkP0PrTf/7OVvf3X87O3rm7xV1+PrH30hdT/d8yMzOMh+vW99n

+2zenYeDyz/d4MdBPznfx5QO0DBh1qGmJUCAcXCZ44PKysOXHMJjMAQNsbwMf37uA/f3ZBUWm6kve

+dIf72cb3jwwaUDKEU3WIiILDEHwE9p/YIlRCrhc68t8HOgQtZLnECsTPI4XVbFv29DWMBS/ZrVw2

+44+aepqdFWyl4wOQmE9QjbY+U6FYZkdhlLMfYBS2PDDAzVaydNX6grMvtKeNeRLA+wKkQeZi/2kH

+hmgNDVpfIwVSG9EvC29PN4fBx8xzLhMUAwb5eXJzeJ/z7b50svVyfpoNFMJKpXDKm8mn3vncc3On

+TXYf21hgAPEJKMHXHrmbazzHW7f+TqrxszVSucXO1jjnL3ZigePo3Vn6/Tu1n2m9Tx9zb5PPbiKW

+89ZmD7ZcXmApL8cKD3kU28+gj+UN2gxYP2I0l+kGFUGIBzslTvKTo9xb98CTiGXjxaQcz4e03Q0O

+QPdoT3PJXiyo3X7Uvp73Wq9iNhivwQvtJMb+h61M/uLxPc3e9sY5z345pD/AL0tefLRhzyPRlBhk

+H3DEi9Q3W2tkcs+X7Wzg8/URT+A78TilO1/iAehM99PoiD/rpAqPgwc4i7FnEOSfO8Ajr4RE7Opb

+Tl0Xhx1QaWK78tfI8+TyqqSksLAPJtXtDUPK0dUV7MdGixmNjg6wyzZoLh95llC8PphisOxGBvr1

+WFWQcjdbOX+1OAEau06HjomCiRufRMM9hBYKo8O9ON8ooHuzjnzdeAfw2fYkfpLbicRhsNkkl34R

+X8H2jzi9dHkNyuTifEXDDVx2OFHuvkrvnGRtVwq7r6z1kbuwWqvFzNuOKx3sm1ZK/DBWawXb3pva

+ySxdaYl2pWBX8udPPaPF0GyXTLhlcw+n7MztlIpx9YMO2mw1NCC+iDwj/EB7UM+bpB2efXgeb3u8

+X9lG9Z1LdS8OemAWHkfQ45jCjwsUcu+xgZDzyaI/GwoMhrqNddAJxvAsPsqJ+5J3y/Ld1w+s5AJG

+ko/GOunMJ+G1KPJ9yDyD8Y/g6DHdvLu/VC3e42wQDTcZTIlTwGKd2cl8fJT4mR3rz4TD58E4c/Lh

+gS4Hr7psdnnl67v2de71eaAIodgV030Tpzf8Pdj7500Ypxgh3hC8bxF08OHTa/K6cPaIqn0p984l

+IwqNHcZ7Nwx3dj3NnE6irVQkE7rTnwLG4o3rS5BExQFIIrkGnLgxVuAhasD0nTXc9mcECeSnPUhP

+I5CzM5BA5zcDlRmXbYEKxLu3V6uDhLtf3O3ZAKXcI3lli6f52wqvwIZ6207ExqEBbvxZNnA1qIBh

+cwUWX7LYK7dz6cZNGv0+j3jkuHTnKBWwnPSmx71qzuLMOHMR2N9OCfdcCk1PJlke98tAVAfTufUl

+eCLF/FOQKhcPZNq5Sf3PhnNnNAA7JQWpuWSmYYlyBanntQcyKdiVxmljrPVOT45/aHd6YVKuXTJE

+RgxoxS8bF3S0Lq7PFqkwaeJ+v0ZAgmMWfCVP0T+mPce7Sp8VoEr78Wcr8rICCXSh70s7kF4JSGhZ

+2AGFmDABpT/FOzhfaEGC86IDdVKZXC0Hak2QXN6VgNJBwrinn5YdWZz9ZQxpTXZEfH3V4UrUbzpy

+6oGc5J4tJ8XjiDT2ctFWVNq5jajaHMiX2rJzDgfO4pRjnpI6LF7IKh/j7jcsJn3Qd9+O5LoWrOcE

+bwS6ACm2ucNne/RA66Mlqo90OLQmm4Hd/xMCBUjqc6qTlI0UW0JUR5z1sMVne0rV1rJkWDs+XXz7

+oT0AQGP00LbGtsMyuZR4bQuryzveyrUZm2EHnvWPK8A6O654e7bNgV31uL63bY8rruX0LLVMLFf7

+NsM23myHBQR9GbgAcpiFYV/smMuLDdWW+9YnrCAc6XFkI0fgT24LBQt0vNpsXXVgqSkFC4G4znDI

+rebKBAkuVWXPLSZozaLHX9n6wQfGNkqvROlW3kD/fOr7MjQBdf/5PtvYFncUV/j1q3hMwhHogVfM

+WX6XuInU3y4+vtEPc8MGvqN7DJtP9k4fTo7qSeb4oqc5Z6Gtuu9ppD+fUt6Z77+L8ZwfLb7kF4l3

+BTO7NL8QrL8bRhfNceajUsJgzuN++uPos4iGu+KwP6yL8X7q23fzEW/tiUXcqyd84wIMlrO+4myC

+P6VZXOgZzDrf9uyrGaL/Z2YbfQEXzDJKqIfkTighsVz1VQkVsPnvSS7BXNwCHsKP6p97mXsllKV4

+/LEtefotkKgRWuJq3OgcgxhcsnJ3GwC6ewkYbRowOQ5Pu8fVbH1wFkoWm/GmIVjF+/vbYMfd7mTO

+u7e3JscnCQShlcTEo5pDNzhGk8urhE8OQ/et1Hfha6T4B+eCObXk7e7hMWz33fViQOm+q9u2JCKF

+33ycj0lxZ+mhQiL5armv7fTkSwmu5E9+BD3yg9vZSXde3zit7TEOW7LvnwWw9mHNzD5Sss/vM8TF

+Lr62f8haovf8Yc04PYnHPo2F1PfeaU4z631eY6ArffyilmvNXmPzVZT775feLkasRMXi67xe9IHG

+RiLG6bbk72QW0ObnZzHTBw8cvvxohp2JEj0ddRp+DdZ7KfHA+MPan7tg7+d8ecaLzulLOHK1XYUY

+mrvBfG6fO+a0bXyU0Oru5N738i9wAo+2SWQE3ZgZA0sBGkqA/f3QS1Yus3l9c1xezQ==

+            ]]>

+            <![CDATA[

+            /+uVsVMcWj1fydIVaJkY6tHRMYsgyXgOCkrwCO24+QfFRLx3nDYEfV74bBdsZOKA04JCxEFV1UJG

+4ihRTudvQA/xn5MoHjpBJQw4PGldUl9JqfH4kDl4KEWVcNosGAXblPlIxJ+TF4Qnm4GKYrToKNmv

+196V84K35xzujVvtrG/rrp3JeT8u5gNKF+J9zz9IDobDekqYpkqmiJTCYT5zJ+Pnu8Dx9uE2vnMG

+mA/siNssc39wWf5GHfVkB/Sj/SfVEfJ+fgyc6mRsiFx2vZWSIZQzH4QBi6/16v8A7SqHmTPbEvqg

+B7MY0d3Z9s1RHInhEihmb0LcEYpD15wHqmVuzYIs1/qkuJa5aTc+Kbt3gRbfee27uBjb8l9IJVk6

+BS7YqpDAuPoOCcaNIoVUKB6PEe89MArvNF0YTK4RzKF2Srhp+nN6U8HARA45jMLCSGvvK1lJ336Q

+ZcyOoV8JtxWfLp6zb8PmF9DiVkQbjASC2Ex2J/R5z3Ah3yRZDHUraswf/yxdle8wMuJvXish++/W

+C4xTYGup7vd5WQvjA51PfOHLxfi++kDc/vGUT4c7hyL63bcQqYVovHF7Q4QWSfZAWQm41aJFC6I1

+1u6nSing0lupwmMpqbJWRbqeMBhFD6NQ68/kx2Gq+yzHCAx6nGYWf+metnOJduJZOQJkG9lU/dMU

+0VHjNPL4hHwyQOmH9/wnfhKjQ+IdVN+VO57sXn+3BCCxTy6vOTfk+DTvI9GLROzB10lxX2E1Jq70

+C4Z7Sngk3SjHzCGTdGtag+mTLVX3eKgWsvVws4VWUqe9rTiWQDiO1SDN6O5UTZBIpTygMBwntFCP

+b5cczePdcqwTOK4OFE1BCfoQl+xD7eeC8Omzo9c7hhAX0cf0AI/gzZxWE/Vk/8QzyJw/idtKyi1/

+6BOSkebpbeLno91XL/h6mISVQodOMBZAPWqQrNzv7GffxWHD0M/iTntxB4DK/aAH/gsTaUZqoHP2

+A0OQmon31MzWvc26iQQQTxktEUqVj2QtO3u5zHfw9Oj+I51guO3vj6z/tdYGPaMyzj62Jruq0Nv7

+8CYOI18dZMcvChcAZCW1lL5sH/NdSMpQEiQJxyditUI/9fl+iXZlJ/n8nq2XqjPZpgV97t+PK6nu

+Vj9HojyyeOpvYDgGtbCHDHkQPbwX3zDtpYMh8lI2WPk4MMCFn6AA6v0Za7qlwj7k5Hvi8CwdxsHi

+amhY3d9YshxMgLLRqUxIsgtqzJdaduT4v49dAsMKbiHKiu6Dm2m3NboeddqdvjvoirsOkucse9tv

+DnKjVqvS+s8kM2hMe63+xB1zHyTL6fNzCfhrY9BsQXfvXDyn8aFnOuppV7QxX8sg/aPYe3R5SehT

+zeES42PMMPWBrGuPF6LEx7X+affuq556vywlk8E++xI/Ye+kzHZzms2kz55ftCjq0FyxBKLIGZQV

+AAHdPji8ukjk5fGxdHZ4H84NHgVgrNnR8yOTecxVK7mj5FHDCh6NISo6z9dKkfOZwFseORfqB6ks

+d5YgQfPEx23lKnkmvl9RRc5Re1dVBEWT7/a30KR4UyLit6+5GvD8pytDogS2SZXn1H3qe1eaaCcE

+j+VXp6bwx5kQ1APgbLDdPlaYkS9br3QOM/n84d68CVMAtb8XxByeoprIo6RHvEQTsWtfCznJKVE0

+NTWz9pT6zpwxKg9nMi8khIRhp/RTCxihvK9EX0h8ngTkhffQi/IlF9x4NVyvpRLqOVN6WyzPHhzo

+gRwlf6ReOdxGsRp8ieTejpM1+4w5e6PncXAJyziVVaEU8vWUPKrKxVRWRYh8+ePyJkaNMFGkJ9lm

+7LhnYbj00UwMn748+2LpVrl4OxtnlohmCAKWrYwjlzd2WSudKOaBvtP3l8NzAvycDXSHcfeTH2Nb

+z7eX8zWeZ+zyBZTP4uOBIeqO6QioVPWOMDmvWwWB+CIbktfQqkp1Wyk20bseltQw3selrKf7YZxw

+V8lHNybtFB7A0mC+CWtE5OfwEz6RgYRZmSJIxZNbEA3j4JzhkhxlznOPW9qfhwB3/uHDuKDGjxfU

+ndeQJky07M3rglgiGYGouIeeMOVd+diaoOkWJGW20Mrkdv2lVOSuNNEyygw+EYwEHqN0vP/J+c4f

+bmabc6mmuoYS6J5gdmD3MTdAswwq9Rk6QpqZ4XlDFfBmMauNPDg6U3TDxWS5C80weQ7PJeeh7UOU

+Lu1oPj5ye8e+M2OXe/kj0w7kaxa2y2G2cfyyDasPPphAArFaehx2zGL+ZVwvgfWSDYPpIbfErdxb

+CbpIrOZveX45er5KH+WSjXYDU+Su0vxR5ZjYuEoCByba6VYMWct9kFhBhgQ7dvBzBiRXJCSSydQu

+Lm4T8ZPpZE4rP79Pd46OYwoTBu39OxEvT4qpkPQVSHXD7f1ksfFRQLjK5FNkzcfsY/MCY7Avx5ge

+gihq+NKd8SFL6iTmy2FN18KkNPPg+9p2UnSmzE3760nF41vhKskcTscqHzt4BEpW0unZg+3xYeA2

+PlI6oXZE3lET4zBZbhZZVlMAX/NZ4xFXbKDgI1ZonKksDNtaA6EBp3LBelET8UwJduoJROvlOtXL

+qZuMVsDgIvui/4kZna3UWWX7Ffc0jSkfQWK0n2DKSLo3S7W7RLfLQ7J/tv8zy+vSH1zMvvU10JBa

+64FmXPlBsVVNxCs3Y+Xp3AUcqyfMcIUK+t0+QUQNt+OtyvsNCNtaz1yaUrmYTGdyXy9YUT7seDHF

+xN3D0Yib7Hr8h1eCJ3Swd4cp9BnPTkY6nGXUn+CDC0/wZ3iND04wwb7pCV4+nHn2f7ZHsC+XLyYX

+J70RtroJhqkzqxphq5tgcF5WNsJWN8HURJCVjLDVTTDtoodVjLDVTTDislnRCFvdBMOSjFWNsNVN

+MCUpfzUjbHUTzOVdNMK0mljiifZXR6TqoZ87zDVZs0Kv2AbG4rezTMszDOIZaiTuKue1XFYqtZRy

+39zsURv3PEw+5KoU3UrcbS5ZnmyVcZObWPNxrBTKGzKq2qXXWXrdrVVaHGoXmL71Vpm8ZANjfnfG

+wpZngiUcM8Eau0ZbbHnWG36is7Q0E+yOIhNMS2jzTHzj5ZlgzPlzMKxFkpalCk7rxR/TSkHuO2e9

+2a50a+v45HTpSm/nPnW5NOuNyR5eZx1W2tqKHNiuVNt9ZRmpg0untMiz3TNjcdjJaSATDouPxGhQ

+5JlS/aA+uCfSjhTkaPJOed7bAuMk86Vkus1y2fb53fgTO59e92Wwqy4i4bieJ2d61+VV3gbl9gvs

+pdhuLlnqjWcxpQZ7+tpmQOa8jlDNO8/6b8/HimoL6ucNBu5bWAHYIlFivZgJU+7ec8kn1gPyI/WK

+7lq9sH2+NsY+2sy1S7TRZhJrNiVOhUNrRZtfLpcHwNHe/2XGCgVIJPBgCMlerRnsXxLqrwZBVm48

+L6+2dXpuymExpM44pUYZP1JtMPvSy/PyDGlAq+TldW9WT3UgsnJZvgdGnH6dFApr2VwWFl6BPbYC

+yeWlShb8ZQ6P8ZpCI1Cx4mTt/MVFkDBM+/vEorvBcna0/OwvMKQ12ZHp7L+8U1C/He2/2uaqkQJp

+Mu062WpW59wqVw3k/m+z1Shy1VAik1yamC/4RzKyydGb7f5qRFW3T9SiSP/dlECZJ6kW8fasS1R2

+qU/vZkq1Wsvq+dPvS9M1HdOybaFtLMv/ah6YBjWnmD/ZDfvxG8wCT16WXLrmcU2Y8pXNa+ktT5dH

+dvxjMWwSTbysDReoPitrsR8W7Zd31SF06x0ky4+eSYp7v/wislmpNrlKH7wSp/l83cmLfrOBegH6

+8rsNfn2zAWDM+W6DX99soAbpl99t8OubDVxeirsNAr+92YAU4TvdbfDrmw3UhLbldxv8+mYDl5fi

+boNf32wANOZ8t8GvbzZweSnuNvj1zQbouXK82yDw25sNMC7meLfBr282wFJMx7sNAr+92QB23/lu

+g1/fbABrcbrbAAxgh/sFHC81QHt/tQsVVptUuc9gVh6/eKPBBu8zUEvKrW402OB9Bvq1OAs3GgQ2

+d58BXryl3mhgIVoNlZsF081B0jDIjVPfmb3PmTC6RWob5fZ9/g7AkL4HWVHdJnC5lExV9Au9zF8K

+EM+cN47u9J7Yj/jopGQ5+L1DHEuGywO2qsJl9rHpbRNXMuxVXxV0IPck5YqfWUq47+ygs1XcnaVN

+vM2c5kRg9vQwgybU78d6W1LknzvJSJNrq36B0vM2iWjgqVRiGiUmt783muphDxQE7yAIvv2pXmC3

+qgyWPxmWofMgljn/+jnjMqGngDGW0mxfZAPj7G7685kPJpnjaZQQl8ur31iAQraRhR0ZAPqDUzWO

+fFS8IUEYY1TiOBuaRSXUT3ZwwZEHyed7vp93ti/aB8qUKvGr3e/qLBSSnt3Nu6uFQuDgoslBrihY

+JIHPJ4Z9ufxMRfziyJgRQfJFMOuWI/EJvK/sKdPKPuwBEvQ06fte7r0w4MFw2/pMdfKJseoO1Or9

+UUDf4+5Xoe00DIpKqJ3zfUivWP5fx5i4d7hvOGiRA7meaX1dHDKRev4ED1Ioze0cvWfC0/EDSJ/K

+VHvABJOV7G5HzWzeO+NzvnxSVyH2E7HsAXDQVP1E0S0vSbRBi2Tc1xOVG6mMmaEldX+1AIia4Y4R

+R/2GgMF/H7viQEbnLPuW7TeNuWQurxdayq3JdIgdIm+pVrvTL9T+aY1crFv5j4H/WDfnjspuLhLB

+fxg3D/8v1F2+xqA7GI397kLf5X07SI4mmU5j0hn0a6N/3DFsergs3J5n3DH3rGvc7QNImDfoDE/8

+mLz2BtC9uRh3Ev7/8LdrfwpzZ+D3axcTZjg+4mbCLCcL8E+EkSWY+tvFqIDBC//AHxfwyxc0/e0W

+3JfupxfG3cSxblwCK4R5GcAWInyYkeDtntIWjUKTFGZFRnRjQ1SGhQnRaDgiwUwCy4Yl8prEhwWZ

+4dxpl8AIAI0IDyUAxM3LXDjKiCym74UlkHxuXpLDgihIbkFkw5gCBC/xUT4s8xzMIQphjmOjbj4i

+hAWOg8lEeCREeTfPywCaQF7jZFguvMaL4QjHRsjgcoQX3TwnhMWIDFBH5TDLsvAaQC1HRAXGKBPF

+11gmLIk8QBAVwxLDYCc2zETgF5wtKokiaYmwLC6fA0AkjrzHwioFVmljYd2kJRpRWxgYkrREohHS

+wsusSN7jw1wEloC4EWVWgLXwAGaUcwOCw7LMwS+48IgIA0RkpQXekyPhKC/xSi+JgUHZCKBHgl8Y

+QIYgSWRT+EhUIDsHC5ZwC8jOMazSxghKJwkXjNsr46YubHja9QETQn+YXMGxBLvWI22wgIjSJsJa

+sUXgcBBsEQSlJSLwSgP8z91wKZ0krRMfdSsDCbOBRPfidA0AggGiBsTBS6zyROQEAgduiCiSpoiE

+hAQtUVmQlRYetxGIjYmyCiCw3wIBZLEXjiSpI0UlZaS56RCO/Vvrw0pOoXb4wiyMzA==

+            ]]>

+            <![CDATA[

+            IPBw1sNSVMLjx8Ay4fBxoFlGOaQlwDEflWRcBeCdY4AKeUEGJCBa4HiJER7pmwHqwpPCSHBSgKp5

+IBegdDwgAg/HgQFUzdoKpC0aZZR+oN5ESFtEwSTPiGExipvEc2FJ4pAykT/g8YWJGFw/0iXP424J

+XAQQF4XXWJhbJCQjKQTCs3Bco4h3eJ8nYEELJ/HaYQfCBrA4EagPVyHKYZ6JwuBwklgBtrvqQtqO

+EMKOIow8TAa/8BKLrUDRPJwVNxx2RAgH/Tl8EoFfkUphRs7NCZEwnGGBkIyMZMVxeKwFmCfKAb9D

+YIBvhCWYi8DAsTATxwHIwK2gJRoWETwOliUzEraIsE+AKGA2wEMAoQilIMEpbbhYOHiiRHYJUCVE

+ZDcL7AQISybwwiRzLSpXSLv0Njie5GQADAycDQ4OmKmN4QSln8wqsDLALqMRmBMQIUUA8xwTBUaJ

+x59H/gHUzOGGMQJH4OJkgKLhQvgJqQMWYbGMRFCj8KIIo5x2DqkCuQ3wpGiEENQicRacaL6QUoQf

+iEIi+kKhtYThZNBr1CZUwlDrSiUMiSB0t1eQeVGNBQq6zIuqMk/WZF5ElXkozRSZx2kyT9RlXkST

+eTyReYwm83hN5kU1mcfrMo/VZJ64IPMiZpnHW8g8XpN5vCrzJE6Tebwm80RN5gGlqTJPVmUesBmT

+zIOWBZkHbSaZhy3zMg9bFmQeYy/zhAWZJ1rIPEGTeZIq81hGk3lRTeYJusyLajJPUGVeVJN5gibz

+zBuuyDxWE0K8LvNYTebxmsxjNZnHazKPVWUer8s8VpN5vCbzWE3m8ZrMM083k3mSrAkhXpN50KTK

+PF6VedCiSjNek2aMJvP4mcxb7EVGktSRiMwzT4dwIHELMuKMCYtAKeRI8ApDR/TLEYmwYCaCHB4o

+CTghS/YxCoyHsHxRIrsv4mmRCOETKQBDANkCBxeEqCInkZNGeZacLAGJFV8DkmR5RCD8AhySMEMg

+OlwdSC+ZQTICBHKIUiAaEJ4CvofgImkRlVKAo4AaUwQXIIiEJHG/kGgiynuyQtx4bkVCLNBL5nBX

+NNkrgFgBquHIsiMRWSRwskyUSGNAU1RAARVl8OiwbgVxiE0CCse7F1CZduKvU3K2EYG8DP/KcHh6

+5NzKHApWra1gbOPIlhQMby62zN77mDXCsQ3LUZCehglmbQVjG6yPFwTDeJZNszfxPAE9inxkBgqS

+kKjqBDPoDE36svQ3rdq0Vw1TzGAxzGGAz9CmL01/16pt9u4HbgfsuETYAHBYVuIJa4jgaRH1poJC

+fUwkMtfGAwELeAIt20D3kGUydQQYRASp2dgGS5WRunhU6YncRtUZGR7IA4kTUFSwirAXBGQ/ArIR

+hANoH4hRAJYbxbMCSiacF2xRtSzQhsKiGNUb4DXUcfA8651gX4Fjw2t8FMSOzJOWqERAEhXJogii

+qBTR2mSi2oFKysC5I2/KyIyUNo5lUO+UUF7gaHjM4QVBANYuskaw1AZlNaAyCoZOEdT0WMJBQNuV

+CVok5ABkwShj8DUQpiIyOgHPLbK+CAhTCTkPoJOXREXOwmAGpKM0jhJJqTaR/cLtZ/Dko/rECgo3

+4ySJJfsQAWUayBKMYxaPu9aCImzWBlwQeQiOBaQYlWW9DWQTTITyiVdsDpwO6JHVQUgrVpQEG2Ak

+D2xTCVCWOA3QOTolupxiovCgFER5lKPA2qISCKqe0oaESJoiZAxg5qh5ALeXJNRCo7AIGeUbil8B

+dWHoIQqMYWbEGlgZojxP5lFgqjzqOmAnSBLuN/RiCC9EWxwsFTJ6RJYUoSICTnAs2GdgOpLephyt

+KIeUgnZTBAWKonQocImipFDB3IlMW59INLhA8qmWTZTQHEgunqwZ9CeOaNDA9QRiXcvAEQhUAop5

+BVeirFC0iDJc5MnuE9JWDrLEsaoNilZVgfAK2DhJkb6oguC7qABGFH4eYSKyijGOVfuBbCNNomrb

+oZohs4Sjo56IG4jTMqgN4NaDwBNV8ECdB4YqabIJNxctzDuVBiReaSPDkhY8FKQFjaYFOklrigmA

+LEWJwQ1oifJEakTQRANyB8qAHZIi2sZzgtrEaaudf1W1Mm5dstvndz/cu5ZJRK0Ph4pVhKiAcGii

+HApGMKlQj5VUHQtW0HVxUcQpSm+wfjng5Ni28G4XQLCfkxMRUlRv0XCLAP5gLmAOIOUVNUqG0wHD

+ossCSJNsBuEqXYtXHaYCWgazQVaEG2jvOFUE7UtBUa4icNpgWCBB0CZEhf3wUVzB4qvLp0IHGyIB

+2WOEiaJURnKKsGhBC7hvcIi7hAswHE6vyZfu4qsOM0mCIkN5kEwysapwBKJO88hIQVTgqBJaNsjE

+gXEC5ZAm05sOExGjAfmliLiAXcc1RZQTh2IRrG6ewI/ePpRT0I8YUV2Ldx3mQncZw0pEFBDeDHNx

+ILPwBHBwGkEq4LCg0ooiylt4xrEcWejCq05TgeYqEi0BmJhEDhs6TDhUldHW59RhkVsSLhuBbZTJ

+qsyvLp9J0WKRXDkZLVFclMAAGxNR7YU5QQ1EaJEfS0TX4HhFu+5avOswF4NMl0eGDxKDEYkvDHkC

+4V3o5kEGDOPCwY2KaIKybDjKsjJpM7+7fC5V8KG4n3Nzwepwq2zcXBxrdnNxrIWbS1LdXGC8L7q5

+ZDRaoIlRLCvQQBn0I6C1CFsDz4jbDu0oBjUAaGPRVIA2dF2xqGihBSSJskpVHDrIOFSyZYJpURkL

+IOTRT4WePEmUOGKBy+iDRGUClKYosbeiRNxBi4xuCvQIRlVvInE7RfQmlFUo/1nF18QSrzlxcxG5

+xqMfh7jQ0JeG+pQiHBUnEqpmcIyEKJxiOHthiZhbyAtZ0c0BouDoKwoFx0RY8hpOi2tDJicR4cYR

+7xu6xMhxBV7LEZNZVjGM/jD8BRBEOBF6z2CkCApgVlaYUxQ9hRFeUxRgEjTUOaI/otNMa2kQlspw

+6GDRezEKmnliVgLj5UBTg8MkkwWjcgrT8cAtRBRnuMXoSOOQIEgngB+1EHS+SRySmIiCNYLmKScg

+USP5yKjqwUpA1spIh3iMiJwiXEIhSPTTRKNq2EB1jQqKaxTQBBhTXaOi5hrlFlyj7IJrFOYBjosi

+JIKyBNaLvh5CKKCHMKiHKO5GpBiM4PACKuEcg5qbdkRBhSDvCSIwaWQGQjQCK4ZHgog8F6hRBnMD

+34OHircJoBPRaObQlGAjCmcGUgYwQUkDBRNb0KJnRLKfwLii2AtMBOLcIr1ERlGcJVDHoQU1LZkl

+DJUokQ0iNVEnBgg4Hl7n0HkUVZkzUfU5UMBFDq0HHmMVMiHfqKS4YdHyAWQAMmFfRRZ1woga2MGR

+0Y0gYDhJIjhBB5PMysQw4XmwylAYK6cPNlpGjxi2sCKgXiAqJfH3gdmGDjTSiZFYluxcFIQPaYmi

+3sfxsuo0gxYRthIxGVUIDJvIatHhSxyR8DqPh59DhiKyioEDFEe8wgxhqVGVj+PSgLMD61HCeBLL

+oH8ZGST6LOAXYLKc+l6EHAwZNw5sKw4dh1FB8dezHJIOMk+Dnz1NfNBmP3tkwc8uWPjZuQU/u6h5

+1XnNzy7qPvWZn33WFtV96hHNzz7Xtuhn51H9jxBWSyw2JHJRwBYOYzLYMvOzEwPY7GfnzH52IAST

+n52Z+dmB04DOAfwAqJwHBgK0gfChps6rMoSLomcN0QAnV0RhAu/JnGKdzNoKxjYeScDUJoaBAGA0

+9DAyRKRhZAnIEpQTVbrA+WAjxE7mkBGAugRtOABuGViRsEkCacHzzEWRVyBeAFCGJxYBgioJguIj

+YDmF4cObPEGLwn70yAKrRBbSxrBX1Bz24qSFsBenh71ELezF6WEv0SLsFV0Ie0UWwl68Oeyl2DeE

+wnlZIFSIZlhPDdDwircRaE5ws6CskOOD+8FEyYFCZiMpwWMiQ4AwgbEz6GuYtRWgDf2caCkAaxcx

+ukDeRCUHcSZE8HDAoMSYAP01wiiEg5FscoCA3eHZQk4gS0TWgcxB1zOHngMGhS0GDnji58eRMPSA

+yFdpGTkB8E0SH4oi3zGv1zHaaRX58RZr7VZlVOt0WyNXe1z7q+Wu9fuDSW3SGsITd3vUGk8Go5Z7

+/Dn4G1vgFa2715u9zrn+L1T7Dxc=

+            ]]>

+        </i:pgf>

+    </svg>

diff --git a/webapps/docs/BUILDING.txt b/webapps/docs/BUILDING.txt
new file mode 100644
index 0000000..f5da5cc
--- /dev/null
+++ b/webapps/docs/BUILDING.txt
@@ -0,0 +1,407 @@
+================================================================================

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+================================================================================

+

+$Id: BUILDING.txt 1457383 2013-03-17 06:22:36Z kkolinko $

+

+            ====================================================

+            Building The Apache Tomcat 7.0 Servlet/JSP Container

+            ====================================================

+

+This subproject contains the source code for Tomcat 7.0, a container that

+implements the Servlet 3.0 and JSP 2.2 specifications from the Java

+Community Process <http://www.jcp.org/>.

+

+Note: If you just need to run Apache Tomcat, it is not necessary to build

+it. You may simply download a binary distribution. It is cross-platform.

+Read RUNNING.txt for the instruction on how to run it.

+

+In order to build a binary distribution version of Apache Tomcat from a

+source distribution, do the following:

+

+

+(1) Download and Install a Java Development Kit

+

+ 1. If the JDK is already installed, skip to (2).

+

+ 2. Download a version 6 of Java Development Kit (JDK) release (use the

+    latest update available for your chosen version) from

+

+        http://www.oracle.com/technetwork/java/javase/downloads/index.html

+        or from another JDK vendor.

+

+    Note regarding later versions of Java:

+

+      As documented elsewhere, one of components in Apache Tomcat includes

+      a private copy of the Apache Commons DBCP library. The source code

+      for this library is downloaded, processed by the build script

+      (renaming the packages) and compiled.

+

+      Due to changes in JDBC interfaces implemented by the library between

+      versions of Java SE specification, the library has to target specific

+      version of Java and can be compiled only with the JDK version

+      implementing this version of specification.

+

+      See Apache Commons DBCP project web site for more details on

+      available versions of the library and its requirements,

+

+        http://commons.apache.org/dbcp/

+

+      If you really want to use a later version of JDK to build Tomcat,

+      several workarounds are possible. One of them is to skip building

+      the component (tomcat-dbcp.jar).

+

+ 3. Install the JDK according to the instructions included with the release.

+

+ 4. Set an environment variable JAVA_HOME to the pathname of the directory

+    into which you installed the JDK release.

+

+

+(2) Install Apache Ant 1.8.x on your computer

+

+ 1. If Apache Ant 1.8.x is already installed on your computer, skip to (3).

+

+ 2. Download a binary distribution of Ant 1.8.x from:

+

+        http://ant.apache.org/bindownload.cgi

+

+ 3. Unpack the binary distribution into a convenient location so that the

+    Ant release resides in its own directory (conventionally named

+    "apache-ant-[version]").

+

+    For the purposes of the remainder of this document, the symbolic name

+    "${ant.home}" is used to refer to the full pathname of the release

+    directory.

+

+ 4. Create an ANT_HOME environment variable to point the directory

+    ${ant.home}.

+

+ 5. Modify the PATH environment variable to include the directory

+    ${ant.home}/bin in its list.  This makes the "ant" command line script

+    available, which will be used to actually perform the build.

+

+

+(3) Building Tomcat 7.0

+

+(3.1) Checkout or obtain the source code for Tomcat 7.0

+

+Checkout the source using SVN, selecting a tag for released version or

+trunk for the current development code, or download and unpack a source

+package.

+

+ *  Tomcat SVN repository URL:

+

+        http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/

+

+ *  Source packages can be downloaded from:

+

+        http://tomcat.apache.org/download-70.cgi

+

+The location where the source has been placed will be further referred as

+${tomcat.source}.

+

+(3.2) Building

+

+ 1. The build is controlled by creating a ${tomcat.source}/build.properties

+    file.

+

+    It is recommended to always create the file, because of unfortunate

+    default value of base.path property. You may start with the following

+    content for the file:

+

+        # ----- Default Base Path for Dependent Packages -----

+        # Replace this path with the directory path where dependencies binaries

+        # should be downloaded

+        base.path=/home/me/some-place-to-download-to

+

+ 2. Configure base.path property by adding it to the

+    ${tomcat.source}/build.properties file.

+

+    The base.path property specifies the place where Tomcat dependencies

+    required by the build are downloaded. It is recommended to place this

+    directory outside of the source tree, so that you do not waste your

+    time re-downloading the libraries.

+

+* WARNING: The default value of base.path property makes the build script

+  to download libraries required to build Tomcat to the /usr/share/java

+  directory. On a typical Linux or MacOX system an ordinary user will not

+  have access to write to this directory. Even if you do have access to

+  that directory, it is likely not appropriate for you to write there.

+

+  On Windows this usually corresponds to the "C:\usr\share\java"

+  directory, unless Cygwin is used.

+

+* NOTE: Users accessing the Internet through a proxy must use the properties

+  file to indicate to Ant the proxy configuration.

+

+  The following properties should be added to the ${tomcat.source}/build.properties

+  file.

+

+        proxy.use=on

+        proxy.host=proxy.domain

+        proxy.port=8080

+        proxy.user=username

+        proxy.password=password

+

+  See Apache Ant documentation for the <setproxy> task for details.

+

+ 3. Go to the sources directory and run Ant:

+

+        cd ${tomcat.source}

+        ant

+

+    This will execute the "deploy" target in build.xml.

+

+    Once the build has completed successfully, a usable Tomcat installation

+    will have been produced in the ${tomcat.source}/output/build directory,

+    and can be started and stopped with the usual scripts.

+

+    Note that the build includes Tomcat documentation, which can be found

+    in the output/build/webapps/docs directory.

+

+    The path of the output directory can be controlled by specifying the

+    "tomcat.output" property in the build.properties file.

+

+* NOTE: Do not run the build as the root user. Building and running Tomcat

+  does not require root privileges.

+

+

+(4) Updating sources and rebuilding

+

+It is recommended that you regularly update the downloaded Tomcat 7.0

+sources using your SVN client.

+

+For a quick rebuild of only modified code you can use:

+

+    cd ${tomcat.source}

+    ant

+

+

+(5) Special builds

+

+There are several targets in Tomcat build files that are useful to be

+called separately. They build components that you may want to build

+quickly, or ones that are included in the full release and are not built

+during the default "deploy" build.

+

+(5.1) Building documentation

+

+The documentation web application is built during the default "deploy"

+build.

+

+It can be built quickly by using the following commands:

+

+    cd ${tomcat.source}

+    ant build-docs

+

+The output of this command will be found in the following directory:

+

+    output/build/webapps/docs

+

+

+The API documentation (Javadoc) is built during a "release" build. It is

+easy to build it separately by using the following commands:

+

+    cd ${tomcat.source}

+    ant javadoc

+

+The output of this command will be found in the following directories:

+

+    output/dist/webapps/docs/api

+    output/dist/webapps/docs/elapi

+    output/dist/webapps/docs/jspapi

+    output/dist/webapps/docs/servletapi

+

+

+(5.2) Building the extras (commons-logging, webservices etc.)

+

+These components are documented on the "Additional Components"

+(extras.html) page of documentation. They are built during a "release"

+build.

+

+You can build them by using the following commands:

+

+    cd ${tomcat.source}

+    ant extras

+

+(5.3) Building the embedded packages

+

+These are built during a "release" build.

+

+You can build them by using the following commands:

+

+    cd ${tomcat.source}

+    ant embed

+

+

+(6) Building a full release (as provided via the ASF download pages)

+

+ 1. Configure GPG, if needed

+

+    If the released artifacts have to be cryptographically signed with a

+    PGP signature, like the official ASF releases are, the following

+    property can be added to the build.properties file:

+

+        # Location of GPG executable (used only for releases)

+        gpg.exec=/path/to/gpg

+

+    You do not need it if you do not plan to sign the release.

+

+    If "gpg.exec" property does not point to an existing file, it will be

+    ignored and this feature will be disabled.

+

+    You will be prompted for the GPG passphrase when the release build

+    starts, unless "gpg.passphrase" property is set.

+

+ 2. Build the release:

+

+    cd ${tomcat.source}

+    ant release

+

+

+(7) Tests

+

+(7.1) Running Tomcat tests

+

+Tomcat includes a number of junit tests. The tests are not run when a

+release is built. There is separate command to run them.

+

+To run the testsuite use the following command:

+

+    cd ${tomcat.source}

+    ant test

+

+It is advisable to redirect output of the above command to a file for later

+inspection.

+

+The JUnit reports generated by the tests will be written to the following

+directory:

+

+    output/build/logs

+

+

+By default the testsuite is run three times to test 3 different

+implementations of Tomcat connectors: BIO, NIO and APR. (If you are not

+familiar with Tomcat connectors, see config/http.html in documentation for

+details).

+

+The 3 runs are enabled and disabled individually by the following

+properties, which all are "true" by default:

+

+    execute.test.bio=true

+    execute.test.nio=true

+    execute.test.apr=true

+

+The APR connector can be tested only if Tomcat-Native library binaries are

+found by the testsuite. The "test.apr.loc" property specifies the directory

+where the library binaries are located.

+

+By default the "test.apr.loc" property specifies the following location:

+

+    output/build/bin/native/

+

+If you are on Windows and want to test the APR connector you can put the

+tcnative-1.dll file into ${tomcat.source}/bin/native/ and it will be copied

+into the above directory when the build runs.

+

+

+(7.2) Running a single test

+

+It is possible to run a single JUnit test class by adding the "test.entry"

+property to the build.properties file. The property specifies the name of

+the test class.

+

+For example:

+

+    test.entry=org.apache.catalina.util.TestServerInfo

+

+

+(7.3) Other configuration options

+

+ 1. It is possible to enable generation of access log file when the tests

+ are run. This is off by default and can be enabled by the following

+ property:

+

+        test.accesslog=true

+

+ The "access_log.<date>" file will be written to the same directory as

+ JUnit reports,

+

+        output/build/logs

+

+ 2. The testsuite respects logging configuration as configured by

+ ${tomcat.source}/conf/logging.properties

+

+ The log files will be written to the temporary directory used by the

+ tests,

+

+        output/test-tmp/logs

+

+ 3. It is possible to configure formatter used by JUnit reports. For

+ example the following property disables generation of separate report

+ files:

+

+        junit.formatter.usefile=false

+

+

+(8) Source code checks

+

+(8.1) Checkstyle

+

+* NOTE: Checkstyle is licensed under LGPL. Using Checkstyle during Tomcat

+  build is optional and is off by default.

+

+Tomcat comes with a Checkstyle configuration that tests its source code

+for certain conventions, like presence of the license header.

+

+To enable Checkstyle, add the following property to build.properties file:

+

+    execute.validate=true

+

+Once Checkstyle is enabled, the check will be performed automatically

+during the build. The check is run before compilation of the source code.

+

+To speed-up repeated runs of this check, a cache is configured. The cache

+is located in the following directory:

+

+    output/res/checkstyle

+

+It is possible to run the check separately by invoking the "validate"

+target. The command is:

+

+    cd ${tomcat.source}

+    ant -Dexecute.validate=true validate

+

+

+(8.2) End-of-line conventions check

+

+You usually would not need to run this check. You can skip this section.

+

+Apache Tomcat project has convention that all of its textual source files,

+stored in Subversion repository, are marked with Subversion property

+"svn:eol-style" with value of "native". This convention makes the editing

+of source code on different platforms easier.

+

+This test is used by developers to check that the source code adheres to

+this convention. It verifies that the ends of lines in textual files are

+appropriate for the operating system where it is run. The idea is to run

+this check regularly on two different platforms and notify developers when

+an inconsistency is detected.

+

+The command to run this test is:

+

+    cd ${tomcat.source}

+    ant validate-eoln

diff --git a/webapps/docs/RELEASE-NOTES.txt b/webapps/docs/RELEASE-NOTES.txt
new file mode 100644
index 0000000..6681668
--- /dev/null
+++ b/webapps/docs/RELEASE-NOTES.txt
@@ -0,0 +1,228 @@
+================================================================================

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+================================================================================

+

+$Id: RELEASE-NOTES 1189163 2011-10-26 12:19:26Z kkolinko $

+

+

+                     Apache Tomcat Version 7.0.42

+                            Release Notes

+

+

+=========

+CONTENTS:

+=========

+

+* Dependency Changes

+* API Stability

+* JNI Based Applications

+* Bundled APIs

+* Web application reloading and static fields in shared libraries

+* Tomcat on Linux

+* Enabling SSI and CGI Support

+* Security manager URLs

+* Symlinking static resources

+* Viewing the Tomcat Change Log

+* Cryptographic software notice

+* When all else fails

+

+

+===================

+Dependency Changes:

+===================

+Tomcat 7.0 is designed to run on Java SE 6 and later.

+

+In addition, Tomcat 7.0 uses the Eclipse JDT Java compiler for

+compiling JSP pages.  This means you no longer need to have the complete

+Java Development Kit (JDK) to run Tomcat, but a Java Runtime Environment

+(JRE) is sufficient.  The Eclipse JDT Java compiler is bundled with the

+binary Tomcat distributions.  Tomcat can also be configured to use the

+compiler from the JDK to compile JSPs, or any other Java compiler supported

+by Apache Ant.

+

+

+==============

+API Stability:

+==============

+The public interfaces for the following classes are fixed and will not be

+changed at all during the remaining lifetime of the 7.x series:

+- javax/**/*

+

+The public interfaces for the following classes may be added to in order to

+resolve bugs and/or add new features. No existing interface will be removed or

+changed although it may be deprecated.

+- org/apache/catalina/*

+- org/apache/catalina/comet/*

+

+Note: As Tomcat 7 matures, the above list will be added to. The list is not

+      considered complete at this time.

+

+The remaining classes are considered part of the Tomcat internals and may change

+without notice between point releases.

+

+

+=======================

+JNI Based Applications:

+=======================

+Applications that require native libraries must ensure that the libraries have

+been loaded prior to use.  Typically, this is done with a call like:

+

+  static {

+    System.loadLibrary("path-to-library-file");

+  }

+

+in some class.  However, the application must also ensure that the library is

+not loaded more than once.  If the above code were placed in a class inside

+the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the

+application were reloaded, the loadLibrary() call would be attempted a second

+time.

+

+To avoid this problem, place classes that load native libraries outside of the

+web application, and ensure that the loadLibrary() call is executed only once

+during the lifetime of a particular JVM.

+

+

+=============

+Bundled APIs:

+=============

+A standard installation of Tomcat 7.0 makes all of the following APIs available

+for use by web applications (by placing them in "lib"):

+* annotations-api.jar (Annotations package)

+* catalina.jar (Tomcat Catalina implementation)

+* catalina-ant.jar (Tomcat Catalina Ant tasks)

+* catalina-ha.jar (High availability package)

+* catalina-tribes.jar (Group communication)

+* ecj-4.2.2.jar (Eclipse JDT Java compiler)

+* el-api.jar (EL 2.2 API)

+* jasper.jar (Jasper 2 Compiler and Runtime)

+* jasper-el.jar (Jasper 2 EL implementation)

+* jsp-api.jar (JSP 2.2 API)

+* servlet-api.jar (Servlet 3.0 API)

+* tomcat-api.jar (Interfaces shared by Catalina and Jasper)

+* tomcat-coyote.jar (Tomcat connectors and utility classes)

+* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP)

+

+You can make additional APIs available to all of your web applications by

+putting unpacked classes into a "classes" directory (not created by default),

+or by placing them in JAR files in the "lib" directory.

+

+To override the XML parser implementation or interfaces, use the endorsed

+mechanism of the JVM. The default configuration defines JARs located in

+"endorsed" as endorsed.

+

+

+================================================================

+Web application reloading and static fields in shared libraries:

+================================================================

+Some shared libraries (many are part of the JDK) keep references to objects

+instantiated by the web application. To avoid class loading related problems

+(ClassCastExceptions, messages indicating that the classloader

+is stopped, etc.), the shared libraries state should be reinitialized.

+

+Something which might help is to avoid putting classes which would be

+referenced by a shared static field in the web application classloader,

+and putting them in the shared classloader instead (JARs should be put in the

+"lib" folder, and classes should be put in the "classes" folder).

+

+

+================

+Tomcat on Linux:

+================

+GLIBC 2.2 / Linux 2.4 users should define an environment variable:

+export LD_ASSUME_KERNEL=2.2.5

+

+Redhat Linux 9.0 users should use the following setting to avoid

+stability problems:

+export LD_ASSUME_KERNEL=2.4.1

+

+There are some Linux bugs reported against the NIO sendfile behavior, make sure you

+have a JDK that is up to date, or disable sendfile behavior in the Connector.<br/>

+6427312: (fc) FileChannel.transferTo() throws IOException "system call interrupted"<br/>

+5103988: (fc) FileChannel.transferTo should return -1 for EAGAIN instead throws IOException<br/>

+6253145: (fc) FileChannel.transferTo on Linux fails when going beyond 2GB boundary<br/>

+6470086: (fc) FileChannel.transferTo(2147483647, 1, channel) cause "Value too large" exception<br/>

+

+

+=============================

+Enabling SSI and CGI Support:

+=============================

+Because of the security risks associated with CGI and SSI available

+to web applications, these features are disabled by default.  

+

+To enable and configure CGI support, please see the cgi-howto.html page.

+

+To enable and configue SSI support, please see the ssi-howto.html page.

+

+

+======================

+Security manager URLs:

+======================

+In order to grant security permissions to JARs located inside the

+web application repository, use URLs of of the following format

+in your policy file:

+

+file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar

+

+

+============================

+Symlinking static resources:

+============================

+By default, Unix symlinks will not work when used in a web application to link

+resources located outside the web application root directory.

+

+This behavior is optional, and the "allowLinking" flag may be used to disable

+the check.

+

+

+==============================

+Viewing the Tomcat Change Log:

+==============================

+See changelog.html in this directory.

+

+

+=============================

+Cryptographic software notice

+=============================

+This distribution includes cryptographic software.  The country in

+which you currently reside may have restrictions on the import,

+possession, use, and/or re-export to another country, of

+encryption software.  BEFORE using any encryption software, please

+check your country's laws, regulations and policies concerning the

+import, possession, or use, and re-export of encryption software, to

+see if this is permitted.  See <http://www.wassenaar.org/> for more

+information.

+

+The U.S. Government Department of Commerce, Bureau of Industry and

+Security (BIS), has classified this software as Export Commodity

+Control Number (ECCN) 5D002.C.1, which includes information security

+software using or performing cryptographic functions with asymmetric

+algorithms.  The form and manner of this Apache Software Foundation

+distribution makes it eligible for export under the License Exception

+ENC Technology Software Unrestricted (TSU) exception (see the BIS

+Export Administration Regulations, Section 740.13) for both object

+code and source code.

+

+The following provides more details on the included cryptographic

+software:

+  - Tomcat includes code designed to work with JSSE

+  - Tomcat includes code designed to work with OpenSSL

+

+

+====================

+When all else fails:

+====================

+See the FAQ

+http://tomcat.apache.org/faq/

diff --git a/webapps/docs/RUNNING.txt b/webapps/docs/RUNNING.txt
new file mode 100644
index 0000000..1a17549
--- /dev/null
+++ b/webapps/docs/RUNNING.txt
@@ -0,0 +1,480 @@
+================================================================================

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+================================================================================

+

+$Id: RUNNING.txt 1456725 2013-03-14 23:48:06Z kkolinko $

+

+            ===================================================

+            Running The Apache Tomcat 7.0 Servlet/JSP Container

+            ===================================================

+

+Apache Tomcat 7.0 requires a Java Standard Edition Runtime

+Environment (JRE) version 6 or later.

+

+=============================

+Running With JRE 6 Or Later

+=============================

+

+(1) Download and Install a Java SE Runtime Environment (JRE)

+

+(1.1) Download a Java SE Runtime Environment (JRE),

+      release version 6 or later, from

+      http://www.oracle.com/technetwork/java/javase/downloads/index.html

+

+(1.2) Install the JRE according to the instructions included with the

+      release.

+

+      You may also use a full Java Development Kit (JDK) rather than just

+      a JRE.

+

+

+(2) Download and Install Apache Tomcat

+

+(2.1) Download a binary distribution of Tomcat from:

+

+      http://tomcat.apache.org/

+

+(2.2) Unpack the binary distribution so that it resides in its own

+      directory (conventionally named "apache-tomcat-[version]").

+

+      For the purposes of the remainder of this document, the name

+      "CATALINA_HOME" is used to refer to the full pathname of that

+      directory.

+

+NOTE:  As an alternative to downloading a binary distribution, you can

+create your own from the Tomcat source code, as described in

+"BUILDING.txt".  You can either

+

+  a)  Do the full "release" build and find the created distribution in the

+      "output/release" directory and then proceed with unpacking as above, or

+

+  b)  Do a simple build and use the "output/build" directory as

+      "CATALINA_HOME".  Be warned that there are some differences between the

+      contents of the "output/build" directory and a full "release"

+      distribution.

+

+

+(3) Configure Environment Variables

+

+Tomcat is a Java application and does not use environment variables. The

+variables are used by the Tomcat startup scripts. The scripts use the variables

+to prepare the command that starts Tomcat.

+

+(3.1) Set CATALINA_HOME (required) and CATALINA_BASE (optional)

+

+The CATALINA_HOME environment variable should be set to the location of the

+root directory of the "binary" distribution of Tomcat.

+

+An example was given in (2.2) above.

+

+The Tomcat startup scripts have some logic to set this variable

+automatically if it is absent, based on the location of the startup script

+in *nix and on the current directory in Windows. That logic might not work

+in all circumstances, so setting the variable explicitly is recommended.

+

+The CATALINA_BASE environment variable specifies location of the root

+directory of the "active configuration" of Tomcat. It is optional. It

+defaults to be equal to CATALINA_HOME.

+

+Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is

+recommended to simplify further upgrades and maintenance. It is documented

+in the "Multiple Tomcat Instances" section below.

+

+

+(3.2) Set JRE_HOME or JAVA_HOME (required)

+

+These variables are used to specify location of a Java Runtime

+Environment or of a Java Development Kit that is used to start Tomcat.

+

+The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME

+variable is used to specify location of a JDK.

+

+Using JAVA_HOME provides access to certain additional startup options that

+are not allowed when JRE_HOME is used.

+

+If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.

+

+The recommended place to specify these variables is a "setenv" script. See

+below.

+

+

+(3.3) Other variables (optional)

+

+Other environment variables exist, besides the four described above.

+See the comments at the top of catalina.bat or catalina.sh scripts for

+the list and a description of each of them.

+

+One frequently used variable is CATALINA_OPTS. It allows specification of

+additional options for the java command that starts Tomcat.

+

+See the Java documentation for the options that affect the Java Runtime

+Environment.

+

+See the "System Properties" page in the Tomcat Configuration Reference for

+the system properties that are specific to Tomcat.

+

+A similar variable is JAVA_OPTS. It is used less frequently. It allows

+specification of options that are used both to start and to stop Tomcat as well

+as for other commands.

+

+Note: Do not use JAVA_OPTS to specify memory limits. You do not need much

+memory for a small process that is used to stop Tomcat. Those settings

+belong to CATALINA_OPTS.

+

+Another frequently used variable is CATALINA_PID (on *nix only). It

+specifies the location of the file where process id of the forked Tomcat

+java process will be written. This setting is optional. It will enable the

+following features:

+

+ *  better protection against duplicate start attempts and

+ *  allows forceful termination of Tomcat process when it does not react to

+    the standard shutdown command.

+

+

+(3.4) Using the "setenv" script (optional, recommended)

+

+Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can

+be specified in the "setenv" script. The script is placed either into

+CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named

+setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be

+readable.

+

+By default the setenv script file is absent. If the script file is present

+both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is

+preferred.

+

+For example, to configure the JRE_HOME and CATALINA_PID variables you can

+create the following script file:

+

+On Windows, %CATALINA_BASE%\bin\setenv.bat:

+

+  set "JRE_HOME=%ProgramFiles%\Java\jre6"

+  exit /b 0

+

+On *nix, $CATALINA_BASE/bin/setenv.sh:

+

+  JRE_HOME=/usr/java/latest

+  CATALINA_PID="$CATALINA_BASE/tomcat.pid"

+

+

+The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the

+setenv script, because they are used to locate that file.

+

+All the environment variables described here and the "setenv" script are

+used only if you use the standard scripts to launch Tomcat. For example, if

+you have installed Tomcat as a service on Windows, the service wrapper

+launches Java directly and does not use the script files.

+

+

+(4) Start Up Tomcat

+

+(4.1) Tomcat can be started by executing one of the following commands:

+

+  On Windows:

+

+      %CATALINA_HOME%\bin\startup.bat

+

+    or

+

+      %CATALINA_HOME%\bin\catalina.bat start

+

+  On *nix:

+

+      $CATALINA_HOME/bin/startup.sh

+

+    or

+

+      $CATALINA_HOME/bin/catalina.sh start

+

+(4.2) After startup, the default web applications included with Tomcat will be

+      available by visiting:

+

+      http://localhost:8080/

+

+(4.3) Further information about configuring and running Tomcat can be found in

+      the documentation included here, as well as on the Tomcat web site:

+

+      http://tomcat.apache.org/

+

+

+(5) Shut Down Tomcat

+

+(5.1) Tomcat can be shut down by executing one of the following commands:

+

+  On Windows:

+

+      %CATALINA_HOME%\bin\shutdown.bat

+

+    or

+

+      %CATALINA_HOME%\bin\catalina.bat stop

+

+  On *nix:

+

+      $CATALINA_HOME/bin/shutdown.sh

+

+    or

+

+      $CATALINA_HOME/bin/catalina.sh stop

+

+==================================================

+Advanced Configuration - Multiple Tomcat Instances

+==================================================

+

+In many circumstances, it is desirable to have a single copy of a Tomcat

+binary distribution shared among multiple users on the same server.  To make

+this possible, you can set the CATALINA_BASE environment variable to the

+directory that contains the files for your 'personal' Tomcat instance.

+

+When running with a separate CATALINA_HOME and CATALINA_BASE, the files

+and directories are split as following:

+

+In CATALINA_BASE:

+

+ * bin  - Only the following files:

+

+           * setenv.sh (*nix) or setenv.bat (Windows),

+           * tomcat-juli.jar

+

+          The setenv scripts were described above. The tomcat-juli library

+          is documented in the Logging chapter in the User Guide.

+

+ * conf - Server configuration files (including server.xml)

+

+ * lib  - Libraries and classes, as explained below

+

+ * logs - Log and output files

+

+ * webapps - Automatically loaded web applications

+

+ * work - Temporary working directories for web applications

+

+ * temp - Directory used by the JVM for temporary files (java.io.tmpdir)

+

+

+In CATALINA_HOME:

+

+ * bin  - Startup and shutdown scripts

+

+          The following files will be used only if they are absent in

+          CATALINA_BASE/bin:

+

+          setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar

+

+ * lib  - Libraries and classes, as explained below

+

+ * endorsed - Libraries that override standard "Endorsed Standards"

+              libraries provided by JRE. See Classloading documentation

+              in the User Guide for details.

+

+              By default this "endorsed" directory is absent.

+

+In the default configuration the JAR libraries and classes both in

+CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common

+classpath, but the ones in CATALINA_BASE will be added first and thus will

+be searched first.

+

+The idea is that you may leave the standard Tomcat libraries in

+CATALINA_HOME/lib and add other ones such as database drivers into

+CATALINA_BASE/lib.

+

+In general it is advised to never share libraries between web applications,

+but put them into WEB-INF/lib directories inside the applications. See

+Classloading documentation in the User Guide for details.

+

+

+It might be useful to note that the values of CATALINA_HOME and

+CATALINA_BASE can be referenced in the XML configuration files processed

+by Tomcat as ${catalina.home} and ${catalina.base} respectively.

+

+For example, the standard manager web application can be kept in

+CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using

+the following trick:

+

+ * Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml

+   file as CATALINA_BASE/conf/Catalina/localhost/manager.xml

+

+ * Add docBase attribute as shown below.

+

+The file will look like the following:

+

+  <?xml version="1.0" encoding="UTF-8"?>

+  <Context docBase="${catalina.home}/webapps/manager"

+    antiResourceLocking="false" privileged="true" >

+    <Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         allow="127\.0\.0\.1" />

+  </Context>

+

+See Deployer chapter in User Guide and Context and Host chapters in the

+Configuration Reference for more information on contexts and web

+application deployment.

+

+

+================

+Troubleshooting

+================

+

+There are only really 2 things likely to go wrong during the stand-alone

+Tomcat install:

+

+(1) The most common hiccup is when another web server (or any process for that

+    matter) has laid claim to port 8080.  This is the default HTTP port that

+    Tomcat attempts to bind to at startup.  To change this, open the file:

+

+       $CATALINA_HOME/conf/server.xml

+

+    and search for '8080'.  Change it to a port that isn't in use, and is

+    greater than 1024, as ports less than or equal to 1024 require superuser

+    access to bind under UNIX.

+

+    Restart Tomcat and you're in business.  Be sure that you replace the "8080"

+    in the URL you're using to access Tomcat.  For example, if you change the

+    port to 1977, you would request the URL http://localhost:1977/ in your

+    browser.

+

+(2) The 'localhost' machine isn't found.  This could happen if you're behind a

+    proxy.  If that's the case, make sure the proxy configuration for your

+    browser knows that you shouldn't be going through the proxy to access the

+    "localhost".

+

+    In Firefox, this is under Tools/Preferences -> Advanced/Network ->

+    Connection -> Settings..., and in Internet Explorer it is Tools ->

+    Internet Options -> Connections -> LAN Settings.

+

+

+====================

+Optional Components

+====================

+

+The following optional components may be included with the Apache Tomcat binary

+distribution. If they are not included, you can install them separately.

+

+ 1. Apache Tomcat Native library

+

+ 2. Apache Commons Daemon service launcher

+

+Both of them are implemented in C language and as such have to be compiled

+into binary code. The binary code will be specific for a platform and CPU

+architecture and it must match the Java Runtime Environment executables

+that will be used to launch Tomcat.

+

+The Windows-specific binary distributions of Apache Tomcat include binary

+files for these components. On other platforms you would have to look for

+binary versions elsewhere or compile them yourself.

+

+If you are new to Tomcat, do not bother with these components to start with.

+If you do use them, do not forget to read their documentation.

+

+

+Apache Tomcat Native library

+-----------------------------

+

+It is a library that allows to use the "Apr" variant of HTTP and AJP

+protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache

+Portable Runtime (APR) libraries. Those are the same libraries as used by

+Apache HTTPD Server project.

+

+This feature was especially important in the old days when Java performance

+was poor. It is less important nowadays, but it is still used and respected

+by many. See Tomcat documentation for more details.

+

+For further reading:

+

+ - Apache Tomcat documentation

+

+    * Documentation for APR/Native library in the Tomcat User's Guide

+

+      http://tomcat.apache.org/tomcat-7.0-doc/apr.html

+

+    * Documentation for the HTTP and AJP protocol connectors in the Tomcat

+      Configuration Reference

+

+      http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

+

+      http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html

+

+ - Apache Tomcat Native project home

+

+      http://tomcat.apache.org/native-doc/

+

+ - Other projects

+

+    * OpenSSL

+

+      http://openssl.org/

+

+    * Apache Portable Runtime

+

+      http://apr.apache.org/

+

+    * Apache HTTP Server

+

+      http://httpd.apache.org/

+

+To disable Apache Tomcat Native library:

+

+ - To disable Apache Tomcat Native library when it is installed, or

+ - To remove the warning that is logged during Tomcat startup when the

+   library is not installed:

+

+   Edit the "conf/server.xml" file and remove "AprLifecycleListener" from

+   it.

+

+The binary file of Apache Tomcat Native library is usually named

+

+  - "tcnative-1.dll" on Windows

+  - "libtcnative-1.so" on *nix systems

+

+

+Apache Commons Daemon

+----------------------

+

+Apache Commons Daemon project provides wrappers that can be used to

+install Apache Tomcat as a service on Windows or as a daemon on *nix

+systems.

+

+The Windows-specific implementation of Apache Commons Daemon is called

+"procrun". The *nix-specific one is called "jsvc".

+

+For further reading:

+

+ - Apache Commons Daemon project

+

+      http://commons.apache.org/daemon/

+

+ - Apache Tomcat documentation

+

+    * Installing Apache Tomcat

+

+      http://tomcat.apache.org/tomcat-7.0-doc/setup.html

+

+    * Windows service HOW-TO

+

+      http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html

+

+The binary files of Apache Commons Daemon in Apache Tomcat distributions

+for Windows are named:

+

+  - "tomcat7.exe"

+  - "tomcat7w.exe"

+

+These files are renamed copies of "prunsrv.exe" and "prunmgr.exe" from

+Apache Commons Daemon distribution. The file names have a meaning: they are

+used as the service name to register the service in Windows, as well as the

+key name to store distinct configuration for this installation of

+"procrun". If you would like to install several instances of Tomcat 7.0

+in parallel, you have to further rename those files, using the same naming

+scheme.

diff --git a/webapps/docs/WEB-INF/web.xml b/webapps/docs/WEB-INF/web.xml
new file mode 100644
index 0000000..dd51ceb
--- /dev/null
+++ b/webapps/docs/WEB-INF/web.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<web-app xmlns="http://java.sun.com/xml/ns/javaee"

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

+

+  <display-name>Tomcat Documentation</display-name>

+  <description>

+     Tomcat Documentation.

+  </description>

+</web-app>

diff --git a/webapps/docs/aio.html b/webapps/docs/aio.html
new file mode 100644
index 0000000..2ef691b
--- /dev/null
+++ b/webapps/docs/aio.html
@@ -0,0 +1,357 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Advanced IO and Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Advanced IO and Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Comet_support">Comet support</a><ol><li><a href="#CometEvent">CometEvent</a></li><li><a href="#CometFilter">CometFilter</a></li><li><a href="#Example_code">Example code</a></li><li><a href="#Comet_timeouts">Comet timeouts</a></li></ol></li><li><a href="#Asynchronous_writes">Asynchronous writes</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    With usage of APR or NIO APIs as the basis of its connectors, Tomcat is

+    able to provide a number of extensions over the regular blocking IO

+    as provided with support for the Servlet API.

+  </p>

+

+  <p>

+    <b>IMPORTANT NOTE: Usage of these features requires using the APR or NIO

+    HTTP connectors. The classic java.io HTTP connector and the AJP connectors

+    do not support them.</b>

+  </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="Comet support"><!--()--></a><a name="Comet_support"><strong>Comet support</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    Comet support allows a servlet to process IO asynchronously, receiving

+    events when data is available for reading on the connection (rather than

+    always using a blocking read), and writing data back on connections

+    asynchronously (most likely responding to some event raised from some

+    other source).

+  </p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CometEvent"><strong>CometEvent</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    Servlets which implement the <code>org.apache.catalina.comet.CometProcessor</code>

+    interface will have their event method invoked rather than the usual service

+    method, according to the event which occurred. The event object gives

+    access to the usual request and response objects, which may be used in the

+    usual way. The main difference is that those objects remain valid and fully

+    functional at any time between processing of the BEGIN event until processing

+    an END or ERROR event.

+    The following event types exist:

+  </p>

+

+  <ul>

+  <li>EventType.BEGIN: will be called at the beginning

+     of the processing of the connection. It can be used to initialize any relevant

+     fields using the request and response objects. Between the end of the processing

+     of this event, and the beginning of the processing of the end or error events,

+     it is possible to use the response object to write data on the open connection.

+     Note that the response object and dependent OutputStream and Writer are still

+     not synchronized, so when they are accessed by multiple threads,

+     synchronization is mandatory. After processing the initial event, the request

+     is considered to be committed.</li>

+  <li>EventType.READ: This indicates that input data is available, and that one read can be made

+       without blocking. The available and ready methods of the InputStream or

+       Reader may be used to determine if there is a risk of blocking: the servlet

+       should read while data is reported available. When encountering a read error,

+       the servlet should report it by propagating the exception properly. Throwing

+       an exception will cause the error event to be invoked, and the connection

+       will be closed.

+       Alternately, it is also possible to catch any exception, perform clean up

+       on any data structure the servlet may be using, and using the close method

+       of the event. It is not allowed to attempt reading data from the request

+       object outside of the execution of this method.<br>

+       On some platforms, like Windows, a client disconnect is indicated by a READ event.

+       Reading from the stream may result in -1, an IOException or an EOFException.

+       Make sure you properly handle all these three cases.

+       If you don't catch the IOException, Tomcat will instantly invoke your event chain with an ERROR as

+       it catches the error for you, and you will be notified of the error at that time.

+  </li>

+  <li>EventType.END: End may be called to end the processing of the request. Fields that have

+     been initialized in the begin method should be reset. After this event has

+     been processed, the request and response objects, as well as all their dependent

+     objects will be recycled and used to process other requests. End will also be

+     called when data is available and the end of file is reached on the request input

+     (this usually indicates the client has pipelined a request).</li>

+  <li>EventType.ERROR: Error will be called by the container in the case where an IO exception

+     or a similar unrecoverable error occurs on the connection. Fields that have

+     been initialized in the begin method should be reset. After this event has

+     been processed, the request and response objects, as well as all their dependent

+     objects will be recycled and used to process other requests.</li>

+  </ul>

+

+  <p>

+    There are some event subtypes which allow finer processing of events (note: some of these

+    events require usage of the org.apache.catalina.valves.CometConnectionManagerValve valve):

+  </p>

+

+  <ul>

+  <li>EventSubType.TIMEOUT: The connection timed out (sub type of ERROR); note that this ERROR

+    type is not fatal, and the connection will not be closed unless the servlet uses the close

+    method of the event.

+  </li>

+  <li>EventSubType.CLIENT_DISCONNECT: The client connection was closed (sub type of ERROR).

+  </li>

+  <li>EventSubType.IOEXCEPTION: An IO exception occurred, such as invalid content, for example,

+    an invalid chunk block (sub type of ERROR).

+  </li>

+  <li>EventSubType.WEBAPP_RELOAD: The web application is being reloaded (sub type of END).

+  </li>

+  <li>EventSubType.SESSION_END: The servlet ended the session (sub type of END).

+  </li>

+  </ul>

+

+  <p>

+    As described above, the typical lifecycle of a Comet request will consist in a series of

+    events such as: BEGIN -&gt; READ -&gt; READ -&gt; READ -&gt; ERROR/TIMEOUT. At any time, the servlet

+    may end processing of the request by using the close method of the event object.

+  </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="CometFilter"><strong>CometFilter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    Similar to regular filters, a filter chain is invoked when comet events are processed.

+    These filters should implement the CometFilter interface (which works in the same way as

+    the regular Filter interface), and should be declared and mapped in the deployment

+    descriptor in the same way as a regular filter. The filter chain when processing an event

+    will only include filters which match all the usual mapping rules, and also implement

+    the CometFiler interface.

+  </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="Example code"><!--()--></a><a name="Example_code"><strong>Example code</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    The following pseudo code servlet implements asynchronous chat functionality using the API

+    described above:

+  </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>

+public class ChatServlet

+    extends HttpServlet implements CometProcessor {

+

+    protected ArrayList&lt;HttpServletResponse&gt; connections =

+        new ArrayList&lt;HttpServletResponse&gt;();

+    protected MessageSender messageSender = null;

+

+    public void init() throws ServletException {

+        messageSender = new MessageSender();

+        Thread messageSenderThread =

+            new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() + "]");

+        messageSenderThread.setDaemon(true);

+        messageSenderThread.start();

+    }

+

+    public void destroy() {

+        connections.clear();

+        messageSender.stop();

+        messageSender = null;

+    }

+

+    /**

+     * Process the given Comet event.

+     *

+     * @param event The Comet event that will be processed

+     * @throws IOException

+     * @throws ServletException

+     */

+    public void event(CometEvent event)

+        throws IOException, ServletException {

+        HttpServletRequest request = event.getHttpServletRequest();

+        HttpServletResponse response = event.getHttpServletResponse();

+        if (event.getEventType() == CometEvent.EventType.BEGIN) {

+            log("Begin for session: " + request.getSession(true).getId());

+            PrintWriter writer = response.getWriter();

+            writer.println("&lt;!doctype html public \"-//w3c//dtd html 4.0 transitional//en\"&gt;");

+            writer.println("&lt;head&gt;&lt;title&gt;JSP Chat&lt;/title&gt;&lt;/head&gt;&lt;body bgcolor=\"#FFFFFF\"&gt;");

+            writer.flush();

+            synchronized(connections) {

+                connections.add(response);

+            }

+        } else if (event.getEventType() == CometEvent.EventType.ERROR) {

+            log("Error for session: " + request.getSession(true).getId());

+            synchronized(connections) {

+                connections.remove(response);

+            }

+            event.close();

+        } else if (event.getEventType() == CometEvent.EventType.END) {

+            log("End for session: " + request.getSession(true).getId());

+            synchronized(connections) {

+                connections.remove(response);

+            }

+            PrintWriter writer = response.getWriter();

+            writer.println("&lt;/body&gt;&lt;/html&gt;");

+            event.close();

+        } else if (event.getEventType() == CometEvent.EventType.READ) {

+            InputStream is = request.getInputStream();

+            byte[] buf = new byte[512];

+            do {

+                int n = is.read(buf); //can throw an IOException

+                if (n &gt; 0) {

+                    log("Read " + n + " bytes: " + new String(buf, 0, n)

+                            + " for session: " + request.getSession(true).getId());

+                } else if (n &lt; 0) {

+                    error(event, request, response);

+                    return;

+                }

+            } while (is.available() &gt; 0);

+        }

+    }

+

+    public class MessageSender implements Runnable {

+

+        protected boolean running = true;

+        protected ArrayList&lt;String&gt; messages = new ArrayList&lt;String&gt;();

+

+        public MessageSender() {

+        }

+

+        public void stop() {

+            running = false;

+        }

+

+        /**

+         * Add message for sending.

+         */

+        public void send(String user, String message) {

+            synchronized (messages) {

+                messages.add("[" + user + "]: " + message);

+                messages.notify();

+            }

+        }

+

+        public void run() {

+

+            while (running) {

+

+                if (messages.size() == 0) {

+                    try {

+                        synchronized (messages) {

+                            messages.wait();

+                        }

+                    } catch (InterruptedException e) {

+                        // Ignore

+                    }

+                }

+

+                synchronized (connections) {

+                    String[] pendingMessages = null;

+                    synchronized (messages) {

+                        pendingMessages = messages.toArray(new String[0]);

+                        messages.clear();

+                    }

+                    // Send any pending message on all the open connections

+                    for (int i = 0; i &lt; connections.size(); i++) {

+                        try {

+                            PrintWriter writer = connections.get(i).getWriter();

+                            for (int j = 0; j &lt; pendingMessages.length; j++) {

+                                writer.println(pendingMessages[j] + "&lt;br&gt;");

+                            }

+                            writer.flush();

+                        } catch (IOException e) {

+                            log("IOExeption sending message", e);

+                        }

+                    }

+                }

+

+            }

+

+        }

+

+    }

+

+}

+  </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comet timeouts"><!--()--></a><a name="Comet_timeouts"><strong>Comet timeouts</strong></a></font></td></tr><tr><td><blockquote>

+    <p>If you are using the NIO connector, you can set individual timeouts for your different comet connections.

+       To set a timeout, simply set a request attribute like the following code shows:

+       <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>CometEvent event.... event.setTimeout(30*1000);</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> or

+       <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>event.getHttpServletRequest().setAttribute("org.apache.tomcat.comet.timeout", new Integer(30 * 1000));</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>

+       This sets the timeout to 30 seconds.

+       Important note: in order to set this timeout, it has to be done on the <code>BEGIN</code> event.

+       The default value is <code>soTimeout</code>

+    </p>

+    <p>If you are using the APR connector, all Comet connections will have the same timeout value. It is <code>soTimeout*50</code>

+    </p>

+  </blockquote></td></tr></table>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Asynchronous writes"><!--()--></a><a name="Asynchronous_writes"><strong>Asynchronous writes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    When APR or NIO is enabled, Tomcat supports using sendfile to send large static files.

+    These writes, as soon as the system load increases, will be performed

+    asynchronously in the most efficient way. Instead of sending a large response using

+    blocking writes, it is possible to write content to a static file, and write it

+    using a sendfile code. A caching valve could take advantage of this to cache the

+    response data in a file rather than store it in memory. Sendfile support is

+    available if the request attribute <code>org.apache.tomcat.sendfile.support</code>

+    is set to <code>Boolean.TRUE</code>.

+  </p>

+

+  <p>

+    Any servlet can instruct Tomcat to perform a sendfile call by setting the appropriate

+    request attributes. It is also necessary to correctly set the content length

+    for the response. When using sendfile, it is best to ensure that neither the

+    request or response have been wrapped, since as the response body will be sent later

+    by the connector itself, it cannot be filtered. Other than setting the 3 needed

+    request attributes, the servlet should not send any response data, but it may use

+    any method which will result in modifying the response header (like setting cookies).

+  </p>

+

+  <ul>

+  <li><code>org.apache.tomcat.sendfile.filename</code>: Canonical filename of the file which will be sent as

+      a String</li>

+  <li><code>org.apache.tomcat.sendfile.start</code>: Start offset as a Long</li>

+  <li><code>org.apache.tomcat.sendfile.end</code>: End offset as a Long</li>

+  </ul>

+

+  </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="/tomcat-7.0-doc/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/aio.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/api/index.html b/webapps/docs/api/index.html
new file mode 100644
index 0000000..1918dee
--- /dev/null
+++ b/webapps/docs/api/index.html
@@ -0,0 +1,34 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">

+<html>

+    <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>API docs</title>

+</head>

+

+<body>

+

+Tomcat's internal javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

+

+</body>

+</html>

diff --git a/webapps/docs/appdev/build.xml.txt b/webapps/docs/appdev/build.xml.txt
new file mode 100644
index 0000000..9ce7d20
--- /dev/null
+++ b/webapps/docs/appdev/build.xml.txt
@@ -0,0 +1,514 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<!--

+     General purpose build script for web applications and web services,

+     including enhanced support for deploying directly to a Tomcat 6

+     based server.

+

+     This build script assumes that the source code of your web application

+     is organized into the following subdirectories underneath the source

+     code directory from which you execute the build script:

+

+        docs                 Static documentation files to be copied to

+                             the "docs" subdirectory of your distribution.

+

+        src                  Java source code (and associated resource files)

+                             to be compiled to the "WEB-INF/classes"

+                             subdirectory of your web application.

+

+        web                  Static HTML, JSP, and other content (such as

+                             image files), including the WEB-INF subdirectory

+                             and its configuration file contents.

+

+     $Id: build.xml.txt 1200125 2011-11-10 04:05:48Z kkolinko $

+-->

+

+

+<!-- A "project" describes a set of targets that may be requested

+     when Ant is executed.  The "default" attribute defines the

+     target which is executed if no specific target is requested,

+     and the "basedir" attribute defines the current working directory

+     from which Ant executes the requested task.  This is normally

+     set to the current working directory.

+-->

+

+<project name="My Project" default="compile" basedir=".">

+

+

+

+<!-- ===================== Property Definitions =========================== -->

+

+

+<!--

+

+  Each of the following properties are used in the build script.

+  Values for these properties are set by the first place they are

+  defined, from the following list:

+

+  * Definitions on the "ant" command line (ant -Dfoo=bar compile).

+

+  * Definitions from a "build.properties" file in the top level

+    source directory of this application.

+

+  * Definitions from a "build.properties" file in the developer's

+    home directory.

+

+  * Default definitions in this build.xml file.

+

+  You will note below that property values can be composed based on the

+  contents of previously defined properties.  This is a powerful technique

+  that helps you minimize the number of changes required when your development

+  environment is modified.  Note that property composition is allowed within

+  "build.properties" files as well as in the "build.xml" script.

+

+-->

+

+  <property file="build.properties"/>

+  <property file="${user.home}/build.properties"/>

+

+

+<!-- ==================== File and Directory Names ======================== -->

+

+

+<!--

+

+  These properties generally define file and directory names (or paths) that

+  affect where the build process stores its outputs.

+

+  app.name             Base name of this application, used to

+                       construct filenames and directories.

+                       Defaults to "myapp".

+

+  app.path             Context path to which this application should be

+                       deployed (defaults to "/" plus the value of the

+                       "app.name" property).

+

+  app.version          Version number of this iteration of the application.

+

+  build.home           The directory into which the "prepare" and

+                       "compile" targets will generate their output.

+                       Defaults to "build".

+

+  catalina.home        The directory in which you have installed

+                       a binary distribution of Tomcat 6.  This will

+                       be used by the "deploy" target.

+

+  dist.home            The name of the base directory in which

+                       distribution files are created.

+                       Defaults to "dist".

+

+  manager.password     The login password of a user that is assigned the

+                       "manager-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

+                       Tomcat installation to which we will deploy web

+                       applications and web services.

+

+  manager.username     The login username of a user that is assigned the

+                       "manager-script" role (so that he or she can execute

+                       commands via the "/manager" web application)

+

+-->

+

+  <property name="app.name"      value="myapp"/>

+  <property name="app.path"      value="/${app.name}"/>

+  <property name="app.version"   value="0.1-dev"/>

+  <property name="build.home"    value="${basedir}/build"/>

+  <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->

+  <property name="dist.home"     value="${basedir}/dist"/>

+  <property name="docs.home"     value="${basedir}/docs"/>

+  <property name="manager.url"   value="http://localhost:8080/manager/text"/>

+  <property name="src.home"      value="${basedir}/src"/>

+  <property name="web.home"      value="${basedir}/web"/>

+

+

+<!-- ==================== External Dependencies =========================== -->

+

+

+<!--

+

+  Use property values to define the locations of external JAR files on which

+  your application will depend.  In general, these values will be used for

+  two purposes:

+  * Inclusion on the classpath that is passed to the Javac compiler

+  * Being copied into the "/WEB-INF/lib" directory during execution

+    of the "deploy" target.

+

+  Because we will automatically include all of the Java classes that Tomcat 6

+  exposes to web applications, we will not need to explicitly list any of those

+  dependencies.  You only need to worry about external dependencies for JAR

+  files that you are going to include inside your "/WEB-INF/lib" directory.

+

+-->

+

+<!-- Dummy external dependency -->

+<!--

+  <property name="foo.jar"

+           value="/path/to/foo.jar"/>

+-->

+

+

+<!-- ==================== Compilation Classpath =========================== -->

+

+<!--

+

+  Rather than relying on the CLASSPATH environment variable, Ant includes

+  features that makes it easy to dynamically construct the classpath you

+  need for each compilation.  The example below constructs the compile

+  classpath to include the servlet.jar file, as well as the other components

+  that Tomcat makes available to web applications automatically, plus anything

+  that you explicitly added.

+

+-->

+

+  <path id="compile.classpath">

+

+    <!-- Include all JAR files that will be included in /WEB-INF/lib -->

+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->

+<!--

+    <pathelement location="${foo.jar}"/>

+-->

+

+    <!-- Include all elements that Tomcat exposes to applications -->

+    <fileset dir="${catalina.home}/bin">

+      <include name="*.jar"/>

+    </fileset>

+    <pathelement location="${catalina.home}/lib"/>

+    <fileset dir="${catalina.home}/lib">

+      <include name="*.jar"/>

+    </fileset>

+

+  </path>

+

+

+

+<!-- ================== Custom Ant Task Definitions ======================= -->

+

+

+<!--

+

+  These properties define custom tasks for the Ant build tool that interact

+  with the "/manager" web application installed with Tomcat 6.  Before they

+  can be successfully utilized, you must perform the following steps:

+

+  - Copy the file "lib/catalina-ant.jar" from your Tomcat 6

+    installation into the "lib" directory of your Ant installation.

+

+  - Create a "build.properties" file in your application's top-level

+    source directory (or your user login home directory) that defines

+    appropriate values for the "manager.password", "manager.url", and

+    "manager.username" properties described above.

+

+  For more information about the Manager web application, and the functionality

+  of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.

+

+-->

+

+  <taskdef resource="org/apache/catalina/ant/catalina.tasks"

+           classpathref="compile.classpath"/>

+

+

+<!--  ==================== Compilation Control Options ==================== -->

+

+<!--

+

+  These properties control option settings on the Javac compiler when it

+  is invoked using the <javac> task.

+

+  compile.debug        Should compilation include the debug option?

+

+  compile.deprecation  Should compilation include the deprecation option?

+

+  compile.optimize     Should compilation include the optimize option?

+

+-->

+

+  <property name="compile.debug"       value="true"/>

+  <property name="compile.deprecation" value="false"/>

+  <property name="compile.optimize"    value="true"/>

+

+

+

+<!-- ==================== All Target ====================================== -->

+

+<!--

+

+  The "all" target is a shortcut for running the "clean" target followed

+  by the "compile" target, to force a complete recompile.

+

+-->

+

+  <target name="all" depends="clean,compile"

+   description="Clean build and dist directories, then compile"/>

+

+

+

+<!-- ==================== Clean Target ==================================== -->

+

+<!--

+

+  The "clean" target deletes any previous "build" and "dist" directory,

+  so that you can be ensured the application can be built from scratch.

+

+-->

+

+  <target name="clean"

+   description="Delete old build and dist directories">

+    <delete dir="${build.home}"/>

+    <delete dir="${dist.home}"/>

+  </target>

+

+

+

+<!-- ==================== Compile Target ================================== -->

+

+<!--

+

+  The "compile" target transforms source files (from your "src" directory)

+  into object files in the appropriate location in the build directory.

+  This example assumes that you will be including your classes in an

+  unpacked directory hierarchy under "/WEB-INF/classes".

+

+-->

+

+  <target name="compile" depends="prepare"

+   description="Compile Java sources">

+

+    <!-- Compile Java classes as necessary -->

+    <mkdir    dir="${build.home}/WEB-INF/classes"/>

+    <javac srcdir="${src.home}"

+          destdir="${build.home}/WEB-INF/classes"

+            debug="${compile.debug}"

+      deprecation="${compile.deprecation}"

+         optimize="${compile.optimize}">

+        <classpath refid="compile.classpath"/>

+    </javac>

+

+    <!-- Copy application resources -->

+    <copy  todir="${build.home}/WEB-INF/classes">

+      <fileset dir="${src.home}" excludes="**/*.java"/>

+    </copy>

+

+  </target>

+

+

+

+<!-- ==================== Dist Target ===================================== -->

+

+

+<!--

+

+  The "dist" target creates a binary distribution of your application

+  in a directory structure ready to be archived in a tar.gz or zip file.

+  Note that this target depends on two others:

+

+  * "compile" so that the entire web application (including external

+    dependencies) will have been assembled

+

+  * "javadoc" so that the application Javadocs will have been created

+

+-->

+

+  <target name="dist" depends="compile,javadoc"

+   description="Create binary distribution">

+

+    <!-- Copy documentation subdirectories -->

+    <mkdir   dir="${dist.home}/docs"/>

+    <copy    todir="${dist.home}/docs">

+      <fileset dir="${docs.home}"/>

+    </copy>

+

+    <!-- Create application JAR file -->

+    <jar jarfile="${dist.home}/${app.name}-${app.version}.war"

+         basedir="${build.home}"/>

+

+    <!-- Copy additional files to ${dist.home} as necessary -->

+

+  </target>

+

+

+

+<!-- ==================== Install Target ================================== -->

+

+<!--

+

+  The "install" target tells the specified Tomcat 6 installation to dynamically

+  install this web application and make it available for execution.  It does

+  *not* cause the existence of this web application to be remembered across

+  Tomcat restarts; if you restart the server, you will need to re-install all

+  this web application.

+

+  If you have already installed this application, and simply want Tomcat to

+  recognize that you have updated Java classes (or the web.xml file), use the

+  "reload" target instead.

+

+  NOTE:  This target will only succeed if it is run from the same server that

+  Tomcat is running on.

+

+  NOTE:  This is the logical opposite of the "remove" target.

+

+-->

+

+  <target name="install" depends="compile"

+   description="Install application to servlet container">

+

+    <deploy url="${manager.url}"

+       username="${manager.username}"

+       password="${manager.password}"

+           path="${app.path}"

+       localWar="file://${build.home}"/>

+

+  </target>

+

+

+<!-- ==================== Javadoc Target ================================== -->

+

+<!--

+

+  The "javadoc" target creates Javadoc API documentation for the Java

+  classes included in your application.  Normally, this is only required

+  when preparing a distribution release, but is available as a separate

+  target in case the developer wants to create Javadocs independently.

+

+-->

+

+  <target name="javadoc" depends="compile"

+   description="Create Javadoc API documentation">

+

+    <mkdir          dir="${dist.home}/docs/api"/>

+    <javadoc sourcepath="${src.home}"

+                destdir="${dist.home}/docs/api"

+           packagenames="*">

+      <classpath refid="compile.classpath"/>

+    </javadoc>

+

+  </target>

+

+

+

+<!-- ====================== List Target =================================== -->

+

+<!--

+

+  The "list" target asks the specified Tomcat 6 installation to list the

+  currently running web applications, either loaded at startup time or

+  installed dynamically.  It is useful to determine whether or not the

+  application you are currently developing has been installed.

+

+-->

+

+  <target name="list"

+   description="List installed applications on servlet container">

+

+    <list    url="${manager.url}"

+        username="${manager.username}"

+        password="${manager.password}"/>

+

+  </target>

+

+

+<!-- ==================== Prepare Target ================================== -->

+

+<!--

+

+  The "prepare" target is used to create the "build" destination directory,

+  and copy the static contents of your web application to it.  If you need

+  to copy static files from external dependencies, you can customize the

+  contents of this task.

+

+  Normally, this task is executed indirectly when needed.

+

+-->

+

+  <target name="prepare">

+

+    <!-- Create build directories as needed -->

+    <mkdir  dir="${build.home}"/>

+    <mkdir  dir="${build.home}/WEB-INF"/>

+    <mkdir  dir="${build.home}/WEB-INF/classes"/>

+

+

+    <!-- Copy static content of this web application -->

+    <copy todir="${build.home}">

+      <fileset dir="${web.home}"/>

+    </copy>

+

+    <!-- Copy external dependencies as required -->

+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->

+    <mkdir  dir="${build.home}/WEB-INF/lib"/>

+<!--

+    <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>

+-->

+

+    <!-- Copy static files from external dependencies as needed -->

+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->

+

+  </target>

+

+

+<!-- ==================== Reload Target =================================== -->

+

+<!--

+

+  The "reload" signals the specified application Tomcat 6 to shut itself down

+  and reload. This can be useful when the web application context is not

+  reloadable and you have updated classes or property files in the

+  /WEB-INF/classes directory or when you have added or updated jar files in the

+  /WEB-INF/lib directory.

+

+  NOTE: The /WEB-INF/web.xml web application configuration file is not reread

+  on a reload. If you have made changes to your web.xml file you must stop

+  then start the web application.

+

+-->

+

+  <target name="reload" depends="compile"

+   description="Reload application on servlet container">

+

+    <reload url="${manager.url}"

+       username="${manager.username}"

+       password="${manager.password}"

+           path="${app.path}"/>

+

+  </target>

+

+

+<!-- ==================== Remove Target =================================== -->

+

+<!--

+

+  The "remove" target tells the specified Tomcat 6 installation to dynamically

+  remove this web application from service.

+

+  NOTE:  This is the logical opposite of the "install" target.

+

+-->

+

+  <target name="remove"

+   description="Remove application on servlet container">

+

+    <undeploy url="${manager.url}"

+         username="${manager.username}"

+         password="${manager.password}"

+             path="${app.path}"/>

+

+  </target>

+

+

+</project>

diff --git a/webapps/docs/appdev/deployment.html b/webapps/docs/appdev/deployment.html
new file mode 100644
index 0000000..ab86ad9
--- /dev/null
+++ b/webapps/docs/appdev/deployment.html
@@ -0,0 +1,246 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">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,

+it is useful to examine the runtime organization of a web application.

+Prior to the Servlet API Specification, version 2.2, there was little

+consistency between server platforms.  However, servers that conform

+to the 2.2 (or later) specification are required to accept a

+<em>Web Application Archive</em> in a standard format, which is discussed

+further below.</p>

+

+<p>A web application is defined as a hierarchy of directories and files

+in a standard layout.  Such a hierarchy can be accessed in its "unpacked"

+form, where each directory and file exists in the filesystem separately,

+or in a "packed" form known as a Web ARchive, or WAR file.  The former format

+is more useful during development, while the latter is used when you

+distribute your application to be installed.</p>

+

+<p>The top-level directory of your web application hierarchy is also the

+<em>document root</em> of your application.  Here, you will place the HTML

+files and JSP pages that comprise your application's user interface.  When the

+system administrator deploys your application into a particular server, he

+or she assigns a <em>context path</em> to your application (a later section

+of this manual describes deployment on Tomcat).  Thus, if the

+system administrator assigns your application to the context path

+<code>/catalog</code>, then a request URI referring to

+<code>/catalog/index.html</code> will retrieve the <code>index.html</code>

+file from your document root.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Directory Layout"><!--()--></a><a name="Standard_Directory_Layout"><strong>Standard Directory Layout</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>To facilitate creation of a Web Application Archive file in the required

+format, it is convenient to arrange the "executable" files of your web

+application (that is, the files that Tomcat actually uses when executing

+your app) in the same organization as required by the WAR format itself.

+To do this, you will end up with the following contents in your

+application's "document root" directory:</p>

+<ul>

+<li><strong>*.html, *.jsp, etc.</strong> - The HTML and JSP pages, along

+    with other files that must be visible to the client browser (such as

+    JavaScript, stylesheet files, and images) for your application.

+    In larger applications you may choose to divide these files into

+    a subdirectory hierarchy, but for smaller apps, it is generally

+    much simpler to maintain only a single directory for these files.

+    <br><br></li>

+<li><strong>/WEB-INF/web.xml</strong> - The <em>Web Application Deployment

+    Descriptor</em> for your application.  This is an XML file describing

+    the servlets and other components that make up your application,

+    along with any initialization parameters and container-managed

+    security constraints that you want the server to enforce for you.

+    This file is discussed in more detail in the following subsection.

+    <br><br></li>

+<li><strong>/WEB-INF/classes/</strong> - This directory contains any Java

+    class files (and associated resources) required for your application,

+    including both servlet and non-servlet classes, that are not combined

+    into JAR files.  If your classes are organized into Java packages,

+    you must reflect this in the directory hierarchy under

+    <code>/WEB-INF/classes/</code>.  For example, a Java class named

+    <code>com.mycompany.mypackage.MyServlet</code>

+    would need to be stored in a file named

+    <code>/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class</code>.

+    <br><br></li>

+<li><strong>/WEB-INF/lib/</strong> - This directory contains JAR files that

+    contain Java class files (and associated resources) required for your

+    application, such as third party class libraries or JDBC drivers.</li>

+</ul>

+

+<p>When you install an application into Tomcat (or any other 2.2 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

+you include all of the required library classes in one of these places (be

+sure to check licenses for redistribution rights for any third party libraries

+you utilize), you will simplify the installation of your web application --

+no adjustment to the system class path (or installation of global library

+files in your server) will be necessary.</p>

+

+<p>Much of this information was extracted from Chapter 9 of the Servlet

+API Specification, version 2.3, which you should consult for more details.</p>

+

+</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 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 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 installation includes a variety

+of pre-installed shared library files, including:</p>

+<ul>

+<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>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Web Application Deployment Descriptor"><!--()--></a><a name="Web_Application_Deployment_Descriptor"><strong>Web Application Deployment Descriptor</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>As mentioned above, the <code>/WEB-INF/web.xml</code> file contains the

+Web Application Deployment Descriptor for your application.  As the filename

+extension implies, this file is an XML document, and defines everything about

+your application that a server needs to know (except the <em>context path</em>,

+which is assigned by the system administrator when the application is

+deployed).</p>

+

+<p>The complete syntax and semantics for the deployment descriptor is defined

+in Chapter 13 of the Servlet API Specification, version 2.3.  Over time, it

+is expected that development tools will be provided that create and edit the

+deployment descriptor for you.  In the meantime, to provide a starting point,

+a <a href="web.xml.txt">basic web.xml file</a>

+is provided.  This file includes comments that describe the purpose of each

+included element.</p>

+

+<p><strong>NOTE</strong> - The Servlet Specification includes a Document

+Type Descriptor (DTD) for the web application deployment descriptor, and

+Tomcat enforces the rules defined here when processing your application's

+<code>/WEB-INF/web.xml</code> file.  In particular, you <strong>must</strong>

+enter your descriptor elements (such as <code>&lt;filter&gt;</code>,

+<code>&lt;servlet&gt;</code>, and <code>&lt;servlet-mapping&gt;</code> in

+the order defined by the DTD (see Section 13.3).</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat Context Descriptor"><!--()--></a><a name="Tomcat_Context_Descriptor"><strong>Tomcat Context Descriptor</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>A /META-INF/context.xml file can be used to define Tomcat specific

+configuration options, such as an access log, data sources, session manager

+configuration and more. This XML file must contain one Context element, which

+will be considered as if it was the child of the Host element corresponding

+to the Host to which the web application is being deployed. The

+<a href="../config/index.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"><!--()--></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

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></blockquote>

+

+<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 to provide the execution environment.

+A web application can be deployed in Tomcat by one of the following

+approaches:</p>

+<ul>

+<li><em>Copy unpacked directory hierarchy into a subdirectory in directory

+    <code>$CATALINA_BASE/webapps/</code></em>.  Tomcat will assign a

+    context path to your application based on the subdirectory name you

+    choose.  We will use this technique in the <code>build.xml</code>

+    file that we construct, because it is the quickest and easiest approach

+    during development.  Be sure to restart Tomcat after installing or

+    updating your application.

+    <br><br></li>

+<li><em>Copy the web application archive file into directory

+    <code>$CATALINA_BASE/webapps/</code></em>.  When Tomcat is started, it will

+    automatically expand the web application archive file into its unpacked

+    form, and execute the application that way.  This approach would typically

+    be used to install an additional application, provided by a third party

+    vendor or by your internal development staff, into an existing

+    Tomcat installation.  <strong>NOTE</strong> - If you use this approach,

+    and wish to update your application later, you must both replace the

+    web application archive file <strong>AND</strong> delete the expanded

+    directory that Tomcat created, and then restart Tomcat, in order to reflect

+    your changes.

+    <br><br></li>

+<li><em>Use the Tomcat "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)

+    for more information on using the Manager web application.<br><br></li>

+<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 includes a packaged tool

+    bundling the Ant tasks, and can be used to automatically precompile JSPs

+    which are part of the web application before deployment to the server.

+    <br><br></li>

+</ul>

+

+<p>Deploying your app on other servlet containers will be specific to each

+container, but all containers compatible with the Servlet API Specification

+(version 2.2 or later) are required to accept a web application archive file.

+Note that other containers are <strong>NOT</strong> required to accept an

+unpacked directory structure (as Tomcat does), or to provide mechanisms for

+shared library files, but these features are commonly available.</p>

+

+</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="/tomcat-7.0-doc/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/index.html b/webapps/docs/appdev/index.html
new file mode 100644
index 0000000..55e2f4c
--- /dev/null
+++ b/webapps/docs/appdev/index.html
@@ -0,0 +1,87 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">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:

+</p>

+<ul>

+<li>Craig R. McClanahan

+    (<a href="mailto:craigmcc@apache.org">craigmcc@apache.org</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="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The information presented is divided into the following sections:</p>

+<ul>

+<li><a href="introduction.html"><strong>Introduction</strong></a> -

+    Briefly describes the information covered here, with

+    links and references to other sources of information.</li>

+<li><a href="installation.html"><strong>Installation</strong></a> -

+    Covers acquiring and installing the required software

+    components to use Tomcat for web application development.</li>

+<li><a href="deployment.html"><strong>Deployment Organization</strong></a> -

+    Discusses the standard directory layout for a web application

+    (defined in the Servlet API Specification), the Web Application

+    Deployment Descriptor, and options for integration with Tomcat

+    in your development environment.</li>

+<li><a href="source.html"><strong>Source Organization</strong></a> -

+    Describes a useful approach to organizing the source code

+    directories for your project, and introduces the

+    <code>build.xml</code> used by Ant to manage compilation.</li>

+<li><a href="processes.html"><strong>Development Processes</strong></a> -

+    Provides brief descriptions of typical development processes

+    utilizing the recommended deployment and source organizations.</li>

+<li><a href="sample/"><strong>Example Application</strong></a> -

+    This directory contains a very simple, but functionally complete,

+    "Hello, World" application built according to the principles

+    described in this manual.  You can use this application to

+    practice using the described techniques.</li>

+</ul>

+

+</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="/tomcat-7.0-doc/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/installation.html b/webapps/docs/appdev/installation.html
new file mode 100644
index 0000000..7803a16
--- /dev/null
+++ b/webapps/docs/appdev/installation.html
@@ -0,0 +1,115 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">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 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://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/">http://tomcat.apache.org/</a>.

+This manual assumes you are using the most recent release

+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 has been installed. Optionally, if

+Tomcat has been configured for multiple instances, each instance will have its

+own <code>CATALINA_BASE</code> configured.</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="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/">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.

+Then, add the <code>bin</code> directory of the Ant distribution to your

+<code>PATH</code> environment variable, following the standard practices for

+your operating system platform.  Once you have done this, you will be able to

+execute the <code>ant</code> shell command directly.</p>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CVS"><strong>CVS</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Besides the required tools described above, you are strongly encouraged

+to download and install a <em>source code control</em> system, such as the

+<strong>Concurrent Version System</strong> (CVS), to maintain historical

+versions of the source files that make up your web application.  Besides

+the server, you will also need appropriate client

+tools to check out source code files, and check in modified versions.</p>

+

+<p>Detailed instructions for installing and using source code control

+applications is beyond the scope of this manual.  However, CVS server and

+client tools for many platforms (along with documentation) can be downloaded

+from <a href="http://www.cvshome.org/">http://www.cvshome.org/</a>.</p>

+

+</blockquote></td></tr></table>

+

+

+</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="/tomcat-7.0-doc/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/introduction.html b/webapps/docs/appdev/introduction.html
new file mode 100644
index 0000000..fec0c76
--- /dev/null
+++ b/webapps/docs/appdev/introduction.html
@@ -0,0 +1,100 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">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

+Tomcat server to use for your learning and development.  But now what

+do you do?</p>

+

+<p>This manual is a primer covering the basic steps of using Tomcat to

+set up a development environment, organize your source code, and then

+build and test your application.  It does not discuss architectures or

+recommended coding practices for web application development,

+or provide in depth instructions on operating the development

+tools that are discussed.  References to sources of additional information

+are included in the following subsections.</p>

+

+<p>The discussion in this manual is aimed at developers who will be using

+a text editor along with command line tools to develop and debug their

+applications.  As such, the recommendations are fairly generic -- but you

+should easily be able to apply them in either a Windows-based or Unix-based

+development environment.  If you are utilizing an Integrated Development

+Environment (IDE) tool, you will need to adapt the advice given here to

+the details of your particular environment.</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="Links"><strong>Links</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The following links provide access to selected sources of online

+information, documentation, and software that is useful in developing

+web applications with Tomcat.</p>

+<ul>

+<li><a href="http://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

+    what a portable API page is allowed to contain.  Specific

+    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/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 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>

+</ul>

+

+</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="/tomcat-7.0-doc/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/processes.html b/webapps/docs/appdev/processes.html
new file mode 100644
index 0000000..744f558
--- /dev/null
+++ b/webapps/docs/appdev/processes.html
@@ -0,0 +1,329 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">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>

+

+<p>Although application development can take many forms, this manual proposes

+a fairly generic process for creating web applications using Tomcat.  The

+following sections highlight the commands and tasks that you, as the developer

+of the code, will perform.  The same basic approach works when you have

+multiple programmers involved, as long as you have an appropriate source code

+control system and internal team rules about who is working on what parts

+of the application at any given time.</p>

+

+<p>The task descriptions below assume that you will be using CVS for source

+code control, and that you have already configured access to the appropriate

+CVS repository.  Instructions for doing this are beyond the scope of this

+manual.  If you are using a different source code control environment, you

+will need to figure out the corresponding commands for your system.</p>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="One-Time Setup of Ant and Tomcat for Development"><!--()--></a><a name="One-Time_Setup_of_Ant_and_Tomcat_for_Development"><strong>One-Time Setup of Ant and Tomcat for Development</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>In order to take advantage of the special Ant tasks that interact with the

+<em>Manager</em> web application, you need to perform the following tasks

+once (no matter how many web applications you plan to develop).</p>

+<ul>

+<li><em>Configure the Ant custom tasks</em>.  The implementation code for the

+    Ant custom tasks is in a JAR file named

+    <code>$CATALINA_HOME/lib/catalina-ant.jar</code>, which must be

+    copied in to the <code>lib</code> directory of your Ant installation.

+    <br><br></li>

+<li><em>Define one or more Tomcat users</em>.  The <em>Manager</em> web

+    application runs under a security constraint that requires a user to be

+    logged in, and have the security role <code>manager-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-script</code> role.

+    <br><br></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Create Project Source Code Directory"><!--()--></a><a name="Create_Project_Source_Code_Directory"><strong>Create Project Source Code Directory</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The first step is to create a new project source directory, and customize

+the <code>build.xml</code> and <code>build.properties</code> files you will

+be using.  The directory structure is described in <a href="source.html">the

+previous section</a>, or you can use the

+<a href="sample/">sample application</a> as a starting point.</p>

+

+<p>Create your project source directory, and define it within your CVS

+repository.  This might be done by a series of commands like this, where

+<code>{project}</code> is the name under which your project should be

+stored in the CVS repository, and {username} is your login username:</p>

+<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"

+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>

+

+<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 ..

+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>

+

+<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}

+cd myapp

+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>

+

+<p>Until you perform the CVS commit, your changes are local to your own

+development directory.  Committing makes those changes visible to other

+developers on your team that are sharing the same CVS repository.</p>

+

+<p>The next step is to customize the Ant <em>properties</em> that are

+named in the <code>build.xml</code> script.  This is done by creating a

+file named <code>build.properties</code> in your project's top-level

+directory.  The supported properties are listed in the comments inside

+the sample <code>build.xml</code> script.  At a minimum, you will generally

+need to define the <code>catalina.home</code> property defining where

+Tomcat 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

+app.path=/hello

+

+# 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>

+

+<p>In general, you will <strong>not</strong> want to check the

+<code>build.properties</code> file in to the CVS repository, because it

+is unique to each developer's environment.</p>

+

+<p>Now, create the initial version of the web application deployment

+descriptor.  You can base <code>web.xml</code> on the

+<a href="web.xml.txt">basic web.xml file</a>, or code it from scratch.</p>

+<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/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>

+

+Note that this is only an example web.xml file.  The full definition

+of the deployment descriptor file is in the

+<a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specification.</a>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Edit Source Code and Pages"><!--()--></a><a name="Edit_Source_Code_and_Pages"><strong>Edit Source Code and Pages</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The edit/build/test tasks will generally be your most common activities

+during development and maintenance.  The following general principles apply.

+As described in <a href="source.html">Source Organization</a>, newly created

+source files should be located in the appropriate subdirectory, under your

+project source directory.</p>

+

+<p>Whenever you wish to refresh your development directory to reflect the

+work performed by other developers, you will ask CVS to do it for you:</p>

+<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

+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>

+

+<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

+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>

+

+<p>Java source code that is defined in packages must be organized in a

+directory hierarchy (under the <strong>src/</strong> subdirectory) that

+matches the package names.  For example, a Java class named

+<code>com.mycompany.mypackage.MyClass.java</code> should be stored in file

+<code>src/com/mycompany/mypackage/MyClass.java</code>.

+Whenever you create a new subdirectory, don't forget to

+register it with CVS.</p>

+

+<p>To edit an existing source file, you will generally just start editing

+and testing, then commit the changed file when everything works.  Although

+CVS can be configured to required you to "check out" or "lock" a file you

+are going to be modifying, this is generally not used.</p>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Build the Web Application"><!--()--></a><a name="Build_the_Web_Application"><strong>Build the Web Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<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>

+

+<p>The Ant tool will be execute the default "compile" target in your

+<code>build.xml</code> file, which will compile any new or updated Java

+code.  If this is the first time you compile after a "build clean",

+it will cause everything to be recompiled.</p>

+

+<p>To force the recompilation of your entire application, do this instead:</p>

+<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

+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>

+

+<p>This is a very good habit immediately before checking in changes, to

+make sure that you have not introduced any subtle problems that Javac's

+conditional checking did not catch.</p>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Test Your Web Application"><!--()--></a><a name="Test_Your_Web_Application"><strong>Test Your Web Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>To test your application, you will want to install it under Tomcat.  The

+quickest way to do that is to use the custom Ant tasks that are included in

+the sample <code>build.xml</code> script.  Using these commands might follow

+a pattern like this:</p>

+<ul>

+<li><em>Start Tomcat 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>

+    command (or just <code>ant</code>, since this is the default).  Make

+    sure that there are no compilation errors.

+    <br><br></li>

+<li><em>Install the application</em>.  Use the <code>ant install</code>

+    command.  This tells Tomcat to immediately start running your app on

+    the context path defined in the <code>app.path</code> build property.

+    Tomcat does <strong>NOT</strong> have to be restarted for this to

+    take effect.<br><br></li>

+<li><em>Test the application</em>.  Using your browser or other testing

+    tools, test the functionality of your application.

+    <br><br></li>

+<li><em>Modify and rebuild as needed</em>.  As you discover that changes

+    are required, make those changes in the original <strong>source</strong>

+    files, not in the output build directory, and re-issue the

+    <code>ant compile</code> command.  This ensures that your changes will

+    be available to be saved (via <code>cvs commit</code>) later on --

+    the output build directory is deleted and recreated as necessary.

+    <br><br></li>

+<li><em>Reload the application</em>.  Tomcat will recognize changes in

+    JSP pages automatically, but it will continue to use the old versions

+    of any servlet or JavaBean classes until the application is reloaded.

+    You can trigger this by executing the <code>ant reload</code> command.

+    <br><br></li>

+<li><em>Remove the application when you re done</em>.  When you are through

+    working on this application, you can remove it from live execution by

+    running the <code>ant remove</code> command.</li>

+</ul>

+

+<p>Do not forget to commit your changes to the source code repository when

+you have completed your testing!</p>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Creating a Release"><!--()--></a><a name="Creating_a_Release"><strong>Creating a Release</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>When you are through adding new functionality, and you've tested everything

+(you DO test, don't you :-), it is time to create the distributable version

+of your web application that can be deployed on the production server.  The

+following general steps are required:</p>

+<ul>

+<li>Issue the command <code>ant all</code> from the project source

+    directory, to rebuild everything from scratch one last time.

+    <br><br></li>

+<li>Use the <code>cvs tag</code> command to create an identifier for

+    all of the source files utilized to create this release.  This allows

+    you to reliably reconstruct a release (from sources) at a later

+    time.</li>

+<li>Issue the command <code>ant dist</code> to create a distributable

+    web application archive (WAR) file, as well as a JAR file containing

+    the corresponding source code.

+    <br><br></li>

+<li>Package the contents of the <code>dist</code> directory using the

+    <strong>tar</strong> or <strong>zip</strong> utility, according to

+    the standard release procedures used by your organization.</li>

+</ul>

+

+</blockquote></td></tr></table>

+

+

+</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="/tomcat-7.0-doc/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/sample/build.xml b/webapps/docs/appdev/sample/build.xml
new file mode 100644
index 0000000..9ce7d20
--- /dev/null
+++ b/webapps/docs/appdev/sample/build.xml
@@ -0,0 +1,514 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<!--

+     General purpose build script for web applications and web services,

+     including enhanced support for deploying directly to a Tomcat 6

+     based server.

+

+     This build script assumes that the source code of your web application

+     is organized into the following subdirectories underneath the source

+     code directory from which you execute the build script:

+

+        docs                 Static documentation files to be copied to

+                             the "docs" subdirectory of your distribution.

+

+        src                  Java source code (and associated resource files)

+                             to be compiled to the "WEB-INF/classes"

+                             subdirectory of your web application.

+

+        web                  Static HTML, JSP, and other content (such as

+                             image files), including the WEB-INF subdirectory

+                             and its configuration file contents.

+

+     $Id: build.xml.txt 1200125 2011-11-10 04:05:48Z kkolinko $

+-->

+

+

+<!-- A "project" describes a set of targets that may be requested

+     when Ant is executed.  The "default" attribute defines the

+     target which is executed if no specific target is requested,

+     and the "basedir" attribute defines the current working directory

+     from which Ant executes the requested task.  This is normally

+     set to the current working directory.

+-->

+

+<project name="My Project" default="compile" basedir=".">

+

+

+

+<!-- ===================== Property Definitions =========================== -->

+

+

+<!--

+

+  Each of the following properties are used in the build script.

+  Values for these properties are set by the first place they are

+  defined, from the following list:

+

+  * Definitions on the "ant" command line (ant -Dfoo=bar compile).

+

+  * Definitions from a "build.properties" file in the top level

+    source directory of this application.

+

+  * Definitions from a "build.properties" file in the developer's

+    home directory.

+

+  * Default definitions in this build.xml file.

+

+  You will note below that property values can be composed based on the

+  contents of previously defined properties.  This is a powerful technique

+  that helps you minimize the number of changes required when your development

+  environment is modified.  Note that property composition is allowed within

+  "build.properties" files as well as in the "build.xml" script.

+

+-->

+

+  <property file="build.properties"/>

+  <property file="${user.home}/build.properties"/>

+

+

+<!-- ==================== File and Directory Names ======================== -->

+

+

+<!--

+

+  These properties generally define file and directory names (or paths) that

+  affect where the build process stores its outputs.

+

+  app.name             Base name of this application, used to

+                       construct filenames and directories.

+                       Defaults to "myapp".

+

+  app.path             Context path to which this application should be

+                       deployed (defaults to "/" plus the value of the

+                       "app.name" property).

+

+  app.version          Version number of this iteration of the application.

+

+  build.home           The directory into which the "prepare" and

+                       "compile" targets will generate their output.

+                       Defaults to "build".

+

+  catalina.home        The directory in which you have installed

+                       a binary distribution of Tomcat 6.  This will

+                       be used by the "deploy" target.

+

+  dist.home            The name of the base directory in which

+                       distribution files are created.

+                       Defaults to "dist".

+

+  manager.password     The login password of a user that is assigned the

+                       "manager-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

+                       Tomcat installation to which we will deploy web

+                       applications and web services.

+

+  manager.username     The login username of a user that is assigned the

+                       "manager-script" role (so that he or she can execute

+                       commands via the "/manager" web application)

+

+-->

+

+  <property name="app.name"      value="myapp"/>

+  <property name="app.path"      value="/${app.name}"/>

+  <property name="app.version"   value="0.1-dev"/>

+  <property name="build.home"    value="${basedir}/build"/>

+  <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->

+  <property name="dist.home"     value="${basedir}/dist"/>

+  <property name="docs.home"     value="${basedir}/docs"/>

+  <property name="manager.url"   value="http://localhost:8080/manager/text"/>

+  <property name="src.home"      value="${basedir}/src"/>

+  <property name="web.home"      value="${basedir}/web"/>

+

+

+<!-- ==================== External Dependencies =========================== -->

+

+

+<!--

+

+  Use property values to define the locations of external JAR files on which

+  your application will depend.  In general, these values will be used for

+  two purposes:

+  * Inclusion on the classpath that is passed to the Javac compiler

+  * Being copied into the "/WEB-INF/lib" directory during execution

+    of the "deploy" target.

+

+  Because we will automatically include all of the Java classes that Tomcat 6

+  exposes to web applications, we will not need to explicitly list any of those

+  dependencies.  You only need to worry about external dependencies for JAR

+  files that you are going to include inside your "/WEB-INF/lib" directory.

+

+-->

+

+<!-- Dummy external dependency -->

+<!--

+  <property name="foo.jar"

+           value="/path/to/foo.jar"/>

+-->

+

+

+<!-- ==================== Compilation Classpath =========================== -->

+

+<!--

+

+  Rather than relying on the CLASSPATH environment variable, Ant includes

+  features that makes it easy to dynamically construct the classpath you

+  need for each compilation.  The example below constructs the compile

+  classpath to include the servlet.jar file, as well as the other components

+  that Tomcat makes available to web applications automatically, plus anything

+  that you explicitly added.

+

+-->

+

+  <path id="compile.classpath">

+

+    <!-- Include all JAR files that will be included in /WEB-INF/lib -->

+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->

+<!--

+    <pathelement location="${foo.jar}"/>

+-->

+

+    <!-- Include all elements that Tomcat exposes to applications -->

+    <fileset dir="${catalina.home}/bin">

+      <include name="*.jar"/>

+    </fileset>

+    <pathelement location="${catalina.home}/lib"/>

+    <fileset dir="${catalina.home}/lib">

+      <include name="*.jar"/>

+    </fileset>

+

+  </path>

+

+

+

+<!-- ================== Custom Ant Task Definitions ======================= -->

+

+

+<!--

+

+  These properties define custom tasks for the Ant build tool that interact

+  with the "/manager" web application installed with Tomcat 6.  Before they

+  can be successfully utilized, you must perform the following steps:

+

+  - Copy the file "lib/catalina-ant.jar" from your Tomcat 6

+    installation into the "lib" directory of your Ant installation.

+

+  - Create a "build.properties" file in your application's top-level

+    source directory (or your user login home directory) that defines

+    appropriate values for the "manager.password", "manager.url", and

+    "manager.username" properties described above.

+

+  For more information about the Manager web application, and the functionality

+  of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.

+

+-->

+

+  <taskdef resource="org/apache/catalina/ant/catalina.tasks"

+           classpathref="compile.classpath"/>

+

+

+<!--  ==================== Compilation Control Options ==================== -->

+

+<!--

+

+  These properties control option settings on the Javac compiler when it

+  is invoked using the <javac> task.

+

+  compile.debug        Should compilation include the debug option?

+

+  compile.deprecation  Should compilation include the deprecation option?

+

+  compile.optimize     Should compilation include the optimize option?

+

+-->

+

+  <property name="compile.debug"       value="true"/>

+  <property name="compile.deprecation" value="false"/>

+  <property name="compile.optimize"    value="true"/>

+

+

+

+<!-- ==================== All Target ====================================== -->

+

+<!--

+

+  The "all" target is a shortcut for running the "clean" target followed

+  by the "compile" target, to force a complete recompile.

+

+-->

+

+  <target name="all" depends="clean,compile"

+   description="Clean build and dist directories, then compile"/>

+

+

+

+<!-- ==================== Clean Target ==================================== -->

+

+<!--

+

+  The "clean" target deletes any previous "build" and "dist" directory,

+  so that you can be ensured the application can be built from scratch.

+

+-->

+

+  <target name="clean"

+   description="Delete old build and dist directories">

+    <delete dir="${build.home}"/>

+    <delete dir="${dist.home}"/>

+  </target>

+

+

+

+<!-- ==================== Compile Target ================================== -->

+

+<!--

+

+  The "compile" target transforms source files (from your "src" directory)

+  into object files in the appropriate location in the build directory.

+  This example assumes that you will be including your classes in an

+  unpacked directory hierarchy under "/WEB-INF/classes".

+

+-->

+

+  <target name="compile" depends="prepare"

+   description="Compile Java sources">

+

+    <!-- Compile Java classes as necessary -->

+    <mkdir    dir="${build.home}/WEB-INF/classes"/>

+    <javac srcdir="${src.home}"

+          destdir="${build.home}/WEB-INF/classes"

+            debug="${compile.debug}"

+      deprecation="${compile.deprecation}"

+         optimize="${compile.optimize}">

+        <classpath refid="compile.classpath"/>

+    </javac>

+

+    <!-- Copy application resources -->

+    <copy  todir="${build.home}/WEB-INF/classes">

+      <fileset dir="${src.home}" excludes="**/*.java"/>

+    </copy>

+

+  </target>

+

+

+

+<!-- ==================== Dist Target ===================================== -->

+

+

+<!--

+

+  The "dist" target creates a binary distribution of your application

+  in a directory structure ready to be archived in a tar.gz or zip file.

+  Note that this target depends on two others:

+

+  * "compile" so that the entire web application (including external

+    dependencies) will have been assembled

+

+  * "javadoc" so that the application Javadocs will have been created

+

+-->

+

+  <target name="dist" depends="compile,javadoc"

+   description="Create binary distribution">

+

+    <!-- Copy documentation subdirectories -->

+    <mkdir   dir="${dist.home}/docs"/>

+    <copy    todir="${dist.home}/docs">

+      <fileset dir="${docs.home}"/>

+    </copy>

+

+    <!-- Create application JAR file -->

+    <jar jarfile="${dist.home}/${app.name}-${app.version}.war"

+         basedir="${build.home}"/>

+

+    <!-- Copy additional files to ${dist.home} as necessary -->

+

+  </target>

+

+

+

+<!-- ==================== Install Target ================================== -->

+

+<!--

+

+  The "install" target tells the specified Tomcat 6 installation to dynamically

+  install this web application and make it available for execution.  It does

+  *not* cause the existence of this web application to be remembered across

+  Tomcat restarts; if you restart the server, you will need to re-install all

+  this web application.

+

+  If you have already installed this application, and simply want Tomcat to

+  recognize that you have updated Java classes (or the web.xml file), use the

+  "reload" target instead.

+

+  NOTE:  This target will only succeed if it is run from the same server that

+  Tomcat is running on.

+

+  NOTE:  This is the logical opposite of the "remove" target.

+

+-->

+

+  <target name="install" depends="compile"

+   description="Install application to servlet container">

+

+    <deploy url="${manager.url}"

+       username="${manager.username}"

+       password="${manager.password}"

+           path="${app.path}"

+       localWar="file://${build.home}"/>

+

+  </target>

+

+

+<!-- ==================== Javadoc Target ================================== -->

+

+<!--

+

+  The "javadoc" target creates Javadoc API documentation for the Java

+  classes included in your application.  Normally, this is only required

+  when preparing a distribution release, but is available as a separate

+  target in case the developer wants to create Javadocs independently.

+

+-->

+

+  <target name="javadoc" depends="compile"

+   description="Create Javadoc API documentation">

+

+    <mkdir          dir="${dist.home}/docs/api"/>

+    <javadoc sourcepath="${src.home}"

+                destdir="${dist.home}/docs/api"

+           packagenames="*">

+      <classpath refid="compile.classpath"/>

+    </javadoc>

+

+  </target>

+

+

+

+<!-- ====================== List Target =================================== -->

+

+<!--

+

+  The "list" target asks the specified Tomcat 6 installation to list the

+  currently running web applications, either loaded at startup time or

+  installed dynamically.  It is useful to determine whether or not the

+  application you are currently developing has been installed.

+

+-->

+

+  <target name="list"

+   description="List installed applications on servlet container">

+

+    <list    url="${manager.url}"

+        username="${manager.username}"

+        password="${manager.password}"/>

+

+  </target>

+

+

+<!-- ==================== Prepare Target ================================== -->

+

+<!--

+

+  The "prepare" target is used to create the "build" destination directory,

+  and copy the static contents of your web application to it.  If you need

+  to copy static files from external dependencies, you can customize the

+  contents of this task.

+

+  Normally, this task is executed indirectly when needed.

+

+-->

+

+  <target name="prepare">

+

+    <!-- Create build directories as needed -->

+    <mkdir  dir="${build.home}"/>

+    <mkdir  dir="${build.home}/WEB-INF"/>

+    <mkdir  dir="${build.home}/WEB-INF/classes"/>

+

+

+    <!-- Copy static content of this web application -->

+    <copy todir="${build.home}">

+      <fileset dir="${web.home}"/>

+    </copy>

+

+    <!-- Copy external dependencies as required -->

+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->

+    <mkdir  dir="${build.home}/WEB-INF/lib"/>

+<!--

+    <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>

+-->

+

+    <!-- Copy static files from external dependencies as needed -->

+    <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->

+

+  </target>

+

+

+<!-- ==================== Reload Target =================================== -->

+

+<!--

+

+  The "reload" signals the specified application Tomcat 6 to shut itself down

+  and reload. This can be useful when the web application context is not

+  reloadable and you have updated classes or property files in the

+  /WEB-INF/classes directory or when you have added or updated jar files in the

+  /WEB-INF/lib directory.

+

+  NOTE: The /WEB-INF/web.xml web application configuration file is not reread

+  on a reload. If you have made changes to your web.xml file you must stop

+  then start the web application.

+

+-->

+

+  <target name="reload" depends="compile"

+   description="Reload application on servlet container">

+

+    <reload url="${manager.url}"

+       username="${manager.username}"

+       password="${manager.password}"

+           path="${app.path}"/>

+

+  </target>

+

+

+<!-- ==================== Remove Target =================================== -->

+

+<!--

+

+  The "remove" target tells the specified Tomcat 6 installation to dynamically

+  remove this web application from service.

+

+  NOTE:  This is the logical opposite of the "install" target.

+

+-->

+

+  <target name="remove"

+   description="Remove application on servlet container">

+

+    <undeploy url="${manager.url}"

+         username="${manager.username}"

+         password="${manager.password}"

+             path="${app.path}"/>

+

+  </target>

+

+

+</project>

diff --git a/webapps/docs/appdev/sample/docs/README.txt b/webapps/docs/appdev/sample/docs/README.txt
new file mode 100644
index 0000000..e6d7eab
--- /dev/null
+++ b/webapps/docs/appdev/sample/docs/README.txt
@@ -0,0 +1,17 @@
+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+

+This is a dummy README file for the sample

+web application.

diff --git a/webapps/docs/appdev/sample/index.html b/webapps/docs/appdev/sample/index.html
new file mode 100644
index 0000000..a3db667
--- /dev/null
+++ b/webapps/docs/appdev/sample/index.html
@@ -0,0 +1,46 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<meta name="author" content="Ben Souther" />

+<title>Sample Application</title>

+</head>

+<body>

+<h2>Sample Application</h2>

+      <p>

+        The example app has been packaged as a war file and can be downloaded

+        <a href="sample.war">here</a> (Note: make sure your browser doesn't

+        change file extension or append a new one).

+      </p>

+      <p>

+        The easiest way to run this application is simply to move the war file

+        to your <b>CATALINA_HOME/webapps</b> directory. Tomcat will automatically

+        expand and deploy the application for you. You can view it with the

+        following URL (assuming that you're running tomcat on port 8080

+        as is the default):

+        <br />

+        <a href="http://localhost:8080/sample">http://localhost:8080/sample</a>

+      </p>

+      <p>

+        If you just want to browse the contents, you can unpack the war file

+        with the <b>jar</b> command.

+      </p>

+      <pre>

+        jar -xvf sample.war

+      </pre>

+</body>

+</html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/sample/sample.war b/webapps/docs/appdev/sample/sample.war
new file mode 100644
index 0000000..0a127e6
--- /dev/null
+++ b/webapps/docs/appdev/sample/sample.war
Binary files differ
diff --git a/webapps/docs/appdev/sample/src/mypackage/Hello.java b/webapps/docs/appdev/sample/src/mypackage/Hello.java
new file mode 100644
index 0000000..47bba7c
--- /dev/null
+++ b/webapps/docs/appdev/sample/src/mypackage/Hello.java
@@ -0,0 +1,84 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+

+/**

+ * Simple servlet to validate that the Hello, World example can

+ * execute servlets.  In the web application deployment descriptor,

+ * this servlet must be mapped to correspond to the link in the

+ * "index.html" file.

+ *

+ * @author Craig R. McClanahan <Craig.McClanahan@eng.sun.com>

+ */

+

+public final class Hello extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    /**

+     * Respond to a GET request for the content produced by

+     * this servlet.

+     *

+     * @param request The servlet request we are processing

+     * @param response The servlet response we are producing

+     *

+     * @exception IOException if an input/output error occurs

+     * @exception ServletException if a servlet error occurs

+     */

+    @Override

+    public void doGet(HttpServletRequest request,

+                      HttpServletResponse response)

+      throws IOException, ServletException {

+

+        response.setContentType("text/html");

+        PrintWriter writer = response.getWriter();

+

+        writer.println("<html>");

+        writer.println("<head>");

+        writer.println("<title>Sample Application Servlet Page</title>");

+        writer.println("</head>");

+        writer.println("<body bgcolor=white>");

+

+        writer.println("<table border=\"0\">");

+        writer.println("<tr>");

+        writer.println("<td>");

+        writer.println("<img src=\"images/tomcat.gif\">");

+        writer.println("</td>");

+        writer.println("<td>");

+        writer.println("<h1>Sample Application Servlet</h1>");

+        writer.println("This is the output of a servlet that is part of");

+        writer.println("the Hello, World application.");

+        writer.println("</td>");

+        writer.println("</tr>");

+        writer.println("</table>");

+

+        writer.println("</body>");

+        writer.println("</html>");

+

+    }

+

+

+}

diff --git a/webapps/docs/appdev/sample/web/WEB-INF/web.xml b/webapps/docs/appdev/sample/web/WEB-INF/web.xml
new file mode 100644
index 0000000..7fe1af0
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

+    version="2.4">

+

+    <display-name>Hello, World Application</display-name>

+    <description>

+        This is a simple web application with a source code organization

+        based on the recommendations of the Application Developer's Guide.

+    </description>

+

+    <servlet>

+        <servlet-name>HelloServlet</servlet-name>

+        <servlet-class>mypackage.Hello</servlet-class>

+    </servlet>

+

+    <servlet-mapping>

+        <servlet-name>HelloServlet</servlet-name>

+        <url-pattern>/hello</url-pattern>

+    </servlet-mapping>

+

+</web-app>

diff --git a/webapps/docs/appdev/sample/web/hello.jsp b/webapps/docs/appdev/sample/web/hello.jsp
new file mode 100644
index 0000000..de7f0ea
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/hello.jsp
@@ -0,0 +1,39 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Sample Application JSP Page</title>

+</head>

+<body bgcolor=white>

+

+<table border="0">

+<tr>

+<td align=center>

+<img src="images/tomcat.gif">

+</td>

+<td>

+<h1>Sample Application JSP Page</h1>

+This is the output of a JSP page that is part of the Hello, World

+application.

+</td>

+</tr>

+</table>

+

+<%= new String("Hello!") %>

+

+</body>

+</html>

diff --git a/webapps/docs/appdev/sample/web/images/tomcat.gif b/webapps/docs/appdev/sample/web/images/tomcat.gif
new file mode 100644
index 0000000..32f7d80
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/images/tomcat.gif
Binary files differ
diff --git a/webapps/docs/appdev/sample/web/index.html b/webapps/docs/appdev/sample/web/index.html
new file mode 100644
index 0000000..1cbcd63
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/index.html
@@ -0,0 +1,44 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Sample "Hello, World" Application</title>

+</head>

+<body bgcolor=white>

+

+<table border="0">

+<tr>

+<td>

+<img src="images/tomcat.gif">

+</td>

+<td>

+<h1>Sample "Hello, World" Application</h1>

+<p>This is the home page for a sample application used to illustrate the

+source directory organization of a web application utilizing the principles

+outlined in the Application Developer's Guide.

+</td>

+</tr>

+</table>

+

+<p>To prove that they work, you can execute either of the following links:</p>

+<ul>

+<li>To a <a href="hello.jsp">JSP page</a>.</li>

+<li>To a <a href="hello">servlet</a>.</li>

+</ul>

+

+</body>

+</html>

diff --git a/webapps/docs/appdev/source.html b/webapps/docs/appdev/source.html
new file mode 100644
index 0000000..cb135d2
--- /dev/null
+++ b/webapps/docs/appdev/source.html
@@ -0,0 +1,327 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">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

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></blockquote>

+

+<p>A key recommendation of this manual is to separate the directory

+hierarchy containing your source code (described in this section) from

+the directory hierarchy containing your deployable application

+(described in the preceding section).  Maintaining this separation has

+the following advantages:</p>

+<ul>

+<li>The contents of the source directories can be more easily administered,

+    moved, and backed up if the "executable" version of the application

+    is not intermixed.

+    <br><br></li>

+<li>Source code control is easier to manage on directories that contain

+    only source files.

+    <br><br></li>

+<li>The files that make up an installable distribution of your

+    application are much easier to select when the deployment

+    hierarchy is separate.</li>

+</ul>

+

+<p>As we will see, the <code>ant</code> development tool makes the creation

+and processing of such directory hierarchies nearly painless.</p>

+

+<p>The actual directory and file hierarchy used to contain the source code

+of an application can be pretty much anything you like.  However, the

+following organization has proven to be quite generally applicable, and is

+expected by the example <code>build.xml</code> configuration file that

+is discussed below.  All of these components exist under a top level

+<em>project source directory</em> for your application:</p>

+<ul>

+<li><strong>docs/</strong> - Documentation for your application, in whatever

+    format your development team is using.<br><br></li>

+<li><strong>src/</strong> - Java source files that generate the servlets,

+    beans, and other Java classes that are unique to your application.

+    If your source code is organized in packages (<strong>highly</strong>

+    recommended), the package hierarchy should be reflected as a directory

+    structure underneath this directory.<br><br></li>

+<li><strong>web/</strong> - The static content of your web site (HTML pages,

+    JSP pages, JavaScript files, CSS stylesheet files, and images) that will

+    be accessible to application clients.  This directory will be the

+    <em>document root</em> of your web application, and any subdirectory

+    structure found here will be reflected in the request URIs required to

+    access those files.<br><br></li>

+<li><strong>web/WEB-INF/</strong> - The special configuration files required

+    for your application, including the web application deployment descriptor

+    (<code>web.xml</code>, defined in the

+    <a href="http://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

+    subdirectory of your <em>document root</em>, the Servlet Specification

+    prohibits serving the contents of this directory (or any file it contains)

+    directly to a client request.  Therefore, this is a good place to store

+    configuration information that is sensitive (such as database connection

+    usernames and passwords), but is required for your application to

+    operate successfully.</li>

+</ul>

+

+<p>During the development process, two additional directories will be

+created on a temporary basis:</p>

+<ul>

+<li><strong>build/</strong> - When you execute a default build

+    (<code>ant</code>), this directory will contain an exact image

+    of the files in the web application archive for this application.

+    Tomcat 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

+    useful during development, and will be illustrated below.

+    <br><br></li>

+<li><strong>dist/</strong> - When you execute the <code>ant dist</code>

+    target, this directory will be created.  It will create an exact image

+    of the binary distribution for your web application, including an license

+    information, documentation, and README files that you have prepared.</li>

+</ul>

+

+<p>Note that these two directories should <strong>NOT</strong> be archived in

+your source code control system, because they are deleted and recreated (from

+scratch) as needed during development.  For that reason, you should not edit

+any source files in these directories if you want to maintain a permanent

+record of the changes, because the changes will be lost the next time that a

+build is performed.</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Dependencies"><!--()--></a><a name="External_Dependencies"><strong>External Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>What do you do if your application requires JAR files (or other

+  resources) from external projects or packages?  A common example is that

+  you need to include a JDBC driver in your web application, in order to

+  operate.</p>

+

+  <p>Different developers take different approaches to this problem.

+  Some will encourage checking a copy of the JAR files you depend on into

+  the source code control archives for every application that requires those

+  JAR files.  However, this can cause significant management issues when you

+  use the same JAR in many applications - particular when faced with a need

+  to upgrade to a different version of that JAR file.</p>

+

+  <p>Therefore, this manual recommends that you <strong>NOT</strong> store

+  a copy of the packages you depend on inside the source control archives

+  of your applications.  Instead, the external dependencies should be

+  integrated as part of the process of <strong>building</strong> your

+  application.  In that way, you can always pick up the appropriate version

+  of the JAR files from wherever your development system administrator has

+  installed them, without having to worry about updating your application

+  every time the version of the dependent JAR file is changed.</p>

+

+  <p>In the example Ant <code>build.xml</code> file, we will demonstrate

+  how to define <em>build properties</em> that let you configure the locations

+  of the files to be copied, without having to modify <code>build.xml</code>

+  when these files change.  The build properties used by a particular

+  developer can be customized on a per-application basis, or defaulted to

+  "standard" build properties stored in the developer's home directory.</p>

+

+  <p>In many cases, your development system administrator will have already

+  installed the required JAR files into the <code>lib</code> directory of Tomcat.

+  If this has been done, you need

+  to take no actions at all - the example <code>build.xml</code> file

+  automatically constructs a compile classpath that includes these files.</p>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Source Code Control"><!--()--></a><a name="Source_Code_Control"><strong>Source Code Control</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>As mentioned earlier, it is highly recommended that you place all of the

+source files that comprise your application under the management of a

+source code control system like the Concurrent Version System (CVS).  If you

+elect to do this, every directory and file in the source hierarchy should be

+registered and saved -- but none of the generated files.  If you register

+binary format files (such as images or JAR libraries), be sure to indicate

+this to your source code control system.</p>

+

+<p>We recommended (in the previous section) that you should not store the

+contents of the <code>build/</code> and <code>dist/</code> directories

+created by your development process in the source code control system.  An

+easy way to tell CVS to ignore these directories is to create a file named

+<code>.cvsignore</code> (note the leading period) in your top-level source

+directory, with the following contents:</p>

+<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

+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>

+

+<p>The reason for mentioning <code>build.properties</code> here will be

+explained in the <a href="processes.html">Processes</a> section.</p>

+

+<p>Detailed instructions for your source code control environment are beyond

+the scope of this manual.  However, the following steps are followed when

+using a command-line CVS client:</p>

+<ul>

+<li>To refresh the state of your source code to that stored in the

+    the source repository, go to your project source directory, and

+    execute <code>cvs update -dP</code>.

+    <br><br></li>

+<li>When you create a new subdirectory in the source code hierarchy, register

+    it in CVS with a command like <code>cvs add {subdirname}</code>.

+    <br><br></li>

+<li>When you first create a new source code file, navigate to the directory

+    that contains it, and register the new file with a command like

+    <code>cvs add {filename}</code>.

+    <br><br></li>

+<li>If you no longer need a particular source code file, navigate to the

+    containing directory and remove the file.  Then, deregister it in CVS

+    with a command like <code>cvs remove {filename}</code>.

+    <br><br></li>

+<li>While you are creating, modifying, and deleting source files, changes

+    are not yet reflected in the server repository.  To save your changes in

+    their current state, go to the project source directory

+    and execute <code>cvs commit</code>.  You will be asked to write a brief

+    description of the changes you have just completed, which will be stored

+    with the new version of any updated source file.</li>

+</ul>

+

+<p>CVS, like other source code control systems, has many additional features

+(such as the ability to tag the files that made up a particular release, and

+support for multiple development branches that can later be merged).  See the

+links and references in the <a href="introduction.html">Introduction</a> for

+more information.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="BUILD.XML Configuration File"><!--()--></a><a name="BUILD.XML_Configuration_File"><strong>BUILD.XML Configuration File</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>We will be using the <strong>ant</strong> tool to manage the compilation of

+our Java source code files, and creation of the deployment hierarchy.  Ant

+operates under the control of a build file, normally called

+<code>build.xml</code>, that defines the processing steps required.  This

+file is stored in the top-level directory of your source code hierarchy, and

+should be checked in to your source code control system.</p>

+

+<p>Like a Makefile, the <code>build.xml</code> file provides several

+"targets" that support optional development activities (such as creating

+the associated Javadoc documentation, erasing the deployment home directory

+so you can build your project from scratch, or creating the web application

+archive file so you can distribute your application.  A well-constructed

+<code>build.xml</code> file will contain internal documentation describing

+the targets that are designed for use by the developer, versus those targets

+used internally.  To ask Ant to display the project documentation, change to

+the directory containing the <code>build.xml</code> 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>

+

+<p>To give you a head start, a <a href="build.xml.txt">basic build.xml file</a>

+is provided that you can customize and install in the project source directory

+for your application.  This file includes comments that describe the various

+targets that can be executed.  Briefly, the following targets are generally

+provided:</p>

+<ul>

+<li><strong>clean</strong> - This target deletes any existing

+    <code>build</code> and <code>dist</code> directories, so that they

+    can be reconstructed from scratch.  This allows you to guarantee that

+    you have not made source code modifications that will result in

+    problems at runtime due to not recompiling all affected classes.

+    <br><br></li>

+<li><strong>compile</strong> - This target is used to compile any source code

+    that has been changed since the last time compilation took place.  The

+    resulting class files are created in the <code>WEB-INF/classes</code>

+    subdirectory of your <code>build</code> directory, exactly where the

+    structure of a web application requires them to be.  Because

+    this command is executed so often during development, it is normally

+    made the "default" target so that a simple <code>ant</code> command will

+    execute it.

+    <br><br></li>

+<li><strong>all</strong> - This target is a short cut for running the

+    <code>clean</code> target, followed by the <code>compile</code> target.

+    Thus, it guarantees that you will recompile the entire application, to

+    ensure that you have not unknowingly introduced any incompatible changes.

+    <br><br></li>

+<li><strong>javadoc</strong> - This target creates Javadoc API documentation

+    for the Java classes in this web application.  The example

+    <code>build.xml</code> file assumes you want to include the API

+    documentation with your app distribution, so it generates the docs

+    in a subdirectory of the <code>dist</code> directory.  Because you normally

+    do not need to generate the Javadocs on every compilation, this target is

+    usually a dependency of the <code>dist</code> target, but not of the

+    <code>compile</code> target.

+    <br><br></li>

+<li><strong>dist</strong> - This target creates a distribution directory for

+    your application, including any required documentation, the Javadocs for

+    your Java classes, and a web application archive (WAR) file that will be

+    delivered to system administrators who wish to install your application.

+    Because this target also depends on the <code>deploy</code> target, the

+    web application archive will have also picked up any external dependencies

+    that were included at deployment time.</li>

+</ul>

+

+<p>For interactive development and testing of your web application using

+Tomcat, the following additional targets are defined:</p>

+<ul>

+<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 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 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 to remove this

+    application from service.

+    </li>

+</ul>

+

+<p>Using the development and testing targets requires some additional

+one-time setup that is described on the next page.</p>

+

+</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="/tomcat-7.0-doc/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/web.xml.txt b/webapps/docs/appdev/web.xml.txt
new file mode 100644
index 0000000..6574742
--- /dev/null
+++ b/webapps/docs/appdev/web.xml.txt
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<!DOCTYPE web-app

+    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

+    "http://java.sun.com/dtd/web-app_2_3.dtd">

+

+<web-app>

+

+

+    <!-- General description of your web application -->

+

+    <display-name>My Web Application</display-name>

+    <description>

+      This is version X.X of an application to perform

+      a wild and wonderful task, based on servlets and

+      JSP pages.  It was written by Dave Developer

+      (dave@mycompany.com), who should be contacted for

+      more information.

+    </description>

+

+

+    <!-- Context initialization parameters that define shared

+         String constants used within your application, which

+         can be customized by the system administrator who is

+         installing your application.  The values actually

+         assigned to these parameters can be retrieved in a

+         servlet or JSP page by calling:

+

+             String value =

+               getServletContext().getInitParameter("name");

+

+         where "name" matches the <param-name> element of

+         one of these initialization parameters.

+

+         You can define any number of context initialization

+         parameters, including zero.

+    -->

+

+    <context-param>

+      <param-name>webmaster</param-name>

+      <param-value>myaddress@mycompany.com</param-value>

+      <description>

+        The EMAIL address of the administrator to whom questions

+        and comments about this application should be addressed.

+      </description>

+    </context-param>

+

+

+    <!-- Servlet definitions for the servlets that make up

+         your web application, including initialization

+         parameters.  With Tomcat, you can also send requests

+         to servlets not listed here with a request like this:

+

+           http://localhost:8080/{context-path}/servlet/{classname}

+

+         but this usage is not guaranteed to be portable.  It also

+         makes relative references to images and other resources

+         required by your servlet more complicated, so defining

+         all of your servlets (and defining a mapping to them with

+         a servlet-mapping element) is recommended.

+

+         Servlet initialization parameters can be retrieved in a

+         servlet or JSP page by calling:

+

+             String value =

+               getServletConfig().getInitParameter("name");

+

+         where "name" matches the <param-name> element of

+         one of these initialization parameters.

+

+         You can define any number of servlets, including zero.

+    -->

+

+    <servlet>

+      <servlet-name>controller</servlet-name>

+      <description>

+        This servlet plays the "controller" role in the MVC architecture

+        used in this application.  It is generally mapped to the ".do"

+        filename extension with a servlet-mapping element, and all form

+        submits in the app will be submitted to a request URI like

+        "saveCustomer.do", which will therefore be mapped to this servlet.

+

+        The initialization parameter names for this servlet are the

+        "servlet path" that will be received by this servlet (after the

+        filename extension is removed).  The corresponding value is the

+        name of the action class that will be used to process this request.

+      </description>

+      <servlet-class>com.mycompany.mypackage.ControllerServlet</servlet-class>

+      <init-param>

+        <param-name>listOrders</param-name>

+        <param-value>com.mycompany.myactions.ListOrdersAction</param-value>

+      </init-param>

+      <init-param>

+        <param-name>saveCustomer</param-name>

+        <param-value>com.mycompany.myactions.SaveCustomerAction</param-value>

+      </init-param>

+      <!-- Load this servlet at server startup time -->

+      <load-on-startup>5</load-on-startup>

+    </servlet>

+

+    <servlet>

+      <servlet-name>graph</servlet-name>

+      <description>

+        This servlet produces GIF images that are dynamically generated

+        graphs, based on the input parameters included on the request.

+        It is generally mapped to a specific request URI like "/graph".

+      </description>

+    </servlet>

+

+

+    <!-- Define mappings that are used by the servlet container to

+         translate a particular request URI (context-relative) to a

+         particular servlet.  The examples below correspond to the

+         servlet descriptions above.  Thus, a request URI like:

+

+           http://localhost:8080/{contextpath}/graph

+

+         will be mapped to the "graph" servlet, while a request like:

+

+           http://localhost:8080/{contextpath}/saveCustomer.do

+

+         will be mapped to the "controller" servlet.

+

+         You may define any number of servlet mappings, including zero.

+         It is also legal to define more than one mapping for the same

+         servlet, if you wish to.

+    -->

+

+    <servlet-mapping>

+      <servlet-name>controller</servlet-name>

+      <url-pattern>*.do</url-pattern>

+    </servlet-mapping>

+

+    <servlet-mapping>

+      <servlet-name>graph</servlet-name>

+      <url-pattern>/graph</url-pattern>

+    </servlet-mapping>

+

+

+    <!-- Define the default session timeout for your application,

+         in minutes.  From a servlet or JSP page, you can modify

+         the timeout for a particular session dynamically by using

+         HttpSession.getMaxInactiveInterval(). -->

+

+    <session-config>

+      <session-timeout>30</session-timeout>    <!-- 30 minutes -->

+    </session-config>

+

+

+</web-app>

diff --git a/webapps/docs/apr.html b/webapps/docs/apr.html
new file mode 100644
index 0000000..b9149d0
--- /dev/null
+++ b/webapps/docs/apr.html
@@ -0,0 +1,188 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Apache Portable Runtime (APR) based Native library for Tomcat</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Portable Runtime (APR) based Native library for Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a><ol><li><a href="#Windows">Windows</a></li><li><a href="#Linux">Linux</a></li></ol></li><li><a href="#APR_Components">APR Components</a></li><li><a href="#APR_Lifecycle_Listener_Configuration">APR Lifecycle Listener Configuration</a><ol><li><a href="#AprLifecycleListener">AprLifecycleListener</a></li></ol></li><li><a href="#APR_Connectors_Configuration">APR Connectors Configuration</a><ol><li><a href="#HTTP/HTTPS">HTTP/HTTPS</a></li><li><a href="#AJP">AJP</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+      Tomcat can use the <a href="http://apr.apache.org/">Apache Portable Runtime</a> to

+      provide superior scalability, performance, and better integration with native server

+      technologies. The Apache Portable Runtime is a highly portable library that is at

+      the heart of Apache HTTP Server 2.x. APR has many uses, including access to advanced IO

+      functionality (such as sendfile, epoll and OpenSSL), OS level functionality (random number

+      generation, system status, etc), and native process handling (shared memory, NT

+      pipes and Unix sockets).

+  </p>

+

+  <p>

+      These features allows making Tomcat a general purpose webserver, will enable much better

+      integration with other native web technologies, and overall make Java much more viable as

+      a full fledged webserver platform rather than simply a backend focused technology.

+  </p>

+

+  </blockquote></td></tr></table><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>

+      APR support requires three main native components to be installed:

+      <ul>

+        <li>APR library</li>

+        <li>JNI wrappers for APR used by Tomcat (libtcnative)</li>

+        <li>OpenSSL libraries</li>

+      </ul>

+    </p>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Windows"><strong>Windows</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      Windows binaries are provided for tcnative-1, which is a statically compiled .dll which includes

+      OpenSSL and APR. It can be downloaded from <a href="http://tomcat.apache.org/download-native.cgi">here</a>

+      as 32bit or AMD x86-64 binaries.

+      In security conscious production environments, it is recommended to use separate shared dlls

+      for OpenSSL, APR, and libtcnative-1, and update them as needed according to security bulletins.

+      Windows OpenSSL binaries are linked from the <a href="http://www.openssl.org">Official OpenSSL

+      website</a> (see related/binaries).

+    </p>

+

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Linux"><strong>Linux</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      Most Linux distributions will ship packages for APR and OpenSSL. The JNI wrapper (libtcnative) will

+      then have to be compiled. It depends on APR, OpenSSL, and the Java headers.

+    </p>

+

+    <p>

+      Requirements:

+      <ul>

+        <li>APR 1.2+ development headers (libapr1-dev package)</li>

+        <li>OpenSSL 0.9.7+ development headers (libssl-dev package)</li>

+        <li>JNI headers from Java compatible JDK 1.4+</li>

+        <li>GNU development environment (gcc, make)</li>

+      </ul>

+    </p>

+

+    <p>

+      The wrapper library sources are located in the Tomcat binary bundle, in the

+      <code>bin/tomcat-native.tar.gz</code> archive.

+      Once the build environment is installed and the source archive is extracted, the wrapper library

+      can be compiled using (from the folder containing the configure script):

+      <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>./configure &amp;&amp; make &amp;&amp; make install</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+

+    </blockquote></td></tr></table>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Components"><!--()--></a><a name="APR_Components"><strong>APR Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    Once the libraries are properly installed and available to Java (if loading fails, the library path

+    will be displayed), the Tomcat connectors will automatically use APR. Configuration of the connectors

+    is similar to the regular connectors, but have a few extra attributes which are used to configure

+    APR components. Note that the defaults should be well tuned for most use cases, and additional

+    tweaking shouldn't be required.

+  </p>

+

+  <p>

+    When APR is enabled, the following features are also enabled in Tomcat:

+    <ul>

+      <li>Secure session ID generation by default on all platforms (platforms other than Linux required

+          random number generation using a configured entropy)</li>

+      <li>OS level statistics on memory usage and CPU usage by the Tomcat process are displayed by

+          the status servlet</li>

+    </ul>

+  </p>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Lifecycle Listener Configuration"><!--()--></a><a name="APR_Lifecycle_Listener_Configuration"><strong>APR Lifecycle Listener Configuration</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AprLifecycleListener"><strong>AprLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

+    <attribute name="SSLEngine" required="false">

+    <p>

+      Name of the SSLEngine to use. off: Do not use SSL, on: Use SSL but no specific ENGINE.

+      The default value is <b>on</b>.

+      This initializes the native SSL engine, then enable the use of this engine in the connector

+      using the <code>SSLEnabled</code> attribute. Example:

+      <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>

+&lt;Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /&gt;

+      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+    <p>See the <a href="http://www.openssl.org">Official OpenSSL

+       website</a> for more details on SSL hardware engines and manufacturers.

+    </p>

+    </attribute>

+    </blockquote></td></tr></table>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Connectors Configuration"><!--()--></a><a name="APR_Connectors_Configuration"><strong>APR Connectors Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP/HTTPS"><strong>HTTP/HTTPS</strong></a></font></td></tr><tr><td><blockquote>

+

+      <p>For HTTP configuration, see the <a href="config/http.html">HTTP</a>

+      connector configuration documentation.</p>

+

+      <p>For HTTPS configuration, see the

+      <a href="config/http.html#SSL%20Support">HTTPS</a> connector configuration

+      documentation.</p>

+

+      <p>An example SSL Connector declaration is:

+      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+      &lt;Connector port="443" maxHttpHeaderSize="8192"

+                 maxThreads="150"

+                 enableLookups="false" disableUploadTimeout="true"

+                 acceptCount="100" scheme="https" secure="true"

+                 SSLEnabled="true"

+                 SSLCertificateFile="${catalina.base}/conf/localhost.crt"

+                 SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" /&gt;</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      </p>

+

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AJP"><strong>AJP</strong></a></font></td></tr><tr><td><blockquote>

+

+      <p>For AJP configuration, see the <a href="config/ajp.html">AJP</a>

+      connector configuration documentation.</p>

+

+    </blockquote></td></tr></table>

+

+  </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="/tomcat-7.0-doc/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/apr.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/index.html b/webapps/docs/architecture/index.html
new file mode 100644
index 0000000..9b5a9d4
--- /dev/null
+++ b/webapps/docs/architecture/index.html
@@ -0,0 +1,77 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - Table of Contents</title><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture 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="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</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 section of the Tomcat documentation attempts to explain

+the architecture and design of the Tomcat server.  It includes significant

+contributions from several tomcat developers:

+</p>

+<ul>

+<li>Yoav Shapira

+    (<a href="mailto:yoavs@apache.org">yoavs@apache.org</a>)</li>

+<li>Jeanfrancois Arcand

+    (<a href="mailto:jfarcand@apache.org">jfarcand@apache.org</a>)</li>

+<li>Filip Hanik

+    (<a href="mailto:fhanik@apache.org">fhanik@apache.org</a>)</li>

+</ul>

+

+</blockquote></td></tr></table><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>

+

+<p>The information presented is divided into the following sections:</p>

+<ul>

+<li><a href="overview.html"><strong>Overview</strong></a> -

+    An overview of the Tomcat server architecture with key terms

+    and concepts.</li>

+<li><a href="startup.html"><strong>Server Startup</strong></a> -

+    A detailed description, with sequence diagrams, of how the Tomcat

+    server starts up.</li>

+<li><a href="requestProcess.html"><strong>Request Process Flow</strong></a> -

+    A detailed description of how Tomcat handles a request.</li>

+</ul>

+

+</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="/tomcat-7.0-doc/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/architecture/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/overview.html b/webapps/docs/architecture/overview.html
new file mode 100644
index 0000000..0faddee
--- /dev/null
+++ b/webapps/docs/architecture/overview.html
@@ -0,0 +1,146 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - Architecture Overview</title><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture 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="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Architecture Overview</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>

+This page provides an overview of the Tomcat server architecture.

+</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="Terms"><strong>Terms</strong></a></font></td></tr><tr><td><blockquote>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+In the Tomcat world, a

+<a href="../config/server.html">Server</a> represents the whole container.

+Tomcat provides a default implementation of the

+<a href="../api/org/apache/catalina/Server.html">Server interface</a>

+which is rarely customized by users.

+</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="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+A <a href="../config/service.html">Service</a> is an intermediate component

+which lives inside a Server and ties one or more Connectors to exactly one

+Engine.  The Service element is rarely customized by users, as the default

+implementation is simple and sufficient:

+<a href="../api/org/apache/catalina/Service.html">Service interface</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="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+An

+<a href="../config/engine.html">Engine</a> represents request processing

+pipeline for a specific Service.  As a Service may have multiple Connectors,

+the Engine receives and processes all requests from these connectors, handing

+the response back to the appropriate connector for transmission to the client.

+The <a href="../api/org/apache/catalina/Engine.html">Engine interface</a>

+may be implemented to supply custom Engines, though this is uncommon.

+</p>

+<p>

+Note that the Engine may be used for Tomcat server clustering via the

+jvmRoute parameter.  Read the Clustering documentation for more information.

+</p>

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+A <a href="../config/host.html">Host</a> is an association of a network name,

+e.g. www.yourcompany.com, to the Tomcat server.  An Engine may contain

+multiple hosts, and the Host element also supports network aliases such as

+yourcompany.com and abc.yourcompany.com.  Users rarely create custom

+<a href="../api/org/apache/catalina/Host.html">Hosts</a>

+because the

+<a href="../api/org/apache/catalina/core/StandardHost.html">StandardHost

+implementation</a> provides significant additional functionality.

+</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="Connector"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+A Connector handles communications with the client.  There are multiple

+connectors available with Tomcat. These include the

+<a href="../config/http.html">HTTP connector</a> which is used for

+most HTTP traffic, especially when running Tomcat as a standalone server,

+and the <a href="../config/ajp.html">AJP connector</a> which implements

+the AJP procotol used when connecting Tomcat to a web server such as

+Apache HTTPD server. Creating a customized connector is a significant

+effort.

+</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="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+A

+<a href="../config/context.html">Context</a>

+represents a web application.  A Host may contain multiple

+contexts, each with a unique path.  The

+<a href="../api/org/apache/catalina/Context.html">Context

+interface</a> may be implemented to create custom Contexts, but

+this is rarely the case because the

+<a href="../api/org/apache/catalina/core/StandardContext.html">

+StandardContext</a> provides significant additional functionality.

+</p>

+</blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Comments"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+Tomcat is designed to be a fast and efficient implementation of the

+Servlet Specification.  Tomcat came about as the reference implementation

+of this specification, and has remained rigorous in adhering to the

+specification.  At the same time, significant attention has been paid

+to Tomcat's performance and it is now on par with other servlet containers,

+including commercial ones.

+</p>

+<p>

+In recent releases of Tomcat, mostly starting with Tomcat 5,

+we have begun efforts to make more aspects of Tomcat manageable via

+JMX.  In addition, the Manager and Admin webapps have been greatly

+enhanced and improved.  Manageability is a primary area of concern

+for us as the product matures and the specification becomes more

+stable.

+</p>

+</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="/tomcat-7.0-doc/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/architecture/overview.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/requestProcess.html b/webapps/docs/architecture/requestProcess.html
new file mode 100644
index 0000000..9751353
--- /dev/null
+++ b/webapps/docs/architecture/requestProcess.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - Request Process Flow</title><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture 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="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Request Process Flow</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Process Flow"><!--()--></a><a name="Request_Process_Flow"><strong>Request Process Flow</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+This page describes the process used by Tomcat to handle

+an incoming request.  This process is largely defined by

+the Servlet Specification, which outlines the order

+of events that must take place.

+</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="description"><strong>description</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+TODO

+</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="diagram"><strong>diagram</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+A UML sequence diagram of the request process is available

+<a href="requestProcess/requestProcess.pdf">here.</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="comments"><strong>comments</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+The Servlet Specification provides many opportunities for

+listening in (using Listeners) or modifying (using Filters)

+the request handling process even before the request arrives

+at the servlet that will handle it.

+</p>

+

+</blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/architecture/requestProcess.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/requestProcess/requestProcess.pdf b/webapps/docs/architecture/requestProcess/requestProcess.pdf
new file mode 100644
index 0000000..6a171de
--- /dev/null
+++ b/webapps/docs/architecture/requestProcess/requestProcess.pdf
Binary files differ
diff --git a/webapps/docs/architecture/requestProcess/roseModel.mdl b/webapps/docs/architecture/requestProcess/roseModel.mdl
new file mode 100644
index 0000000..64ef567
--- /dev/null
+++ b/webapps/docs/architecture/requestProcess/roseModel.mdl
@@ -0,0 +1,12921 @@
+

+(object Petal

+    version    	45

+    _written   	"Rose 7.6.0109.2314"

+    charSet    	0)

+

+(object Design "Logical View"

+    is_unit    	TRUE

+    is_loaded  	TRUE

+    quid       	"3DFDF6CE0337"

+    defaults   	(object defaults

+	rightMargin 	0.250000

+	leftMargin 	0.250000

+	topMargin  	0.250000

+	bottomMargin 	0.500000

+	pageOverlap 	0.250000

+	clipIconLabels 	TRUE

+	autoResize 	TRUE

+	snapToGrid 	TRUE

+	gridX      	16

+	gridY      	16

+	defaultFont 	(object Font

+	    size       	10

+	    face       	"Arial"

+	    bold       	FALSE

+	    italics    	FALSE

+	    underline  	FALSE

+	    strike     	FALSE

+	    color      	0

+	    default_color 	TRUE)

+	showMessageNum 	1

+	showClassOfObject 	TRUE

+	notation   	"Unified")

+    root_usecase_package 	(object Class_Category "Use Case View"

+	quid       	"3DFDF6CE0369"

+	exportControl 	"Public"

+	global     	TRUE

+	logical_models 	(list unit_reference_list)

+	logical_presentations 	(list unit_reference_list

+	    (object UseCaseDiagram "Main"

+		quid       	"3DFDF6D201FE"

+		title      	"Main"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list))))

+    root_category 	(object Class_Category "Logical View"

+	quid       	"3DFDF6CE0338"

+	exportControl 	"Public"

+	global     	TRUE

+	subsystem  	"Component View"

+	quidu      	"3DFDF6CE036A"

+	logical_models 	(list unit_reference_list

+	    (object Class_Category "org.apache.catalina"

+		quid       	"3E42DE8D0082"

+		visible_categories 	(list visibility_relationship_list

+		    (object Visibility_Relationship

+			quid       	"3E42DEF601EB"

+			supplier   	"Logical View::org.apache.tomcat.util"

+			quidu      	"3E42DEDF01F2")

+		    (object Visibility_Relationship

+			quid       	"3E42DF700060"

+			supplier   	"Logical View::org.apache.coyote"

+			quidu      	"3E42DE9F0132")

+		    (object Visibility_Relationship

+			quid       	"3E43D165039C"

+			supplier   	"Logical View::org.apache.naming"

+			quidu      	"3E43D1580339"))

+		exportControl 	"Public"

+		logical_models 	(list unit_reference_list

+		    (object Class_Category "ant"

+			quid       	"3E42DFBB037F"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43CFF7020F"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "authenticator"

+			quid       	"3E42DFC702B4"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D03C0395"

+				supplier   	"Logical View::org.apache.catalina::deploy"

+				quidu      	"3E42DFDC0340")

+			    (object Visibility_Relationship

+				quid       	"3E43D03F01C2"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184")

+			    (object Visibility_Relationship

+				quid       	"3E43D043024A"

+				supplier   	"Logical View::org.apache.catalina::valves"

+				quidu      	"3E42E02D035B"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "connector"

+			quid       	"3E42DFCF036A"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D07E017D"

+				supplier   	"Logical View::org.apache.catalina::session"

+				quidu      	"3E42E00C026D"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "core"

+			quid       	"3E42DFD603BA"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D19E01A9"

+				supplier   	"Logical View::org.apache.catalina::deploy"

+				quidu      	"3E42DFDC0340")

+			    (object Visibility_Relationship

+				quid       	"3E43D1A10185"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184")

+			    (object Visibility_Relationship

+				quid       	"3E43D1CE007C"

+				supplier   	"Logical View::org.apache.catalina::connector"

+				quidu      	"3E42DFCF036A")

+			    (object Visibility_Relationship

+				quid       	"3E43D1D800D0"

+				supplier   	"Logical View::org.apache.catalina::security"

+				quidu      	"3E42E00100D7")

+			    (object Visibility_Relationship

+				quid       	"3E43D25C031F"

+				supplier   	"Logical View::org.apache.catalina::mbean"

+				quidu      	"3E42DFF10188")

+			    (object Visibility_Relationship

+				quid       	"3E43D260028E"

+				supplier   	"Logical View::org.apache.catalina::startup"

+				quidu      	"3E42E01E00EC")

+			    (object Visibility_Relationship

+				quid       	"3E43D26A015C"

+				supplier   	"Logical View::org.apache.catalina::session"

+				quidu      	"3E42E00C026D")

+			    (object Visibility_Relationship

+				quid       	"3E43D2830271"

+				supplier   	"Logical View::org.apache.catalina::valves"

+				quidu      	"3E42E02D035B")

+			    (object Visibility_Relationship

+				quid       	"3E43D2C80248"

+				supplier   	"Logical View::org.apache.catalina::net"

+				quidu      	"3E42DFF70227")

+			    (object Visibility_Relationship

+				quid       	"3E43D2D6002B"

+				supplier   	"Logical View::org.apache.catalina::loader"

+				quidu      	"3E43D2D002D6")

+			    (object Visibility_Relationship

+				quid       	"3E43D3D300F7"

+				supplier   	"Logical View::org.apache.naming"

+				quidu      	"3E43D1580339"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "deploy"

+			quid       	"3E42DFDC0340"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D32001B8"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "launcher"

+			quid       	"3E42DFE2033F"

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "logger"

+			quid       	"3E42DFEC0285"

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "mbean"

+			quid       	"3E42DFF10188"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D49101A5"

+				supplier   	"Logical View::org.apache.catalina::deploy"

+				quidu      	"3E42DFDC0340")

+			    (object Visibility_Relationship

+				quid       	"3E43D4C6027D"

+				supplier   	"Logical View::org.apache.catalina::core"

+				quidu      	"3E42DFD603BA")

+			    (object Visibility_Relationship

+				quid       	"3E43D4FB008F"

+				supplier   	"Logical View::org.apache.catalina::session"

+				quidu      	"3E42E00C026D")

+			    (object Visibility_Relationship

+				quid       	"3E43D50000BE"

+				supplier   	"Logical View::org.apache.catalina::valves"

+				quidu      	"3E42E02D035B")

+			    (object Visibility_Relationship

+				quid       	"3E43D5080278"

+				supplier   	"Logical View::org.apache.catalina::realm"

+				quidu      	"3E42DFFA00AE")

+			    (object Visibility_Relationship

+				quid       	"3E43D55A0258"

+				supplier   	"Logical View::org.apache.catalina::logger"

+				quidu      	"3E42DFEC0285")

+			    (object Visibility_Relationship

+				quid       	"3E43D56000D0"

+				supplier   	"Logical View::org.apache.catalina::authenticator"

+				quidu      	"3E42DFC702B4"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "net"

+			quid       	"3E42DFF70227"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D6390371"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "realm"

+			quid       	"3E42DFFA00AE"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D69F0133"

+				supplier   	"Logical View::org.apache.catalina::core"

+				quidu      	"3E42DFD603BA")

+			    (object Visibility_Relationship

+				quid       	"3E43D6A10353"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184")

+			    (object Visibility_Relationship

+				quid       	"3E43D70E00E2"

+				supplier   	"Logical View::org.apache.naming"

+				quidu      	"3E43D1580339")

+			    (object Visibility_Relationship

+				quid       	"3E43D72302D7"

+				supplier   	"Logical View::org.apache.catalina::deploy"

+				quidu      	"3E42DFDC0340"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "security"

+			quid       	"3E42E00100D7"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D74D007F"

+				supplier   	"Logical View::org.apache.catalina::startup"

+				quidu      	"3E42E01E00EC")

+			    (object Visibility_Relationship

+				quid       	"3E43D76B0371"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "servlets"

+			quid       	"3E42E00502DB"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D82702E5"

+				supplier   	"Logical View::org.apache.tomcat.util"

+				quidu      	"3E42DEDF01F2")

+			    (object Visibility_Relationship

+				quid       	"3E43D82A02CC"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184")

+			    (object Visibility_Relationship

+				quid       	"3E43D82D0244"

+				supplier   	"Logical View::org.apache.naming"

+				quidu      	"3E43D1580339"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "session"

+			quid       	"3E42E00C026D"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D8770344"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "ssi"

+			quid       	"3E42E01002C3"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D8F902B5"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "startup"

+			quid       	"3E42E01E00EC"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D9150251"

+				supplier   	"Logical View::org.apache.catalina::logger"

+				quidu      	"3E42DFEC0285")

+			    (object Visibility_Relationship

+				quid       	"3E43D919018F"

+				supplier   	"Logical View::org.apache.catalina::security"

+				quidu      	"3E42E00100D7")

+			    (object Visibility_Relationship

+				quid       	"3E43D946000D"

+				supplier   	"Logical View::org.apache.catalina::core"

+				quidu      	"3E42DFD603BA")

+			    (object Visibility_Relationship

+				quid       	"3E43D95E012A"

+				supplier   	"Logical View::org.apache.catalina::loader"

+				quidu      	"3E43D2D002D6")

+			    (object Visibility_Relationship

+				quid       	"3E43D9960315"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184")

+			    (object Visibility_Relationship

+				quid       	"3E43D99902BF"

+				supplier   	"Logical View::org.apache.catalina::valves"

+				quidu      	"3E42E02D035B")

+			    (object Visibility_Relationship

+				quid       	"3E43D99C0147"

+				supplier   	"Logical View::org.apache.catalina::deploy"

+				quidu      	"3E42DFDC0340")

+			    (object Visibility_Relationship

+				quid       	"3E43D9DA0114"

+				supplier   	"Logical View::org.apache.catalina::net"

+				quidu      	"3E42DFF70227")

+			    (object Visibility_Relationship

+				quid       	"3E43D9F402F2"

+				supplier   	"Logical View::org.apache.catalina::realm"

+				quidu      	"3E42DFFA00AE"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "user"

+			quid       	"3E42E0220174"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43DB240227"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184")

+			    (object Visibility_Relationship

+				quid       	"3E43DB31009F"

+				supplier   	"Logical View::org.apache.naming"

+				quidu      	"3E43D1580339"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "util"

+			quid       	"3E42E0260184"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43DB85017C"

+				supplier   	"Logical View::org.apache.catalina::core"

+				quidu      	"3E42DFD603BA")

+			    (object Visibility_Relationship

+				quid       	"3E43DB88016C"

+				supplier   	"Logical View::org.apache.naming"

+				quidu      	"3E43D1580339"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "valves"

+			quid       	"3E42E02D035B"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43DC2B0257"

+				supplier   	"Logical View::org.apache.catalina::util"

+				quidu      	"3E42E0260184")

+			    (object Visibility_Relationship

+				quid       	"3E43DD3E0271"

+				supplier   	"Logical View::org.apache.catalina::deploy"

+				quidu      	"3E42DFDC0340")

+			    (object Visibility_Relationship

+				quid       	"3E43DD4102CF"

+				supplier   	"Logical View::org.apache.catalina::connector"

+				quidu      	"3E42DFCF036A")

+			    (object Visibility_Relationship

+				quid       	"3E43DDDE00B8"

+				supplier   	"Logical View::org.apache.catalina::core"

+				quidu      	"3E42DFD603BA"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list))

+		    (object Class_Category "loader"

+			quid       	"3E43D2D002D6"

+			visible_categories 	(list visibility_relationship_list

+			    (object Visibility_Relationship

+				quid       	"3E43D3CF00F2"

+				supplier   	"Logical View::org.apache.naming"

+				quidu      	"3E43D1580339"))

+			exportControl 	"Public"

+			logical_models 	(list unit_reference_list)

+			logical_presentations 	(list unit_reference_list)))

+		logical_presentations 	(list unit_reference_list

+		    (object ClassDiagram "Main"

+			quid       	"3E42DFB6010B"

+			title      	"Main"

+			zoom       	100

+			max_height 	28350

+			max_width  	21600

+			origin_x   	0

+			origin_y   	0

+			items      	(list diagram_item_list

+			    (object CategoryView "Logical View::org.apache.catalina::ant" @1

+				location   	(2208, 1504)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@1

+				    location   	(2064, 1420)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"ant")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFBB037F"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::authenticator" @2

+				location   	(192, 2000)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@2

+				    location   	(48, 1916)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"authenticator")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFC702B4"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::connector" @3

+				location   	(464, 1328)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@3

+				    location   	(320, 1244)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"connector")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFCF036A"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::core" @4

+				location   	(2224, 800)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@4

+				    location   	(2080, 716)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"core")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFD603BA"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::deploy" @5

+				location   	(240, 160)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@5

+				    location   	(96, 76)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"deploy")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFDC0340"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::launcher" @6

+				location   	(1776, 2480)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@6

+				    location   	(1632, 2396)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"launcher")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFE2033F"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::logger" @7

+				location   	(752, 128)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@7

+				    location   	(608, 44)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"logger")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFEC0285"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::mbean" @8

+				location   	(2208, 1216)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@8

+				    location   	(2064, 1132)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"mbean")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFF10188"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::net" @9

+				location   	(1056, 2496)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@9

+				    location   	(912, 2412)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"net")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFF70227"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::realm" @10

+				location   	(1248, 112)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@10

+				    location   	(1104, 28)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"realm")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DFFA00AE"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::security" @11

+				location   	(304, 2496)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@11

+				    location   	(160, 2412)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"security")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E00100D7"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::servlets" @12

+				location   	(2096, 1888)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@12

+				    location   	(1952, 1804)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"servlets")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E00502DB"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::session" @13

+				location   	(432, 1696)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@13

+				    location   	(288, 1612)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"session")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E00C026D"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::ssi" @14

+				location   	(672, 2480)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@14

+				    location   	(528, 2393)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"ssi")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E01002C3"

+				width      	301

+				height     	187)

+			    (object CategoryView "Logical View::org.apache.catalina::startup" @15

+				location   	(1088, 832)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@15

+				    location   	(944, 748)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"startup")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E01E00EC"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::user" @16

+				location   	(1424, 2496)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@16

+				    location   	(1280, 2412)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"user")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E0220174"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::util" @17

+				location   	(1312, 1872)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@17

+				    location   	(1168, 1788)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"util")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E0260184"

+				width      	300

+				height     	180)

+			    (object CategoryView "Logical View::org.apache.catalina::valves" @18

+				location   	(304, 704)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@18

+				    location   	(160, 620)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"valves")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42E02D035B"

+				width      	300

+				height     	180)

+			    (object ImportView "" @19

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43CFF7020F"

+				client     	@1

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @20

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D07E017D"

+				client     	@3

+				supplier   	@13

+				line_style 	0)

+			    (object CategoryView "Logical View::org.apache.catalina::loader" @21

+				location   	(2240, 416)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@21

+				    location   	(2096, 332)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	288

+				    justify    	0

+				    label      	"loader")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E43D2D002D6"

+				width      	300

+				height     	180)

+			    (object ImportView "" @22

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D32001B8"

+				client     	@5

+				supplier   	@17

+				line_style 	0)

+			    (object CategoryView "Logical View::org.apache.naming" @23

+				location   	(1872, 96)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@23

+				    location   	(1699, 12)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	346

+				    justify    	0

+				    label      	"org.apache.naming")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E43D1580339"

+				width      	358

+				height     	180)

+			    (object ImportView "" @24

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D3CF00F2"

+				client     	@21

+				supplier   	@23

+				line_style 	0)

+			    (object ImportView "" @25

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D6390371"

+				client     	@9

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @26

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D69F0133"

+				client     	@10

+				supplier   	@4

+				line_style 	0)

+			    (object ImportView "" @27

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D6A10353"

+				client     	@10

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @28

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D70E00E2"

+				client     	@10

+				supplier   	@23

+				line_style 	0)

+			    (object ImportView "" @29

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D72302D7"

+				client     	@10

+				supplier   	@5

+				line_style 	0)

+			    (object ImportView "" @30

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D69F0133"

+				client     	@10

+				supplier   	@4

+				line_style 	0)

+			    (object ImportView "" @31

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D74D007F"

+				client     	@11

+				supplier   	@15

+				line_style 	0)

+			    (object ImportView "" @32

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D76B0371"

+				client     	@11

+				supplier   	@17

+				line_style 	0)

+			    (object CategoryView "Logical View::org.apache.tomcat.util" @33

+				location   	(2096, 2224)

+				font       	(object Font

+				    size       	10

+				    face       	"Arial"

+				    bold       	FALSE

+				    italics    	FALSE

+				    underline  	FALSE

+				    strike     	FALSE

+				    color      	0

+				    default_color 	TRUE)

+				label      	(object ItemLabel

+				    Parent_View 	@33

+				    location   	(1923, 2140)

+				    fill_color 	13434879

+				    nlines     	2

+				    max_width  	346

+				    justify    	0

+				    label      	"org.apache.tomcat.util")

+				icon_style 	"Icon"

+				line_color 	3342489

+				fill_color 	13434879

+				quidu      	"3E42DEDF01F2"

+				width      	358

+				height     	180)

+			    (object ImportView "" @34

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D8770344"

+				client     	@13

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @35

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D8F902B5"

+				client     	@14

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @36

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DB240227"

+				client     	@16

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @37

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DB31009F"

+				client     	@16

+				supplier   	@23

+				line_style 	0)

+			    (object ImportView "" @38

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DB85017C"

+				client     	@17

+				supplier   	@4

+				line_style 	0)

+			    (object ImportView "" @39

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DB88016C"

+				client     	@17

+				supplier   	@23

+				line_style 	0)

+			    (object ImportView "" @40

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D82702E5"

+				client     	@12

+				supplier   	@33

+				line_style 	0)

+			    (object ImportView "" @41

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D82A02CC"

+				client     	@12

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @42

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D82D0244"

+				client     	@12

+				supplier   	@23

+				vertices   	(list Points

+				    (2060, 1743)

+				    (1746, 447)

+				    (1838, 186))

+				line_style 	0)

+			    (object ImportView "" @43

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D919018F"

+				client     	@15

+				supplier   	@11

+				line_style 	0)

+			    (object ImportView "" @44

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D946000D"

+				client     	@15

+				supplier   	@4

+				line_style 	0)

+			    (object ImportView "" @45

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D95E012A"

+				client     	@15

+				supplier   	@21

+				line_style 	0)

+			    (object ImportView "" @46

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D95E012A"

+				client     	@15

+				supplier   	@21

+				line_style 	0)

+			    (object ImportView "" @47

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D9960315"

+				client     	@15

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @48

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D99902BF"

+				client     	@15

+				supplier   	@18

+				line_style 	0)

+			    (object ImportView "" @49

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D99C0147"

+				client     	@15

+				supplier   	@5

+				line_style 	0)

+			    (object ImportView "" @50

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D946000D"

+				client     	@15

+				supplier   	@4

+				line_style 	0)

+			    (object ImportView "" @51

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D9150251"

+				client     	@15

+				supplier   	@7

+				line_style 	0)

+			    (object ImportView "" @52

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D9DA0114"

+				client     	@15

+				supplier   	@9

+				line_style 	0)

+			    (object ImportView "" @53

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D9F402F2"

+				client     	@15

+				supplier   	@10

+				line_style 	0)

+			    (object ImportView "" @54

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D9960315"

+				client     	@15

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @55

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D946000D"

+				client     	@15

+				supplier   	@4

+				line_style 	0)

+			    (object ImportView "" @56

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D99C0147"

+				client     	@15

+				supplier   	@5

+				line_style 	0)

+			    (object ImportView "" @57

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D49101A5"

+				client     	@8

+				supplier   	@5

+				line_style 	0)

+			    (object ImportView "" @58

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D4C6027D"

+				client     	@8

+				supplier   	@4

+				line_style 	0)

+			    (object ImportView "" @59

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D4FB008F"

+				client     	@8

+				supplier   	@13

+				line_style 	0)

+			    (object ImportView "" @60

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D50000BE"

+				client     	@8

+				supplier   	@18

+				vertices   	(list Points

+				    (2057, 1216)

+				    (1278, 1216)

+				    (454, 783))

+				line_style 	0)

+			    (object ImportView "" @61

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D5080278"

+				client     	@8

+				supplier   	@10

+				line_style 	0)

+			    (object ImportView "" @62

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D55A0258"

+				client     	@8

+				supplier   	@7

+				line_style 	0)

+			    (object ImportView "" @63

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D56000D0"

+				client     	@8

+				supplier   	@2

+				line_style 	0)

+			    (object ImportView "" @64

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D19E01A9"

+				client     	@4

+				supplier   	@5

+				line_style 	0)

+			    (object ImportView "" @65

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D1A10185"

+				client     	@4

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @66

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D1CE007C"

+				client     	@4

+				supplier   	@3

+				line_style 	0)

+			    (object ImportView "" @67

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D1D800D0"

+				client     	@4

+				supplier   	@11

+				vertices   	(list Points

+				    (2081, 890)

+				    (959, 1616)

+				    (409, 2351))

+				line_style 	0)

+			    (object ImportView "" @68

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D25C031F"

+				client     	@4

+				supplier   	@8

+				line_style 	0)

+			    (object ImportView "" @69

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D260028E"

+				client     	@4

+				supplier   	@15

+				line_style 	0)

+			    (object ImportView "" @70

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D26A015C"

+				client     	@4

+				supplier   	@13

+				line_style 	0)

+			    (object ImportView "" @71

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D2830271"

+				client     	@4

+				supplier   	@18

+				line_style 	0)

+			    (object ImportView "" @72

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D2C80248"

+				client     	@4

+				supplier   	@9

+				line_style 	0)

+			    (object ImportView "" @73

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D2D6002B"

+				client     	@4

+				supplier   	@21

+				line_style 	0)

+			    (object ImportView "" @74

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D3D300F7"

+				client     	@4

+				supplier   	@23

+				line_style 	0)

+			    (object ImportView "" @75

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D03C0395"

+				client     	@2

+				supplier   	@5

+				vertices   	(list Points

+				    (171, 1855)

+				    (16, 766)

+				    (205, 250))

+				line_style 	0)

+			    (object ImportView "" @76

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D03F01C2"

+				client     	@2

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @77

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43D043024A"

+				client     	@2

+				supplier   	@18

+				line_style 	0)

+			    (object ImportView "" @78

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DC2B0257"

+				client     	@18

+				supplier   	@17

+				line_style 	0)

+			    (object ImportView "" @79

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DD3E0271"

+				client     	@18

+				supplier   	@5

+				line_style 	0)

+			    (object ImportView "" @80

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DD4102CF"

+				client     	@18

+				supplier   	@3

+				line_style 	0)

+			    (object ImportView "" @81

+				stereotype 	TRUE

+				line_color 	3342489

+				quidu      	"3E43DDDE00B8"

+				client     	@18

+				supplier   	@4

+				vertices   	(list Points

+				    (454, 654)

+				    (1293, 381)

+				    (2073, 731))

+				line_style 	0)))))

+	    (object Class_Category "org.apache.coyote"

+		quid       	"3E42DE9F0132"

+		visible_categories 	(list visibility_relationship_list

+		    (object Visibility_Relationship

+			quid       	"3E42DEFC00B3"

+			supplier   	"Logical View::org.apache.tomcat.util"

+			quidu      	"3E42DEDF01F2"))

+		exportControl 	"Public"

+		logical_models 	(list unit_reference_list)

+		logical_presentations 	(list unit_reference_list))

+	    (object Class_Category "org.apache.tomcat.util"

+		quid       	"3E42DEDF01F2"

+		exportControl 	"Public"

+		logical_models 	(list unit_reference_list)

+		logical_presentations 	(list unit_reference_list))

+	    (object Class_Category "org.apache.jasper"

+		quid       	"3E42DEFF0270"

+		exportControl 	"Public"

+		logical_models 	(list unit_reference_list)

+		logical_presentations 	(list unit_reference_list))

+	    (object Class_Category "org.apache.naming"

+		quid       	"3E43D1580339"

+		exportControl 	"Public"

+		logical_models 	(list unit_reference_list)

+		logical_presentations 	(list unit_reference_list))

+	    (object Mechanism @82

+		logical_models 	(list unit_reference_list

+		    (object Object "Bootstrap"

+			quid       	"3DFDF8FD0345"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFDF9210008"

+				supplier   	"Bootstrap"

+				quidu      	"3DFDF8FD0345"

+				messages   	(list Messages

+				    (object Message "initClassLoaders()"

+					quid       	"3DFDF9210009"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFDF91A010C"

+				supplier   	"Catalina"

+				quidu      	"3DFDF90A0330"

+				messages   	(list Messages

+				    (object Message "newInstance()"

+					quid       	"3DFDF91A010D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "setParentClassLoader()"

+					quid       	"3DFDF97900C2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "load()"

+					quid       	"3DFDFA3402F2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"4"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "Digester"

+			quid       	"3DFDFAF201A1"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFDFB8400A6"

+				supplier   	"ServerLifecycleListener"

+				quidu      	"3DFDFB4B0217"

+				messages   	(list Messages

+				    (object Message "newInstance()"

+					quid       	"3DFDFB8400A7"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"9.1"

+					ordinal    	9

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFDFB920147"

+				supplier   	"GlobalResourcesLifecycleListener"

+				quidu      	"3DFDFB7A02AB"

+				messages   	(list Messages

+				    (object Message "newInstance()"

+					quid       	"3DFDFB920148"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"9.2"

+					ordinal    	10

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "ServerLifecycleListener"

+			quid       	"3DFDFB4B0217"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "GlobalResourcesLifecycleListener"

+			quid       	"3DFDFB7A02AB"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "SecurityConfig"

+			quid       	"3DFDFBD802BA"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "Catalina"

+			quid       	"3DFDF90A0330"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFDFA8001D9"

+				supplier   	"Catalina"

+				quidu      	"3DFDF90A0330"

+				messages   	(list Messages

+				    (object Message "initDirs()"

+					quid       	"3DFDFA8001DA"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"5"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "initNaming()"

+					quid       	"3DFDFA8B0347"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"6"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "initialize()"

+					quid       	"3DFDFAAD01AC"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"7"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFDFAF800C3"

+				supplier   	"Digester"

+				quidu      	"3DFDFAF201A1"

+				messages   	(list Messages

+				    (object Message "createDigester()"

+					quid       	"3DFDFAF800C4"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "parse()"

+					quid       	"3DFDFB0100B2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"9"

+					ordinal    	8

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFDFBEA00C1"

+				supplier   	"SecurityConfig"

+				quidu      	"3DFDFBD802BA"

+				messages   	(list Messages

+				    (object Message "newInstance()"

+					quid       	"3DFDFBEA00C2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"10"

+					ordinal    	11

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "setPackageDefinition()"

+					quid       	"3DFDFBF401F2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"11"

+					ordinal    	12

+					Operation  	"setPackageDefinition"

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "setPackageAccess()"

+					quid       	"3DFDFC1203C2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"12"

+					ordinal    	13

+					Operation  	"setPackageAccess"

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @83

+		logical_models 	(list unit_reference_list

+		    (object Object "Catalina"

+			quid       	"3DFDFC8F015F"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFDFD1F0075"

+				supplier   	"StandardServer"

+				quidu      	"3DFDFCCB006B"

+				messages   	(list Messages

+				    (object Message "initialize()"

+					quid       	"3DFDFD1F0076"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardServer"

+			quid       	"3DFDFCCB006B"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFDFD3D01C3"

+				supplier   	"StandardService"

+				quidu      	"3DFDFD370020"

+				messages   	(list Messages

+				    (object Message "initialize()"

+					quid       	"3DFDFD3D01C4"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardService"

+			quid       	"3DFDFD370020"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFDFE990304"

+				supplier   	"CoyoteConnector"

+				quidu      	"3DFDFE810313"

+				messages   	(list Messages

+				    (object Message "initialize()"

+					quid       	"3DFDFE990305"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.1"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "CoyoteConnector"

+			quid       	"3DFDFE810313"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE013D0216"

+				supplier   	"CoyoteAdapter"

+				quidu      	"3DFDFFA00226"

+				messages   	(list Messages

+				    (object Message "new()"

+					quid       	"3DFE013D0217"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.1.1"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE0183032F"

+				supplier   	"Http11Protocol"

+				quidu      	"3DFE016601A6"

+				messages   	(list Messages

+				    (object Message "new()"

+					quid       	"3DFE01830330"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.1.2"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "init()"

+					quid       	"3DFE0188032C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.1.3"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE01BC038B"

+				supplier   	"JkCoyoteAdapter"

+				quidu      	"3DFE01AD01A8"

+				messages   	(list Messages

+				    (object Message "new()"

+					quid       	"3DFE01BC038C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.1.4"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "init()"

+					quid       	"3DFE01C30164"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.1.5"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "CoyoteAdapter"

+			quid       	"3DFDFFA00226"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "Http11Protocol"

+			quid       	"3DFE016601A6"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "JkCoyoteAdapter"

+			quid       	"3DFE01AD01A8"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @84

+		logical_models 	(list unit_reference_list

+		    (object Object "Bootstrap"

+			quid       	"3DFE027700F5"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE02830373"

+				supplier   	"Catalina"

+				quidu      	"3DFE027D0067"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE02830374"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "Catalina"

+			quid       	"3DFE027D0067"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE02BA0187"

+				supplier   	"StandardServer"

+				quidu      	"3DFE02B30015"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE02BA0188"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardServer"

+			quid       	"3DFE02B30015"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE02D3006B"

+				supplier   	"StandardServer"

+				quidu      	"3DFE02B30015"

+				messages   	(list Messages

+				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

+					quid       	"3DFE02D3006C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.1"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "fireLifecycleEvent(START_EVENT)"

+					quid       	"3DFE02DF02DF"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.2"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE030C02B2"

+				supplier   	"StandardService"

+				quidu      	"3DFE030400E3"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE030C02B3"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.3"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardService"

+			quid       	"3DFE030400E3"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE031D0021"

+				supplier   	"StandardService"

+				quidu      	"3DFE030400E3"

+				messages   	(list Messages

+				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

+					quid       	"3DFE031D0022"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.3.1"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "fireLifecycleEvent(START_EVENT)"

+					quid       	"3DFE0330019B"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.3.2"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE03700189"

+				supplier   	"StandardEngine"

+				quidu      	"3DFE034700C2"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE0370018A"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.3.3"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardEngine"

+			quid       	"3DFE034700C2"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE03750050"

+				supplier   	"StandardEngine"

+				quidu      	"3DFE034700C2"

+				messages   	(list Messages

+				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

+					quid       	"3DFE03750051"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	8

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "addDefaultMapper()"

+					quid       	"3DFE0389001C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3"

+					ordinal    	9

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "logger.start()"

+					quid       	"3DFE03980281"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"4"

+					ordinal    	10

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "realm.start()"

+					quid       	"3DFE03A80107"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"5"

+					ordinal    	11

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "findMappers()"

+					quid       	"3DFE03BD000D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"6"

+					ordinal    	12

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "findChildren()"

+					quid       	"3DFE03E000A4"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"7"

+					ordinal    	13

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE03FB0279"

+				supplier   	"StandardHost"

+				quidu      	"3DFE03F2035D"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE03FB027A"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8"

+					ordinal    	14

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardHost"

+			quid       	"3DFE03F2035D"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE043B02AD"

+				supplier   	"StandardHost"

+				quidu      	"3DFE03F2035D"

+				messages   	(list Messages

+				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

+					quid       	"3DFE043B02AE"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.1"

+					ordinal    	15

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "addDefaultMapper()"

+					quid       	"3DFE045C021F"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.2"

+					ordinal    	16

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "logger.start()"

+					quid       	"3DFE049B000C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.3"

+					ordinal    	17

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "findMapper()"

+					quid       	"3DFE04A303BB"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.4"

+					ordinal    	18

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "findChildren()"

+					quid       	"3DFE04A90342"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.5"

+					ordinal    	19

+					Operation  	"findChildren"

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE048E00B8"

+				supplier   	"StandardPipeline"

+				quidu      	"3DFE047D006D"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE048E00B9"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.6"

+					ordinal    	20

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardPipeline"

+			quid       	"3DFE047D006D"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE05780137"

+				supplier   	"StandardPipeline"

+				quidu      	"3DFE047D006D"

+				messages   	(list Messages

+				    (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"

+					quid       	"3DFE05780138"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.6.1"

+					ordinal    	21

+					Operation  	"fireLifecycleEvent(AFTER_START_EVENT)"

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "fireLifecycleEvent(START_EVENT)"

+					quid       	"3DFE05A80398"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.6.2"

+					ordinal    	22

+					Operation  	"fireLifecycleEvent(BEFORE_START_EVENT)"

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "fireLifecycleEvent(AFTER_EVENT)"

+					quid       	"3DFE05BA0196"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"8.6.3"

+					ordinal    	23

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @85

+		logical_models 	(list unit_reference_list

+		    (object Object "StandardHost"

+			quid       	"3DFE0538017B"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE066C0340"

+				supplier   	"StandardHost"

+				quidu      	"3DFE0538017B"

+				messages   	(list Messages

+				    (object Message "fireLifecycleEvent(START_EVENT)"

+					quid       	"3DFE066C0341"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE06D20293"

+				supplier   	"HostConfig"

+				quidu      	"3DFE06A60131"

+				messages   	(list Messages

+				    (object Message "interested[i].lifecycleEvent()"

+					quid       	"3DFE06D20294"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "install()"

+					quid       	"3DFE078B03BB"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"ToClientFromSupplier"

+					sequence   	"2.6"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "install()"

+					quid       	"3DFE132D0309"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"ToClientFromSupplier"

+					sequence   	"5"

+					ordinal    	13

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE07B100BD"

+				supplier   	"StandardHostDeployer"

+				quidu      	"3DFE079A0055"

+				messages   	(list Messages

+				    (object Message "install()"

+					quid       	"3DFE07B100BE"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3"

+					ordinal    	8

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "install() // same as above"

+					quid       	"3DFE133A036C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"6"

+					ordinal    	17

+					Operation  	"install()"

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "HostConfig"

+			quid       	"3DFE06A60131"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE06E9028C"

+				supplier   	"HostConfig"

+				quidu      	"3DFE06A60131"

+				messages   	(list Messages

+				    (object Message "setDeployXML()"

+					quid       	"3DFE06E9028D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.1"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "setLiveDeploy()"

+					quid       	"3DFE06F300FF"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.2"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "setUnpacksWar()"

+					quid       	"3DFE06FB00D9"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.3"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "setXMLValidation()"

+					quid       	"3DFE070C0015"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.4"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "deployDescriptors()"

+					quid       	"3DFE073B0031"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2.5"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "deployApps()"

+					quid       	"3DFE131F0327"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"4"

+					ordinal    	12

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardHostDeployer"

+			quid       	"3DFE079A0055"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE07D200EC"

+				supplier   	"Digester"

+				quidu      	"3DFE07C9034C"

+				messages   	(list Messages

+				    (object Message "create()"

+					quid       	"3DFE07D200ED"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1"

+					ordinal    	9

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "parse()"

+					quid       	"3DFE07D603D7"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.6"

+					ordinal    	16

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "add(ContextRuleSet)"

+					quid       	"3DFE08FA003D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.3"

+					ordinal    	11

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE087D01E2"

+				supplier   	"StandardHostDeployer"

+				quidu      	"3DFE079A0055")

+			    (object Link

+				quid       	"3DFE08DA029A"

+				supplier   	"ContextRuleSet"

+				quidu      	"3DFE0834016F"

+				messages   	(list Messages

+				    (object Message "new()"

+					quid       	"3DFE08DA029B"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.2"

+					ordinal    	10

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "add(NamingRuleSet())"

+					quid       	"3DFE0907015F"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.5"

+					ordinal    	15

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE08E00090"

+				supplier   	"NamingRuleSet"

+				quidu      	"3DFE08D00173"

+				messages   	(list Messages

+				    (object Message "new()"

+					quid       	"3DFE08E00091"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.4"

+					ordinal    	14

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "Digester"

+			quid       	"3DFE07C9034C"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "ContextRuleSet"

+			quid       	"3DFE0834016F"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "NamingRuleSet"

+			quid       	"3DFE08D00173"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @86

+		logical_models 	(list unit_reference_list

+		    (object Object "Digester"

+			quid       	"3DFE095A0371"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE0E7801DA"

+				supplier   	"Digester"

+				quidu      	"3DFE095A0371"

+				messages   	(list Messages

+				    (object Message "parse"

+					quid       	"3DFE0E7801DB"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "startElement()"

+					quid       	"3DFE0F2F03D2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE0F400213"

+				supplier   	"Rule"

+				quidu      	"3DFE0E7400D0"

+				messages   	(list Messages

+				    (object Message "begin()"

+					quid       	"3DFE0F400214"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "Rule"

+			quid       	"3DFE0E7400D0"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE0FD30265"

+				supplier   	"StandardContext"

+				quidu      	"3DFE0FC502A1"

+				messages   	(list Messages

+				    (object Message "newInstance()"

+					quid       	"3DFE0FD30266"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE102002E8"

+				supplier   	"SetPropertiesRule"

+				quidu      	"3DFE100303A4"

+				messages   	(list Messages

+				    (object Message "begin()"

+					quid       	"3DFE102002E9"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.2"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE127F0024"

+				supplier   	"Rule"

+				quidu      	"3DFE0E7400D0")

+			    (object Link

+				quid       	"3DFE128501C7"

+				supplier   	"SetNextRule"

+				quidu      	"3DFE12690267"

+				messages   	(list Messages

+				    (object Message "end()"

+					quid       	"3DFE128501C8"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.3"

+					ordinal    	8

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardContext"

+			quid       	"3DFE0FC502A1"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE114A0192"

+				supplier   	"StandardPipeline"

+				quidu      	"3DFE112F003F"

+				messages   	(list Messages

+				    (object Message "setBasic(StandardContextValve)"

+					quid       	"3DFE114A0193"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.2"

+					ordinal    	5

+					Operation  	"setBasic"

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE115E001E"

+				supplier   	"StandardContextValve"

+				quidu      	"3DFE110D0375"

+				messages   	(list Messages

+				    (object Message "new()"

+					quid       	"3DFE115E001F"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "SetPropertiesRule"

+			quid       	"3DFE100303A4"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE11D50390"

+				supplier   	"StandardContext"

+				quidu      	"3DFE0FC502A1"

+				messages   	(list Messages

+				    (object Message "//Using BeanUtil, set the object properties (from ex: admin.xml)"

+					quid       	"3DFE11D50391"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.2.1"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardContextValve"

+			quid       	"3DFE110D0375"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardPipeline"

+			quid       	"3DFE112F003F"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "SetNextRule"

+			quid       	"3DFE12690267"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @87

+		logical_models 	(list unit_reference_list

+		    (object Object "StandardContext"

+			quid       	"3DFE196D00D9"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE200603BD"

+				supplier   	"WebappLoader"

+				quidu      	"3DFE1FFA0347"

+				messages   	(list Messages

+				    (object Message "new"

+					quid       	"3DFE200603BE"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.1"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE200C0299"

+				supplier   	"StandardContext"

+				quidu      	"3DFE196D00D9"

+				messages   	(list Messages

+				    (object Message "setLoader"

+					quid       	"3DFE200C029A"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.2"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "setManager"

+					quid       	"3DFE2032001C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.4"

+					ordinal    	8

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "fireLifecycleEvent(START_EVENT)"

+					quid       	"3DFE205B01A2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.5"

+					ordinal    	9

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE202C024F"

+				supplier   	"StandardManager"

+				quidu      	"3DFE201F0105"

+				messages   	(list Messages

+				    (object Message "new"

+					quid       	"3DFE202C0250"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.3"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "start()"

+					quid       	"3DFE20B600E5"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.7"

+					ordinal    	12

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE20960002"

+				supplier   	"ContextConfig"

+				quidu      	"3DFE2087028C"

+				messages   	(list Messages

+				    (object Message " // Notify interested LifecycleListeners"

+					quid       	"3DFE20960003"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6"

+					ordinal    	10

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardHostDeployer"

+			quid       	"3DFE1D8A02DC"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE1FAF0014"

+				supplier   	"StandardHost"

+				quidu      	"3DFE1DF20141"

+				messages   	(list Messages

+				    (object Message "addChild"

+					quid       	"3DFE1FB60277"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardHost"

+			quid       	"3DFE1DF20141"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE1FC40227"

+				supplier   	"StandardContext"

+				quidu      	"3DFE196D00D9"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE1FC40228"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "WebappLoader"

+			quid       	"3DFE1FFA0347"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardManager"

+			quid       	"3DFE201F0105"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "ContextConfig"

+			quid       	"3DFE2087028C"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE20CF018B"

+				supplier   	"ContextConfig"

+				quidu      	"3DFE2087028C"

+				messages   	(list Messages

+				    (object Message "start()"

+					quid       	"3DFE20CF018C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.1"

+					ordinal    	11

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "defaultConfig()"

+					quid       	"3DFE20E303E2"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.2"

+					ordinal    	13

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "applicationConfig()"

+					quid       	"3DFE211D01A1"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.3"

+					ordinal    	14

+					Operation  	"applicationConfig"

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE21B60287"

+				supplier   	"Digester"

+				quidu      	"3DFE13960364"

+				messages   	(list Messages

+				    (object Message "create()"

+					quid       	"3DFE21B60288"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.3.1"

+					ordinal    	15

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "createWarpper() // Invoked by a WebWrapperRule (not Directly by the Digester)"

+					quid       	"3DFE228B03BA"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"ToClientFromSupplier"

+					sequence   	"3.1.1.6.3.1.2"

+					ordinal    	17

+					Operation  	"createWarpper() // Invoked by a Rule (not Directly by the Digester)"

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE22560061"

+				supplier   	"StandardWrapper"

+				quidu      	"3DFE220C0122"

+				messages   	(list Messages

+				    (object Message "new"

+					quid       	"3DFE229A0004"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.3.1.2.1"

+					ordinal    	18

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "addInstanceListener()"

+					quid       	"3DFE22A700C1"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.3.2"

+					ordinal    	19

+					Operation  	"addInstanceListener"

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "addLifecycleListener()"

+					quid       	"3DFE22C701CC"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.3.3"

+					ordinal    	20

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "addContainerListener()"

+					quid       	"3DFE22E80364"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.3.4"

+					ordinal    	21

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	TRUE

+			multi      	FALSE)

+		    (object Object "Digester"

+			quid       	"3DFE13960364"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE19AE0064"

+				supplier   	"Digester"

+				quidu      	"3DFE13960364"

+				messages   	(list Messages

+				    (object Message "parse"

+					quid       	"3DFE19AE0065"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "startElement()"

+					quid       	"3DFE19B102E9"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "// Process web.xml * tld.xml"

+					quid       	"3DFE21BE021B"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1.1.6.3.1.1"

+					ordinal    	16

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE1DFB0021"

+				supplier   	"StandardHostDeployer"

+				quidu      	"3DFE1D8A02DC"

+				messages   	(list Messages

+				    (object Message "addChild"

+					quid       	"3DFE1DFB0022"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE22190225"

+				supplier   	"StandardWrapper"

+				quidu      	"3DFE220C0122"))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardWrapper"

+			quid       	"3DFE220C0122"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @88

+		logical_models 	(list unit_reference_list

+		    (object Object "ThreadPool"

+			quid       	"3DFE402B02C5"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE40E701AD"

+				supplier   	"TcpWorkerThread"

+				quidu      	"3DFE403200F8"

+				messages   	(list Messages

+				    (object Message "runIt()"

+					quid       	"3DFE40E701AE"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "TcpWorkerThread"

+			quid       	"3DFE403200F8"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE40FC010D"

+				supplier   	"Http11Protocol"

+				quidu      	"3DFE40750177"

+				messages   	(list Messages

+				    (object Message "processConnection"

+					quid       	"3DFE40FC010E"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "Http11Protocol"

+			quid       	"3DFE40750177"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE4111029E"

+				supplier   	"Http11Protocol"

+				quidu      	"3DFE40750177"

+				messages   	(list Messages

+				    (object Message "process()"

+					quid       	"3DFE4111029F"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.1"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "parseHeaders()"

+					quid       	"3DFE415C0151"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "prepareRequest()"

+					quid       	"3DFE41A60161"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE41D60106"

+				supplier   	"CoyoteAdapter"

+				quidu      	"3DFE410600DF"

+				messages   	(list Messages

+				    (object Message "service()"

+					quid       	"3DFE41D60107"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"4"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "CoyoteAdapter"

+			quid       	"3DFE410600DF"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE422C01F0"

+				supplier   	"CoyoteAdapter"

+				quidu      	"3DFE410600DF"

+				messages   	(list Messages

+				    (object Message "postParseRequest()"

+					quid       	"3DFE422C01F1"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"5"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE42800237"

+				supplier   	"StandardEngine"

+				quidu      	"3DFE424B0349"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE42800238"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"6"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardEngine"

+			quid       	"3DFE424B0349"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE429A002C"

+				supplier   	"StandardPipeline"

+				quidu      	"3DFE42900045"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE429A002D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"6.1"

+					ordinal    	8

+					Operation  	"invoke"

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardPipeline"

+			quid       	"3DFE42900045"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE42CE022F"

+				supplier   	"StandardValveContext"

+				quidu      	"3DFE42C002B1"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE42CE0230"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"6.1.1"

+					ordinal    	9

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardValveContext"

+			quid       	"3DFE42C002B1"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @89

+		logical_models 	(list unit_reference_list

+		    (object Object "StandardContextValve"

+			quid       	"3DFE4307001E"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE434C019A"

+				supplier   	"StandardEngineValve"

+				quidu      	"3DFE432801F3"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE434C019B"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE43C203A3"

+				supplier   	"ErrorReportValve"

+				quidu      	"3DFE438C028D"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE43C203A4"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3"

+					ordinal    	4

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "invokeNext()"

+					quid       	"3DFE46330293"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"ToClientFromSupplier"

+					sequence   	"3.2"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE46E70025"

+				supplier   	"ErrorDispatcherValve"

+				quidu      	"3DFE451F01EC"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE46E70026"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"4"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "invokeNext"

+					quid       	"3DFE475D03A0"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"ToClientFromSupplier"

+					sequence   	"4.1"

+					ordinal    	8

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE476503C9"

+				supplier   	"StandardHostValve"

+				quidu      	"3DFE47310130"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE476503CA"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"5"

+					ordinal    	9

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardEngineValve"

+			quid       	"3DFE432801F3"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE436C009C"

+				supplier   	"StandardHost"

+				quidu      	"3DFE436503BD"

+				messages   	(list Messages

+				    (object Message "map()"

+					quid       	"3DFE436C009D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "invoke()"

+					quid       	"3DFE43830063"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE437F0143"

+				supplier   	"StandardEngineValve"

+				quidu      	"3DFE432801F3"))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardHost"

+			quid       	"3DFE436503BD"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE43B903BE"

+				supplier   	"StandardContextValve"

+				quidu      	"3DFE4307001E"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE43B903BF"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"2"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "ErrorReportValve"

+			quid       	"3DFE438C028D"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE442501B0"

+				supplier   	"ErrorReportValve"

+				quidu      	"3DFE438C028D"

+				messages   	(list Messages

+				    (object Message "report()"

+					quid       	"3DFE442501B1"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"3.1"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE452A00F7"

+				supplier   	"ErrorDispatcherValve"

+				quidu      	"3DFE451F01EC"))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "ErrorDispatcherValve"

+			quid       	"3DFE451F01EC"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE47500148"

+				supplier   	"StandardHostValve"

+				quidu      	"3DFE47310130")

+			    (object Link

+				quid       	"3DFE47580335"

+				supplier   	"ErrorDispatcherValve"

+				quidu      	"3DFE451F01EC"))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardHostValve"

+			quid       	"3DFE47310130"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE47CD0166"

+				supplier   	"StandardHostValve"

+				quidu      	"3DFE47310130"

+				messages   	(list Messages

+				    (object Message "map() //Context"

+					quid       	"3DFE47CD0167"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"5.1"

+					ordinal    	10

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE47D500B3"

+				supplier   	"StandardContext"

+				quidu      	"3DFE47C100F1"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE47D500B4"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"5.2"

+					ordinal    	11

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardContext"

+			quid       	"3DFE47C100F1"

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)))

+	    (object Mechanism @90

+		logical_models 	(list unit_reference_list

+		    (object Object "StandardContext"

+			quid       	"3DFE48B001D1"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE48BE0267"

+				supplier   	"StandardPipeline"

+				quidu      	"3DFE48B80088"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE48BE0268"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1"

+					ordinal    	0

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardPipeline"

+			quid       	"3DFE48B80088"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE48EA0039"

+				supplier   	"StandardValveContext"

+				quidu      	"3DFE48D000DC"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE48EA003A"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1"

+					ordinal    	1

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "invoke()"

+					quid       	"3DFE4976015D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2"

+					ordinal    	6

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardValveContext"

+			quid       	"3DFE48D000DC"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE491102D5"

+				supplier   	"StandardContextValve"

+				quidu      	"3DFE490303A7"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE491102D6"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.1"

+					ordinal    	2

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE4993023B"

+				supplier   	"StandardWrapperValve"

+				quidu      	"3DFE49890056"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE4993023C"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2.1"

+					ordinal    	7

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardContextValve"

+			quid       	"3DFE490303A7"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE492F033C"

+				supplier   	"StandardContextValve"

+				quidu      	"3DFE490303A7"

+				messages   	(list Messages

+				    (object Message "map //return Wrapper"

+					quid       	"3DFE492F033D"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.1.1"

+					ordinal    	3

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE494A0150"

+				supplier   	"StandardWrapper"

+				quidu      	"3DFE49370351"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE494A0151"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.1.2"

+					ordinal    	4

+					Operation  	"invoke"

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardWrapper"

+			quid       	"3DFE49370351"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE495F0287"

+				supplier   	"StandardPipeline"

+				quidu      	"3DFE48B80088"

+				messages   	(list Messages

+				    (object Message "invoke()"

+					quid       	"3DFE495F0288"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.1.1.2.1"

+					ordinal    	5

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "StandardWrapperValve"

+			quid       	"3DFE49890056"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE49DB018A"

+				supplier   	"StandardWrapperValve"

+				quidu      	"3DFE49890056")

+			    (object Link

+				quid       	"3DFE49EC004E"

+				supplier   	"StandardWrapper"

+				quidu      	"3DFE49370351"

+				messages   	(list Messages

+				    (object Message "allocate()"

+					quid       	"3DFE49EC004F"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2.1.1"

+					ordinal    	8

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "return servlet"

+					quid       	"3DFE4A200067"

+					frequency  	"Aperiodic"

+					synchronization 	"Return"

+					dir        	"ToClientFromSupplier"

+					sequence   	"1.2.1.1.1"

+					ordinal    	9

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE4A29027D"

+				supplier   	"ApplicationFilterChain"

+				quidu      	"3DFE4A1500B2"

+				messages   	(list Messages

+				    (object Message "createFilterChain()"

+					quid       	"3DFE4A29027E"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2.1.1.1.1"

+					ordinal    	10

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "doFilter()"

+					quid       	"3DFE4A490283"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2.1.2"

+					ordinal    	11

+					Operation  	"doFilter"

+					quidu      	"000000000000"

+					creation   	FALSE)

+				    (object Message "return"

+					quid       	"3DFE4CB4025B"

+					frequency  	"Aperiodic"

+					synchronization 	"Return"

+					dir        	"ToClientFromSupplier"

+					sequence   	"1.2.1.2.3"

+					ordinal    	14

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "ApplicationFilterChain"

+			quid       	"3DFE4A1500B2"

+			collaborators 	(list link_list

+			    (object Link

+				quid       	"3DFE4C2701C2"

+				supplier   	"ApplicationFilterChain"

+				quidu      	"3DFE4A1500B2"

+				messages   	(list Messages

+				    (object Message "internalDoFilter()"

+					quid       	"3DFE4C2701C3"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2.1.2.1"

+					ordinal    	12

+					quidu      	"000000000000"

+					creation   	FALSE)))

+			    (object Link

+				quid       	"3DFE4CA502BE"

+				supplier   	"$UNNAMED$0"

+				quidu      	"3DFE4BAE0056"

+				messages   	(list Messages

+				    (object Message "service()"

+					quid       	"3DFE4CA502BF"

+					frequency  	"Aperiodic"

+					synchronization 	"Simple"

+					dir        	"FromClientToSupplier"

+					sequence   	"1.2.1.2.2"

+					ordinal    	13

+					quidu      	"000000000000"

+					creation   	FALSE))))

+			persistence 	"Transient"

+			creationObj 	FALSE

+			multi      	FALSE)

+		    (object Object "$UNNAMED$0"

+			quid       	"3DFE4BAE0056"

+			stereotype 	"Servlet"

+			persistence 	"Transient"

+			creationObj 	TRUE

+			multi      	FALSE))))

+	logical_presentations 	(list unit_reference_list

+	    (object ClassDiagram "Main"

+		quid       	"3DFDF6D2021B"

+		title      	"Main"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list))

+	    (object ClassDiagram "high level packaging"

+		quid       	"3E42DE75004B"

+		title      	"high level packaging"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list

+		    (object CategoryView "Logical View::org.apache.catalina" @91

+			location   	(1024, 752)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@91

+			    location   	(780, 668)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	488

+			    justify    	0

+			    label      	"org.apache.catalina")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3E42DE8D0082"

+			width      	500

+			height     	181)

+		    (object CategoryView "Logical View::org.apache.coyote" @92

+			location   	(512, 1184)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@92

+			    location   	(237, 1090)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	550

+			    justify    	0

+			    label      	"org.apache.coyote")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3E42DE9F0132"

+			width      	563

+			height     	200)

+		    (object CategoryView "Logical View::org.apache.tomcat.util" @93

+			location   	(1920, 1104)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@93

+			    location   	(1670, 1020)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	500

+			    justify    	0

+			    label      	"org.apache.tomcat.util")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3E42DEDF01F2"

+			width      	512

+			height     	181)

+		    (object ImportView "" @94

+			stereotype 	TRUE

+			line_color 	3342489

+			quidu      	"3E42DEF601EB"

+			client     	@91

+			supplier   	@93

+			line_style 	0)

+		    (object ImportView "" @95

+			stereotype 	TRUE

+			line_color 	3342489

+			quidu      	"3E42DEFC00B3"

+			client     	@92

+			supplier   	@93

+			line_style 	0)

+		    (object CategoryView "Logical View::org.apache.jasper" @96

+			location   	(1728, 624)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@96

+			    location   	(1437, 540)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	582

+			    justify    	0

+			    label      	"org.apache.jasper")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3E42DEFF0270"

+			width      	594

+			height     	181)

+		    (object ImportView "" @97

+			stereotype 	TRUE

+			line_color 	3342489

+			quidu      	"3E42DF700060"

+			client     	@91

+			supplier   	@92

+			line_style 	0)

+		    (object NoteView @98

+			location   	(1200, 208)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@98

+			    location   	(847, 143)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	671

+			    label      	"High Level package dependencies")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	731

+			height     	143)

+		    (object CategoryView "Logical View::org.apache.naming" @99

+			location   	(352, 304)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@99

+			    location   	(83, 220)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	538

+			    justify    	0

+			    label      	"org.apache.naming")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3E43D1580339"

+			width      	550

+			height     	181)

+		    (object ImportView "" @100

+			stereotype 	TRUE

+			line_color 	3342489

+			quidu      	"3E43D165039C"

+			client     	@91

+			supplier   	@99

+			line_style 	0)))

+	    (object InteractionDiagram "1. catalina_load"

+		mechanism_ref 	@82

+		quid       	"3DFDF8EE0267"

+		title      	"1. catalina_load"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	519

+		items      	(list diagram_item_list

+		    (object InterObjView "Bootstrap" @101

+			location   	(224, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@101

+			    location   	(224, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Bootstrap")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDF8FD0345"

+			width      	300

+			height     	1972

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @102

+			    location   	(224, 368)

+			    line_color 	3342489

+			    InterObjView 	@101

+			    height     	1738

+			    y_coord    	1678

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @103

+			    location   	(224, 368)

+			    line_color 	3342489

+			    InterObjView 	@101

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "Digester" @104

+			location   	(896, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@104

+			    location   	(896, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Digester")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFAF201A1"

+			width      	300

+			height     	1972

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @105

+			    location   	(896, 1232)

+			    line_color 	3342489

+			    InterObjView 	@104

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @106

+			    location   	(896, 1312)

+			    line_color 	3342489

+			    InterObjView 	@104

+			    height     	264

+			    y_coord    	204

+			    Nested     	FALSE))

+		    (object InterObjView "ServerLifecycleListener" @107

+			location   	(1232, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@107

+			    location   	(1232, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"ServerLifecycleListener")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFB4B0217"

+			width      	300

+			height     	1972

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @108

+			    location   	(1232, 1328)

+			    line_color 	3342489

+			    InterObjView 	@107

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "GlobalResourcesLifecycleListener" @109

+			location   	(1568, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@109

+			    location   	(1568, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	322

+			    justify    	0

+			    label      	"GlobalResourcesLifecycleListener")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFB7A02AB"

+			width      	340

+			height     	1972

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @110

+			    location   	(1568, 1456)

+			    line_color 	3342489

+			    InterObjView 	@109

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "SecurityConfig" @111

+			location   	(1920, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@111

+			    location   	(1920, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"SecurityConfig")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFBD802BA"

+			width      	300

+			height     	1972

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @112

+			    location   	(1920, 1600)

+			    line_color 	3342489

+			    InterObjView 	@111

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @113

+			    location   	(1920, 1680)

+			    line_color 	3342489

+			    InterObjView 	@111

+			    height     	146

+			    y_coord    	86

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @114

+			    location   	(1920, 1760)

+			    line_color 	3342489

+			    InterObjView 	@111

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object SelfMessView "" @115

+			location   	(16, 368)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @116

+			    Parent_View 	@115

+			    location   	(315, 324)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDF9210009"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	340

+			    justify    	0

+			    label      	"initClassLoaders()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@101

+			supplier   	@101

+			Focus_Src  	@102

+			Focus_Entry 	@103

+			origin     	(240, 368)

+			terminus   	(390, 368)

+			ordinal    	0)

+		    (object NoteView @117

+			location   	(1152, 1072)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@117

+			    location   	(1014, 1012)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	240

+			    label      	"parse server.xml")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	300

+			height     	132)

+		    (object NoteView @118

+			location   	(1376, 80)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@118

+			    location   	(1238, 20)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	240

+			    label      	"MBeans")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	300

+			height     	132)

+		    (object AttachView "" @119

+			stereotype 	TRUE

+			line_color 	3342489

+			client     	@118

+			supplier   	@107

+			line_style 	0)

+		    (object AttachView "" @120

+			stereotype 	TRUE

+			line_color 	3342489

+			client     	@109

+			supplier   	@118

+			line_style 	0)

+		    (object NoteView @121

+			location   	(2160, 2176)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@121

+			    location   	(1947, 2113)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	390

+			    label      	"#1Catalina.load()")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	450

+			height     	138)

+		    (object InterObjView "Catalina" @122

+			location   	(560, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@122

+			    location   	(560, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Catalina")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDF90A0330"

+			width      	300

+			height     	1972

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @123

+			    location   	(560, 464)

+			    line_color 	3342489

+			    InterObjView 	@122

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @124

+			    location   	(560, 608)

+			    line_color 	3342489

+			    InterObjView 	@122

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @125

+			    location   	(560, 720)

+			    line_color 	3342489

+			    InterObjView 	@122

+			    height     	1326

+			    y_coord    	1266

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @126

+			    location   	(560, 896)

+			    line_color 	3342489

+			    InterObjView 	@122

+			    height     	194

+			    y_coord    	134

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @127

+			    location   	(560, 896)

+			    InterObjView 	@122

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @128

+			    location   	(560, 1024)

+			    line_color 	3342489

+			    InterObjView 	@122

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @129

+			    location   	(560, 1024)

+			    InterObjView 	@122

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @130

+			    location   	(560, 1152)

+			    line_color 	3342489

+			    InterObjView 	@122

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @131

+			    location   	(560, 1152)

+			    InterObjView 	@122

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object SelfMessView "" @132

+			location   	(16, 896)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @133

+			    Parent_View 	@132

+			    location   	(651, 852)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFA8001DA"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	160

+			    justify    	0

+			    label      	"initDirs()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@122

+			Focus_Src  	@127

+			Focus_Entry 	@126

+			origin     	(576, 896)

+			terminus   	(726, 896)

+			ordinal    	4)

+		    (object SelfMessView "" @134

+			location   	(16, 1024)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @135

+			    Parent_View 	@134

+			    location   	(701, 981)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFA8B0347"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	228

+			    justify    	0

+			    label      	"initNaming()"

+			    pctDist    	0.840000

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@122

+			Focus_Src  	@129

+			Focus_Entry 	@128

+			origin     	(576, 1024)

+			terminus   	(726, 1024)

+			ordinal    	5)

+		    (object SelfMessView "" @136

+			location   	(16, 1152)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @137

+			    Parent_View 	@136

+			    location   	(686, 1109)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFAAD01AC"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	180

+			    justify    	0

+			    label      	"initialize()"

+			    pctDist    	0.733333

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@122

+			Focus_Src  	@131

+			Focus_Entry 	@130

+			origin     	(576, 1152)

+			terminus   	(726, 1152)

+			ordinal    	6)

+		    (object InterMessView "" @138

+			location   	(16, 464)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @139

+			    Parent_View 	@138

+			    location   	(389, 437)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDF91A010D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	265

+			    justify    	0

+			    label      	"newInstance()"

+			    pctDist    	0.495082

+			    height     	28

+			    orientation 	0)

+			line_color 	3342489

+			client     	@101

+			supplier   	@122

+			Focus_Src  	@102

+			Focus_Entry 	@123

+			origin     	(239, 464)

+			terminus   	(544, 464)

+			ordinal    	1)

+		    (object InterMessView "" @140

+			location   	(16, 608)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @141

+			    Parent_View 	@140

+			    location   	(456, 565)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDF97900C2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	445

+			    justify    	0

+			    label      	"setParentClassLoader()"

+			    pctDist    	0.711475

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@101

+			supplier   	@122

+			Focus_Src  	@102

+			Focus_Entry 	@124

+			origin     	(239, 608)

+			terminus   	(544, 608)

+			ordinal    	2)

+		    (object InterMessView "" @142

+			location   	(16, 720)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @143

+			    Parent_View 	@142

+			    location   	(391, 676)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFA3402F2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	108

+			    justify    	0

+			    label      	"load()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@101

+			supplier   	@122

+			Focus_Src  	@102

+			Focus_Entry 	@125

+			origin     	(239, 720)

+			terminus   	(544, 720)

+			ordinal    	3)

+		    (object InterMessView "" @144

+			location   	(16, 1232)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @145

+			    Parent_View 	@144

+			    location   	(727, 1188)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFAF800C4"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	302

+			    justify    	0

+			    label      	"createDigester()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@104

+			Focus_Src  	@125

+			Focus_Entry 	@105

+			origin     	(575, 1232)

+			terminus   	(880, 1232)

+			ordinal    	7)

+		    (object InterMessView "" @146

+			location   	(16, 1312)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @147

+			    Parent_View 	@146

+			    location   	(727, 1268)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFB0100B2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	136

+			    justify    	0

+			    label      	"parse()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@104

+			Focus_Src  	@125

+			Focus_Entry 	@106

+			origin     	(575, 1312)

+			terminus   	(880, 1312)

+			ordinal    	8)

+		    (object AttachView "" @148

+			stereotype 	TRUE

+			line_color 	3342489

+			client     	@147

+			supplier   	@117

+			line_style 	0)

+		    (object InterMessView "" @149

+			location   	(16, 1328)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @150

+			    Parent_View 	@149

+			    location   	(1063, 1284)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFB8400A7"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	265

+			    justify    	0

+			    label      	"newInstance()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@104

+			supplier   	@107

+			Focus_Src  	@106

+			Focus_Entry 	@108

+			origin     	(911, 1328)

+			terminus   	(1216, 1328)

+			ordinal    	9)

+		    (object InterMessView "" @151

+			location   	(16, 1456)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @152

+			    Parent_View 	@151

+			    location   	(1231, 1412)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFB920148"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	265

+			    justify    	0

+			    label      	"newInstance()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@104

+			supplier   	@109

+			Focus_Src  	@106

+			Focus_Entry 	@110

+			origin     	(911, 1456)

+			terminus   	(1552, 1456)

+			ordinal    	10)

+		    (object InterMessView "" @153

+			location   	(16, 1600)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @154

+			    Parent_View 	@153

+			    location   	(1239, 1556)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFBEA00C2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	265

+			    justify    	0

+			    label      	"newInstance()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@111

+			Focus_Src  	@125

+			Focus_Entry 	@112

+			origin     	(575, 1600)

+			terminus   	(1904, 1600)

+			ordinal    	11)

+		    (object InterMessView "" @155

+			location   	(16, 1680)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @156

+			    Parent_View 	@155

+			    location   	(1239, 1636)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFBF401F2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	425

+			    justify    	0

+			    label      	"setPackageDefinition()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@111

+			Focus_Src  	@125

+			Focus_Entry 	@113

+			origin     	(575, 1680)

+			terminus   	(1904, 1680)

+			ordinal    	12)

+		    (object InterMessView "" @157

+			location   	(16, 1760)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @158

+			    Parent_View 	@157

+			    location   	(1239, 1716)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFC1203C2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	386

+			    justify    	0

+			    label      	"setPackageAccess()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@122

+			supplier   	@111

+			Focus_Src  	@125

+			Focus_Entry 	@114

+			origin     	(575, 1760)

+			terminus   	(1904, 1760)

+			ordinal    	13)))

+	    (object InteractionDiagram "2. catalina_initliaze"

+		mechanism_ref 	@83

+		quid       	"3DFDFC44002A"

+		title      	"2. catalina_initliaze"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	87

+		items      	(list diagram_item_list

+		    (object InterObjView "Catalina" @159

+			location   	(176, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@159

+			    location   	(176, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Catalina")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFC8F015F"

+			width      	300

+			height     	1180

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @160

+			    location   	(176, 400)

+			    line_color 	3342489

+			    InterObjView 	@159

+			    height     	914

+			    y_coord    	854

+			    Nested     	FALSE))

+		    (object InterObjView "StandardServer" @161

+			location   	(496, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@161

+			    location   	(496, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardServer")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFCCB006B"

+			width      	300

+			height     	1180

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @162

+			    location   	(496, 400)

+			    line_color 	3342489

+			    InterObjView 	@161

+			    height     	854

+			    y_coord    	794

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @163

+			    location   	(496, 480)

+			    line_color 	3342489

+			    InterObjView 	@161

+			    height     	768

+			    y_coord    	708

+			    Nested     	TRUE))

+		    (object InterObjView "StandardService" @164

+			location   	(832, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@164

+			    location   	(832, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardService")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFD370020"

+			width      	300

+			height     	1180

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @165

+			    location   	(832, 480)

+			    line_color 	3342489

+			    InterObjView 	@164

+			    height     	708

+			    y_coord    	648

+			    Nested     	FALSE))

+		    (object InterObjView "CoyoteConnector" @166

+			location   	(1168, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@166

+			    location   	(1168, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"CoyoteConnector")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFE810313"

+			width      	300

+			height     	1180

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @167

+			    location   	(1168, 528)

+			    line_color 	3342489

+			    InterObjView 	@166

+			    height     	600

+			    y_coord    	540

+			    Nested     	FALSE))

+		    (object InterObjView "CoyoteAdapter" @168

+			location   	(1504, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@168

+			    location   	(1504, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"CoyoteAdapter")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFDFFA00226"

+			width      	300

+			height     	1180

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @169

+			    location   	(1504, 576)

+			    line_color 	3342489

+			    InterObjView 	@168

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "Http11Protocol" @170

+			location   	(1808, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@170

+			    location   	(1808, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Http11Protocol")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE016601A6"

+			width      	300

+			height     	1180

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @171

+			    location   	(1808, 704)

+			    line_color 	3342489

+			    InterObjView 	@170

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @172

+			    location   	(1808, 832)

+			    line_color 	3342489

+			    InterObjView 	@170

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "JkCoyoteAdapter" @173

+			location   	(2144, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@173

+			    location   	(2144, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"JkCoyoteAdapter")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE01AD01A8"

+			width      	300

+			height     	1180

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @174

+			    location   	(2144, 928)

+			    line_color 	3342489

+			    InterObjView 	@173

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @175

+			    location   	(2144, 1008)

+			    line_color 	3342489

+			    InterObjView 	@173

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterMessView "" @176

+			location   	(16, 400)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @177

+			    Parent_View 	@176

+			    location   	(335, 356)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFD1F0076"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	180

+			    justify    	0

+			    label      	"initialize()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@159

+			supplier   	@161

+			Focus_Src  	@160

+			Focus_Entry 	@162

+			origin     	(191, 400)

+			terminus   	(480, 400)

+			ordinal    	0)

+		    (object InterMessView "" @178

+			location   	(16, 480)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @179

+			    Parent_View 	@178

+			    location   	(663, 436)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFD3D01C4"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	180

+			    justify    	0

+			    label      	"initialize()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@161

+			supplier   	@164

+			Focus_Src  	@163

+			Focus_Entry 	@165

+			origin     	(511, 480)

+			terminus   	(816, 480)

+			ordinal    	1)

+		    (object InterMessView "" @180

+			location   	(16, 528)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @181

+			    Parent_View 	@180

+			    location   	(999, 484)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFDFE990305"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	180

+			    justify    	0

+			    label      	"initialize()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@164

+			supplier   	@166

+			Focus_Src  	@165

+			Focus_Entry 	@167

+			origin     	(847, 528)

+			terminus   	(1152, 528)

+			ordinal    	2)

+		    (object InterMessView "" @182

+			location   	(16, 576)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @183

+			    Parent_View 	@182

+			    location   	(1335, 532)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE013D0217"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	106

+			    justify    	0

+			    label      	"new()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@166

+			supplier   	@168

+			Focus_Src  	@167

+			Focus_Entry 	@169

+			origin     	(1183, 576)

+			terminus   	(1488, 576)

+			ordinal    	3)

+		    (object InterMessView "" @184

+			location   	(1504, 704)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @185

+			    Parent_View 	@184

+			    location   	(1487, 660)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE01830330"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	106

+			    justify    	0

+			    label      	"new()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@166

+			supplier   	@170

+			Focus_Src  	@167

+			Focus_Entry 	@171

+			origin     	(1183, 704)

+			terminus   	(1792, 704)

+			ordinal    	4)

+		    (object InterMessView "" @186

+			location   	(1504, 832)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @187

+			    Parent_View 	@186

+			    location   	(1487, 788)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0188032C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	80

+			    justify    	0

+			    label      	"init()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@166

+			supplier   	@170

+			Focus_Src  	@167

+			Focus_Entry 	@172

+			origin     	(1183, 832)

+			terminus   	(1792, 832)

+			ordinal    	5)

+		    (object InterMessView "" @188

+			location   	(16, 928)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @189

+			    Parent_View 	@188

+			    location   	(1655, 884)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE01BC038C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	106

+			    justify    	0

+			    label      	"new()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@166

+			supplier   	@173

+			Focus_Src  	@167

+			Focus_Entry 	@174

+			origin     	(1183, 928)

+			terminus   	(2128, 928)

+			ordinal    	6)

+		    (object InterMessView "" @190

+			location   	(16, 1008)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @191

+			    Parent_View 	@190

+			    location   	(1655, 964)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE01C30164"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	80

+			    justify    	0

+			    label      	"init()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@166

+			supplier   	@173

+			Focus_Src  	@167

+			Focus_Entry 	@175

+			origin     	(1183, 1008)

+			terminus   	(2128, 1008)

+			ordinal    	7)

+		    (object NoteView @192

+			location   	(2144, 2016)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@192

+			    location   	(1947, 1957)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	359

+			    label      	"#2 Catalina.initialize()")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	419

+			height     	131)))

+	    (object InteractionDiagram "3. catalina_start"

+		mechanism_ref 	@84

+		quid       	"3DFE026D02D1"

+		title      	"3. catalina_start"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	2481

+		items      	(list diagram_item_list

+		    (object InterObjView "Bootstrap" @193

+			location   	(192, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@193

+			    location   	(192, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Bootstrap")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE027700F5"

+			width      	300

+			height     	2912

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @194

+			    location   	(192, 384)

+			    line_color 	3342489

+			    InterObjView 	@193

+			    height     	2662

+			    y_coord    	2602

+			    Nested     	FALSE))

+		    (object InterObjView "Catalina" @195

+			location   	(480, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@195

+			    location   	(480, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Catalina")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE027D0067"

+			width      	300

+			height     	2912

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @196

+			    location   	(480, 384)

+			    line_color 	3342489

+			    InterObjView 	@195

+			    height     	2602

+			    y_coord    	2542

+			    Nested     	FALSE))

+		    (object InterObjView "StandardServer" @197

+			location   	(784, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@197

+			    location   	(784, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardServer")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE02B30015"

+			width      	300

+			height     	2912

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @198

+			    location   	(784, 416)

+			    line_color 	3342489

+			    InterObjView 	@197

+			    height     	2510

+			    y_coord    	2450

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @199

+			    location   	(784, 480)

+			    line_color 	3342489

+			    InterObjView 	@197

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @200

+			    location   	(784, 592)

+			    line_color 	3342489

+			    InterObjView 	@197

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardService" @201

+			location   	(1088, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@201

+			    location   	(1088, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardService")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE030400E3"

+			width      	300

+			height     	2912

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @202

+			    location   	(1088, 704)

+			    line_color 	3342489

+			    InterObjView 	@201

+			    height     	2162

+			    y_coord    	2102

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @203

+			    location   	(1088, 752)

+			    line_color 	3342489

+			    InterObjView 	@201

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @204

+			    location   	(1088, 864)

+			    line_color 	3342489

+			    InterObjView 	@201

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardEngine" @205

+			location   	(1424, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@205

+			    location   	(1424, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	332

+			    justify    	0

+			    label      	"StandardEngine")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE034700C2"

+			width      	350

+			height     	2912

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @206

+			    location   	(1424, 976)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	1830

+			    y_coord    	1770

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @207

+			    location   	(1424, 1056)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	1744

+			    y_coord    	1684

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @208

+			    location   	(1424, 1056)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @209

+			    location   	(1424, 1168)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @210

+			    location   	(1424, 1296)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @211

+			    location   	(1424, 1408)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @212

+			    location   	(1424, 1536)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @213

+			    location   	(1424, 1648)

+			    line_color 	3342489

+			    InterObjView 	@205

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardHost" @214

+			location   	(1760, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@214

+			    location   	(1760, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardHost")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE03F2035D"

+			width      	300

+			height     	2912

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @215

+			    location   	(1760, 1760)

+			    line_color 	3342489

+			    InterObjView 	@214

+			    height     	980

+			    y_coord    	920

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @216

+			    location   	(1760, 1808)

+			    line_color 	3342489

+			    InterObjView 	@214

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @217

+			    location   	(1760, 1920)

+			    line_color 	3342489

+			    InterObjView 	@214

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @218

+			    location   	(1760, 2032)

+			    line_color 	3342489

+			    InterObjView 	@214

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @219

+			    location   	(1760, 2144)

+			    line_color 	3342489

+			    InterObjView 	@214

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @220

+			    location   	(1760, 2256)

+			    line_color 	3342489

+			    InterObjView 	@214

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardPipeline" @221

+			location   	(2080, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@221

+			    location   	(2080, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	326

+			    justify    	0

+			    label      	"StandardPipeline")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE047D006D"

+			width      	344

+			height     	2912

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @222

+			    location   	(2080, 2368)

+			    line_color 	3342489

+			    InterObjView 	@221

+			    height     	312

+			    y_coord    	252

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @223

+			    location   	(2080, 2416)

+			    line_color 	3342489

+			    InterObjView 	@221

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @224

+			    location   	(2080, 2480)

+			    line_color 	3342489

+			    InterObjView 	@221

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @225

+			    location   	(2080, 2560)

+			    line_color 	3342489

+			    InterObjView 	@221

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterMessView "" @226

+			location   	(16, 384)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @227

+			    Parent_View 	@226

+			    location   	(335, 340)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE02830374"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@193

+			supplier   	@195

+			Focus_Src  	@194

+			Focus_Entry 	@196

+			origin     	(207, 384)

+			terminus   	(464, 384)

+			ordinal    	0)

+		    (object InterMessView "" @228

+			location   	(16, 416)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @229

+			    Parent_View 	@228

+			    location   	(631, 372)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE02BA0188"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@195

+			supplier   	@197

+			Focus_Src  	@196

+			Focus_Entry 	@198

+			origin     	(495, 416)

+			terminus   	(768, 416)

+			ordinal    	1)

+		    (object SelfMessView "" @230

+			location   	(16, 480)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @231

+			    Parent_View 	@230

+			    location   	(1244, 437)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE02D3006C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	854

+			    justify    	0

+			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

+			    pctDist    	2.960000

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@197

+			supplier   	@197

+			Focus_Src  	@198

+			Focus_Entry 	@199

+			origin     	(800, 480)

+			terminus   	(950, 480)

+			ordinal    	2)

+		    (object SelfMessView "" @232

+			location   	(16, 592)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @233

+			    Parent_View 	@232

+			    location   	(1146, 549)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE02DF02DF"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	658

+			    justify    	0

+			    label      	"fireLifecycleEvent(START_EVENT)"

+			    pctDist    	2.313333

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@197

+			supplier   	@197

+			Focus_Src  	@198

+			Focus_Entry 	@200

+			origin     	(800, 592)

+			terminus   	(950, 592)

+			ordinal    	3)

+		    (object InterMessView "" @234

+			location   	(16, 704)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @235

+			    Parent_View 	@234

+			    location   	(935, 660)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE030C02B3"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@197

+			supplier   	@201

+			Focus_Src  	@198

+			Focus_Entry 	@202

+			origin     	(799, 704)

+			terminus   	(1072, 704)

+			ordinal    	4)

+		    (object SelfMessView "" @236

+			location   	(16, 752)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @237

+			    Parent_View 	@236

+			    location   	(1531, 708)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE031D0022"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	854

+			    justify    	0

+			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

+			    pctDist    	2.853333

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@201

+			supplier   	@201

+			Focus_Src  	@202

+			Focus_Entry 	@203

+			origin     	(1104, 752)

+			terminus   	(1254, 752)

+			ordinal    	5)

+		    (object SelfMessView "" @238

+			location   	(16, 864)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @239

+			    Parent_View 	@238

+			    location   	(1449, 821)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0330019B"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	658

+			    justify    	0

+			    label      	"fireLifecycleEvent(START_EVENT)"

+			    pctDist    	2.306667

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@201

+			supplier   	@201

+			Focus_Src  	@202

+			Focus_Entry 	@204

+			origin     	(1104, 864)

+			terminus   	(1254, 864)

+			ordinal    	6)

+		    (object InterMessView "" @240

+			location   	(16, 976)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @241

+			    Parent_View 	@240

+			    location   	(1255, 932)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0370018A"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@201

+			supplier   	@205

+			Focus_Src  	@202

+			Focus_Entry 	@206

+			origin     	(1103, 976)

+			terminus   	(1408, 976)

+			ordinal    	7)

+		    (object SelfMessView "" @242

+			location   	(16, 1056)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @243

+			    Parent_View 	@242

+			    location   	(1865, 1014)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE03750051"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	854

+			    justify    	0

+			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

+			    pctDist    	2.840000

+			    height     	43

+			    orientation 	0)

+			line_color 	3342489

+			client     	@205

+			supplier   	@205

+			Focus_Src  	@207

+			Focus_Entry 	@208

+			origin     	(1440, 1056)

+			terminus   	(1590, 1056)

+			ordinal    	8)

+		    (object SelfMessView "" @244

+			location   	(16, 1168)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @245

+			    Parent_View 	@244

+			    location   	(1639, 1141)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0389001C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	373

+			    justify    	0

+			    label      	"addDefaultMapper()"

+			    pctDist    	1.326667

+			    height     	28

+			    orientation 	0)

+			line_color 	3342489

+			client     	@205

+			supplier   	@205

+			Focus_Src  	@207

+			Focus_Entry 	@209

+			origin     	(1440, 1168)

+			terminus   	(1590, 1168)

+			ordinal    	9)

+		    (object SelfMessView "" @246

+			location   	(16, 1296)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @247

+			    Parent_View 	@246

+			    location   	(1592, 1268)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE03980281"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	238

+			    justify    	0

+			    label      	"logger.start()"

+			    pctDist    	1.020000

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@205

+			supplier   	@205

+			Focus_Src  	@207

+			Focus_Entry 	@210

+			origin     	(1440, 1296)

+			terminus   	(1590, 1296)

+			ordinal    	10)

+		    (object SelfMessView "" @248

+			location   	(16, 1408)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @249

+			    Parent_View 	@248

+			    location   	(1593, 1380)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE03A80107"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	226

+			    justify    	0

+			    label      	"realm.start()"

+			    pctDist    	1.026667

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@205

+			supplier   	@205

+			Focus_Src  	@207

+			Focus_Entry 	@211

+			origin     	(1440, 1408)

+			terminus   	(1590, 1408)

+			ordinal    	11)

+		    (object SelfMessView "" @250

+			location   	(16, 1536)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @251

+			    Parent_View 	@250

+			    location   	(1608, 1508)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE03BD000D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	259

+			    justify    	0

+			    label      	"findMappers()"

+			    pctDist    	1.120000

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@205

+			supplier   	@205

+			Focus_Src  	@207

+			Focus_Entry 	@212

+			origin     	(1440, 1536)

+			terminus   	(1590, 1536)

+			ordinal    	12)

+		    (object SelfMessView "" @252

+			location   	(16, 1648)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @253

+			    Parent_View 	@252

+			    location   	(1515, 1604)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE03E000A4"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	251

+			    justify    	0

+			    label      	"findChildren()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@205

+			supplier   	@205

+			Focus_Src  	@207

+			Focus_Entry 	@213

+			origin     	(1440, 1648)

+			terminus   	(1590, 1648)

+			ordinal    	13)

+		    (object InterMessView "" @254

+			location   	(1664, 1760)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @255

+			    Parent_View 	@254

+			    location   	(1591, 1716)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE03FB027A"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@205

+			supplier   	@214

+			Focus_Src  	@207

+			Focus_Entry 	@215

+			origin     	(1439, 1760)

+			terminus   	(1744, 1760)

+			ordinal    	14)

+		    (object SelfMessView "" @256

+			location   	(16, 1808)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @257

+			    Parent_View 	@256

+			    location   	(1606, 1784)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE043B02AE"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	854

+			    justify    	0

+			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

+			    pctDist    	-1.133333

+			    height     	24

+			    orientation 	0)

+			line_color 	3342489

+			client     	@214

+			supplier   	@214

+			Focus_Src  	@215

+			Focus_Entry 	@216

+			origin     	(1776, 1808)

+			terminus   	(1926, 1808)

+			ordinal    	15)

+		    (object SelfMessView "" @258

+			location   	(16, 1920)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @259

+			    Parent_View 	@258

+			    location   	(1963, 1877)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE045C021F"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	373

+			    justify    	0

+			    label      	"addDefaultMapper()"

+			    pctDist    	1.253333

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@214

+			supplier   	@214

+			Focus_Src  	@215

+			Focus_Entry 	@217

+			origin     	(1776, 1920)

+			terminus   	(1926, 1920)

+			ordinal    	16)

+		    (object InterMessView "" @260

+			location   	(2000, 2368)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @261

+			    Parent_View 	@260

+			    location   	(1919, 2324)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE048E00B9"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@214

+			supplier   	@221

+			Focus_Src  	@215

+			Focus_Entry 	@222

+			origin     	(1775, 2368)

+			terminus   	(2064, 2368)

+			ordinal    	20)

+		    (object SelfMessView "" @262

+			location   	(16, 2032)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @263

+			    Parent_View 	@262

+			    location   	(1916, 2004)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE049B000C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	238

+			    justify    	0

+			    label      	"logger.start()"

+			    pctDist    	0.933333

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@214

+			supplier   	@214

+			Focus_Src  	@215

+			Focus_Entry 	@218

+			origin     	(1776, 2032)

+			terminus   	(1926, 2032)

+			ordinal    	17)

+		    (object SelfMessView "" @264

+			location   	(16, 2144)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @265

+			    Parent_View 	@264

+			    location   	(1916, 2117)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE04A303BB"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	238

+			    justify    	0

+			    label      	"findMapper()"

+			    pctDist    	0.933333

+			    height     	28

+			    orientation 	0)

+			line_color 	3342489

+			client     	@214

+			supplier   	@214

+			Focus_Src  	@215

+			Focus_Entry 	@219

+			origin     	(1776, 2144)

+			terminus   	(1926, 2144)

+			ordinal    	18)

+		    (object SelfMessView "" @266

+			location   	(16, 2256)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @267

+			    Parent_View 	@266

+			    location   	(1916, 2228)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE04A90342"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	251

+			    justify    	0

+			    label      	"findChildren()"

+			    pctDist    	0.933333

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@214

+			supplier   	@214

+			Focus_Src  	@215

+			Focus_Entry 	@220

+			origin     	(1776, 2256)

+			terminus   	(1926, 2256)

+			ordinal    	19)

+		    (object NoteView @268

+			location   	(2128, 1488)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@268

+			    location   	(1915, 1422)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	390

+			    label      	"#1 Catalina.start()")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	450

+			height     	144)

+		    (object SelfMessView "" @269

+			location   	(16, 2416)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @270

+			    Parent_View 	@269

+			    location   	(1644, 2498)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE05780138"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	854

+			    justify    	0

+			    label      	"fireLifecycleEvent(BEFORE_START_EVENT)"

+			    pctDist    	-3.020000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@221

+			supplier   	@221

+			Focus_Src  	@222

+			Focus_Entry 	@223

+			origin     	(2096, 2416)

+			terminus   	(2246, 2416)

+			ordinal    	21)

+		    (object SelfMessView "" @271

+			location   	(16, 2480)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @272

+			    Parent_View 	@271

+			    location   	(1705, 2582)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE05A80398"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	658

+			    justify    	0

+			    label      	"fireLifecycleEvent(START_EVENT)"

+			    pctDist    	-2.613333

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@221

+			supplier   	@221

+			Focus_Src  	@222

+			Focus_Entry 	@224

+			origin     	(2096, 2480)

+			terminus   	(2246, 2480)

+			ordinal    	22)

+		    (object SelfMessView "" @273

+			location   	(16, 2560)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @274

+			    Parent_View 	@273

+			    location   	(1737, 2423)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE05BA0196"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	658

+			    justify    	0

+			    label      	"fireLifecycleEvent(AFTER_EVENT)"

+			    pctDist    	-2.393333

+			    height     	138

+			    orientation 	0)

+			line_color 	3342489

+			client     	@221

+			supplier   	@221

+			Focus_Src  	@222

+			Focus_Entry 	@225

+			origin     	(2096, 2560)

+			terminus   	(2246, 2560)

+			ordinal    	23)

+		    (object NoteView @275

+			location   	(960, 1680)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@275

+			    location   	(635, 1571)

+			    fill_color 	13434879

+			    nlines     	4

+			    max_width  	615

+			    label      	"All StandardX will fire these events.")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	675

+			height     	231)

+		    (object AttachView "" @276

+			stereotype 	TRUE

+			line_color 	3342489

+			client     	@275

+			supplier   	@272

+			line_style 	0)

+		    (object AttachView "" @277

+			stereotype 	TRUE

+			line_color 	3342489

+			client     	@275

+			supplier   	@270

+			line_style 	0)

+		    (object AttachView "" @278

+			stereotype 	TRUE

+			line_color 	3342489

+			client     	@275

+			supplier   	@274

+			line_style 	0)))

+	    (object InteractionDiagram "4. catalina_start_2"

+		mechanism_ref 	@85

+		quid       	"3DFE050900BF"

+		title      	"4. catalina_start_2"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	1087

+		items      	(list diagram_item_list

+		    (object InterObjView "StandardHost" @279

+			location   	(208, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@279

+			    location   	(208, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardHost")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE0538017B"

+			width      	300

+			height     	2114

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @280

+			    location   	(208, 384)

+			    line_color 	3342489

+			    InterObjView 	@279

+			    height     	1864

+			    y_coord    	1804

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @281

+			    location   	(208, 384)

+			    line_color 	3342489

+			    InterObjView 	@279

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @282

+			    location   	(208, 1088)

+			    line_color 	3342489

+			    InterObjView 	@279

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @283

+			    location   	(208, 1616)

+			    line_color 	3342489

+			    InterObjView 	@279

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "HostConfig" @284

+			location   	(544, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@284

+			    location   	(544, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"HostConfig")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE06A60131"

+			width      	300

+			height     	2114

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @285

+			    location   	(544, 512)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	696

+			    y_coord    	636

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @286

+			    location   	(544, 576)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @287

+			    location   	(544, 688)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @288

+			    location   	(544, 784)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @289

+			    location   	(544, 896)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @290

+			    location   	(544, 1008)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @291

+			    location   	(544, 1536)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	200

+			    y_coord    	140

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @292

+			    location   	(544, 1536)

+			    line_color 	3342489

+			    InterObjView 	@284

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardHostDeployer" @293

+			location   	(944, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@293

+			    location   	(944, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	426

+			    justify    	0

+			    label      	"StandardHostDeployer")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE079A0055"

+			width      	444

+			height     	2114

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @294

+			    location   	(944, 1280)

+			    line_color 	3342489

+			    InterObjView 	@293

+			    height     	824

+			    y_coord    	764

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @295

+			    location   	(944, 2128)

+			    line_color 	3342489

+			    InterObjView 	@293

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "Digester" @296

+			location   	(1328, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@296

+			    location   	(1328, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Digester")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE07C9034C"

+			width      	300

+			height     	2114

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @297

+			    location   	(1328, 1280)

+			    line_color 	3342489

+			    InterObjView 	@296

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @298

+			    location   	(1328, 1488)

+			    line_color 	3342489

+			    InterObjView 	@296

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @299

+			    location   	(1328, 1984)

+			    line_color 	3342489

+			    InterObjView 	@296

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "ContextRuleSet" @300

+			location   	(1648, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@300

+			    location   	(1648, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"ContextRuleSet")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE0834016F"

+			width      	300

+			height     	2114

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @301

+			    location   	(1648, 1408)

+			    line_color 	3342489

+			    InterObjView 	@300

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @302

+			    location   	(1648, 1888)

+			    line_color 	3342489

+			    InterObjView 	@300

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "NamingRuleSet" @303

+			location   	(1968, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@303

+			    location   	(1968, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"NamingRuleSet")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE08D00173"

+			width      	300

+			height     	2114

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @304

+			    location   	(1968, 1792)

+			    line_color 	3342489

+			    InterObjView 	@303

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object SelfMessView "" @305

+			location   	(0, 384)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @306

+			    Parent_View 	@305

+			    location   	(555, 342)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE066C0341"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	651

+			    justify    	0

+			    label      	"fireLifecycleEvent(START_EVENT)"

+			    pctDist    	2.206667

+			    height     	43

+			    orientation 	0)

+			line_color 	3342489

+			client     	@279

+			supplier   	@279

+			Focus_Src  	@280

+			Focus_Entry 	@281

+			origin     	(224, 384)

+			terminus   	(374, 384)

+			ordinal    	0)

+		    (object InterMessView "" @307

+			location   	(384, 512)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @308

+			    Parent_View 	@307

+			    location   	(486, 468)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE06D20294"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	507

+			    justify    	0

+			    label      	"interested[i].lifecycleEvent()"

+			    pctDist    	0.865574

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@279

+			supplier   	@284

+			Focus_Src  	@280

+			Focus_Entry 	@285

+			origin     	(223, 512)

+			terminus   	(528, 512)

+			ordinal    	1)

+		    (object SelfMessView "" @309

+			location   	(16, 576)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @310

+			    Parent_View 	@309

+			    location   	(713, 537)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE06E9028D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	297

+			    justify    	0

+			    label      	"setDeployXML()"

+			    pctDist    	1.026667

+			    height     	40

+			    orientation 	0)

+			line_color 	3342489

+			client     	@284

+			supplier   	@284

+			Focus_Src  	@285

+			Focus_Entry 	@286

+			origin     	(560, 576)

+			terminus   	(710, 576)

+			ordinal    	2)

+		    (object SelfMessView "" @311

+			location   	(16, 688)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @312

+			    Parent_View 	@311

+			    location   	(714, 645)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE06F300FF"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	288

+			    justify    	0

+			    label      	"setLiveDeploy()"

+			    pctDist    	1.033333

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@284

+			supplier   	@284

+			Focus_Src  	@285

+			Focus_Entry 	@287

+			origin     	(560, 688)

+			terminus   	(710, 688)

+			ordinal    	3)

+		    (object SelfMessView "" @313

+			location   	(16, 784)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @314

+			    Parent_View 	@313

+			    location   	(732, 756)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE06FB00D9"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	326

+			    justify    	0

+			    label      	"setUnpacksWar()"

+			    pctDist    	1.153333

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@284

+			supplier   	@284

+			Focus_Src  	@285

+			Focus_Entry 	@288

+			origin     	(560, 784)

+			terminus   	(710, 784)

+			ordinal    	4)

+		    (object SelfMessView "" @315

+			location   	(16, 896)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @316

+			    Parent_View 	@315

+			    location   	(747, 868)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE070C0015"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	350

+			    justify    	0

+			    label      	"setXMLValidation()"

+			    pctDist    	1.246667

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@284

+			supplier   	@284

+			Focus_Src  	@285

+			Focus_Entry 	@289

+			origin     	(560, 896)

+			terminus   	(710, 896)

+			ordinal    	5)

+		    (object SelfMessView "" @317

+			location   	(16, 1008)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @318

+			    Parent_View 	@317

+			    location   	(762, 980)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE073B0031"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	359

+			    justify    	0

+			    label      	"deployDescriptors()"

+			    pctDist    	1.346667

+			    height     	29

+			    orientation 	0)

+			line_color 	3342489

+			client     	@284

+			supplier   	@284

+			Focus_Src  	@285

+			Focus_Entry 	@290

+			origin     	(560, 1008)

+			terminus   	(710, 1008)

+			ordinal    	6)

+		    (object InterMessView "" @319

+			location   	(16, 1088)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @320

+			    Parent_View 	@319

+			    location   	(376, 1044)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE078B03BB"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	136

+			    justify    	0

+			    label      	"install()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@284

+			supplier   	@279

+			Focus_Src  	@285

+			Focus_Entry 	@282

+			origin     	(528, 1088)

+			terminus   	(224, 1088)

+			ordinal    	7)

+		    (object InterMessView "" @321

+			location   	(576, 1280)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @322

+			    Parent_View 	@321

+			    location   	(575, 1236)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE07B100BE"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	136

+			    justify    	0

+			    label      	"install()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@279

+			supplier   	@293

+			Focus_Src  	@280

+			Focus_Entry 	@294

+			origin     	(223, 1280)

+			terminus   	(928, 1280)

+			ordinal    	8)

+		    (object InterMessView "" @323

+			location   	(1152, 1280)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @324

+			    Parent_View 	@323

+			    location   	(1135, 1236)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE07D200ED"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	144

+			    justify    	0

+			    label      	"create()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@293

+			supplier   	@296

+			Focus_Src  	@294

+			Focus_Entry 	@297

+			origin     	(959, 1280)

+			terminus   	(1312, 1280)

+			ordinal    	9)

+		    (object InterMessView "" @325

+			location   	(1136, 1984)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @326

+			    Parent_View 	@325

+			    location   	(1135, 1940)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE07D603D7"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	136

+			    justify    	0

+			    label      	"parse()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@293

+			supplier   	@296

+			Focus_Src  	@294

+			Focus_Entry 	@299

+			origin     	(959, 1984)

+			terminus   	(1312, 1984)

+			ordinal    	16)

+		    (object InterMessView "" @327

+			location   	(1296, 1408)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @328

+			    Parent_View 	@327

+			    location   	(1295, 1364)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE08DA029B"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	106

+			    justify    	0

+			    label      	"new()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@293

+			supplier   	@300

+			Focus_Src  	@294

+			Focus_Entry 	@301

+			origin     	(959, 1408)

+			terminus   	(1632, 1408)

+			ordinal    	10)

+		    (object InterMessView "" @329

+			location   	(1456, 1792)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @330

+			    Parent_View 	@329

+			    location   	(1455, 1748)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE08E00091"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	106

+			    justify    	0

+			    label      	"new()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@293

+			supplier   	@303

+			Focus_Src  	@294

+			Focus_Entry 	@304

+			origin     	(959, 1792)

+			terminus   	(1952, 1792)

+			ordinal    	14)

+		    (object InterMessView "" @331

+			location   	(16, 1488)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @332

+			    Parent_View 	@331

+			    location   	(1182, 1445)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE08FA003D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	387

+			    justify    	0

+			    label      	"add(ContextRuleSet)"

+			    pctDist    	0.631728

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@293

+			supplier   	@296

+			Focus_Src  	@294

+			Focus_Entry 	@298

+			origin     	(959, 1488)

+			terminus   	(1312, 1488)

+			ordinal    	11)

+		    (object InterMessView "" @333

+			location   	(1296, 1888)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @334

+			    Parent_View 	@333

+			    location   	(1295, 1844)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0907015F"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	416

+			    justify    	0

+			    label      	"add(NamingRuleSet())"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@293

+			supplier   	@300

+			Focus_Src  	@294

+			Focus_Entry 	@302

+			origin     	(959, 1888)

+			terminus   	(1632, 1888)

+			ordinal    	15)

+		    (object NoteView @335

+			location   	(2096, 2384)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@335

+			    location   	(1893, 2315)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	371

+			    label      	"#2 Catalina.start()")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	431

+			height     	150)

+		    (object SelfMessView "" @336

+			location   	(16, 1536)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @337

+			    Parent_View 	@336

+			    location   	(697, 1493)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE131F0327"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	244

+			    justify    	0

+			    label      	"deployApps()"

+			    pctDist    	0.913333

+			    height     	43

+			    orientation 	0)

+			line_color 	3342489

+			client     	@284

+			supplier   	@284

+			Focus_Src  	@291

+			Focus_Entry 	@292

+			origin     	(560, 1536)

+			terminus   	(710, 1536)

+			ordinal    	12)

+		    (object InterMessView "" @338

+			location   	(16, 1616)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @339

+			    Parent_View 	@338

+			    location   	(376, 1572)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE132D0309"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	136

+			    justify    	0

+			    label      	"install()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@284

+			supplier   	@279

+			Focus_Src  	@291

+			Focus_Entry 	@283

+			origin     	(528, 1616)

+			terminus   	(224, 1616)

+			ordinal    	13)

+		    (object InterMessView "" @340

+			location   	(576, 2128)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @341

+			    Parent_View 	@340

+			    location   	(575, 2084)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE133A036C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	463

+			    justify    	0

+			    label      	"install() // same as above"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@279

+			supplier   	@293

+			Focus_Src  	@280

+			Focus_Entry 	@295

+			origin     	(223, 2128)

+			terminus   	(928, 2128)

+			ordinal    	17)))

+	    (object InteractionDiagram "5. catalina_start_3"

+		mechanism_ref 	@86

+		quid       	"3DFE094A0346"

+		title      	"5. catalina_start_3"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list

+		    (object InterObjView "Digester" @342

+			location   	(176, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@342

+			    location   	(176, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Digester")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE095A0371"

+			width      	300

+			height     	1214

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @343

+			    location   	(176, 352)

+			    line_color 	3342489

+			    InterObjView 	@342

+			    height     	996

+			    y_coord    	936

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @344

+			    location   	(176, 352)

+			    line_color 	3342489

+			    InterObjView 	@342

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @345

+			    location   	(176, 448)

+			    line_color 	3342489

+			    InterObjView 	@342

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "Rule" @346

+			location   	(480, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@346

+			    location   	(480, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Rule")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE0E7400D0"

+			width      	300

+			height     	1214

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @347

+			    location   	(480, 560)

+			    line_color 	3342489

+			    InterObjView 	@346

+			    height     	728

+			    y_coord    	668

+			    Nested     	FALSE))

+		    (object InterObjView "StandardContext" @348

+			location   	(816, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@348

+			    location   	(816, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	332

+			    justify    	0

+			    label      	"StandardContext")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE0FC502A1"

+			width      	350

+			height     	1214

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @349

+			    location   	(816, 592)

+			    line_color 	3342489

+			    InterObjView 	@348

+			    height     	264

+			    y_coord    	204

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @350

+			    location   	(816, 1008)

+			    line_color 	3342489

+			    InterObjView 	@348

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "StandardPipeline" @351

+			location   	(1184, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@351

+			    location   	(1184, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	363

+			    justify    	0

+			    label      	"StandardPipeline")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE112F003F"

+			width      	381

+			height     	1214

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @352

+			    location   	(1184, 736)

+			    line_color 	3342489

+			    InterObjView 	@351

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "StandardContextValve" @353

+			location   	(1552, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@353

+			    location   	(1552, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	300

+			    justify    	0

+			    label      	"StandardContextValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE110D0375"

+			width      	318

+			height     	1214

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @354

+			    location   	(1552, 624)

+			    line_color 	3342489

+			    InterObjView 	@353

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "SetPropertiesRule" @355

+			location   	(1920, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@355

+			    location   	(1920, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	363

+			    justify    	0

+			    label      	"SetPropertiesRule")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE100303A4"

+			width      	381

+			height     	1214

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @356

+			    location   	(1920, 928)

+			    line_color 	3342489

+			    InterObjView 	@355

+			    height     	200

+			    y_coord    	140

+			    Nested     	FALSE))

+		    (object InterObjView "SetNextRule" @357

+			location   	(2272, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@357

+			    location   	(2272, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"SetNextRule")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE12690267"

+			width      	300

+			height     	1214

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @358

+			    location   	(2272, 1168)

+			    line_color 	3342489

+			    InterObjView 	@357

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object SelfMessView "" @359

+			location   	(0, 352)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @360

+			    Parent_View 	@359

+			    location   	(267, 308)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0E7801DB"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	108

+			    justify    	0

+			    label      	"parse"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@342

+			supplier   	@342

+			Focus_Src  	@343

+			Focus_Entry 	@344

+			origin     	(192, 352)

+			terminus   	(342, 352)

+			ordinal    	0)

+		    (object SelfMessView "" @361

+			location   	(16, 448)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @362

+			    Parent_View 	@361

+			    location   	(345, 420)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0F2F03D2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	267

+			    justify    	0

+			    label      	"startElement()"

+			    pctDist    	1.020000

+			    height     	28

+			    orientation 	0)

+			line_color 	3342489

+			client     	@342

+			supplier   	@342

+			Focus_Src  	@343

+			Focus_Entry 	@345

+			origin     	(192, 448)

+			terminus   	(342, 448)

+			ordinal    	1)

+		    (object InterMessView "" @363

+			location   	(336, 560)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @364

+			    Parent_View 	@363

+			    location   	(327, 516)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0F400214"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	132

+			    justify    	0

+			    label      	"begin()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@342

+			supplier   	@346

+			Focus_Src  	@343

+			Focus_Entry 	@347

+			origin     	(191, 560)

+			terminus   	(464, 560)

+			ordinal    	2)

+		    (object InterMessView "" @365

+			location   	(16, 592)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @366

+			    Parent_View 	@365

+			    location   	(647, 548)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE0FD30266"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	265

+			    justify    	0

+			    label      	"newInstance()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@346

+			supplier   	@348

+			Focus_Src  	@347

+			Focus_Entry 	@349

+			origin     	(495, 592)

+			terminus   	(800, 592)

+			ordinal    	3)

+		    (object InterMessView "" @367

+			location   	(864, 928)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @368

+			    Parent_View 	@367

+			    location   	(1199, 884)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE102002E9"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	132

+			    justify    	0

+			    label      	"begin()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@346

+			supplier   	@355

+			Focus_Src  	@347

+			Focus_Entry 	@356

+			origin     	(495, 928)

+			terminus   	(1904, 928)

+			ordinal    	6)

+		    (object InterMessView "" @369

+			location   	(1008, 736)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @370

+			    Parent_View 	@369

+			    location   	(1139, 693)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE114A0193"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	610

+			    justify    	0

+			    label      	"setBasic(StandardContextValve)"

+			    pctDist    	0.915014

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@348

+			supplier   	@351

+			Focus_Src  	@349

+			Focus_Entry 	@352

+			origin     	(831, 736)

+			terminus   	(1168, 736)

+			ordinal    	5)

+		    (object InterMessView "" @371

+			location   	(16, 624)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @372

+			    Parent_View 	@371

+			    location   	(1183, 580)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE115E001F"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	106

+			    justify    	0

+			    label      	"new()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@348

+			supplier   	@353

+			Focus_Src  	@349

+			Focus_Entry 	@354

+			origin     	(831, 624)

+			terminus   	(1536, 624)

+			ordinal    	4)

+		    (object InterMessView "" @373

+			location   	(1440, 1008)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @374

+			    Parent_View 	@373

+			    location   	(1368, 964)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE11D50391"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	1190

+			    justify    	0

+			    label      	"//Using BeanUtil, set the object properties (from ex: admin.xml)"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@355

+			supplier   	@348

+			Focus_Src  	@356

+			Focus_Entry 	@350

+			origin     	(1904, 1008)

+			terminus   	(832, 1008)

+			ordinal    	7)

+		    (object InterMessView "" @375

+			location   	(1392, 1168)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @376

+			    Parent_View 	@375

+			    location   	(1375, 1124)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE128501C8"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	99

+			    justify    	0

+			    label      	"end()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@346

+			supplier   	@357

+			Focus_Src  	@347

+			Focus_Entry 	@358

+			origin     	(495, 1168)

+			terminus   	(2256, 1168)

+			ordinal    	8)

+		    (object NoteView @377

+			location   	(1216, 80)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@377

+			    location   	(900, 15)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	596

+			    label      	"HostConfig.deployDescriptor()")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	656

+			height     	143)

+		    (object NoteView @378

+			location   	(2128, 1888)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@378

+			    location   	(1947, 1822)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	327

+			    label      	"#3 Catalina.start()")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	387

+			height     	144)))

+	    (object InteractionDiagram "6. catalina_start_4"

+		mechanism_ref 	@87

+		quid       	"3DFE13890008"

+		title      	"6. catalina_start_4"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	1818

+		items      	(list diagram_item_list

+		    (object InterObjView "Digester" @379

+			location   	(176, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@379

+			    location   	(176, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Digester")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE13960364"

+			width      	300

+			height     	2446

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @380

+			    location   	(176, 336)

+			    line_color 	3342489

+			    InterObjView 	@379

+			    height     	1228

+			    y_coord    	1168

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @381

+			    location   	(176, 336)

+			    line_color 	3342489

+			    InterObjView 	@379

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @382

+			    location   	(176, 480)

+			    line_color 	3342489

+			    InterObjView 	@379

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @383

+			    location   	(176, 1616)

+			    line_color 	3342489

+			    InterObjView 	@379

+			    height     	580

+			    y_coord    	520

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @384

+			    location   	(176, 1728)

+			    line_color 	3342489

+			    InterObjView 	@379

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardHostDeployer" @385

+			location   	(480, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@385

+			    location   	(480, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	301

+			    justify    	0

+			    label      	"StandardHostDeployer")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE1D8A02DC"

+			width      	319

+			height     	2446

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @386

+			    location   	(480, 576)

+			    line_color 	3342489

+			    InterObjView 	@385

+			    height     	928

+			    y_coord    	868

+			    Nested     	FALSE))

+		    (object InterObjView "StandardHost" @387

+			location   	(800, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@387

+			    location   	(800, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardHost")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE1DF20141"

+			width      	300

+			height     	2446

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @388

+			    location   	(800, 592)

+			    line_color 	3342489

+			    InterObjView 	@387

+			    height     	852

+			    y_coord    	792

+			    Nested     	FALSE))

+		    (object InterObjView "StandardContext" @389

+			location   	(1120, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@389

+			    location   	(1120, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	295

+			    justify    	0

+			    label      	"StandardContext")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE196D00D9"

+			width      	313

+			height     	2446

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @390

+			    location   	(1120, 624)

+			    line_color 	3342489

+			    InterObjView 	@389

+			    height     	760

+			    y_coord    	700

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @391

+			    location   	(1120, 800)

+			    line_color 	3342489

+			    InterObjView 	@389

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @392

+			    location   	(1120, 976)

+			    line_color 	3342489

+			    InterObjView 	@389

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @393

+			    location   	(1120, 1072)

+			    line_color 	3342489

+			    InterObjView 	@389

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "WebappLoader" @394

+			location   	(1440, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@394

+			    location   	(1440, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	295

+			    justify    	0

+			    label      	"WebappLoader")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE1FFA0347"

+			width      	313

+			height     	2446

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @395

+			    location   	(1440, 640)

+			    line_color 	3342489

+			    InterObjView 	@394

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "StandardManager" @396

+			location   	(1760, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@396

+			    location   	(1760, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	301

+			    justify    	0

+			    label      	"StandardManager")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE201F0105"

+			width      	319

+			height     	2446

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @397

+			    location   	(1760, 832)

+			    line_color 	3342489

+			    InterObjView 	@396

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @398

+			    location   	(1760, 1264)

+			    line_color 	3342489

+			    InterObjView 	@396

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterObjView "ContextConfig" @399

+			location   	(1952, 352)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@399

+			    location   	(1952, 352)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"ContextConfig")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE2087028C"

+			width      	300

+			height     	2318

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @400

+			    location   	(1952, 412)

+			    InterObjView 	@399

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @401

+			    location   	(1952, 1136)

+			    line_color 	3342489

+			    InterObjView 	@399

+			    height     	1444

+			    y_coord    	1384

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @402

+			    location   	(1952, 1264)

+			    line_color 	3342489

+			    InterObjView 	@399

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @403

+			    location   	(1952, 1456)

+			    line_color 	3342489

+			    InterObjView 	@399

+			    height     	1070

+			    y_coord    	1010

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @404

+			    location   	(1952, 1568)

+			    line_color 	3342489

+			    InterObjView 	@399

+			    height     	952

+			    y_coord    	892

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @405

+			    location   	(1952, 1984)

+			    line_color 	3342489

+			    InterObjView 	@399

+			    height     	152

+			    y_coord    	92

+			    Nested     	TRUE))

+		    (object SelfMessView "" @406

+			location   	(16, 336)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @407

+			    Parent_View 	@406

+			    location   	(267, 292)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE19AE0065"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	108

+			    justify    	0

+			    label      	"parse"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@379

+			supplier   	@379

+			Focus_Src  	@380

+			Focus_Entry 	@381

+			origin     	(192, 336)

+			terminus   	(342, 336)

+			ordinal    	0)

+		    (object SelfMessView "" @408

+			location   	(16, 480)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @409

+			    Parent_View 	@408

+			    location   	(328, 437)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE19B102E9"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	267

+			    justify    	0

+			    label      	"startElement()"

+			    pctDist    	0.906667

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@379

+			supplier   	@379

+			Focus_Src  	@380

+			Focus_Entry 	@382

+			origin     	(192, 480)

+			terminus   	(342, 480)

+			ordinal    	1)

+		    (object InterMessView "" @410

+			location   	(16, 576)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @411

+			    Parent_View 	@410

+			    location   	(327, 552)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE1DFB0022"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	165

+			    justify    	0

+			    label      	"addChild"

+			    pctDist    	0.498645

+			    height     	25

+			    orientation 	0)

+			line_color 	3342489

+			client     	@379

+			supplier   	@385

+			Focus_Src  	@380

+			Focus_Entry 	@386

+			origin     	(191, 576)

+			terminus   	(464, 576)

+			ordinal    	2)

+		    (object InterMessView "" @412

+			location   	(16, 592)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @413

+			    Parent_View 	@412

+			    location   	(639, 548)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE1FB60277"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	165

+			    justify    	0

+			    label      	"addChild"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@385

+			supplier   	@387

+			Focus_Src  	@386

+			Focus_Entry 	@388

+			origin     	(495, 592)

+			terminus   	(784, 592)

+			ordinal    	3)

+		    (object InterMessView "" @414

+			location   	(16, 624)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @415

+			    Parent_View 	@414

+			    location   	(959, 580)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE1FC40228"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@387

+			supplier   	@389

+			Focus_Src  	@388

+			Focus_Entry 	@390

+			origin     	(815, 624)

+			terminus   	(1104, 624)

+			ordinal    	4)

+		    (object InterMessView "" @416

+			location   	(16, 640)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @417

+			    Parent_View 	@416

+			    location   	(1279, 596)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE200603BE"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	82

+			    justify    	0

+			    label      	"new"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@389

+			supplier   	@394

+			Focus_Src  	@390

+			Focus_Entry 	@395

+			origin     	(1135, 640)

+			terminus   	(1424, 640)

+			ordinal    	5)

+		    (object SelfMessView "" @418

+			location   	(16, 800)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @419

+			    Parent_View 	@418

+			    location   	(1224, 756)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE200C029A"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	186

+			    justify    	0

+			    label      	"setLoader"

+			    pctDist    	0.593333

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@389

+			supplier   	@389

+			Focus_Src  	@390

+			Focus_Entry 	@391

+			origin     	(1136, 800)

+			terminus   	(1286, 800)

+			ordinal    	6)

+		    (object InterMessView "" @420

+			location   	(16, 832)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @421

+			    Parent_View 	@420

+			    location   	(1439, 788)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE202C0250"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	82

+			    justify    	0

+			    label      	"new"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@389

+			supplier   	@396

+			Focus_Src  	@390

+			Focus_Entry 	@397

+			origin     	(1135, 832)

+			terminus   	(1744, 832)

+			ordinal    	7)

+		    (object SelfMessView "" @422

+			location   	(16, 976)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @423

+			    Parent_View 	@422

+			    location   	(1260, 933)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE2032001C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	221

+			    justify    	0

+			    label      	"setManager"

+			    pctDist    	0.833333

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@389

+			supplier   	@389

+			Focus_Src  	@390

+			Focus_Entry 	@392

+			origin     	(1136, 976)

+			terminus   	(1286, 976)

+			ordinal    	8)

+		    (object SelfMessView "" @424

+			location   	(16, 1072)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @425

+			    Parent_View 	@424

+			    location   	(1481, 1043)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE205B01A2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	658

+			    justify    	0

+			    label      	"fireLifecycleEvent(START_EVENT)"

+			    pctDist    	2.306667

+			    height     	30

+			    orientation 	0)

+			line_color 	3342489

+			client     	@389

+			supplier   	@389

+			Focus_Src  	@390

+			Focus_Entry 	@393

+			origin     	(1136, 1072)

+			terminus   	(1286, 1072)

+			ordinal    	9)

+		    (object InterMessView "" @426

+			location   	(16, 1136)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @427

+			    Parent_View 	@426

+			    location   	(1535, 1092)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE20960003"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	745

+			    justify    	0

+			    label      	" // Notify interested LifecycleListeners"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@389

+			supplier   	@399

+			Focus_Src  	@390

+			Focus_Entry 	@401

+			origin     	(1135, 1136)

+			terminus   	(1936, 1136)

+			ordinal    	10)

+		    (object SelfMessView "" @428

+			location   	(16, 1264)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @429

+			    Parent_View 	@428

+			    location   	(2043, 1220)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE20CF018C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@399

+			supplier   	@399

+			Focus_Src  	@401

+			Focus_Entry 	@402

+			origin     	(1968, 1264)

+			terminus   	(2118, 1264)

+			ordinal    	11)

+		    (object SelfMessView "" @430

+			location   	(16, 1456)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @431

+			    Parent_View 	@430

+			    location   	(2027, 1413)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE20E303E2"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	275

+			    justify    	0

+			    label      	"defaultConfig()"

+			    pctDist    	0.393333

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@399

+			supplier   	@399

+			Focus_Src  	@401

+			Focus_Entry 	@403

+			origin     	(1968, 1456)

+			terminus   	(2118, 1456)

+			ordinal    	13)

+		    (object SelfMessView "" @432

+			location   	(16, 1568)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @433

+			    Parent_View 	@432

+			    location   	(2043, 1524)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE211D01A1"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	349

+			    justify    	0

+			    label      	"applicationConfig()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@399

+			supplier   	@399

+			Focus_Src  	@401

+			Focus_Entry 	@404

+			origin     	(1968, 1568)

+			terminus   	(2118, 1568)

+			ordinal    	14)

+		    (object InterMessView "" @434

+			location   	(1664, 1264)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @435

+			    Parent_View 	@434

+			    location   	(1439, 1220)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE20B600E5"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	110

+			    justify    	0

+			    label      	"start()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@389

+			supplier   	@396

+			Focus_Src  	@390

+			Focus_Entry 	@398

+			origin     	(1135, 1264)

+			terminus   	(1744, 1264)

+			ordinal    	12)

+		    (object InterMessView "" @436

+			location   	(16, 1616)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @437

+			    Parent_View 	@436

+			    location   	(1064, 1572)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE21B60288"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	145

+			    justify    	0

+			    label      	"create()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@399

+			supplier   	@379

+			Focus_Src  	@404

+			Focus_Entry 	@383

+			origin     	(1936, 1616)

+			terminus   	(192, 1616)

+			ordinal    	15)

+		    (object SelfMessView "" @438

+			location   	(16, 1728)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @439

+			    Parent_View 	@438

+			    location   	(457, 1701)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE21BE021B"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	530

+			    justify    	0

+			    label      	"// Process web.xml * tld.xml"

+			    pctDist    	1.773333

+			    height     	28

+			    orientation 	0)

+			line_color 	3342489

+			client     	@379

+			supplier   	@379

+			Focus_Src  	@383

+			Focus_Entry 	@384

+			origin     	(192, 1728)

+			terminus   	(342, 1728)

+			ordinal    	16)

+		    (object InterObjView "StandardWrapper" @440

+			location   	(2208, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@440

+			    location   	(2208, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardWrapper")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE220C0122"

+			width      	300

+			height     	2446

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @441

+			    location   	(2208, 2016)

+			    line_color 	3342489

+			    InterObjView 	@440

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @442

+			    location   	(2208, 2176)

+			    line_color 	3342489

+			    InterObjView 	@440

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @443

+			    location   	(2208, 2288)

+			    line_color 	3342489

+			    InterObjView 	@440

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @444

+			    location   	(2208, 2400)

+			    line_color 	3342489

+			    InterObjView 	@440

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterMessView "" @445

+			location   	(16, 1984)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @446

+			    Parent_View 	@445

+			    location   	(1063, 1940)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE228B03BA"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	1478

+			    justify    	0

+			    label      	"createWarpper() // Invoked by a WebWrapperRule (not Directly by the Digester)"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@379

+			supplier   	@399

+			Focus_Src  	@383

+			Focus_Entry 	@405

+			origin     	(191, 1984)

+			terminus   	(1936, 1984)

+			ordinal    	17)

+		    (object InterMessView "" @447

+			location   	(16, 2016)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @448

+			    Parent_View 	@447

+			    location   	(2079, 1972)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE229A0004"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	82

+			    justify    	0

+			    label      	"new"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@399

+			supplier   	@440

+			Focus_Src  	@405

+			Focus_Entry 	@441

+			origin     	(1967, 2016)

+			terminus   	(2192, 2016)

+			ordinal    	18)

+		    (object InterMessView "" @449

+			location   	(16, 2176)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @450

+			    Parent_View 	@449

+			    location   	(2116, 2134)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE22A700C1"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	405

+			    justify    	0

+			    label      	"addInstanceListener()"

+			    pctDist    	0.662295

+			    height     	43

+			    orientation 	0)

+			line_color 	3342489

+			client     	@399

+			supplier   	@440

+			Focus_Src  	@404

+			Focus_Entry 	@442

+			origin     	(1967, 2176)

+			terminus   	(2192, 2176)

+			ordinal    	19)

+		    (object InterMessView "" @451

+			location   	(2496, 2288)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @452

+			    Parent_View 	@451

+			    location   	(2116, 2245)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE22C701CC"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	410

+			    justify    	0

+			    label      	"addLifecycleListener()"

+			    pctDist    	0.662295

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@399

+			supplier   	@440

+			Focus_Src  	@404

+			Focus_Entry 	@443

+			origin     	(1967, 2288)

+			terminus   	(2192, 2288)

+			ordinal    	20)

+		    (object InterMessView "" @453

+			location   	(16, 2400)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @454

+			    Parent_View 	@453

+			    location   	(2124, 2357)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE22E80364"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	428

+			    justify    	0

+			    label      	"addContainerListener()"

+			    pctDist    	0.701639

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@399

+			supplier   	@440

+			Focus_Src  	@404

+			Focus_Entry 	@444

+			origin     	(1967, 2400)

+			terminus   	(2192, 2400)

+			ordinal    	21)

+		    (object NoteView @455

+			location   	(1216, 80)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@455

+			    location   	(825, 14)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	746

+			    label      	"Deploy App.")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	806

+			height     	144)

+		    (object NoteView @456

+			location   	(2144, 2704)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@456

+			    location   	(1953, 2641)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	347

+			    label      	"#4 Catalina.start()")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	407

+			height     	138)))

+	    (object InteractionDiagram "1. catalina_request"

+		mechanism_ref 	@88

+		quid       	"3DFE3B5001C3"

+		title      	"1. catalina_request"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list

+		    (object InterObjView "ThreadPool" @457

+			location   	(176, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@457

+			    location   	(176, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"ThreadPool")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE402B02C5"

+			width      	300

+			height     	1276

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @458

+			    location   	(176, 384)

+			    line_color 	3342489

+			    InterObjView 	@457

+			    height     	304

+			    y_coord    	244

+			    Nested     	FALSE))

+		    (object InterObjView "TcpWorkerThread" @459

+			location   	(512, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@459

+			    location   	(512, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	332

+			    justify    	0

+			    label      	"TcpWorkerThread")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE403200F8"

+			width      	350

+			height     	1276

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @460

+			    location   	(512, 384)

+			    line_color 	3342489

+			    InterObjView 	@459

+			    height     	244

+			    y_coord    	184

+			    Nested     	FALSE))

+		    (object InterObjView "Http11Protocol" @461

+			location   	(848, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@461

+			    location   	(848, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"Http11Protocol")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE40750177"

+			width      	300

+			height     	1276

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @462

+			    location   	(848, 400)

+			    line_color 	3342489

+			    InterObjView 	@461

+			    height     	168

+			    y_coord    	108

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @463

+			    location   	(848, 448)

+			    line_color 	3342489

+			    InterObjView 	@461

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @464

+			    location   	(848, 592)

+			    line_color 	3342489

+			    InterObjView 	@461

+			    height     	120

+			    y_coord    	60

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @465

+			    location   	(848, 592)

+			    line_color 	3342489

+			    InterObjView 	@461

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @466

+			    location   	(848, 736)

+			    line_color 	3342489

+			    InterObjView 	@461

+			    height     	674

+			    y_coord    	614

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @467

+			    location   	(848, 736)

+			    line_color 	3342489

+			    InterObjView 	@461

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "CoyoteAdapter" @468

+			location   	(1168, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@468

+			    location   	(1168, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"CoyoteAdapter")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE410600DF"

+			width      	300

+			height     	1276

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @469

+			    location   	(1168, 848)

+			    line_color 	3342489

+			    InterObjView 	@468

+			    height     	502

+			    y_coord    	442

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @470

+			    location   	(1168, 944)

+			    line_color 	3342489

+			    InterObjView 	@468

+			    height     	352

+			    y_coord    	292

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @471

+			    location   	(1168, 944)

+			    line_color 	3342489

+			    InterObjView 	@468

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardEngine" @472

+			location   	(1520, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@472

+			    location   	(1520, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	363

+			    justify    	0

+			    label      	"StandardEngine")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE424B0349"

+			width      	381

+			height     	1276

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @473

+			    location   	(1520, 1008)

+			    line_color 	3342489

+			    InterObjView 	@472

+			    height     	228

+			    y_coord    	168

+			    Nested     	FALSE))

+		    (object InterObjView "StandardPipeline" @474

+			location   	(1872, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@474

+			    location   	(1872, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardPipeline")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE42900045"

+			width      	300

+			height     	1276

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @475

+			    location   	(1872, 1040)

+			    line_color 	3342489

+			    InterObjView 	@474

+			    height     	136

+			    y_coord    	76

+			    Nested     	FALSE))

+		    (object InterObjView "StandardValveContext" @476

+			location   	(2192, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@476

+			    location   	(2192, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardValveContext")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE42C002B1"

+			width      	300

+			height     	1276

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @477

+			    location   	(2192, 1056)

+			    line_color 	3342489

+			    InterObjView 	@476

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterMessView "" @478

+			location   	(16, 384)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @479

+			    Parent_View 	@478

+			    location   	(343, 340)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE40E701AE"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	112

+			    justify    	0

+			    label      	"runIt()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@457

+			supplier   	@459

+			Focus_Src  	@458

+			Focus_Entry 	@460

+			origin     	(191, 384)

+			terminus   	(496, 384)

+			ordinal    	0)

+		    (object InterMessView "" @480

+			location   	(16, 400)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @481

+			    Parent_View 	@480

+			    location   	(679, 356)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE40FC010E"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	359

+			    justify    	0

+			    label      	"processConnection"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@459

+			supplier   	@461

+			Focus_Src  	@460

+			Focus_Entry 	@462

+			origin     	(527, 400)

+			terminus   	(832, 400)

+			ordinal    	1)

+		    (object SelfMessView "" @482

+			location   	(16, 448)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @483

+			    Parent_View 	@482

+			    location   	(969, 405)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4111029F"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	175

+			    justify    	0

+			    label      	"process()"

+			    pctDist    	0.706667

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@461

+			supplier   	@461

+			Focus_Src  	@462

+			Focus_Entry 	@463

+			origin     	(864, 448)

+			terminus   	(1014, 448)

+			ordinal    	2)

+		    (object SelfMessView "" @484

+			location   	(16, 592)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @485

+			    Parent_View 	@484

+			    location   	(1048, 549)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE415C0151"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	291

+			    justify    	0

+			    label      	"parseHeaders()"

+			    pctDist    	1.226667

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@461

+			supplier   	@461

+			Focus_Src  	@464

+			Focus_Entry 	@465

+			origin     	(864, 592)

+			terminus   	(1014, 592)

+			ordinal    	3)

+		    (object SelfMessView "" @486

+			location   	(16, 736)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @487

+			    Parent_View 	@486

+			    location   	(1052, 692)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE41A60161"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	328

+			    justify    	0

+			    label      	"prepareRequest()"

+			    pctDist    	1.253333

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@461

+			supplier   	@461

+			Focus_Src  	@466

+			Focus_Entry 	@467

+			origin     	(864, 736)

+			terminus   	(1014, 736)

+			ordinal    	4)

+		    (object InterMessView "" @488

+			location   	(992, 848)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @489

+			    Parent_View 	@488

+			    location   	(1007, 804)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE41D60107"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	162

+			    justify    	0

+			    label      	"service()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@461

+			supplier   	@468

+			Focus_Src  	@466

+			Focus_Entry 	@469

+			origin     	(863, 848)

+			terminus   	(1152, 848)

+			ordinal    	5)

+		    (object SelfMessView "" @490

+			location   	(16, 944)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @491

+			    Parent_View 	@490

+			    location   	(1372, 916)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE422C01F1"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	373

+			    justify    	0

+			    label      	"postParseRequest()"

+			    pctDist    	1.253333

+			    height     	28

+			    orientation 	0)

+			line_color 	3342489

+			client     	@468

+			supplier   	@468

+			Focus_Src  	@470

+			Focus_Entry 	@471

+			origin     	(1184, 944)

+			terminus   	(1334, 944)

+			ordinal    	6)

+		    (object InterMessView "" @492

+			location   	(1344, 1008)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @493

+			    Parent_View 	@492

+			    location   	(1343, 964)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE42800238"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	149

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@468

+			supplier   	@472

+			Focus_Src  	@470

+			Focus_Entry 	@473

+			origin     	(1183, 1008)

+			terminus   	(1504, 1008)

+			ordinal    	7)

+		    (object InterMessView "" @494

+			location   	(16, 1040)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @495

+			    Parent_View 	@494

+			    location   	(1695, 996)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE429A002D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	149

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@472

+			supplier   	@474

+			Focus_Src  	@473

+			Focus_Entry 	@475

+			origin     	(1535, 1040)

+			terminus   	(1856, 1040)

+			ordinal    	8)

+		    (object InterMessView "" @496

+			location   	(16, 1056)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @497

+			    Parent_View 	@496

+			    location   	(2031, 1012)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE42CE0230"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	149

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@474

+			supplier   	@476

+			Focus_Src  	@475

+			Focus_Entry 	@477

+			origin     	(1887, 1056)

+			terminus   	(2176, 1056)

+			ordinal    	9)

+		    (object NoteView @498

+			location   	(2000, 2016)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@498

+			    location   	(1862, 1956)

+			    fill_color 	13434879

+			    nlines     	2

+			    max_width  	240

+			    label      	"See next diagram")

+			line_color 	3342489

+			fill_color 	13434879

+			width      	300

+			height     	132)

+		    (object AttachView "" @499

+			stereotype 	TRUE

+			line_color 	3342489

+			client     	@498

+			supplier   	@476

+			line_style 	0)))

+	    (object InteractionDiagram "2. catalina_request_2"

+		mechanism_ref 	@89

+		quid       	"3DFE42F7024C"

+		title      	"2. catalina_request_2"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list

+		    (object InterObjView "StandardContextValve" @500

+			location   	(224, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@500

+			    location   	(224, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	401

+			    justify    	0

+			    label      	"StandardContextValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE4307001E"

+			width      	419

+			height     	1678

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @501

+			    location   	(224, 384)

+			    line_color 	3342489

+			    InterObjView 	@500

+			    height     	386

+			    y_coord    	326

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @502

+			    location   	(224, 704)

+			    line_color 	3342489

+			    InterObjView 	@500

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @503

+			    location   	(224, 896)

+			    line_color 	3342489

+			    InterObjView 	@500

+			    height     	916

+			    y_coord    	856

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @504

+			    location   	(224, 1024)

+			    line_color 	3342489

+			    InterObjView 	@500

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @505

+			    location   	(224, 1280)

+			    line_color 	3342489

+			    InterObjView 	@500

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardEngineValve" @506

+			location   	(592, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@506

+			    location   	(592, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardEngineValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE432801F3"

+			width      	300

+			height     	1678

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @507

+			    location   	(592, 384)

+			    line_color 	3342489

+			    InterObjView 	@506

+			    height     	264

+			    y_coord    	204

+			    Nested     	FALSE))

+		    (object InterObjView "StandardHost" @508

+			location   	(912, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@508

+			    location   	(912, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardHost")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE436503BD"

+			width      	300

+			height     	1678

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @509

+			    location   	(912, 416)

+			    line_color 	3342489

+			    InterObjView 	@508

+			    height     	431

+			    y_coord    	371

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @510

+			    location   	(912, 528)

+			    line_color 	3342489

+			    InterObjView 	@508

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @511

+			    location   	(912, 704)

+			    line_color 	3342489

+			    InterObjView 	@508

+			    height     	120

+			    y_coord    	60

+			    Nested     	TRUE))

+		    (object InterObjView "ErrorReportValve" @512

+			location   	(1264, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@512

+			    location   	(1264, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	294

+			    justify    	0

+			    label      	"ErrorReportValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE438C028D"

+			width      	312

+			height     	1678

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @513

+			    location   	(1264, 896)

+			    line_color 	3342489

+			    InterObjView 	@512

+			    height     	248

+			    y_coord    	188

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @514

+			    location   	(1264, 944)

+			    line_color 	3342489

+			    InterObjView 	@512

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "ErrorDispatcherValve" @515

+			location   	(1584, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@515

+			    location   	(1584, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	295

+			    justify    	0

+			    label      	"ErrorDispatcherValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE451F01EC"

+			width      	313

+			height     	1678

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @516

+			    location   	(1584, 1168)

+			    line_color 	3342489

+			    InterObjView 	@515

+			    height     	232

+			    y_coord    	172

+			    Nested     	FALSE))

+		    (object InterObjView "StandardHostValve" @517

+			location   	(1904, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@517

+			    location   	(1904, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	295

+			    justify    	0

+			    label      	"StandardHostValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE47310130"

+			width      	313

+			height     	1678

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @518

+			    location   	(1904, 1472)

+			    line_color 	3342489

+			    InterObjView 	@517

+			    height     	280

+			    y_coord    	220

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @519

+			    location   	(1904, 1536)

+			    line_color 	3342489

+			    InterObjView 	@517

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardContext" @520

+			location   	(2224, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@520

+			    location   	(2224, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardContext")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE47C100F1"

+			width      	300

+			height     	1678

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @521

+			    location   	(2224, 1632)

+			    line_color 	3342489

+			    InterObjView 	@520

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object InterMessView "" @522

+			location   	(16, 384)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @523

+			    Parent_View 	@522

+			    location   	(407, 340)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE434C019B"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	146

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@500

+			supplier   	@506

+			Focus_Src  	@501

+			Focus_Entry 	@507

+			origin     	(239, 384)

+			terminus   	(576, 384)

+			ordinal    	0)

+		    (object InterMessView "" @524

+			location   	(16, 416)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @525

+			    Parent_View 	@524

+			    location   	(751, 372)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE436C009D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	107

+			    justify    	0

+			    label      	"map()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@506

+			supplier   	@508

+			Focus_Src  	@507

+			Focus_Entry 	@509

+			origin     	(607, 416)

+			terminus   	(896, 416)

+			ordinal    	1)

+		    (object InterMessView "" @526

+			location   	(800, 528)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @527

+			    Parent_View 	@526

+			    location   	(751, 484)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE43830063"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	146

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@506

+			supplier   	@508

+			Focus_Src  	@507

+			Focus_Entry 	@510

+			origin     	(607, 528)

+			terminus   	(896, 528)

+			ordinal    	2)

+		    (object InterMessView "" @528

+			location   	(608, 704)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @529

+			    Parent_View 	@528

+			    location   	(568, 660)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE43B903BF"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	146

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@508

+			supplier   	@500

+			Focus_Src  	@511

+			Focus_Entry 	@502

+			origin     	(896, 704)

+			terminus   	(240, 704)

+			ordinal    	3)

+		    (object InterMessView "" @530

+			location   	(752, 896)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @531

+			    Parent_View 	@530

+			    location   	(743, 852)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE43C203A4"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	146

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@500

+			supplier   	@512

+			Focus_Src  	@503

+			Focus_Entry 	@513

+			origin     	(239, 896)

+			terminus   	(1248, 896)

+			ordinal    	4)

+		    (object SelfMessView "" @532

+			location   	(16, 944)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @533

+			    Parent_View 	@532

+			    location   	(1355, 900)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE442501B1"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	135

+			    justify    	0

+			    label      	"report()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@512

+			supplier   	@512

+			Focus_Src  	@513

+			Focus_Entry 	@514

+			origin     	(1280, 944)

+			terminus   	(1430, 944)

+			ordinal    	5)

+		    (object InterMessView "" @534

+			location   	(16, 1024)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @535

+			    Parent_View 	@534

+			    location   	(744, 980)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE46330293"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	230

+			    justify    	0

+			    label      	"invokeNext()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@512

+			supplier   	@500

+			Focus_Src  	@513

+			Focus_Entry 	@504

+			origin     	(1248, 1024)

+			terminus   	(240, 1024)

+			ordinal    	6)

+		    (object InterMessView "" @536

+			location   	(944, 1168)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @537

+			    Parent_View 	@536

+			    location   	(903, 1124)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE46E70026"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	146

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@500

+			supplier   	@515

+			Focus_Src  	@503

+			Focus_Entry 	@516

+			origin     	(239, 1168)

+			terminus   	(1568, 1168)

+			ordinal    	7)

+		    (object InterMessView "" @538

+			location   	(16, 1280)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @539

+			    Parent_View 	@538

+			    location   	(904, 1236)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE475D03A0"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	206

+			    justify    	0

+			    label      	"invokeNext"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@515

+			supplier   	@500

+			Focus_Src  	@516

+			Focus_Entry 	@505

+			origin     	(1568, 1280)

+			terminus   	(240, 1280)

+			ordinal    	8)

+		    (object InterMessView "" @540

+			location   	(1184, 1472)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @541

+			    Parent_View 	@540

+			    location   	(1063, 1428)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE476503CA"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	146

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@500

+			supplier   	@517

+			Focus_Src  	@503

+			Focus_Entry 	@518

+			origin     	(239, 1472)

+			terminus   	(1888, 1472)

+			ordinal    	9)

+		    (object SelfMessView "" @542

+			location   	(16, 1536)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @543

+			    Parent_View 	@542

+			    location   	(1995, 1492)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE47CD0167"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	295

+			    justify    	0

+			    label      	"map() //Context"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@517

+			supplier   	@517

+			Focus_Src  	@518

+			Focus_Entry 	@519

+			origin     	(1920, 1536)

+			terminus   	(2070, 1536)

+			ordinal    	10)

+		    (object InterMessView "" @544

+			location   	(16, 1632)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @545

+			    Parent_View 	@544

+			    location   	(2063, 1588)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE47D500B4"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	146

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@517

+			supplier   	@520

+			Focus_Src  	@518

+			Focus_Entry 	@521

+			origin     	(1919, 1632)

+			terminus   	(2208, 1632)

+			ordinal    	11)))

+	    (object InteractionDiagram "3. catalina_request_3"

+		mechanism_ref 	@90

+		quid       	"3DFE48A202AD"

+		title      	"3. catalina_request_3"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	612

+		origin_y   	938

+		items      	(list diagram_item_list

+		    (object InterObjView "StandardContext" @546

+			location   	(160, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@546

+			    location   	(160, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardContext")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE48B001D1"

+			width      	300

+			height     	2226

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @547

+			    location   	(160, 400)

+			    line_color 	3342489

+			    InterObjView 	@546

+			    height     	1960

+			    y_coord    	1900

+			    Nested     	FALSE))

+		    (object InterObjView "StandardPipeline" @548

+			location   	(480, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@548

+			    location   	(480, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardPipeline")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE48B80088"

+			width      	300

+			height     	2226

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @549

+			    location   	(480, 400)

+			    line_color 	3342489

+			    InterObjView 	@548

+			    height     	1900

+			    y_coord    	1840

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @550

+			    location   	(480, 1088)

+			    line_color 	3342489

+			    InterObjView 	@548

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardValveContext" @551

+			location   	(800, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@551

+			    location   	(800, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardValveContext")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE48D000DC"

+			width      	300

+			height     	2226

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @552

+			    location   	(800, 736)

+			    line_color 	3342489

+			    InterObjView 	@551

+			    height     	1510

+			    y_coord    	1450

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @553

+			    location   	(800, 1168)

+			    line_color 	3342489

+			    InterObjView 	@551

+			    height     	1072

+			    y_coord    	1012

+			    Nested     	TRUE))

+		    (object InterObjView "StandardContextValve" @554

+			location   	(1104, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@554

+			    location   	(1104, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardContextValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE490303A7"

+			width      	300

+			height     	2226

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @555

+			    location   	(1104, 800)

+			    line_color 	3342489

+			    InterObjView 	@554

+			    height     	468

+			    y_coord    	408

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @556

+			    location   	(1104, 848)

+			    line_color 	3342489

+			    InterObjView 	@554

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "StandardWrapper" @557

+			location   	(1424, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@557

+			    location   	(1424, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	288

+			    justify    	0

+			    label      	"StandardWrapper")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE49370351"

+			width      	306

+			height     	2226

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @558

+			    location   	(1424, 944)

+			    line_color 	3342489

+			    InterObjView 	@557

+			    height     	264

+			    y_coord    	204

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @559

+			    location   	(1424, 1520)

+			    line_color 	3342489

+			    InterObjView 	@557

+			    height     	340

+			    y_coord    	280

+			    Nested     	FALSE))

+		    (object InterObjView "StandardWrapperValve" @560

+			location   	(1744, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@560

+			    location   	(1744, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"StandardWrapperValve")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE49890056"

+			width      	300

+			height     	2226

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @561

+			    location   	(1744, 1440)

+			    line_color 	3342489

+			    InterObjView 	@560

+			    height     	740

+			    y_coord    	680

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @562

+			    location   	(1744, 1616)

+			    line_color 	3342489

+			    InterObjView 	@560

+			    height     	184

+			    y_coord    	124

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @563

+			    location   	(1744, 2000)

+			    line_color 	3342489

+			    InterObjView 	@560

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterObjView "ApplicationFilterChain" @564

+			location   	(2064, 224)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@564

+			    location   	(2064, 224)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"ApplicationFilterChain")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE4A1500B2"

+			width      	300

+			height     	2226

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @565

+			    location   	(2064, 1680)

+			    line_color 	3342489

+			    InterObjView 	@564

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @566

+			    location   	(2064, 1808)

+			    line_color 	3342489

+			    InterObjView 	@564

+			    height     	312

+			    y_coord    	252

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @567

+			    location   	(2064, 1872)

+			    line_color 	3342489

+			    InterObjView 	@564

+			    height     	60

+			    y_coord    	0

+			    Nested     	TRUE))

+		    (object InterMessView "" @568

+			location   	(336, 400)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @569

+			    Parent_View 	@568

+			    location   	(319, 356)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE48BE0268"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	147

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@546

+			supplier   	@548

+			Focus_Src  	@547

+			Focus_Entry 	@549

+			origin     	(175, 400)

+			terminus   	(464, 400)

+			ordinal    	0)

+		    (object InterMessView "" @570

+			location   	(16, 736)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @571

+			    Parent_View 	@570

+			    location   	(639, 692)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE48EA003A"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	147

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@548

+			supplier   	@551

+			Focus_Src  	@549

+			Focus_Entry 	@552

+			origin     	(495, 736)

+			terminus   	(784, 736)

+			ordinal    	1)

+		    (object InterMessView "" @572

+			location   	(16, 800)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @573

+			    Parent_View 	@572

+			    location   	(951, 756)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE491102D6"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	147

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@551

+			supplier   	@554

+			Focus_Src  	@552

+			Focus_Entry 	@555

+			origin     	(815, 800)

+			terminus   	(1088, 800)

+			ordinal    	2)

+		    (object SelfMessView "" @574

+			location   	(16, 848)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @575

+			    Parent_View 	@574

+			    location   	(1322, 821)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE492F033D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	437

+			    justify    	0

+			    label      	"map //return Wrapper"

+			    pctDist    	1.346667

+			    height     	28

+			    orientation 	0)

+			line_color 	3342489

+			client     	@554

+			supplier   	@554

+			Focus_Src  	@555

+			Focus_Entry 	@556

+			origin     	(1120, 848)

+			terminus   	(1270, 848)

+			ordinal    	3)

+		    (object InterMessView "" @576

+			location   	(1264, 944)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @577

+			    Parent_View 	@576

+			    location   	(1262, 901)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE494A0151"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	147

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.498270

+			    height     	44

+			    orientation 	0)

+			line_color 	3342489

+			client     	@554

+			supplier   	@557

+			Focus_Src  	@555

+			Focus_Entry 	@558

+			origin     	(1119, 944)

+			terminus   	(1408, 944)

+			ordinal    	4)

+		    (object InterMessView "" @578

+			location   	(960, 1088)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @579

+			    Parent_View 	@578

+			    location   	(952, 1044)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE495F0288"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	147

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@557

+			supplier   	@548

+			Focus_Src  	@558

+			Focus_Entry 	@550

+			origin     	(1408, 1088)

+			terminus   	(496, 1088)

+			ordinal    	5)

+		    (object InterMessView "" @580

+			location   	(16, 1168)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @581

+			    Parent_View 	@580

+			    location   	(639, 1124)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4976015D"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	147

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@548

+			supplier   	@551

+			Focus_Src  	@549

+			Focus_Entry 	@553

+			origin     	(495, 1168)

+			terminus   	(784, 1168)

+			ordinal    	6)

+		    (object InterMessView "" @582

+			location   	(1296, 1440)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @583

+			    Parent_View 	@582

+			    location   	(1271, 1396)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4993023C"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	147

+			    justify    	0

+			    label      	"invoke()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@551

+			supplier   	@560

+			Focus_Src  	@553

+			Focus_Entry 	@561

+			origin     	(815, 1440)

+			terminus   	(1728, 1440)

+			ordinal    	7)

+		    (object InterMessView "" @584

+			location   	(1616, 1520)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @585

+			    Parent_View 	@584

+			    location   	(1584, 1476)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE49EC004F"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	175

+			    justify    	0

+			    label      	"allocate()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@560

+			supplier   	@557

+			Focus_Src  	@561

+			Focus_Entry 	@559

+			origin     	(1728, 1520)

+			terminus   	(1440, 1520)

+			ordinal    	8)

+		    (object InterMessView "" @586

+			location   	(1616, 1616)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @587

+			    Parent_View 	@586

+			    location   	(1583, 1572)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4A200067"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	242

+			    justify    	0

+			    label      	"return servlet"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@557

+			supplier   	@560

+			Focus_Src  	@559

+			Focus_Entry 	@562

+			origin     	(1439, 1616)

+			terminus   	(1728, 1616)

+			ordinal    	9)

+		    (object InterMessView "" @588

+			location   	(1936, 1680)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @589

+			    Parent_View 	@588

+			    location   	(1937, 1636)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4A29027E"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	343

+			    justify    	0

+			    label      	"createFilterChain()"

+			    pctDist    	0.619377

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@560

+			supplier   	@564

+			Focus_Src  	@562

+			Focus_Entry 	@565

+			origin     	(1759, 1680)

+			terminus   	(2048, 1680)

+			ordinal    	10)

+		    (object InterMessView "" @590

+			location   	(16, 1808)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @591

+			    Parent_View 	@590

+			    location   	(1902, 1764)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4A490283"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	170

+			    justify    	0

+			    label      	"doFilter()"

+			    pctDist    	0.498270

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@560

+			supplier   	@564

+			Focus_Src  	@561

+			Focus_Entry 	@566

+			origin     	(1759, 1808)

+			terminus   	(2048, 1808)

+			ordinal    	11)

+		    (object InterObjView "$UNNAMED$0" @592

+			location   	(2240, 368)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	TRUE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object ItemLabel

+			    Parent_View 	@592

+			    location   	(2240, 368)

+			    fill_color 	13434879

+			    anchor_loc 	1

+			    nlines     	2

+			    max_width  	282

+			    justify    	0

+			    label      	"")

+			stereotype 	(object ItemLabel

+			    Parent_View 	@592

+			    location   	(2240, 368)

+			    fill_color 	13434879

+			    anchor     	10

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	222

+			    justify    	0

+			    label      	"<<Servlet>>")

+			icon_style 	"Icon"

+			line_color 	3342489

+			fill_color 	13434879

+			quidu      	"3DFE4BAE0056"

+			width      	300

+			height     	2082

+			icon_height 	0

+			icon_width 	0

+			icon_y_offset 	0

+			annotation 	1

+			Focus_Of_Control 	(object Focus_Of_Control "" @593

+			    location   	(2240, 428)

+			    InterObjView 	@592

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE)

+			Focus_Of_Control 	(object Focus_Of_Control "" @594

+			    location   	(2240, 1984)

+			    line_color 	3342489

+			    InterObjView 	@592

+			    height     	60

+			    y_coord    	0

+			    Nested     	FALSE))

+		    (object SelfMessView "" @595

+			location   	(16, 1872)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @596

+			    Parent_View 	@595

+			    location   	(2155, 1828)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4C2701C3"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	308

+			    justify    	0

+			    label      	"internalDoFilter()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@564

+			supplier   	@564

+			Focus_Src  	@566

+			Focus_Entry 	@567

+			origin     	(2080, 1872)

+			terminus   	(2230, 1872)

+			ordinal    	12)

+		    (object InterMessView "" @597

+			location   	(2144, 1984)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @598

+			    Parent_View 	@597

+			    location   	(2151, 1940)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4CA502BF"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	162

+			    justify    	0

+			    label      	"service()"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	0)

+			line_color 	3342489

+			client     	@564

+			supplier   	@592

+			Focus_Src  	@566

+			Focus_Entry 	@594

+			origin     	(2079, 1984)

+			terminus   	(2224, 1984)

+			ordinal    	13)

+		    (object InterMessView "" @599

+			location   	(16, 2000)

+			font       	(object Font

+			    size       	10

+			    face       	"Arial"

+			    bold       	FALSE

+			    italics    	FALSE

+			    underline  	FALSE

+			    strike     	FALSE

+			    color      	0

+			    default_color 	TRUE)

+			label      	(object SegLabel @600

+			    Parent_View 	@599

+			    location   	(1904, 1956)

+			    font       	(object Font

+				size       	10

+				face       	"Arial"

+				bold       	FALSE

+				italics    	FALSE

+				underline  	FALSE

+				strike     	FALSE

+				color      	0

+				default_color 	TRUE)

+			    quidu      	"3DFE4CB4025B"

+			    anchor_loc 	1

+			    nlines     	1

+			    max_width  	113

+			    justify    	0

+			    label      	"return"

+			    pctDist    	0.500000

+			    height     	45

+			    orientation 	1)

+			line_color 	3342489

+			client     	@564

+			supplier   	@560

+			Focus_Src  	@566

+			Focus_Entry 	@563

+			origin     	(2048, 2000)

+			terminus   	(1760, 2000)

+			ordinal    	14)))))

+    root_subsystem 	(object SubSystem "Component View"

+	quid       	"3DFDF6CE036A"

+	physical_models 	(list unit_reference_list)

+	physical_presentations 	(list unit_reference_list

+	    (object Module_Diagram "Main"

+		quid       	"3DFDF6D201FD"

+		title      	"Main"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list))))

+    process_structure 	(object Processes

+	quid       	"3DFDF6CE0373"

+	ProcsNDevs 	(list

+	    (object Process_Diagram "Deployment View"

+		quid       	"3DFDF6CE0387"

+		title      	"Deployment View"

+		zoom       	100

+		max_height 	28350

+		max_width  	21600

+		origin_x   	0

+		origin_y   	0

+		items      	(list diagram_item_list))))

+    properties 	(object Properties

+	attributes 	(list Attribute_Set

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"propertyId"

+		value      	"809135966")

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Project"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"project"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TableCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ViewCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DomainCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SPPackageCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TriggerCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IndexCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ConstraintCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"StoreProcedureCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"PrimaryKeyCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ForeignKeyCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"JoinCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TableSpaceCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"cONTAINERCounter"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TablePrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ViewPrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DomainPrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TriggerPrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IndexPrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ConstraintPrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"StoreProcedurePrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"PrimaryKeyPrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ForeignKeyPrefix"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TableSpacePrefix"

+			value      	"")))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Module-Spec"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsDatabase"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TargetDatabase"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Location"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsTableSpace"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TableSpaceType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsDeault"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"BufferPool"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ExtentSize"

+			value      	1)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"PrefetchSize"

+			value      	1)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"PageSize"

+			value      	4)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ManagedBy"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ContainerList"

+			value      	"")))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Category"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmSchema"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmDomainPackage"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsSchema"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsDomainPackage"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsRootSchema"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsRootDomainPackage"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsSchemaPackage"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DatabaseID"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DBMS"

+			value      	"")))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Class"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsTable"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsView"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsDomain"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsSPPackage"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Synonymns"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TableSpaceID"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SourceId"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SourceType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"CorrelationName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SelectClause"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsUpdateable"

+			value      	TRUE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"CheckOption"

+			value      	"None")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsSnapShot"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsDistinct"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"PersistToServer"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsPackage"

+			value      	FALSE)))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Attribute"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Ordinal"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsIdentity"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsUnique"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"NullsAllowed"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Length"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Scale"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ColumnType"

+			value      	"Native")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ForBitData"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DefaultValueType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DefaultValue"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SourceId"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SourceType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"OID"

+			value      	FALSE)))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Association"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsRelationship"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SourceId"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"SourceType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"RIMethod"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ParentUpdateRule"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ParentUpdateRuleName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ParentDeleteRule"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ParentDeleteRuleName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ChildInsertRestrict"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ChildInsertRestrictName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ChildMultiplicity"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ChildMultiplicityName"

+			value      	"")))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Role"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ConstraintName"

+			value      	"")))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Operation"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsConstraint"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ConstraintType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsIndex"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsTrigger"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsStoredProcedure"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsCluster"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TableSpace"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"FillFactor"

+			value      	0)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"KeyList"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"CheckPredicate"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsUnique"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DeferalMode"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"InitialCheckTime"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"TriggerType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsInsertEvent"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsUpdateEvent"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsDeleteEvent"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"RefOldTable"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"RefNewTable"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"RefOldRow"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"RefNewRow"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsRow"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"WhenClause"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Language"

+			value      	"SQL")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ProcType"

+			value      	"Procedure")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsDeterministic"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ParameterStyle"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ReturnedNull"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ExternalName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Length"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Scale"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ForBitData"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DefaultValue"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DefaultValueType"

+			value      	"")))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"default__Parameter"

+		value      	(list Attribute_Set

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"dmItem"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DMName"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsInParameter"

+			value      	TRUE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"IsOutParameter"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Ordinal"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Length"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"Scale"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"ForBitData"

+			value      	FALSE)

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DefaultValueType"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"DefaultValue"

+			value      	"")

+		    (object Attribute

+			tool       	"Data Modeler"

+			name       	"OperationID"

+			value      	"")))

+	    (object Attribute

+		tool       	"Data Modeler"

+		name       	"HiddenTool"

+		value      	FALSE)

+	    (object Attribute

+		tool       	"Data Modeler Communicator"

+		name       	"HiddenTool"

+		value      	FALSE)

+	    (object Attribute

+		tool       	"Deploy"

+		name       	"HiddenTool"

+		value      	FALSE)

+	    (object Attribute

+		tool       	"Rose Model Integrator"

+		name       	"HiddenTool"

+		value      	FALSE)

+	    (object Attribute

+		tool       	"Rose Web Publisher"

+		name       	"HiddenTool"

+		value      	FALSE)

+	    (object Attribute

+		tool       	"Web Modeler"

+		name       	"HiddenTool"

+		value      	FALSE))

+	quid       	"3DFDF6CE0374"))

diff --git a/webapps/docs/architecture/startup.html b/webapps/docs/architecture/startup.html
new file mode 100644
index 0000000..ce2457f
--- /dev/null
+++ b/webapps/docs/architecture/startup.html
@@ -0,0 +1,84 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - Startup</title><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Architecture 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="overview.html">Overview</a></li><li><a href="startup.html">Server Startup</a></li><li><a href="requestProcess.html">Request Process</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Startup</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Startup"><!--()--></a><a name="Server_Startup"><strong>Server Startup</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+This page describes how the Tomcat server starts up.  There are several

+different ways to start tomcat, including:

+<ul>

+  <li>From the command line.</li>

+  <li>From a Java program as an embedded server.</li>

+  <li>Automatically as a Windows service.</li>

+</ul>

+</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="description"><strong>description</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+A text description of the startup procedure is available

+<a href="startup/serverStartup.txt">here.</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="diagram"><strong>diagram</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+A UML sequence diagram of the startup procedure is available

+<a href="startup/serverStartup.pdf">here.</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="comments"><strong>comments</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+The startup process can be customized in many ways, both

+by modifying Tomcat code and by implementing your own

+LifecycleListeners which are then registered in the server.xml

+configuration file.

+</p>

+

+</blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/architecture/startup.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/startup/serverStartup.pdf b/webapps/docs/architecture/startup/serverStartup.pdf
new file mode 100644
index 0000000..34aa598
--- /dev/null
+++ b/webapps/docs/architecture/startup/serverStartup.pdf
Binary files differ
diff --git a/webapps/docs/architecture/startup/serverStartup.txt b/webapps/docs/architecture/startup/serverStartup.txt
new file mode 100644
index 0000000..36981df
--- /dev/null
+++ b/webapps/docs/architecture/startup/serverStartup.txt
@@ -0,0 +1,138 @@
+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+

+Tomcat 5 Startup Sequence

+

+Sequence 1. Start from Command Line

+Class: org.apache.catalina.startup.Bootstrap

+What it does:

+    a) Set up classloaders

+        commonLoader (common)-> System Loader

+        sharedLoader (shared)-> commonLoader -> System Loader

+        catalinaLoader(server) -> commonLoader -> System Loader

+    b) Load startup class (reflection)

+        org.apache.catalina.startup.Catalina

+        setParentClassloader -> sharedLoader

+        Thread.contextClassloader -> catalinaLoader

+    c) Bootstrap.daemon.init() complete

+

+Sequence 2. Process command line argument (start, startd, stop, stopd)

+Class: org.apache.catalina.startup.Bootstrap (assume command->start)

+What it does:

+    a) Catalina.setAwait(true);

+    b) Catalina.load()

+        b1) initDirs() -> set properties like

+                          catalina.home

+                          catalina.base == catalina.home (most cases)

+        b2) initNaming

+            setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,

+                    org.apache.naming.java.javaURLContextFactory ->default)

+        b3) createStartDigester()

+            Configures a digester for the main server.xml elements like

+            org.apache.catalina.core.StandardServer (can change of course :)

+            org.apache.catalina.deploy.NamingResources

+                Stores naming resources in the J2EE JNDI tree

+            org.apache.catalina.LifecycleListener

+                implements events for start/stop of major components

+            org.apache.catalina.core.StandardService

+                The single entry for a set of connectors,

+                so that a container can listen to multiple connectors

+                ie, single entry

+            org.apache.coyote.tomcat5.CoyoteConnector

+                Connectors to listen for incoming requests only

+            It also adds the following rulesets to the digester

+                NamingRuleSet

+                EngineRuleSet

+                HostRuleSet

+                ContextRuleSet

+        b4) Load the server.xml and parse it using the digester

+            Parsing the server.xml using the digester is an automatic

+            XML-object mapping tool, that will create the objects defined in server.xml

+            Startup of the actual container has not started yet.

+        b5) Assigns System.out and System.err to the SystemLogHandler class

+        b6) Calls initialize on all components, this makes each object register itself with the

+            JMX agent.

+            During the process call the Connectors also initialize the adapters.

+            The adapters are the components that do the request pre-processing.

+            Typical adapters are HTTP1.1 (default if no protocol is specified,

+            org.apache.coyote.http11.Http11Protocol)

+            AJP1.3 for mod_jk etc.

+

+    c) Catalina.start()

+        c1) Starts the NamingContext and binds all JNDI references into it

+        c2) Starts the services under <Server> which are:

+            StandardService -> starts Engine (ContainerBase ->Logger,Loader,Realm,Cluster etc)

+        c3) StandardHost (started by the service)

+                Configures a ErrorReportValvem to do proper HTML output for different HTTP

+                errors codes

+                Starts the Valves in the pipeline (at least the ErrorReportValve)

+                Configures the StandardHostValve,

+                    this valves ties the Webapp Class loader to the thread context

+                    it also finds the session for the request

+                    and invokes the context pipeline

+                Starts the HostConfig component

+                    This component deploys all the webapps

+                        (webapps & conf/Catalina/localhost/*.xml)

+                    Webapps are installed using the deployer (StandardHostDeployer)

+                    The deployer will create a Digester for your context, this digester

+                    will then invoke ContextConfig.start()

+                        The ContextConfig.start() will process the default web.xml (conf/web.xml)

+                        and then process the applications web.xml (WEB-INF/web.xml)

+

+        c4) During the lifetime of the container (StandardEngine) there is a background thread that

+            keeps checking if the context has changed. If a context changes (timestamp of war file,

+            context xml file, web.xml) then a reload is issued (stop/remove/deploy/start)

+

+    d) Tomcat receives a request on an HTTP port

+        d1) The request is received by a separate thread which is waiting in the PoolTcpEndPoint

+             class. It is waiting for a request in a regular ServerSocket.accept() method.

+             When a request is received, this thread wakes up.

+        d2) The PoolTcpEndPoint assigns the a TcpConnection to handle the request.

+            It also supplies a JMX object name to the catalina container (not used I believe)

+        d3) The processor to handle the request in this case is Coyote Http11Processor,

+            and the process method is invoked.

+            This same processor is also continuing to check the input stream of the socket

+            until the keep alive point is reached or the connection is disconnected.

+        d4) The HTTP request is parsed using an internal buffer class (Coyote Http11 Internal Buffer)

+            The buffer class parses the request line, the headers, etc and store the result in a

+            Coyote request (not an HTTP request) This request contains all the HTTP info, such

+            as servername, port, scheme, etc.

+        d5) The processor contains a reference to an Adapter, in this case it is the

+            Coyote Tomcat 5 Adapter. Once the request has been parsed, the Http11 processor

+            invokes service() on the adapter. In the service method, the Request contains a

+            CoyoteRequest and CoyoteRespons (null for the first time)

+            The CoyoteRequest(Response) implements HttpRequest(Response) and HttpServletRequest(Response)

+            The adapter parses and associates everything with the request, cookies, the context through a

+            Mapper, etc

+        d6) When the parsing is finished, the CoyoteAdapter invokes its container (StandardEngine)

+            and invokes the invoke(request,response) method.

+            This initiates the HTTP request into the Catalina container starting at the engine level

+        d7) The StandardEngine.invoke() simply invokes the container pipeline.invoke()

+        d8) By default the engine only has one valve the StandardEngineValve, this valve simply

+            invokes the invoke() method on the Host pipeline (StandardHost.getPipeLine())

+        d9) the StandardHost has two valves by default, the StandardHostValve and the ErrorReportValve

+        d10) The standard host valve associates the correct class loader with the current thread

+             It also retrieves the Manager and the session associated with the request (if there is one)

+             If there is a session access() is called to keep the session alive

+        d11) After that the StandardHostValve invokes the pipeline on the context associated

+             with the request.

+        d12) The first valve that gets invoked by the Context pipeline is the FormAuthenticator

+             valve. Then the StandardContextValve gets invoke.

+             The StandardContextValve invokes any context listeners associated with the context.

+             Next it invokes the pipeline on the Wrapper component (StandardWrapperValve)

+        d13) During the invocation of the StandardWrapperValve, the JSP wrapper (Jasper) gets invoked

+             This results in the actual compilation of the JSP.

+             And then invokes the actual servlet.

+    e) Invocation of the servlet class

diff --git a/webapps/docs/balancer-howto.html b/webapps/docs/balancer-howto.html
new file mode 100644
index 0000000..81514b5
--- /dev/null
+++ b/webapps/docs/balancer-howto.html
@@ -0,0 +1,61 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Load Balancer HOW-TO</title><meta name="author" content="Yoav Shapira"><meta name="author" content="Remy Maucherat"><meta name="author" content="Andy Oliver"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Load Balancer HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Using_the_JK_1.2.x_native_connector">Using the JK 1.2.x native connector</a></li><li><a href="#Using_Apache_HTTP_Server_2.x_with_mod_proxy">Using Apache HTTP Server 2.x with mod_proxy</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="Using the JK 1.2.x native connector"><!--()--></a><a name="Using_the_JK_1.2.x_native_connector"><strong>Using the JK 1.2.x native connector</strong></a></font></td></tr><tr><td><blockquote>

+

+Please refer to the JK 1.2.x documentation.

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using Apache HTTP Server 2.x with mod_proxy"><!--()--></a><a name="Using_Apache_HTTP_Server_2.x_with_mod_proxy"><strong>Using Apache HTTP Server 2.x with mod_proxy</strong></a></font></td></tr><tr><td><blockquote>

+

+Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either

+HTTP or AJP load balancing. This new version of mod_proxy is also usable with

+Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code

+from Apache HTTP Server 2.2.

+

+</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="/tomcat-7.0-doc/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/balancer-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/building.html b/webapps/docs/building.html
new file mode 100644
index 0000000..5ee9662
--- /dev/null
+++ b/webapps/docs/building.html
@@ -0,0 +1,255 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Building Tomcat</title><meta name="author" content="Remy Maucherat, Tim Whittington"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Building Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Download_a_Java_Development_Kit_(JDK)_version_6">Download a Java Development Kit (JDK) version 6</a></li><li><a href="#Install_Apache_Ant_1.8.1_or_later">Install Apache Ant 1.8.1 or later</a></li><li><a href="#Checkout_or_obtain_the_source_code_for_Tomcat_7.0">Checkout or obtain the source code for Tomcat 7.0</a></li><li><a href="#Building_Tomcat">Building Tomcat</a></li><li><a href="#Building_with_Eclipse">Building with Eclipse</a></li><li><a href="#Building_with_other_IDEs">Building with other IDEs</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+Building Apache Tomcat from source is very easy, and is the first step to contributing to

+Tomcat. The following is a step by step guide.

+</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="Download a Java Development Kit (JDK) version 6"><!--()--></a><a name="Download_a_Java_Development_Kit_(JDK)_version_6"><strong>Download a Java Development Kit (JDK) version 6</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+Building Apache Tomcat requires a JDK (version 6) to be installed. You can download one from<br>

+<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a><br>

+or from another JDK vendor.

+</p>

+

+<p>

+<b>IMPORTANT</b>: Set an environment variable JAVA_HOME to the pathname of the

+directory into which you installed the JDK release.

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Install Apache Ant 1.8.1 or later"><!--()--></a><a name="Install_Apache_Ant_1.8.1_or_later"><strong>Install Apache Ant 1.8.1 or later</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+Download a binary distribution of Ant 1.8.1 or later from

+<a href="http://ant.apache.org/bindownload.cgi">here</a>.

+</p>

+

+<p>

+Unpack the binary distribution into a convenient location so that the

+Ant release resides in its own directory (conventionally named

+<code>apache-ant-1.8.x</code>).  For the remainder of this guide,

+the symbolic name <code>${ant.home}</code> is used to refer to the full pathname of

+ the Ant installation directory directory.

+</p>

+

+<p>

+<b>IMPORTANT</b>: Create an ANT_HOME environment variable to point the directory <code>${ant.home}</code>,

+and modify the PATH environment variable to include directory

+<code>${ant.home}/bin</code> in its list.  This makes the <code>ant</code> command line script

+available, which will be used to actually perform the build.

+</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="Checkout or obtain the source code for Tomcat 7.0"><!--()--></a><a name="Checkout_or_obtain_the_source_code_for_Tomcat_7.0"><strong>Checkout or obtain the source code for Tomcat 7.0</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+  Tomcat 7.0 SVN repository URL:

+  <a href="http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/">http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/</a>

+  </p>

+  <p>

+  Tomcat source packages:

+  <a href="http://tomcat.apache.org/download-70.cgi">http://tomcat.apache.org/download-70.cgi</a>.

+  </p>

+

+  <p>

+  Checkout the source using SVN, selecting a tag for released version or

+  trunk for the current development code, or download and unpack a

+  source package. For the remainder of this guide, the symbolic name

+  <code>${tomcat.source}</code> is used to refer to the

+  location where the source has been placed.

+  </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="Building Tomcat"><!--()--></a><a name="Building_Tomcat"><strong>Building Tomcat</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+Use the following commands to build Tomcat:

+<br>

+<code><br>

+    cd ${tomcat.source}<br>

+    ant<br>

+</code>

+</p>

+

+<p>

+<b>WARNING:</b> Running this command will download libraries required

+  to build Tomcat to the <code>/usr/share/java</code> directory by default.

+  On a typical Linux or MacOX system, an ordinary user

+  will not have access to write to this directory, and, even if you do,

+  it is likely not appropriate for you to write there. On Windows

+  this usually corresponds to the <code>C:\usr\share\java</code> directory,

+  unless Cygwin is used. Read below to learn how to customize the directory

+  used to download the binaries.

+</p>

+

+<p>

+<b>NOTE:</b> Users accessing the Internet through a proxy must use a properties

+  file to indicate to Ant the proxy configuration. Read below for details.

+</p>

+

+<p>

+  The build can be controlled by creating a <code>${tomcat.source}/build.properties</code>

+  file and adding the following content to it:

+<br>

+<code><br>

+    # ----- Proxy setup -----<br>

+    # Uncomment if using a proxy server.<br>

+    #proxy.host=proxy.domain<br>

+    #proxy.port=8080<br>

+    #proxy.use=on<br>

+<br>

+    # ----- Default Base Path for Dependent Packages -----<br>

+    # Replace this path with the directory path where<br>

+    # dependencies binaries should be downloaded.<br>

+    base.path=/home/me/some-place-to-download-to<br>

+</code>

+</p>

+

+<p>

+Once the build has completed successfully, a usable Tomcat installation will have been

+produced in the <code>${tomcat.source}/output/build</code> directory, and can be started

+and stopped with the usual scripts.

+</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="Building with Eclipse"><!--()--></a><a name="Building_with_Eclipse"><strong>Building with Eclipse</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+<b>IMPORTANT:</b> This is not a supported means of building Tomcat; this information is

+provided without warranty :-).

+The only supported means of building Tomcat is with the Ant build described above.

+However, some developers like to work on Java code with a Java IDE,

+and the following steps have been used by some developers.

+</p>

+

+<p>

+<b>NOTE:</b> This will not let you build everything under Eclipse;

+the build process requires use of Ant for the many stages that aren't

+simple Java compilations.

+However, it will allow you to view and edit the Java code,

+get warnings, reformat code, perform refactorings, run Tomcat

+under the IDE, and so on.

+</p>

+

+<p>

+<b>WARNING:</b> Do not forget to create and configure

+  <code>${tomcat.source}/build.properties</code> file as described above

+  before running any Ant targets.

+</p>

+

+<p>

+Sample Eclipse project files and launch targets are provided in the

+<code>res/ide-support/eclipse</code> directory of the source tree.

+The instructions below will automatically copy these into the required locations.

+</p>

+<p>

+An Ant target is provided as a convenience to download all binary dependencies, and to create

+the Eclipse project and classpath files in the root of the source tree.

+<br>

+<code><br>

+    cd ${tomcat.source}<br>

+    ant ide-eclipse<br>

+</code>

+</p>

+

+<p>

+Start Eclipse and create a new Workspace.

+</p>

+

+<p>

+Open the <em>Preferences</em> dialog and then select <em>Java-&gt;Build Path-&gt;Classpath

+Variables</em> to add two new <em>Classpath Variables</em>:

+</p>

+

+<p>

+<table border="1">

+ <tr><td>TOMCAT_LIBS_BASE</td><td>The same location as the <code>base.path</code>

+  setting in <code>build.properties</code>, where the binary dependencies have been downloaded</td></tr>

+ <tr><td>ANT_HOME</td><td>the base path of Ant 1.8.1 or later</td></tr>

+</table>

+</p>

+

+<p>

+Use <em>File-&gt;Import</em> and choose <em>Existing Projects into Workspace</em>.

+From there choose the root directory of the Tomcat source tree (<code>${tomcat.source}</code>)

+and import the Tomcat project located there.

+</p>

+

+<p>

+<code>start-tomcat</code> and <code>stop-tomcat</code> launch configurations are provided in

+<code>res/ide-support/eclipse</code> and will be available in the <em>Run-&gt;Run Configurations</em>

+dialog. Use these to start and stop Tomcat from Eclipse.

+<br>If you want to configure these yourself (or are using a different IDE)

+then use <code>org.apache.catalina.startup.Bootstrap</code> as the main class,

+<code>start</code>/<code>stop</code> etc. as program arguments, and specify <code>-Dcatalina.home=...</code>

+(with the name of your build directory) as VM arguments.

+</p>

+

+<p>

+Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat

+coding conventions (and have your contributions accepted):

+</p>

+<p>

+<table border="1">

+  <tr><td>Java -&gt; Code Style -&gt; Formatter -&gt; Edit...</td>

+  <td>Tab policy: Spaces only<br>Tab and Indentation size: 4</td></tr>

+  <tr><td>General -&gt; Editors -&gt; Text Editors</td>

+  <td>Displayed tab width: 2<br>Insert spaces for tabs<br>Show whitespace characters (optional)</td></tr>

+  <tr><td>XML -&gt; XML Files -&gt; Editor</td><td>Indent using spaces<br>Indentation size: 2</td></tr>

+  <tr><td>Ant -&gt; Editor -&gt; Formatter</td><td>Tab size: 2<br>Use tab character instead of spaces: unchecked</td></tr>

+</table>

+</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="Building with other IDEs"><!--()--></a><a name="Building_with_other_IDEs"><strong>Building with other IDEs</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+The same general approach should work for most IDEs; it has been reported

+to work in IntelliJ IDEA, for example.

+</p>

+

+</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="/tomcat-7.0-doc/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/building.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/cgi-howto.html b/webapps/docs/cgi-howto.html
new file mode 100644
index 0000000..9e5f407
--- /dev/null
+++ b/webapps/docs/cgi-howto.html
@@ -0,0 +1,111 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - CGI How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>CGI How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Configuration">Configuration</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The CGI (Common Gateway Interface) defines a way for a web server to

+interact with external content-generating programs, which are often

+referred to as CGI programs or CGI scripts.

+</p>

+

+<p>Within Tomcat, CGI support can be added when you are using Tomcat as your

+HTTP server and require CGI support.  Typically this is done

+during development when you don't want to run a web server like

+Apache httpd.

+Tomcat's CGI support is largely compatible with Apache httpd's,

+but there are some limitations (e.g., only one cgi-bin directory).

+</p>

+

+<p>CGI support is implemented using the servlet class

+<code>org.apache.catalina.servlets.CGIServlet</code>.  Traditionally,

+this servlet is mapped to the URL pattern "/cgi-bin/*".</p>

+

+<p>By default CGI support is disabled in Tomcat.</p>

+</blockquote></td></tr></table><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><strong>CAUTION</strong> - CGI scripts are used to execute programs

+external to the Tomcat JVM. If you are using the Java SecurityManager this

+will bypass your security policy configuration in <code>catalina.policy.</code></p>

+

+<p>Remove the XML comments from around the CGI servlet and servlet-mapping

+configuration in <code>$CATALINA_BASE/conf/web.xml</code>.</p>

+

+<p>Only Contexts which are marked as privileged may use the CGI servlet (see the

+privileged property of 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="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>There are several servlet init parameters which can be used to

+configure the behaviour of the CGI servlet.

+<ul>

+<li><strong>cgiPathPrefix</strong> - The CGI search path will start at

+the web application root directory + File.separator + this prefix.

+The default cgiPathPrefix is <code>WEB-INF/cgi</code></li>

+<li><strong>debug</strong> - Debugging detail level for messages logged

+by this servlet. Default 0.</li>

+<li><strong>executable</strong> - The of the executable to be used to

+run the script. You may explicitly set this parameter to be an empty string

+if your script is itself executable (e.g. an exe file). Default is

+<code>perl</code>.</li>

+<li><strong>executable-arg-1</strong>, <strong>executable-arg-2</strong>,

+and so on - additional arguments for the executable. These precede the

+CGI script name. By default there are no additional arguments.</li>

+<li><strong>parameterEncoding</strong> - Name of the parameter encoding

+to be used with the CGI servlet. Default is

+<code>System.getProperty("file.encoding","UTF-8")</code>.</li>

+<li><strong>passShellEnvironment</strong> - Should the shell environment

+variables (if any) be passed to the CGI script? Default is

+<code>false</code>.</li>

+<li><strong>stderrTimeout</strong> - The time (in milliseconds) to wait for

+the reading of stderr to complete before terminating the CGI process. Default

+is 2000.</li>

+</ul>

+</p>

+

+</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="/tomcat-7.0-doc/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/cgi-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/changelog.html b/webapps/docs/changelog.html
new file mode 100644
index 0000000..cdabfeb
--- /dev/null
+++ b/webapps/docs/changelog.html
@@ -0,0 +1,7464 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Changelog</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Filip Hanik"><meta name="author" content="Rainer Jung"><meta name="author" content="Konstantin Kolinko"><meta name="author" content="Peter Rossbach"><meta name="author" content="Keiichi Fujino"><meta name="author" content="Tim Whittington"><meta name="author" content="Mladen Turk"><meta name="author" content="Christopher Schultz"><meta name="author" content="Sylvain Laurent"><meta name="author" content="Violeta Georgieva"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Changelog</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)"><!--()--></a><a name="Tomcat_7.0.42_(markt)"><strong>Tomcat 7.0.42 (markt)</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enforce the restriction described in section 4.4 of the Servlet 3.0

+        specification that requires the new pluggability methods only to be

+        available to <code>ServletContextListener</code>s defined in one of the

+        specified ways. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Better handle FORM authentication when requesting a resource as an

+        unauthenticated user that is only protected for a sub-set of HTTP

+        methods that does not include GET. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53777">53777</a>: Add support for a JAAS Realm instance to use a

+        dedicated configuration rather than the JVM global JAAS configuration.

+        This is most likely to be useful for per web application JAAS Realms.

+        Based on a patch by eolivelli. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54745">54745</a>: Fix JAR file scanning when Tomcat is deployed via Java

+        Web Start. Patch provided by Nick Williams. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55017">55017</a>: Add the ability to configure the RMI bind address when

+        using the JMX remote lifecycle listener. Patch provided by Alexey

+        Noskov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55071">55071</a>: Ensure original exception is reported if JDBC Realm

+        fails to read a user's credentials. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55073">55073</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55108">55108</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55109">55109</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55110">55110</a>,

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55158">55158</a> &amp; <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55159">55159</a>: Small performance improvements.

+        Patches provided by Adrian Nistor. (markt/violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55102">55102</a>: Add support for time to first byte in the

+        AccessLogValve. Patch provided by Jeremy Boynes. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55125">55125</a>: If the Server container fails to start, don't allow

+        the Catalina wrapper to start (used when running from the command line

+        and when running as a service) since Tomcat will not be able to do any

+        useful work. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the <code>JreMemoryLeakPreventionListener</code> to take account

+        of changes in the behaviour of

+        <code>java.beans.Introspector.flushCaches()</code> and

+        <code>sun.awt.AppContext.getAppContext()</code> in Java 7. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid WARNING log message of

+        <code>Users:type=UserDatabase,database=UserDatabase</code> at Tomcat

+        shutdown. (pero)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid <code>ClassCastException</code> when an asynchronous dispatch is

+        invoked in an asynchronous cycle which is started by a call to

+        <code>ServletRequest.startAsync(ServletRequest,ServletResponse)</code>

+        where ServletRequest/ServletResponse are custom implementations.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression introduced in 7.0.39 (refactoring of base 64

+        encoding and decoding) that broke the JNDI Realm when

+        <code>userPassword</code> was set and passwords were hashed with MD5 or

+        SHA1. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the mechanism for the path calculation in

+        <code>AsyncContext.dispatch()</code>. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55155">55155</a>: Avoid constant focus grabbing when running the Tomcat

+        unit tests under Java 6 on OSX. Patch provided by Casey Lucas. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55160">55160</a>: Don't ignore connectionUploadTimeout setting when

+        using HTTP NIO connector. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55176">55176</a>: Correctly handle regular expressions within SSI

+        expressions that contain an equals character. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55177">55177</a>: Correctly handle infinite soTimeout for BIO HTTP

+        connector. Based on a patch by Nick Bunn. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55180">55180</a>: Correctly handle infinite soTimeout when

+        <code>disableUploadTimeout</code> is set to false. Patch provided by

+        Nick Bunn. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Delete leftover of war file from tempDir when removing invalid

+        <code>FileMessageFactory</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the keepAlive of NioSender works correctly when

+        <code>keepAliveCount</code>/<code>keepAliveTime</code> is set to a value

+        greater than 0. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add logging of when a member is unable to join the cluster. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Replace Tribes's <code>TaskQueue</code> as executor's

+        workQueue in order to ensure that executor's <code>maxThread</code>

+        works correctly. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54086">54086</a>: Fix an additional code path that could lead to

+        multiple threads attempting to modify the same selector key set. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Complete the document for <code>MessageDispatch15Interceptor</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53655">53655</a>: Document the circumstances under which Tomcat will add

+        a <code>javax.mail.Authenticator</code> to mail sessions created via a

+        JNDI resource. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55179">55179</a>: Correct the Javadoc for the remote IP valve so the

+        correct name is used to refer to the <code>proxiesHeader</code>

+        property. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.42_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55031">55031</a>: Fixed <code>Export-Package</code> header and

+        <code>uses</code> directives in MANIFEST.MF. Change the version for

+        package <code>org.apache.juli.logging</code> to "0" in

+        <code>Import-Package</code> header. Thus any version of that package

+        can be used. Patch provided by Martin Lichtin. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.42 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.42_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Maven Cental location used to download dependencies at build time

+        to be <code>repo.maven.apache.org</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update JUnit to version 4.11. Configure separate download for Hamcrest

+        1.3 core library as its classes are no longer included in junit.jar.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54013">54013</a>: When using a forced stop, allow a short period of time

+        (5s) for the process to die before returning. Patch provided by

+        mukarram.baig. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55119">55119</a>: Ensure that the build process produces Javadoc that is

+        not vulnerable to CVE-2013-1571. Based on a patch by Uwe Schindler.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)"><!--()--></a><a name="Tomcat_7.0.41_(markt)"><strong>Tomcat 7.0.41 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2013-06-10</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54703">54703</a>: Make parsing of HTTP Content-Type headers tolerant of

+        any CR or LF characters that appear in the value passed by the

+        application. Also fix some whitespace parsing issues identified by the

+        additional test cases. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent possible WAR file locking when reading a context.xml file from

+        an unexpanded WAR file. Note that in normal usage, the

+        <code>JreMemoryLeakPreventionListener</code> would protect against this.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that when auto deployment runs for a Host, it uses the latest

+        values for copyXML, deployXML and unpackWARs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54939">54939</a>: Provide logging (using a UserDataHelper) when HTTP

+        header parsing fails (e.g. when maxHeaderCount is exceeded). (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54944">54944</a>: Enhancements to the unit tests for FORM

+        authentication. Patch provided by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54955">54955</a>: When a reload of the application is performed ensure

+        that a subsequent request to the context root does not result in a 404

+        response. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54971">54971</a>: Ensure that the correct location is used when writing

+        files via <code>javax.servlet.http.Part.write(String)</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54974">54974</a>: Ensure that 

+        <code>SessionCookieConfig#set&lt;methods&gt;</code>

+        will throw <code>IllegalStateException</code> if the

+        <code>ServletContext</code> from which this 

+        <code>SessionCookieConfig</code> was acquired has already been

+        initialized. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54981">54981</a>: Ensure that

+        <code>ServletContext#getJspConfigDescriptor()</code> will return

+        <code>null</code> when there is no jsp configuration provided by

+        web.xml/web-fragment.xml. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that when Tomcat's anti-resource locking features are used

+        that the temporary copy of the web application and not the original is

+        removed when the web application stops. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54984">54984</a>: Use the correct encoding when processing a form data

+        posted as multipart/form-data even when the request parameters are not

+        parsed. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54999">54999</a>: The old JSESSIONIDSSO needs to be removed when SSO is

+        being used and logout() and login() occur within a single request. Patch

+        provided by Keith Mashinter. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55035">55035</a>: Add support for the version attribute to the deploy

+        command of the Ant tasks for interfacing with the text based Manager

+        application. Patch provided by  Sergey Tcherednichenko. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55046">55046</a>: Add a Servlet Filter that implements

+        <a href="http://www.w3.org/TR/cors/">CORS</a>. Patch

+        provided by Mohit Soni. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55052">55052</a>: JULI's LogManager now additionally looks for

+        logging properties without prefixes if the property cannot be found with

+        a prefix. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that only the first asynchronous dispatch operation for a given

+        asynchronous cycle will be performed. Any subsequent asynchronous

+        dispatch operation for the same asynchronous cycle will be ignored and

+        <code>IllegalStateException</code> will be thrown. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54947">54947</a>: Fix the HTTP NIO connector that incorrectly rejected a

+        request if the CRLF terminating the request line was split across

+        multiple packets. Patch by Konstantin Prei&szlig;er. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54964">54964</a>: Allow tag plug-ins to be packaged with a web

+        application. Patch provided by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54968">54968</a>: Return the correct version number (2.2) of the JSP

+        specification that is supported by the JSP engine when

+        <code>javax.servlet.jsp.JspEngineInfo#getSpecificationVersion()</code>

+        is invoked. (violetagg) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>maxValidTime</code> attribute to prevent the leak of

+        <code>FileMessageFactory</code> in <code>FarmWarDeployer</code>.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify the code of <code>ReplicationValve</code>: Rather than get

+        cluster instance from container on every request, use instance variable.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>maxWait</code> attribute that the senderPool will wait when

+        there are no available senders. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve error message by including specified timeout if failed to

+        retrieve a data sender. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>removeSuspectsTimeout</code> attribute in order to remove a

+        suspect node in TcpFailureDetector. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.41 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.41_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54931">54931</a>: Add information to the Window Service how-to about

+        installing and running multiple instances. Based on a patch by Chris

+        Derham. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54932">54932</a>: Correct the link to Tribes documentation. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add document for

+        <code>o.a.c.tribes.group.interceptors.TcpFailureDetector</code>.

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)"><!--()--></a><a name="Tomcat_7.0.40_(markt)"><strong>Tomcat 7.0.40 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2013-05-09</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Tomcat's internal copy of Commons FileUpload to FileUpload 1.3.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54178">54178</a>: Protect against <code>AsyncListener</code>

+        implementations that throw <code>RuntimeException</code>s in response to

+        an event. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54791">54791</a>: Restore <code>tools.jar</code> entry in

+        <code>jarsToSkip</code> property to prevent warnings when running Tomcat

+        from Eclipse. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54851">54851</a>: When scanning for web fragments, directories without

+        any web-fragment.xml should not impact the status of distributable

+        element. Patch provided by Trask Stalnaker. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When an error occurs during the sending of a WebSocket message, notify

+        the Inbound side (where all the events occur that the application reacts

+        to) that an error has occurred and that the connection is being closed.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54906">54906</a>: Better error message if a

+        <code>ConcurrentModificationException</code> occurs while checking for

+        memory leaks when a web application stops. Also ensure that the

+        exception does not cause remaining checks to be skipped. Based on a

+        patch by NateC.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow 204 responses (no content) to include entity headers as required

+        by RFC2616. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure write errors when using HTTP Upgrade with the APR/native

+        connector result in <code>IOException</code>s rather than errors being

+        silently swallowed. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54802">54802</a>: Provide location information for exceptions thrown

+        by JspDocumentParser. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54801">54801</a>: Do not attempt to parse text that looks like an EL

+        expressions inside a scriptlet in a JSP document because EL expressions

+        are not permitted in scriptlets. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54821">54821</a>: Do not attept to parse text that looks like an EL

+        expressions in a JSP document if EL expressions have been disabled.

+        (kkolinko/markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54888">54888</a>: Add support for CSV lists with the ForEach tag plugin.

+        Patch provided by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add several improvements for FarmWarDeployer. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54872">54872</a>: Correct Cluster Receiver page of Tomcat

+        documentation. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.40_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Document <code>StatementCache</code> interceptor. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix minor threading issue in <code>ConnectionPool</code>.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54732">54732</a>: Fix leak of statements in <code>StatementCache</code>

+        interceptor. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in <code>SlowQueryReportJmx</code> when running

+        <code>TestSlowQueryReport</code> test. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.40 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.40_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 4.2.2. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54890">54890</a>: Update to Apache Commons Daemon 1.0.15. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Convert remaining unit tests to JUnit 4 and enable Checkstyle rule

+        that forbids use of methods from JUnit 3. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unneeded permissions for reading UserDataHelper properties

+        from <code>catalina.policy</code> file. The class that needed those

+        was moved in 7.0.26. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)"><!--()--></a><a name="Tomcat_7.0.39_(markt)"><strong>Tomcat 7.0.39 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2013-03-26</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure a log message is generated when a web application fails to start

+        due to an error processing a ServletContainerInitializer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent NPE in JAR scanning when running in an environment where the

+        bootstrap class loader is not an ancestor of the web application class

+        loader such as OSGi environments. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that, if a call to UEncoder#encodeURL is made, all internal

+        structures are properly cleaned. (violetagg)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54660">54660</a>: Enable the modification of an access log's

+        <code>fileDateFormat</code> attribute while the access log is in use.

+        The change will take effect when the next entry is made to the access

+        log. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Tomcat's internal copy of Commons FileUpload to FileUpload trunk,

+        revision 1458500 and the associated extract from Commons IO to 2.4.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54702">54702</a>: Prevent file descriptors leak and ensure that files

+        are closed when parsing web application deployment descriptors.

+        (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54707">54707</a>: Further relax the parsing of DIGEST authentication

+        headers to allow for buggy clients that quote values that RFC2617 states

+        should not be quoted. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable support for MBeans with multiple operations with the same name

+        but different signatures. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Deprecate Tomcat's internal Base 64 encoder/decoder and switch to

+        using a package renamed copy of the Commons Codec implementation.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that StandardJarScanner#scan will use the provided class loader

+        when scanning the class loader hierarchy. (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54690">54690</a>: Fix a regression caused by the previous fix for

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54406">54406</a>. If no values are specified for sslEnabledProtocols or

+        ciphers use the default values for server sockets rather than the

+        default values for client sockets. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Correct Deployer, Manager and Context pages of Tomcat documentation.

+        (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.39_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52318">52318</a>: Version for imported package

+        <code>org.apache.juli.logging</code> is extended to include also 7.0.x

+        versions. The fix is applicable only when running in OSGi environment.

+        Patch provided by Martin Lichtin. (violetagg)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54599">54599</a>: Do not print connection password in

+        <code>PoolProperties.toString()</code>. Based on a patch by

+        Daniel Mikusa. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54684">54684</a>: Add <code>javax.naming.spi</code> to 

+        <code>Import-Package</code> header in MANIFEST.MF in order to resolve

+        <code>ClassNotFoundException</code> when running in OSGi environment.

+        (violetagg)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.39 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.39_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.14 to resolve <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54609">54609</a>

+        which meant that installation of Windows service could fail

+        producing incorrect service launch command. (mturk)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure HEAD requests return the correct content length when the

+        requested resource uses a Writer. Patch by Nick Williams. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)"><!--()--></a><a name="Tomcat_7.0.38_(markt)"><strong>Tomcat 7.0.38 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the request start time (used by the access log valve to

+        calculate request processing time) is correctly recorded for the HTTP

+        NIO connector. In some cases the request processing time may have been

+        longer than that recorded. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add one more library from JDK 7 to the value of <code>jarsToSkip</code>

+        property in the <code>catalina.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53871">53871</a>: If annotation scanning results in a

+        <code>StackOverflowError</code> due to broken class dependencies, add

+        the class hierarchy that triggered the exception to the error message.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new option to the standard JarScanner implementation

+        (<code>scanBootstrapClassPath</code>) to control if the bootstrap

+        classpath is scanned or not. By default, it will not be scanned. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Provide more consolidated servlet MBean data in the webapp MBean.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54584">54584</a>: Take account of the delegate attribute when building

+        the web application class path to pass to the JSP compiler. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Copy the updated and re-packaged UTF-8 decoder from Tomcat 8.0.x and use

+        this improved decoder for WebSocket connections. Remove the WebSocket

+        specific UTF-8 decoder. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54602">54602</a>: Recycle the byte to character converter used for URIs

+        between requests to ensure an error in one request does not trigger a

+        failure in the next request. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use the newly added improved UTF-8 decoder for decoding UTF-8 encoded

+        URIs and UTF-8 encoded request bodies. Invalid UTF-8 URIs will not

+        cause an error but will make use of the replacement character when an

+        error is detected. This will allow web applications to handle the URI

+        which will most likely result in a 404 response. The fall-back to

+        decoding with ISO-8859-1 if UTF-8 decoding fails has been removed.

+        Invalid UTF-8 sequences in a request body will trigger an IOException.

+        The way the decoder is used has also been improved. The notable change

+        is that invalid sequences at the end of the input now trigger an error

+        rather than being silently swallowed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54624">54624</a>: Ensure that the correct request body length is used

+        when swallowing a request body after FORM authentication prior to

+        restoring the original request preventing possible hanging when

+        restoring POST requests submitted over AJP. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54628">54628</a>: When writing binary WebSocket messages write from

+        start position in array rather than the start of the array. Patch

+        provided by blee. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Refactor char encoding/decoding using NIO APIs. (remm)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54203">54203</a>: Complete the Javadoc for

+        <code>javax.servlet.http.Part</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54638">54638</a>: Fix display of "Used" memory value for memory pools

+        on the status page in Manager web application when the page is rendered

+        as XML. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct typos in configuration samples on SSL Configuration page

+        of Tomcat documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Disable support for comments on Changelog page of Tomcat

+        documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix several issues with <code>status.xsd</code> schema in Manager web

+        application, testing it against actual output of StatusTransformer

+        class. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Clarify the documentation on how context paths may be configured for web

+        applications. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.38 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.38_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54601">54601</a>: Change <code>catalina.sh</code> to consistently use

+        <code>LOGGING_MANAGER</code> variable to configure logging,

+        instead of modifying <code>JAVA_OPTS</code> one. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)"><!--()--></a><a name="Tomcat_7.0.37_(markt)"><strong>Tomcat 7.0.37 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2013-02-18</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54521">54521</a>: Ensure that concurrent requests that require a DIGEST

+        authentication challenge receive different nonce values. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54534">54534</a>: Ensure that, if a call to

+        <code>StandardWrapper#isSingleThreadModel()</code> triggers the loading

+        of a Servlet, the correct class loader is used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54536">54536</a>: Ensure the default error page is displayed if a custom

+        HTTP status code is used when calling

+        <code>HttpServletResponse#sendError(int, String)</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54456">54456</a>: Ensure that if a client aborts a request when sending

+        a chunked request body that this is communicated correctly to the client

+        reading the request body. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the native component of the APR/native connector to 1.1.27 and

+        make that version the recommended minimum version. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54239">54239</a>: Enable web applications to provide their own

+        Expression Language interpreter to enable them to optimise processing of

+        expressions. Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54505">54505</a>: Create clearer links from the JNDI How-To to the

+        Tomcat specific options for configuring JNDI resources. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.37 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.37_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.13. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)"><!--()--></a><a name="Tomcat_7.0.36_(markt)"><strong>Tomcat 7.0.36 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make additional allowances for buggy client implementations of HTTP

+        DIGEST authentication. This is a follow-on to <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54060">54060</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54438">54438</a>: Fix a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52953">52953</a> that

+        triggered a NPE when digested passwords were used and an authentication

+        attempt was made for a user that did not exist in the realm. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54448">54448</a>: Correctly handle <code>@Resource</code> annotations on

+        primitives. Patch provided by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54450">54450</a>: Correctly handle resource injection when part of the

+        servlet properties uses <code>@Resource</code> and the other uses

+        <code>injection-target</code>. Patch provided by  Violeta Georgieva.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54458">54458</a>: Include exception when logging errors in the

+        DataSourceRealm. Patch provided by  Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54483">54483</a>: Correct one of the Spanish translations. Based on a

+        suggestion from adinamita. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent the SSO deregister when web application is stopped or reloaded.

+        When StandardManager(pathname="") or DeltaManager stops normally, all

+        sessions in the context are expired.

+        In this case, because most sessions is not time-out, SSO deregister was

+        triggered. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Include the exception in the log message if the parsing of the

+        context.xml file fails. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54497">54497</a>: Make memory leak detection code more robust so a

+        failure in the leak detection code does not prevent the Context from

+        stopping unless the error is fatal to the JVM. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54507">54507</a>: Do not start the background thread that is used for

+        expiring sessions (amongst other things) until the web application is

+        fully started. Stop the background thread as soon as the web application

+        is stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow WebSocket Ping/Pong messages to be sent between fragments of a

+        fragmented message. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54612">54612</a>: Check if the socket is closed before trying to write a

+        WebSocket message to it. Also, flush any partial buffered data before

+        closing the socket. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54324">54324</a>: Allow APR connector to disable TLS compression

+        if OpenSSL supports it. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54406">54406</a>: Fix NIO HTTPS connector to prune specified <code>

+        ciphers</code> and <code>sslEnableProtocols</code> options to those

+        supported by the SSL implementation, sharing logic with the BIO

+        connector. Modified ciphers and sslEnabledProtocols option pruning to

+        not silently revert to JVM defaults when none of the options specified

+        are supported - new behaviour is to warn and explicitly enable no

+        options. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align NIO HTTP connector with other HTTP connectors and include leading

+        blank lines when determining the size of the HTTP headers. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53869">53869</a>: Performance improvement for pages with lots of heavily

+        nested tags. Retain a reference to the root JSP context rather than

+        traversing the hierarchy on every call. Based on a patch suggested by

+        Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54440">54440</a>: Correct a regression caused by the changes for

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54240">54240</a> that broke compilation of JSPs with JspC. Patch

+        provided by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54466">54466</a>: Improve error message by including the name of the

+        file when the java file generated from a tag file cannot be compiled.

+        Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix incorrect increment of <code>counterSend_EVT_SESSION_EXPIRED</code>

+        and <code>counterSend_EVT_CHANGE_SESSION_ID</code>. These values are not

+        incremented if no members active in cluster group. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54476">54476</a>: Correct error in Javadoc of GroupChannel send methods

+        to maker clear that the minimum length of the destination member array

+        is one, not two. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent SSO deregister when node shutdown normally in cluster

+        environment. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Check cluster member before sending replicate message in

+        ClusterSingleSignOn. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54461">54461</a>: Improve the documentation for the compiler attribute

+        in the Jasper how-to. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add Jespa to the list of third-party Windows authentication providers

+        and make external links in the documentation for those providers

+        <code>no-follow</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54496">54496</a>: Don't use a hard-coded class name in

+        <code>MemberImpl.toString()</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.36 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.36_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.12. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)"><!--()--></a><a name="Tomcat_7.0.35_(markt)"><strong>Tomcat 7.0.35 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2013-01-16</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54247">54247</a>: Prevent <code>ClassNotFoundException</code>s on stop

+        when running as a service. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54249">54249</a>: Ensure resource properties are available when the

+        context path contains encoded characters such as a space. This triggered

+        compilation issues in Jasper. Patch provided by Polina Genova. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54256">54256</a>: Improve error reporting when a JAR file fails

+        extension validation by including the name of the JAR file in the

+        exception. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow web applications to be stopped cleanly even if filters throw

+        exceptions when their destroy() method is called. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix memory leak of servlet instances when running with a

+        SecurityManager and either init() or destroy() methods fail

+        or the servlet is a SingleThreadModel one. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Cleanup method cache lookup code in <code>SecurityUtil</code> class.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the Tomcat 7 non-JSR356 WebSocket implementation non-blocking

+        (where supported by the connector) between the HTTP upgrade and the

+        first WebSocket message from the client to the server. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54262">54262</a>: Ensure that an empty

+        <code>&lt;absolute-ordering /&gt;</code> element in the main web.xml

+        file disables scanning for web fragments. Based on a patch by  Violeta

+        Georgieva. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54284">54284</a>: As per clarification from the Servlet EG, anonymous

+        Filters and Servlets are not permitted. Patch by Violeta Georgieva.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54371">54371</a>: Prevent exceptions when processing web fragments for

+        unexpanded WAR files when the context path contains characters that

+        need to be encoded in URLs such as spaces. Based on a patch by Polina

+        Genova. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54372">54372</a>: Make HTTP Digest authentication header parsing

+        tolerant of invalid headers sent by known buggy clients. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54377">54377</a>: Correctly set request attributes for AccessLog in

+        RemoteIpFilter. Patch by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54379">54379</a>: Implement support for post-construct and pre-destroy

+        elements in web.xml. Patch by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54380">54380</a>: Do not try to register servlets or contexts into the

+        mapper too early (which just caused a warning to be logged). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in <code>WebappLoader.stopInternal</code> when stop is called

+        after a failed start. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54381">54381</a>: Add support for receiving WebSocket pong messages.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54382">54382</a>: Fix NPE when SSI processing is enabled and an empty

+        SSI directive is present. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix <code>ArrayIndexOutOfBoundsException</code> in

+        <code>HttpParser</code> when parsing incorrect HTTP headers. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54387">54387</a>: Deployment must fail when multiple servlets are mapped

+        to the same url-pattern. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54391">54391</a>: Provide a value for the

+        <code>javax.servlet.context.orderedLibs</code> attribute. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54248">54248</a>: Ensure that byte order marks are swallowed when using

+        a Reader to read a request body with a BOM for those encodings that

+        require byte order marks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix release of processors in <code>AjpNioProtocol</code>. Wrong object

+        was used as a key in the connections map. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54240">54240</a>: Add support for auto-detection and configuration of

+        JARs on the classpath that provide tag plug-in implementations. Based on

+        a patch by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54241">54241</a>: Revert the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=35410">35410</a> as it was not

+        compliant with the JSP specification, specifically that

+        <code>&lt;%= obj %&gt;</code> must be translated to

+        <code>out.print(obj)</code> which in turn becomes

+        <code>out.write(String.valueOf(obj))</code>. This will trigger a

+        <code>NullPointerException</code> if <code>obj.toString()</code> returns

+        <code>null</code>. The fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=35410">35410</a> incorrectly suppressed

+        the <code>NullPointerException</code> in this case. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54242">54242</a>: Correct handle null iterations with in the JSTL

+        ForEach tag plug-in implementation. Patch provided by Sheldon Shao.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54260">54260</a>: Avoid <code>NullPointerException</code> when using

+        JSP unloading and tag files. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54370">54370</a>: Improve handling of nulls when trying to match sets of

+        parameters to a method in EL. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54338">54338</a>: Correctly coerce the value to the expected type when

+        using the tag plug-in for the JSTL set tag. Patch provided by Sheldon

+        Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54244">54244</a>: Clarify the documentation for the BIO and NIO SSL

+        configuration attributes <code>sslEnabledProtocols</code> and

+        <code>sslProtocol</code> within the documentation web application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Integrate documentation of Tomcat 7 with Apache Comments System.

+        People can leave their comments when reading documentation online

+        at the <a href="http://tomcat.apache.org/">tomcat.apache.org</a>

+        site. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.35 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.35_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54390">54390</a>: Use 'java_home' on Mac OS X to auto-detect JAVA_HOME.

+        (schultz)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)"><!--()--></a><a name="Tomcat_7.0.34_(markt)"><strong>Tomcat 7.0.34 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2012-12-12</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.34_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53871">53871</a>: Improve error message if annotation scanning fails

+        during web application start due to poor configuration or illegal

+        cyclic inheritance with the application's classes. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix unit test for AccessLogValve when using non-GMT time zone. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54170">54170</a>: Ensure correct registration of Filters and Servlets in

+        the JMX registry if the Filter or Servlet name includes a character that

+        must be quoted if used in an ObjectName value. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new attribute <code>renameOnRotate</code> to the AccessLogValve.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54190">54190</a>: Correct unit tests for BASIC authentication so that

+        session timeout is correctly tested. Also refactor unit test to make it

+        easier to add additional tests. Patch by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54220">54220</a>: Ensure the ErrorReportValve only generates an error

+        report if the error flag on the response has been set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Simplify time zone handling in the access log valve and correctly handle

+        various edge cases for non-standard DST changes. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.34_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54198">54198</a>: Clarify that

+        <code>HttpServletResponse.sendError(int)</code> results in an HTML

+        response by default. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54207">54207</a>: Correct JNDI factory package name in Javadoc for

+        <code>org.apache.naming.java.javaURLContextFactory</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.34_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Fix a handful of Eclipse warnings in the JDBC pool source code including

+        the warnings reported in <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53565">53565</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54150">54150</a>: Make sure that SlowQueryReportJmx mbean deregistered

+        during webapp shutdown. Reported by Alex Franken. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54194">54194</a>: Make sure that connection pool mbean is not registered

+        when jmxEnabled is false. Patch provided by tobias.gierke. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.34 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.34_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 4.2.1. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)"><!--()--></a><a name="Tomcat_7.0.33_(markt)"><strong>Tomcat 7.0.33 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2012-11-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53960">53960</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54115">54115</a>: Extensions to HttpClient test

+        helper class. Patches by Brian Burch. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53993">53993</a>: Avoid a possible NPE in the AccessLogValve when the

+        session ID is logged and a session is invalidated. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for LAST_ACCESS_AT_START system property to

+        PersistentManager. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Update MIME type mapping with additional / updated mime.types from the

+        Apache web server. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54007">54007</a>: Fix a memory leak that prevented deletion of a

+        context.xml file associated with a Context that had failed to deploy.

+        Also fix the problems uncovered with undeploying such a Context once the

+        leak had been fixed and the file could be deleted. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54044">54044</a>: Correct bug in timestamp cache used by logging

+        (including the access log valve) that meant entries could be made with

+        an earlier timestamp than the true timestamp. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54054">54054</a>: Do not share shell environment variables between

+        multiple instances of the CGI servlet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54060">54060</a>: Use a simple parser rather than a regular expression

+        to parse HTTP Digest authentication headers so the header is correctly

+        parsed. The new approach is also faster and generates less garbage.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54068">54068</a>: Rewrite the web fragment ordering algorithm to resolve

+        multiple issues that resulted in incorrect ordering or failure to find

+        a correct, valid order. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        The HTTP header parser added to address <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a> has been

+        removed and replaced with the light-weight HTTP header parser created to

+        address <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54060">54060</a>. The new parser includes a work-around for a

+        bug in the Adobe Acrobat Reader 9.x plug-in for Microsoft Internet

+        Explorer that was identified when the old parser was introduced

+        (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53814">53814</a>).  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54076">54076</a>: Add an alternative work-around for clients that use

+        SPNEGO authentication and expect the authenticated user to be cached

+        per connection (Tomcat only does this if an HTTP session is available).

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54087">54087</a>: Correctly handle (ignore) invalid If-Modified-Since

+        header rather than throwing an exception. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54096">54096</a>: In web.xml, &lt;env-entry&gt; should accept any type

+        that has a constructor that takes a single String or char. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54127">54127</a>: Add support for sending a WebSocket Ping. Patch

+        provided by Sean Winterberger. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In FormAuthenticator: If it is configured to change Session IDs,

+        do the change before displaying the login form. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure <code>AsyncListener.timeout()</code> and

+        <code>AsyncListener.complete()</code> are called with the correct

+        thread context class loader. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54123">54123</a>: If an asynchronous request times out without any

+        <code>AsyncListener</code>s defined, a 500 error will be triggered.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54124">54124</a>: Correct provided value of request attribute

+        <code>javax.servlet.async.request_uri</code> and add missing request

+        attribute <code>javax.servlet.async.path_info</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>denyStatus</code> initialization parameter to

+        <code>CsrfPreventionFilter</code>, allowing to customize the HTTP

+        status code used for denied requests. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54141">54141</a>: Increase the permitted number of nested Realm levels

+        from 2 to 3 by default and make the limit configurable via a system

+        property. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Revert occasional API change in <code>BaseDirContext</code> class that

+        was done in 7.0.32. Methods should not be <code>final</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent failures in the AccessLogValve when running under a

+        SecurityManager and the first request received is an asynchronous one.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct an issue that prevented WebSockets from being used over SSL when

+        using the HTTP NIO connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54022">54022</a>: Ensure the Comet END event is triggered on client

+       disconnect with APR/native on Windows Vista/2k8 or later. Patch provided

+       by Douglas Beachy. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54067">54067</a>: Ensure responses with 1xx response codes are correctly

+        marked as not containing an entity body. This caused an issue for some

+        WebSocket clients when an Transfer-Encoding header was sent with the

+        101 (HTTP upgrade) response. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53867">53867</a>: Optimise the XML escaping provided by the PageContext

+        implementation. Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53896">53896</a>: Use an optimised CompositeELResolver for Jasper that

+        skips resolvers that are known to be unable to resolve the value. Patch

+        by Jarek Gawor. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53986">53986</a>: Correct a regression introduced by the fix for

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53713">53713</a>. JSP comments that ended with the sequence ---%&gt; (or

+        any similar sequence with a odd number of - characters) was not

+        correctly parsed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54011">54011</a>: Fix a bug in the tag plug-in for

+        <code>&lt;c:out&gt;</code> that triggered a JSP compilation error if the

+        <code>escapeXml</code> attribute was used. Patch provided by Sheldon

+        Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Follow up to <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54011">54011</a>. Simplify generated code for

+        <code>&lt;c:out&gt;</code>. Based on a patch by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54012">54012</a>: Fix a bug in the tag plug-in infrastructure that meant

+        the <code>&lt;c:set&gt;</code> triggered a JSP compilation error when

+        used in a tag file. Based on a patch provided by Sheldon Shao. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54017">54017</a>: Simplify coercion of <code>String</code> instances to

+        <code>Object</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54144">54144</a>: Fix a bug in the tag plug-in for

+        <code>&lt;c:out&gt;</code> that meant that if the value of the tag

+        evaluated to a <code>java.io.Reader</code> object then it was not

+        correctly handled. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add getSessionIdsFull operation to mbeans-descriptor. listSessionIdsFull

+        no longer exist. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54086">54086</a>: Fix threading issue when stopping an 

+        <code>NioReceiver</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54143">54143</a>: Add display of the memory pools usage (including

+        PermGen) to the Status page of the Manager web application. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.33 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.33_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54045">54045</a>: Make sure getMembers() returns available member when

+        TcpFailureDetector works in static cluster. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)"><!--()--></a><a name="Tomcat_7.0.32_(markt)"><strong>Tomcat 7.0.32 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>2012-10-09</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.32_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Revert multiple operation support for the <code>JMXProxyServlet</code>

+        pending further discussion. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2012-4431: Fix bypass of <code>CsrfPreventionFilter</code> when

+        there is no session. Improve session management in the filter.

+        (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.32_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the couple of broken links in the Tomcat Javadoc. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.32 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.32_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional Checkstyle library to 5.6. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)"><!--()--></a><a name="Tomcat_7.0.31_(markt)"><strong>Tomcat 7.0.31 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add one library from JDK 7 to the value of <code>jarsToSkip</code>

+        property in the <code>catalina.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52777">52777</a>: Add an option to automatically remove old, unused

+        versions (ones where there are no longer any active sessions) of

+        applications deployed using parallel deployment. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53828">53828</a>: Use correct status code when closing a WebSocket

+        connection normally in response to a close frame from a client. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <code>JMXProxyServlet</code> now allows multiple operation commands like

+        <code>invokeAndSet</code>, <code>invokeAndGet</code>,

+        etc. (schultz) <em>Note</em>: reverted in 7.0.32.

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53843">53843</a>: <code>request.isAsyncStarted()</code> must continue to

+        return true until the dispatch actually happens (which at the earliest

+        isn't until the thread where <code>startAsync()</code> was called

+        returns to the container). (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53863">53863</a>: Ensure the the implicit servlets (JSP and default) are

+        marked as override-able when using embedded mode. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When the <code>DefaultServlet</code> is under heavy load, the HTTP

+        header parser added to address <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a> generates large amounts

+        of garbage and uses significant CPU time. A cache has been added that

+        significantly reduces the overhead of this parser. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53854">53854</a>: Make directory listings work correctly when aliases

+        are used. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53713">53713</a>: Performance improvement of up to four times faster

+        parsing of JSP pages. Patch provided by Sheldon Shao. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the cluster members and the cluster deployer associated with the

+        cluster accessible via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a behavior of TcpPingInterceptor#useThread. If set to false, ping

+        thread is never started. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.31 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.31_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve the documentation web application to clarify the difference

+        between the tag and version parameters when using text interface of the

+        Manager web application. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make sessions saved in the <code>Store</code> associated with a

+        <code>Manager</code> that extends <code>PersistentManager</code>

+        optionally visible (via the showProxySessions Servlet initialisation

+        parameter in web.xml) to the Manager web application. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)"><!--()--></a><a name="Tomcat_7.0.30_(markt)"><strong>Tomcat 7.0.30 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-09-06</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Automatically delete temporary files used by Servlet 3.0 file

+        upload (for parts which size is greater than

+        <code>file-size-threshold</code> option in web.xml)

+        when request processing completes. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53071">53071</a>: This additional fix for this issue improves the

+        formatting of Jasper errors (or any exceptions that use a multi-line

+        message) with the <code>ErrorReportValve</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53469">53469</a>: If a URL passed to

+        <code>javax.servlet.http.HttpServletResponse.encodeURL()</code> cannot

+        be made absolute, never encode it and return it unchanged. Previously,

+        the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53062">53062</a> meant than an

+        <code>IllegalArgumentException</code> was thrown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53481">53481</a>: Added support for SSLHonorCipherOrder to allow

+        the server to impose its cipher order on the client. Based on a patch

+        provided by Marcel &#352;ebek. This feature requires

+        Tomcat Native 1.1.25 or later. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53498">53498</a>: Fix atomicity bugs in use of concurrent collections.

+        Based on a patch by Yu Lin. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the previous fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53062">53062</a> that did

+        not always correctly normalize redirect URLs when the redirect URL

+        included a query string or fragment component. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing getter and setter for <code>roleSearchAsUser</code> option

+        on JNDI Realm. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add some HTTP status codes registered at IANA. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53531">53531</a>: Fix ExpandWar.expand to check the return value of

+        File.mkdir and File.mkdirs. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53535">53535</a>: Reduce memory footprint when performing class scanning

+        on Context start. Patch provided by Cedomir Igaly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53541">53541</a>: Fix JAR scanning when WEB-INF/lib is provided via

+        VirtualDirContext. Patch provided by Philip Zuev. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53574">53574</a>: Ensure Servlets defined using jsp-file are available

+        when metadata-complete is true. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53584">53584</a>: Ignore path parameters when comparing URIs for FORM

+        authentication. This prevents users being prompted twice for passwords

+        when logging in when session IDs are being encoded as path parameters.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53623">53623</a>: When performing a asynchronous dispatch after series

+        of forwards, ensure that the request properties are correct for the

+        request at each stage. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53624">53624</a>: Ensure that

+        <code>HttpServletResponse.sendRedirect()</code> works when called after

+        a dispatch from an <code>AsyncContext</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53641">53641</a>: Correct name of HTTP header used in WebSocket

+        handshake for listing the preferred protocols. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Document the constants that were added to the

+        <code>RequestDispatcher</code> interface in Servlet 3.0. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure custom error pages are not truncated if the page that triggered

+        the error set a content length header. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53677">53677</a>: Ensure that a 500 response rather than no response is

+        returned if the HTTP headers exceed the size limit. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53702">53702</a>: When merging web.xml fragments, allow for

+        <code>&lt;jsp-property-group&gt;</code> elements having multiple

+        <code>&lt;url-pattern&gt;</code> elements. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Always make the resulting web.xml available even if metadata-complete is

+        true. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53714">53714</a>: Provide separate system properties to control which

+        JARs are excluded from which scans when using the JarScanner. This

+        allows JARs to be excluded from all scans or only from TLD scanning

+        and/or Servlet 3.0 pluggability scanning. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add several JDK libraries to the value of <code>jarsToSkip</code>

+        property in the <code>catalina.properties</code> file. (markt, kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix typos etc. in the code that logs merged web.xml (as enabled by

+        <code>logEffectiveWebXml</code> option on Context). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53758">53758</a>: When adding filters via

+        <code>FilterRegistration.Dynamic</code> the filters were added at the

+        wrong point because the <code>isMatchAfter </code> logic was inverted.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53783">53783</a>: Correctly handle JARs generated by tools that do not

+        create specific entries for directories. Patch provided by Violeta

+        Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improvements to DIGEST authenticator including the disabling caching of

+        authenticated user in session by default, tracking server rather than

+        client nonces and better handling of stale nonce values. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve performance of DIGEST authenticator for concurrent requests.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2012-3546: Fix bypass of security constraint checks with FORM

+        authentication. Remove unneeded processing in <code>RealmBase</code>.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53800">53800</a>: <code>FileDirContext.list()</code> did not provide

+        correct paths for subdirectories. Patch provided by Kevin Wooten.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53801">53801</a>: Overlapping URL patterns were sometimes merged

+        incorrectly in security constraints leading to incorrect 401 responses.

+        Note: it was possible for access to be denied when it should have been

+        granted but it was not possible for access to be granted when it should

+        have been denied. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove the <code>socket.soTrafficClass</code> from the BIO and NIO

+        HTTP and AJP connectors because any use of the option is either ignored

+        or in some cases (Java 7 with NIO) throws an Exception. (mark)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent possible NPE when processing Comet requests during Connector

+        shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=42181">42181</a>: Better handling of edge conditions in chunk header

+        processing. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53697">53697</a>: Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51881">51881</a>

+        that mean that in some circumstances the <code>comet</code> flag was not

+        reset on <code>HttpAprProcessor</code> instances. This caused problems

+        when the Processor was re-used for a new connection that would trigger a

+        <code>NullPointerException</code> and could result in a JVM crash.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53725">53725</a>: Fix possible corruption of GZIP'd output.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Better parsing of line-terminators for requests using chunked encoding.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further improvements to handling of Comet END events when the connector

+        is stopped. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53545">53545</a>: Ensure buffered data is cleared when using a

+        jsp:forward action inside a classic custom tag. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53654">53654</a>: Support <code>file://</code> URLs for JSP

+        dependencies. Patch provided by Viola Lu. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53792">53792</a>: Support <code>MethodExpression</code>s that include a

+        method invocation that is not at the end of the expression. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix an issue when running under Java 7 which throws exceptions when

+        trying to set an invalid option whereas Java 6 silently swallowed them.

+        The option using the problem was <code>soTrafficClass</code>.

+        Investigations showed that this option had no effect for Cluster Channel

+        Receivers so it was removed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53513">53513</a>: Fix race condition between the processing of session

+        sync message and transfer complete message. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update JSTL version information in the JNDI section of the documentation

+        web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53524">53524</a>: Correct a typo in the cluster how-to section of the

+        documentation web application. Also fix a handful of spelling errors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53601">53601</a>: Clarify in documentation that building Apache Tomcat 7

+        from sources requires a Java 6 JDK. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53653">53653</a>: Allow for wrapped source code example in

+        config/context.html. Patch provided by Terence Bandoian. (schultz)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53793">53793</a>: Change links on the list of applications in the

+        Manager to point to '/appname/' instead of '/appname'. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid potential NPE identified by Find Bugs in

+        <code>org.apache.catalina.tribes.io.ReplicationStream</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53606">53606</a>: Fix potential NPE in <code>TcpPingInterceptor</code>.

+        Based on a patch by F. Arnoud. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53607">53607</a>: To avoid NPE, set TCP PING data to ChannelMessage.

+        Patch provided by F.Arnoud (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.30 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.30_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53701">53701</a>: Javadoc fixes. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove some unused code from Tomcat's package renamed, cut-down

+        copy of Commons BCEL used for annotation scanning. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53735">53735</a>: Add support for Java 7 byte code to Tomcat's

+        package renamed, cut-down copy of Commons BCEL used for annotation

+        scanning. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)"><!--()--></a><a name="Tomcat_7.0.29_(markt)"><strong>Tomcat 7.0.29 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-07-08</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for searching for roles in JNDI/LDAP

+        using another value than the actual DN or username specified.

+        Rather it will use a value from the users directory entry.

+        The new attribute introduced to the JNDIRealm is userRoleAttribute

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix checking of recommended tcnative library version when using the APR

+        connector. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50306">50306</a>: Improve StuckThreadDetectionValve: add

+        stuckThreadNames property as a pair for the stuckThreadIds one,

+        add thread ids to the log messages. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52135">52135</a>: Add support for a default error page to be defined in

+        web.xml by defining an error page with just a nested location element.

+        It appears this feature was intended to be included in the Servlet 3.0

+        specification but was accidently left out. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53450">53450</a>: Correct regression in fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52999">52999</a> that

+        could easily trigger a deadlock when deploying a ROOT web application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        As per section 1.6.2 of the Servlet 3.0 specification and clarification

+        from the Servlet Expert Group, the servlet specification version

+        declared in web.xml no longer controls if Tomcat scans for annotations.

+        Annotation scanning is now always performed - regardless of the version

+        declared in web.xml - unless metadata complete is set to true. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53619">53619</a>: As per clarification from the Servlet Expert Group,

+        JARs will always be scanned for ServletContainerInitializers regardless

+        of the setting of metadata complete. However, if an absolute ordering is

+        specified and a JAR is excluded from that ordering it will not be

+        scanned for ServletContainerInitializers nor will it be scanned for

+        matches to any HandleTypes annotations. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53465">53465</a>: Populate mapped-name property for resources defined in

+        web.xml. Based on a patch by Violeta Georgieva. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make the request available when establishing a WebSocket connection.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53467">53467</a>: Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53257">53257</a>

+        that introduced problems for JSPs that used characters that must be

+        encoded if used in a URI. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53430">53430</a>: Avoid a JVM crash when a connector that requires the

+        APR/native library is explicitly specified and the library, or a recent 

+        enough  version of it, is not available. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53421">53421</a>: Provide a more helpful error message if a getter or

+        setter cannot be found for a bean property when using expression

+        language. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53460">53460</a>: Allow container to handle errors if the creation of the

+       PageContext fails rather than swallowing the error. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the WebSocket examples in the examples web application so that

+        they work with secure connections (wss) as well as non-secure (ws)

+        connections. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53456">53456</a>: Minor corrections and improvements to the HTTP

+        connector configuration reference. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53459">53459</a>: Correction and clarifications to the SSL Connector

+        configuration examples in the SSL how-to. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53464">53464</a>: Correct reference to sample init.d script for use with

+        jsvc in the documentation web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53473">53473</a>: Correct the allowed values for the SSI option

+        <code>isVirtualWebappRelative</code> which are <code>true</code> or

+        <code>false</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Document <code>roleNested</code> property of <code>JNDIRealm</code>

+        in Configuration Reference. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.29_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53445">53445</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1354173">r1354173</a>):

+        Allow configurable name for SlowQueryReportJmx (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53416">53416</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1354641">r1354641</a>):

+        Multiple pools with the same name should register under JMX (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.29 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.29_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix cleanup of temporary files in <code>TestNamingContext</code> test.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove a few files from the source distribution that are not required

+        since they are copied / generated during the build. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add manifest files to the set of files for which the line-ending is

+        changed to match the OS defaults in the source distributions. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Align Jk Ant tasks definitions between antlib.xml and catalina.tasks

+        files, introducing <code>jkupdate</code> as synonym for

+        <code>jkstatus</code>. The latter one is deprecated.

+        Simplify <code>bin/catalina-tasks.xml</code>, replacing

+        <code>taskdef</code> with <code>typedef</code> and adding Ant condition

+        implementations used with JMX to <code>jmxaccessor.tasks</code> file.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53454">53454</a>: Return correct content-length header for HEAD requests

+        when content length is greater than 2GB. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)"><!--()--></a><a name="Tomcat_7.0.28_(markt)"><strong>Tomcat 7.0.28 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-06-19</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a>: An additional fix to ensure that the

+        ChunkedInputFilter is correctly recycled. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52954">52954</a>: Make DIGEST authentication tolerant of clients (mainly

+        older Android implementations) that do not follow RFC 2617 exactly.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52955">52955</a>: Implement custom thread factory for container

+        start-stop thread pool. It allows to use daemon threads and give

+        them more distinct names. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52999">52999</a>: Remove synchronization bottleneck from the firing of

+        <code>Container</code> events. (markt)  

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53008">53008</a>: Additional test cases for BASIC authentication and

+        RFC2617 compliance. Patch provided by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53021">53021</a>: Correct WebSocket protocol version detection. (pero)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new attributes of <code>allow</code> and <code>deny</code> to

+        UserConfig. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53024">53024</a>: Fix context reloading so requests received during the

+        reload are paused and processed when reloading completes rather than

+        receiving 404 responses. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve the handling of watched resources so that changes trigger a

+        reload rather than a stop followed by a start which allows requests

+        received to be paused and processed when reloading completes rather than

+        receiving 404 responses. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove potential bottleneck on creation of new WebSocket connections.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53047">53047</a>: If a JDBC Realm or DataSource Realm is configured for

+        an all roles mode that only requires authorization (and no roles) and no

+        role table or column is defined, don't populate the Principal's roles.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53056">53056</a>: Add APR version number to tcnative version INFO log

+        message. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53057">53057</a>: Add OpenSSL version number INFO log message when

+        initializing. (schultz)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Save a bit of memory in annotations cache in

+        <code>DefaultInstanceManager</code> by trimming annotation lists

+        to their size. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly configure the parser used to process server.xml so that

+        external entities may be used to include the content of external files

+        into server.xml. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure ContextMBean#findFilterDefs returns correct filter

+        definitions. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Ensure that <code>maxParameterCount</code> applies to multi-part

+        requests handled via the Servlet 3 file upload API. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53062">53062</a>: When constructing absolute URLs for redirects from

+        relative URLs ensure that the resulting URLs are normalized. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53067">53067</a>: Ensure the WebSocket Servlet continues to work when

+        requests are wrapped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable host's xmlBase attribute in ContextConfig. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53071">53071</a>: Use the message from the throwable (if there is one)

+        when generating the report in the <code>ErrorReportValve</code> and no

+        message has been specified via <code>sendError()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53074">53074</a>: Switch to an infinite socket timeout by default for

+        WebSocket connections. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53081">53081</a>: Do not always cache resources loaded by the web

+        application class loader since they may be very large which in turn

+        could trigger a memory leak. Calls to the web application class

+        loader's <code>getResourceAsStream()</code> method will now access

+        the resource directly rather than via the cache in most cases. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53090">53090</a>: Include superclasses when considering injection

+        targets. Patch provided by Borislav Kapukaranov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53161">53161</a>: Provide a better error message if a

+        <code>ClassFormatException</code> occurs during annotation scanning and

+        do not prevent the web application from starting in this case. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53180">53180</a>: Improve check for setter method when processing

+        annotations. Patch provided by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53225">53225</a>: Fix an IllegalStateException due to the JAR file being

+        closed when accessing static resources in a JAR file when

+        <code>urlCacheProtection="false"</code> in the

+        <code>JreMemoryLeakPreventionListener</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53230">53230</a>: Changed ManagerBase to throw

+        TooManyActiveSessionsException instead of IllegalStateException

+        when the maximum number of sessions has been exceeded and a new

+        session will not be created. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53257">53257</a>: Ensure that resources, including JSP files, that have

+        names that include characters with special meanings in URLs (such as

+        ampersand, semicolon, plus, hash and percent) are correctly handled.

+        This bug is partially a regression caused by the original fix for

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51584">51584</a> and partially an existing issue that had not previously

+        been identified. This fix reverts the original fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51584">51584</a>,

+        correctly fixes that issue and fixes the additional issues identified by

+        the test cases that were also added as part of this fix.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53266">53266</a>: If a class specified in a <code>@HandlesTypes</code>

+        annotation on a <code>ServletContainerInitializer</code> is missing

+        log a more helpful message and do not prevent the web application from

+        starting. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53267">53267</a>: Ensure that using the GC Daemon Protection feature of

+        the <code>JreMemoryLeakPreventionListener</code> does not trigger a

+        full GC every hour. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53285">53285</a>: Do not require <code>security-role-ref</code> elements

+        to contain a <code>role-link</code> element. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53301">53301</a>: Prevent double initialization of pre-created Servlet

+        instances when used in embedded mode. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53322">53322</a>: When processing resource injection, correctly infer

+        property name from its setter method if the name starts with several

+        uppercase characters. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53333">53333</a>: When processing JNDI resources, take account of the

+        types of any specified injection targets to ensure that the resource

+        definition and the injection target types are consistent. Based on a

+        patch provided by Violeta Georgieva. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53337">53337</a>: Forwarding via a <code>RequestDispatcher</code> to an

+        asynchronous Servlet always failed. Includes a test case based on code

+        by Rossen Stoyanchev. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53339">53339</a>: Ensure WebSocket call backs (<code>onOpen</code> etc.)

+        are called using the web application's class loader. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53342">53342</a>: To avoid BindException, make startStopThreads into a

+        demon thread. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53353">53353</a>: Make the internal HTTP header parser more tolerant of

+        Content-Type values that contain invalid parameters by ignoring the

+        invalid parameters. It is a followup to bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53354">53354</a>: Correctly handle <code>@WebFilter</code> annotations

+        that do not include a mapping. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53356">53356</a>: Add support for servlets mapped explicitly to the

+        context root of a web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53366">53366</a>: Ensure new HTTP header parser works correctly when

+        running Tomcat under a security manager. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53368">53368</a>: Configure the default security policy to allow web

+        applications to use WebSocket when running under a security manager.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53373">53373</a>: Allow whitespace around delimiters in &lt;Context&gt;

+        aliases for readability. (schultz)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52858">52858</a>, CVE-2012-4534: Correct fix for high CPU load.

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53138">53138</a>: Broken Sendfile on SSL introduced in 7.0.27

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a>: Additional fix required to ensure that

+        <code>InputFilter</code>s are recycled between requests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53061">53061</a>: Fix a problem in the NIO connector whereby if the

+        poller was under low but consistent load (&gt;1 request/per second and

+        always less than 1 second between requests) timeouts never took place.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53063">53063</a>: When using an Executor with BIO, use the

+        executor's maxThreads as the default for maxConnections. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53119">53119</a>: Prevent buffer overflow errors being reported when a

+        client disconnects before the response has been fully written from an

+        AJP connection using the APR/native connector. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53169">53169</a>: Allow developers to avoid chunked encoding for a

+        response of unknown length by setting the <code>Connection: close</code>

+        header. Based on a patch suggested by Philippe Marschall. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53173">53173</a>: Properly count down maxConnections (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update default value of pollerThreadCount for the NIO connector.

+        The new default value will never go above 2 regardless of 

+        available processors. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow to retrieve the current <code>connectionCount</code>

+        via getter from the endpoint and as JMX attribute of the ThreadPool

+        mbean. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct an edge case where Comet END events were not send to connected

+        clients when the Tomcat connector was stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53406">53406</a>: Fix possible stack overflow on connection close when

+        using Comet. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve <code>InternalNioInputBuffer.parseHeaders()</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Implement <code>maxHeaderCount</code> attribute on Connector.

+        It is equivalent of LimitRequestFields directive of

+        <a href="http://httpd.apache.org/">Apache HTTPD</a>.

+        Default value is 100. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48097#c7">48097#c7</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53366#c1">53366#c1</a>: If JSP page unexpectedly

+        fails to initialize PageContext instance, write exception to the logs

+        instead of silent swallowing. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53032">53032</a>: Modify <code>JspC</code> so it extends

+        <code>org.apache.tools.ant.Task</code> enabling it to work with features

+        such as namespaces within build.xml files. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid NPE when reload if a state of a BackupManager is FAILED. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53087">53087</a>: In order to avoid that a backup node expire a session,

+        replicate session access time in BackupManager. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for SecureRandom to cluster manager template. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove obsolete bug warning from Windows service

+        documentation page. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50182">50182</a>: Various improvements to the Compression Filter. Patch

+        provided by David Becker. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52853">52853</a>: Clarify how Jar Scanner handles directories. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53158">53158</a>: Fix documented defaults for DBCP.

+        Patch provided by ph.dezanneau at gmail.com. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53203">53203</a>: Correct documentation for the default value

+        of <code>connectionTimeout</code> attribute for AJP protocol

+        connectors. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53289">53289</a>: Clarify <code>ResourceLink</code> example that

+        uses DataSource.getConnection(username, password) method. Not all

+        data source implementations support it. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix several HTML markup errors in servlets of examples web application.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53398">53398</a>: Correct spelling of "received" in the

+        Manager application's XML output. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53403">53403</a>: Update a reference to the Servlet specification in the

+        first web applciation section of the documentation web application to

+        include newer versions of the specificarion. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.28_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50864">50864</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1311844">r1311844</a>):

+        JMX enable most pool properties (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53254">53254</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1340160">r1340160</a>):

+        Add in the ability to purge connections from the pool (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53367">53367</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1346691">r1346691</a>):

+        Prevent pool from hanging during database failure (fhanik)

+      </td></tr>  

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+         When a connection is reconnected due to failed validation

+         make sure the ConnectionState is reset or it will assume

+         incorrect values (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53374">53374</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1348056">r1348056</a>):

+        Add support for the following properties in DataSourceFactory:

+        <code>commitOnReturn</code>, <code>rollbackOnReturn</code>,

+        <code>useDisposableConnectionFacade</code>,

+        <code>logValidationErrors</code> and

+        <code>propagateInterruptState</code>.

+        Based on patch proposed by Suresh Avadhanula. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.28 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.28_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7.2 at maven tomcat-jasper.pom. (pero)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the native component of the Tomcat APR/native connector to

+        1.1.24. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing dependencies in pom files. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53034">53034</a>: Add <code>project.url</code> and

+        <code>project.licenses</code> sections to the POMs for the Maven

+        artifacts. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Properly mention <code>jsp_2_2.xsd</code> in the main LICENSE and

+        INSTALLLICENSE files. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53115">53115</a>: Fix using the command "<code>catalina.bat run</code>"

+        when the value of <code>%TEMP%</code> contains spaces. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add dependencies and description to "validate" target in

+        <code>build.xml</code>, so that it could be run separately.

+        Improve <code>BUILDING.txt</code> and <code>RUNNING.txt</code>.

+        (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)"><!--()--></a><a name="Tomcat_7.0.27_(markt)"><strong>Tomcat 7.0.27 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-04-05</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Explicitly ignore empty path values in <code>virtualClasspath</code>

+        attribute of <code>VirtualWebappLoader</code> class. Document that

+        whitespace around the values is trimmed. Reformat documentation

+        examples to make them more readable. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further improve fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51197">51197</a> to allow an error reporting

+        Valve to write a response body if <code>sendError()</code> is called

+        during an asynchronous request on a container thread. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1307600">r1307600</a>):

+        If <code>VirtualDirContext</code> class is configured with non-empty

+        value of <code>extraResourcePaths</code> option (a feature added

+        in 7.0.24), do not implicitly set <code>allowLinking</code> option to

+        the value of <code>true</code>. If it is really needed, it should be

+        set explicitly. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52500">52500</a>: Added configurable mechanism to retrieve user names

+        from X509 client certificates. Based on a patch provided by

+        Michael Furman. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52719">52719</a>: Fix a theoretical resource leak in the JAR validation

+        that checks for non-permitted classes in web application JARs. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Code clean-up identified by <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52723">52723</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52724">52724</a>,

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52726">52726</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52727">52727</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52729">52729</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52731">52731</a>

+        and <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52732">52732</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52792">52792</a>: Improve error message when a JNDI resource can not be

+        found. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52811">52811</a>: Fix parsing of Content-Type header in

+        <code>HttpServletResponse.setContentType()</code>. Introduces

+        a new HTTP header parser that follows RFC2616. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52830">52830</a>: Correct JNDI lookups when using

+        <code>javax.naming.Name</code> to identify the resource rather than a

+        <code>java.lang.String</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52833">52833</a>: Handle the case where the parent class loader for the

+        Catalina object does not have the system class loader in its hierarchy.

+        This may happen when embedding. Patch provided by olamy. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52839">52839</a>: Add a unit test for DigestAuthenticator and

+        SingleSignOn. Patch provide by Brian Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52846">52846</a>: Make sure NonLoginAuthenticator registers not 

+        MemoryUser but GenericPrincipal into a session when UserDatabaseRealm 

+        is used. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52850">52850</a>: Extend memory leak prevention and detection code to

+        work with IBM as well as Oracle JVMs. Extend unit tests to check direct

+        and indirect ThreadLocal memory leak detection. Based on a patch

+        provided by Rohit Kelapure. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for the WebSocket protocol (RFC6455). Both streaming and

+        message based APIs are provided and the implementation currently fully

+        passes the Autobahn test suite. Also included are several examples.

+        A significant contribution to this new functionality was provided by

+        Johno Crawford &mdash; particularly the examples. Contributions were

+        also provided by Petr Praus, Jonathan Drake &amp; Sl&aacute;vka. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When stopping a Context, ensure that any Servlets registered with JMX

+        are unregistered. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Make the implementation of <code>Catalina.getParentClassLoader</code>

+        consistent with similar methods across the code base and have it return

+        the system class loader if no parent class loader is set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52953">52953</a>: Ensure users can authenticate when using DIGEST

+        authentication with digested passwords if the digested password is

+        stored using upper case hexadecimal characters since DIGEST

+        authentication expects digests to use lower case characters. Based on a

+        patch provided by Neale Rudd. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52957">52957</a>: Ensure that a Valve implements Lifecycle before

+        calling any Lifecycle methods on that Valve. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52958">52958</a>: Fix MBean descriptors for

+        <code>org.apache.catalina.realm</code> package. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52974">52974</a>: Fix <code>NameNotFoundException</code> when

+        field/method is annotated with <code>@Resource</code> annotation. Patch

+        provided by Violet Agg. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for multi-thread deployment in UserConfig. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly register NIO sockets with poller after processing Comet events

+        to ensure that no read events are missed. This fixes an intermittent

+        issue observed in the unit tests. (fhanik/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52770">52770</a>: Fix a bug in the highly unlikely circumstance that

+        an infinite timeout was specified for writing data to a client when

+        using NIO. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52858">52858</a>: Fix high CPU load with SSL, NIO and sendfile when

+        client breaks the connection before reading all the requested data.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52926">52926</a>: Avoid NPE when an NIO Comet connection times out on

+        one thread at the same time as it is closed on another thread. (markt)  

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include port number when known in connector name when logging messages

+        from connectors that use automatic free port allocation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't try an unlock the acceptor thread if it is not locked. This is

+        unlikely to impact normal usage but it does fix some unit test issues.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using the APR connector ensure that any connections in a keep-alive

+        state are closed when the connector is stopped rather than when the

+        connector is destroyed. This is important when stop() followed by

+        start() is called on the connector. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52725">52725</a>: Use configurable package name for tags rather than

+        hard-coded value so configuration actually works. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52758">52758</a>: Implement additional interface methods in Eclipse JDT

+        integration required for Jasper to correctly with the latest Eclipse

+        development code. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52772">52772</a>: Ensure uriRoot is fully validated before it is used.

+        Patch based on a suggestion by Eugene Chung. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52776">52776</a>: Refactor the code so JspFragment.invoke cleans up

+        after itself. Patch provided by Karl von Randow. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52970">52970</a>: Take account of coercion rules when invoking methods

+        via EL. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52998">52998</a>: Partial fix. Remove static references to the EL

+        expression factory and use per web application references instead.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52998">52998</a>: Remainder of fix. Cache the class to use for the EL

+        expression factory per class loader. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53001">53001</a>: Revert the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46915">46915</a> since the use case

+        described in the bug is invalid since it breaks the EL specification.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Replicate principal in ClusterSingleSignOn. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52760">52760</a>: Fix expires filter mime type in javascript examples.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52842">52842</a>: Exception in MBeanDumper when dumping MBean for

+        StandardThreadExecutor. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Bring built-in mime types for embedded Tomcat more in line with the

+        ones defined in the default web.xml configuration file. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support to the JMXProxyServlet which is part of the Manager

+        application for fetching a specific key from a

+        <code>CompositeData</code> value. Updated documentation, so that

+        the entire 'get' command for the JMX proxy servlet is documented,

+        including the new optional 'key' parameter. (schultz/markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.27_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Pool cleaner thread should be created using the classloader

+        that loaded the pool, not the context loader (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52804">52804</a>: Make pool properties serializable and cloneable.

+        (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51237">51237</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302902">r1302902</a>):

+        Slow Query Report should log using WARN level when queries are slow

+        and within the threshold of caching it. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52002">52002</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302948">r1302948</a>):

+        Add in configuration option to disallow connection reuse. 

+        (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1305862">r1305862</a>):

+        useDisposableConnectionFacade is by default enabled (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52493">52493</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302969">r1302969</a>):

+        Java 7 DataSource method addition. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51893">51893</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1302990">r1302990</a>):

+        Throw an error and notification when pool is exhausted. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50860">50860</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1303031">r1303031</a>):

+        Add in option to configure logging for validation errors. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52066">52066</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1305931">r1305931</a>):

+        Add in configuration option, progagateInterruptState, to allow threads to 

+        retain the interrupt state. (fhanik)

+      </td></tr>  

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.27 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.27_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52750">52750</a>: Fix the way how daemon.sh parses command options so

+        that more then one can be provided. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Rearrange <code>validate-eoln</code> target in <code>build.xml</code>

+        so that it could be run ahead of compilation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Daemon to 1.0.10. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the native component of the Tomcat APR/native connector to

+        1.1.23 and take advantage of the simplified distribution. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7.2. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)"><!--()--></a><a name="Tomcat_7.0.26_(markt)"><strong>Tomcat 7.0.26 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-02-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Provide constants for commonly used <code>Charset</code> objects and use

+        these constants where appropriate. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Refactor the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52184">52184</a> to correct two issues (a missing

+        class and incorrect class/method names) when using the extras logging

+        packages. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52444">52444</a>: Only load classes during HandlesTypes processing if

+        the class is a match. Previously, every class in the web application was

+        loaded regardless of whether it was a match or not. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52488">52488</a>: Correct typo: exipre -&gt; expire. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a unit test for SSO authentication. Patch provided by Brian Burch.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52511">52511</a>: Correct regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a>

+        that caused a harmless exception to be logged when scanning for

+        annotations and <code>WEB-INF/classes</code> did not exist. (markt) 

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Refactor to remove a circular dependency between

+        <code>org.apache.catalina</code> and <code>org.apache.naming</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove some initialisation code from the standard start process (i.e.

+        via the scripts) that was intended for embedding but is not required

+        when performing a standard start.(markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add new method to <code>MBeanFactory</code> that allows any Valve to be

+        created and deprecate the methods to create specific Valves. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Partial sync of MIME type mapping with mime.types from the Apache web

+        server. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52577">52577</a>: Fix a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52328">52328</a>.

+        Prevent output truncation when <code>reset()</code> is called on a

+        response. (mark)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52586">52586</a>: Remove an old and now unnecessary hack that modified

+        the path info reported via the

+        <code>javax.servlet.forward.path_info</code> request attribute when

+        forwarding to an error page. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52587">52587</a>: Ensure that if it is necessary to fall back to the

+        default NullRealm, the NullRealm instance is created early enough for it

+        to be correctly initialised. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix millisecond output in AccessLogValve when using a

+        SimpleDateFormat based time pattern. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52591">52591</a>: When dumping MBean data, skip attributes where getters

+        throw <code>UnsupportedOperationException</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52607">52607</a>: Ensure that the extension validator checks the JARs in

+        the shared and common class loaders for extensions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a threading issue in the generation of the list of standard

+        authenticators during Context initialization that could lead to a web

+        application failing to start if Contexts were started in parallel.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52669">52669</a>: Correct regression that broke annotation processing in

+        <code>/WEB-INF/classes</code> for web applications deployed as WARs,

+        packageless classes and some embedding scenarios. The regression was

+        introduced by the invalid assumptions made in the fix for

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52671">52671</a>: When dumping MBean data, skip attributes where getters

+        throw <code>NullPointerException</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51543">51543</a>: Provide a meaningful error message when writing more

+        response headers than permitted. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52547">52547</a>: Ensure that bytes written (which is used by the access

+        log) is correctly reset after an HTTP 1.0 request has been processed.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Minor refactoring to reduce code duplication in the HTTP connectors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52606">52606</a>: Ensure that POST bodies are available for reply after

+        FORM authentication when using the AJP connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52474">52474</a>: Ensure that leading and trailing white space is

+        removed from listener class names when parsing TLD files. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52480">52480</a>: When converting class path entries from URLs to

+        files/directories, ensure that any URL encoded characters are converted.

+        Fixes JSP compilation with javac when Tomcat is installed at a path that

+        includes spaces. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52666">52666</a>: Correct coercion order in EL when processing the

+        equality and inequality operators. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve <code>BUILDING.txt</code>. Update instructions for

+        building. Add instructions for using Checkstyle and running the

+        tests. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38216">38216</a>: Improve handling of <code>null</code> return values in

+        the JMX proxy servlet which is part of the Manager application.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52515">52515</a>: Make it clear in the Realm how-to in the documentation

+        web application that digested password storage when using DIGEST

+        authentication requires that MD5 digests are used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52634">52634</a>: Fix typos in JSP examples. Patch provided by

+        Felix Schumacher. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52641">52641</a>: Remove mentioning of ldap.jar from docs.

+        Patch provided by Felix Schumacher. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.26_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix code style issues and enable Checkstyle checks for jdbc-pool when

+        it is built within Tomcat. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51582">51582</a> Correct set and reset the query cache to avoid NPE   (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.26 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.26_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update Commons Daemon to 1.0.9 to resolve <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52548">52548</a> which meant

+        that services created with service.bat did not set the

+        <code>catalina.home</code> and <code>catalina.base</code> system

+        properties. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Implement check for correct end-of-line characters in the source

+        files. It is run as separate target in <code>build.xml</code>.

+        (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.25 (markt)"><!--()--></a><a name="Tomcat_7.0.25_(markt)"><strong>Tomcat 7.0.25 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2012-01-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.25 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.25_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Restore format of the first line of error message for JMX proxy

+        servlet in case scripts were depending on it. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.25 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.25_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When building a Windows installer do not copy whole "res" folder to

+        output/dist, but only the files that we need. Apply fixcrlf filter

+        only after the files are copied, so that <code>INSTALLLICENSE</code>

+        file had correct line ends. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove <code>res/License.rtf</code>. The file that is actually shown

+        by the Windows installer is <code>res/INSTALLLICENSE</code>.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Automate the OpenPGP signature generation for the release process.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't exclude directories named target from the build process.

+        (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)"><!--()--></a><a name="Tomcat_7.0.24_(markt)"><strong>Tomcat 7.0.24 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52184">52184</a>: Provide greater control over the logging of errors

+        triggered by invalid input data (i.e. data over which Tomcat has no

+        control). (markt/kkolinko) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52225">52225</a>: Fix ClassCastException in an Alias added to

+        existing host through JMX. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Do not throw IllegalArgumentException from parseParameters() call

+        when chunked POST request is too large, but treat it like an IO error.

+        The <code>FailedRequestFilter</code> filter can be used to detect this

+        condition. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52245">52245</a>: Don't allow web applications to package classes from

+        the <code>javax.el</code> package. Patch provided by pid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52259">52259</a>: Fix regression caused by the addition of the threaded

+        component start (<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46264">46264</a>) that triggered a deadlock on startup

+        if no Realm was configured. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52293">52293</a>: Correctly handle the case when

+        <code>antiResourceLocking</code> is enabled at the Context level when

+        <code>unpackWARs</code> is disabled at the Host level. Based on a patch

+        by Justin Miller. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In <code>ExtendedAccessLogValve</code> when printing %-encoded value of

+        a parameter, use UTF-8 encoding to convert parameter value to bytes

+        instead of platform default encoding. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52303">52303</a>: Allow web applications that do not have a login

+        configuration to participate in a SSO session. Patch provided by Brian

+        Burch. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52316">52316</a>: When using sendfile, use the number of bytes requested

+        to be written to the response in the access log valve for bytes written

+        rather than recording a value of zero. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52326">52326</a>: Reduce log level for class loading errors during

+        <code>@HandlesTypes</code> processing to debug. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52328">52328</a>: Improve performance when large numbers of single

+        characters and/or small strings are written to the response via a

+        Writer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52384">52384</a>: Do not fail with parameter parsing when debug logging

+        is enabled. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Do not flag extra '&amp;' characters in parameters as parse errors.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Reduce log level for the message about hitting

+        <code>maxParameterCount</code> limit from WARN to INFO. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52387">52387</a>: Ensure that the correct host is used when configuring

+        logging when Tomcat is embedded. Patch provided by David Calavera.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52405">52405</a>: Align the Servlet 3.0 implementation with the changes

+        defined in the first maintenance release (also know as Rev. A). See the

+        <a href="http://jcp.org/aboutJava/communityprocess/maintenance/jsr315/servlet3-mr-reva.html">JCP documentation</a> for a detailed list of changes

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve JMX names for objects related to Connectors that have the

+        address attribute set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove some stale attributes from MBeans. (rjung)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+         Move destruction of <code>ContainerBase</code> objects to

+         <code>ContainerBase</code> to ensure that they are destroyed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52443">52443</a>: Change the behaviour of the default Realm in the

+        embedded use case so it is set once on the Engine rather than on every

+        Context thereby avoiding the Lifecycle issues with having the same Realm

+        set on multiple Contexts. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide a new Realm implementation, the NullRealm, that does not contain

+        any users and is used as the default Realm implementation (rather than

+        the JAAS Realm which was used prior to this change) if no Realm is

+        specified. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52461">52461</a>: Don't assume file based URLs when checking last

+        modified times for global and host level web.xml files. Patch provided

+        by violetagg. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add test cases for the BASIC and NonLogin Authenticators when not using

+        SSO. Patch provided by Brian Burch. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52028">52028</a>: Add support for automatic binding to a free port by a

+        connector if the special value of zero is used for the port. This is

+        mainly useful in embedded and testing scenarios. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove obsolete <code>emptySessionPath</code> JMX attribute. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct error in fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49683">49683</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the process of unlocking the acceptor thread does not

+        trigger processing of the connection as if it were a valid request.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52450">52450</a>: Add setter for entityResolver in ParserUtils.

+        This is mainly useful when jasper and dtds are in different

+        class loaders. (mturk)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52321">52321</a>: Ensure that the order of multiple prelude/coda values

+        for JSP pages is respected. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52335">52335</a>: Only handle <code>&lt;\%</code> and not

+        <code>\%</code> as escaped in template text. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52440">52440</a>: Ensure that when using

+        <code>ValueExpression.getValueReference()</code> if the expression is an

+        EL variable that the value returned is the <code>ValueReference</code>

+        for the <code>ValueExpression</code> associated with the EL variable.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52445">52445</a>: Don't assume that EL method expressions have

+        exactly three components (identifier, method name, paramaters). (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38216">38216</a>: Add the ability to invoke MBean operations to the JMX

+        proxy sevrlet in the Manager application. Based on a patch by

+        Christopher Hlubek. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Further clarify the relation between values used by

+        <code>RemoteIpValve</code> and <code>RemoteIpFilter</code>

+        and their use by <code>AccessLogValve</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52243">52243</a>: Improve windows service documentation to clarify how

+        to include <code>#</code> and/or <code>;</code> in the value of an

+        environment variable that is passed to the service. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52366">52366</a>: Fix typo in VirtualWebappLoader documentation

+        (configuration example). (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Replace Bugzilla search link on <code>ROOT/index.jsp</code> page with

+        one pointing to the bug reporting page of Tomcat site. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Move MBean dump code from JMXProxyServlet into a utility class. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52208">52208</a>: Fix threading issue that may lead to harmless NPE

+        during shutdown that has occasionally been observed when running the

+        unit tests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52213">52213</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52354">52354</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52355">52355</a> and

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52356">52356</a>: Fix some potential concurrency issues in

+        <code>FastQueue</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.24_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1207712">r1207712</a>: Pool cleaner should be a global thread, not spawn

+        one thread per connection pool. (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.24 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.24_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Daemon to 1.0.8. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Pool to 1.5.7. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix line ends in <code>.gitignore</code> files contained in source

+        distributions. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Run Mapper performance test twice if the first run took too long,

+        to ignore occasional failures. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align <code>.gitignore</code> and <code>build.xml</code>

+        exclude patterns with <code>svn:ignore</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Configure <code>defaultexcludes</code> for Ant 1.8.1/1.8.2.

+        The <code>.git</code> and <code>.gitignore</code> patterns are

+        in since Ant 1.8.2, but we include <code>.gitignore</code> in

+        src distributions. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52237">52237</a>: Allow JUnit logs to be generated in formats other than

+        plain text. Patch provided by M Hasko. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix build condition for tomcat-dbcp to always rebuild whan a new version

+        of commons-pool or commons-dbcp is downloaded. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add example of configuration for <code>SetCharacterEncodingFilter</code>

+        to the default <code>web.xml</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Switch unit tests to bind Connectors to localhost rather than all

+        available IP addresses. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7.1. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add Netbeans <code>nbproject</code> folder to <code>svn:ignore</code>

+        and <code>.gitignore</code>. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Align <code>.gitignore</code> with trunk. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)"><!--()--></a><a name="Tomcat_7.0.23_(markt)"><strong>Tomcat 7.0.23 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-11-25</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46264">46264</a>: Add the ability to start and stop containers

+        (primarily Contexts) using a thread pool rather than a single thread.

+        This can significantly improve start and stop time. Based on patches

+        by Joe Kislo and Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50570">50570</a>: Enable FIPS mode to be set in AprLifecycleListener.

+        Based upon a patch from Chris Beckey. (schultz/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51744">51744</a>: Throw the correct exception if an application attempts

+        to modify the associated JNDI context. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51744">51744</a>: Add an option to the StandardContext that allows

+        exception throwing when an application attempts to modify the associated

+        JNDI context to be disabled. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51910">51910</a>: Prevent NPE on connector stop if Comet applications

+        are being used without the CometConnectionManagerValve. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51940">51940</a>: Do not limit saving of request bodies during FORM

+        authentication to POST requests since any HTTP method may include a

+        request body. Based on a patch by Nicholas Sushkin. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51956">51956</a>: RemoteAddrFilter used getRemoteHost instead of

+        getRemoteAddr when filtering Comet events. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51952">51952</a>: Make the inclusion of a response body with a redirect

+        response introduced to address <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41718">41718</a> optional and disabled by

+        default due to the side-effects of including a body with the response in

+        this case. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51972">51972</a>: Correctly handle protocol relative URLs when used with

+        <code>sendRedirect()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Simplify the deployment code and use full paths in log messages to

+        remove any ambiguity in where a context is being deployed from. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52009">52009</a>: Fix a NPE during access log entry recording when an

+        error occurred during the processing of a Comet request. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In <code>OneLineFormatter</code> log formatter in JULI always use

+        the US locale to format the date (esp. the month names). (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Cache the results of parsing the global and host level web.xml files to

+        improve web application start time. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52042">52042</a>: Correct threading issue in annotation caching that

+        could lead to an NPE if multiple threads were processing the same class

+        hierarchy for annotations. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct additional threading and premature clearance issues with the

+        annotation cache. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49779">49779</a> that

+        parameters POSTed by an unauthenticated user to a page that required

+        FORM authentication were lost during the authentication process.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52055">52055</a>: Ensure that the input and output buffers are correctly

+        reset between keep-alive requests when using Servlet 3.0 asynchronous

+        request processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure changes to the configuration of the RemoteHostValve and the

+        RemoteAddrValve via JMX are thread-safe. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure the the memory leak protection for the HttpClient keep-alive

+        always operates even if the thread has already stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove the Java 1.2 specific error handling around the adding of the

+        shutdown hook. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct errors in i18n resources and resource usage that meant some

+        messages were either not used or were incorrectly formatted. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Replace the use of deprecated auth method names from

+        <code>authenticator.Constants</code> with the auth method names from

+        <code>HttpServletRequest</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make configuration issues for security related Valves and Filters result

+        in the failure of the valve or filter rather than just a warning

+        message. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve performance of parameter processing for GET and POST requests.

+        Also add an option to limit the maximum number of parameters processed

+        per request. This defaults to 10000. Excessive parameters are ignored.

+        Note that <code>FailedRequestFilter</code> can be used to reject the

+        request if some parameters were ignored. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52091">52091</a>: Address performance issues related to lock contention

+        in StandardWrapper. Patch provided by Taiki Sugawara. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Switch to using Collections.enumeration() rather than custom code that

+        does the same thing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52113">52113</a>: Don't assume presence of context.xml file with JMX

+        deployment. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        In <code>RequestFilterValve</code> (<code>RemoteAddrValve</code>,

+        <code>RemoteHostValve</code>): refactor value matching logic into

+        separate method and expose this new method <code>isAllowed</code>

+        through JMX. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52156">52156</a>: Ensure that

+        <code>getServletContext().getResource(path)</code> returns the correct

+        resource when path contains <code>/../</code> sequences or any other

+        sequences that require normalization. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Report existence of HTTP request parameter parsing errors via new

+        special ServletRequest attribute,

+        <code>org.apache.catalina.parameter_parse_failed</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        New filter <code>FailedRequestFilter</code> that will reject a request

+        if there were errors during HTTP parameter parsing. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve special attributes handling in Request object by using hash

+        table lookup instead of series of string comparisons. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Deprecate unused methods in <code>IntrospectionUtils</code> class.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve processing of errors that are wrapped in

+        <code>InvocationTargetException</code>. Rethrow fatal errors that must

+        be rethrown. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve handling of failed web application deployments during automatic

+        deployment. Once deployment of a web application fails in one form (e.g.

+        WAR), no further attempt (e.g. directory) will be made to deploy that

+        web application. The base Lifecycle implementation has been improved to

+        allow failed web applications to be started once the configuration

+        issues have been resolved. Any changes to a context.xml file (global,

+        per host or web application specific) will now result in a redeploy

+        of the affected web application(s) that ensures that any changes are

+        correctly applied rather than a reload which ignores changes in

+        context.xml files. (markt/kkolinko) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52173">52173</a>: Improve Javadoc for <code>delegate</code> attribute

+        of WebappClassLoader. Based on a patch by bmargulies. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add <code>denyStatus</code> attribute to <code>RequestFilterValve</code>

+        (<code>RemoteAddrValve</code>, <code>RemoteHostValve</code> valves) and

+        <code>RequestFilter</code> (<code>RemoteAddrFilter</code>,

+        <code>RemoteHostFilter</code> filters). It allows to use different

+        HTTP response code when rejecting denied request. E.g. 404 instead

+        of 403. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Slightly improve performance of UDecoder.convert(). Align

+        <code>%2f</code> handling between implementations. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51881">51881</a>: Correctly complete Comet requests when the Comet END

+        event is triggered asynchronously. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51905">51905</a>: Fix infinite loop in AprEndpoint shutdown if

+        acceptor unlock fails. Reduce timeout before forcefully closing

+        the socket from 30s to 10s. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51912">51912</a>: Fix HTTP header processing in NIO HTTP connector.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve MimeHeaders.toString(). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix threading issue in NIO connectors during shutdown that meant Comet

+        connections were not always shut down cleanly. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        In HTTP connectors: self-guard against using a non-recycled input

+        buffer. Requests will be rejected with response status 400. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52121">52121</a>: Fix possible output corruption when compression is

+        enabled for a connector and the response is flushed. Includes a test

+        case provided by David Marcks. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve multi-byte character handling in Coyote output for HTTP

+        and AJP. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Refactor acceptor unlock code to reduce waiting time during connector

+        pause and stop. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct possible (but very small) memory leak when using maxLoadedJsps

+        to limit the number of JSPs loaded at any one time. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52051">52051</a>: Better handling of missing resource problems with

+        non-standard Servlet mappings so that a 404 response is returned to the

+        client rather than a 500 response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52091">52091</a>: Address performance issues related to log creation

+        in TagHandlerPool. Patch provided by Taiki Sugawara. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Switch to using Collections.enumeration() rather than custom code that

+        does the same thing. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid an unnecessary session ID change notice. 

+        Notice of changed session ID by JvmRouteBinderValve is unnecessary to 

+        BackupManager. In BackupManager, change of session ID is replicated by 

+        the call of a setId() method. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix duplicate <code>resetDeltaRequest()</code> call in

+        <code>DeltaSession.setId(String)</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Work around a <a href="http://bugs.sun.com/view_bug.do?bug_id=6427854">known JVM bug</a> that is fixed in 1.7.0_01 but still

+        present in 1.6.0_29 and was triggering intermittent unit test failure

+        for <code>org.apache.catalina.tribes.group.

+        TestGroupChannelMemberArrival.testMemberArrival</code>.

+        The bug affects any components that use NIO although it was more likely

+        to be observed in the clustering module than the HTTP or AJP NIO

+        connector. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        When Context manager does not exist, no context manager message is 

+        replied in order to avoid timeout (default 60sec) of 

+        GET_ALL_SESSIONS sync phase. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix setting maxInactiveInterval, sessionIdLength and

+        processExpiresFrequency for cluster managers. Use setter

+        when setting maxActiveSessions. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50923">50923</a>: Use distinct background color for <code>code</code>

+        tag in Tomcat documentation, for better readability. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51630">51630</a>: Fix bug in async0 example that triggered an

+        IllegalStateException in the application log. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52025">52025</a>: Add additional information regarding DriverManager,

+        the service provider mechanism and memory leaks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52049">52049</a>: Improve setup instructions for running as a Windows

+        service: remove references to specific Windows operating systems - it

+        easily becomes dated; correct information on how a JRE is identified and

+        selected. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52172">52172</a>: Clarify Tomcat build instructions. Patch provided

+        by bmargulies. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.23_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52015">52015</a>: In jdbc-pool: JdbcInterceptor passes not 'this' but 

+        'proxy' to <code>getNext().invoke</code>. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In jdbc-pool: Improve handling of Errors that originate from methods

+        invoked through reflection. In <code>TrapException</code> interceptor:

+        rethrow Error as is, without wrapping it in a RuntimeException.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In jdbc-pool: Unwrap InvocationTargetException if it is caught in

+        <code>ResultSetProxy</code>, like we do it elsewhere. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When building jdbc-pool from within Tomcat, use Tomcat's

+        <code>output</code> directory location. This allows to move all build

+        output away from the source tree. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.23 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.23_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the package re-named copy of Commons BCEL (formerly Jakarta BCEL)

+        to the latest code from Commons BCEL trunk. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove some unused code from the packaged renamed Commons BCEL. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52059">52059</a>: In Windows uninstaller: Do not forget to remove

+        Tomcat keys from 32-bit registry on deinstallation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Start the process of deprecating unused and unnecessary code that will

+        be removed in the next major release (8.0.x). (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Ignore <code>.git</code> directory when building the source

+        distributive. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove trailing whitespace from the default configuration files.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve <code>RUNNING.txt</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional Checkstyle library to 5.5. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        In test suite: add <code>LoggingBaseTest</code> class to allow

+        use of Tomcat logging configuration in tests that do not start Tomcat.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In test suite: speed up <code>TestGroupChannelSenderConnections</code>.

+        Remove 48 seconds worth of waits. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52148">52148</a>: Add tomcat-coyote.jar to catalina-tasks.xml as this

+        JAR is now required by the Ant tasks. Patch provided by Volker Krebs.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add sample Apache Commons Daemon JSVC wrapper script

+        <code>bin/daemon.sh</code> that can be used with <code>/etc/init.d</code>.

+        (mturk)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)"><!--()--></a><a name="Tomcat_7.0.22_(markt)"><strong>Tomcat 7.0.22 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-10-01</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51550">51550</a>: An additional change that ensures any exceptions

+        thrown by an Authenticator (or any other Valve configured for the

+        Context) will be handled by the custom error pages for the Context if an

+        appropriate error page is configured. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51580">51580</a>: Added a nicer error message when a WAR file contains

+        filenames not properly encoded in UTF-8. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51687">51687</a>: Added (optional) protection against

+        sun.java2d.Disposer thread pinning a WebappClassLoader into memory

+        in the JreMemoryLeakPreventionListener. (schultz)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a>: Fixes a problem with Eclipse WTP "Serve modules

+        without publishing" feature where applications failed to access

+        resources when using getResource() on the classloader. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51744">51744</a>: Prevent application code from closing the associated

+        JNDI context while the application is running. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression with the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51653">51653</a> that broke custom

+        error pages for 4xx responses from the Authenticators. Error handling

+        and request listeners are now handled in the StandardHostValve to ensure

+        they wrap all Context level activity. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51758">51758</a>: The digester (used for processing XML files) used the

+        logger name <code>org.apache.commons.digester.Digester</code> rather

+        than the expected <code>org.apache.tomcat.util.digester.Digester</code>.

+        The digester has been changed to use the expected logger name.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51774">51774</a>: Fix incorrect cached method signature that prevented

+        session tracking modes from being defined in web.xml when running under

+        a security manager. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add an annotation cache to the <code>DefaultInstanceManager</code> that

+        improves performance for applications that make use of a lot of

+        non-poolable objects (e.g. tag files) that need to be scanned for

+        annotations when created. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use the specification compliant request attribute of

+        <code>javax.servlet.request.ssl_session_id</code> to access the SSL

+        session ID and deprecated the Tomcat specific request attribute. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Allow to overwrite the check for distributability

+        of session attributes by session implementations. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add Java 7 sunec.jar and zipfs.jar to the list of JARs

+        to skip when scanning for TLDs and web fragments. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51862">51862</a>: Added a <code>classesToInitialize</code> attribute to 

+        <code>JreMemoryLeakPreventionListener</code> to allow pre-loading of configurable

+        classes to avoid some classloader leaks. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Reduce visibility of static field <code>ManagerBase.name</code> and

+        make it final. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add thread name to juli OneLineFormatter. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure Servlets that implement ContainerServlet always get treated as

+        restricted. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51872">51872</a>: Ensure that the access log always uses the correct

+        value for the remote IP address associated with the request and that

+        requests with multiple errors do not result in multiple entries in

+        the access log. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Remove unused and undocumented socketCloseDelay attribute from NIO

+        connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49683">49683</a>: Support separate connection and keep-alive timeouts

+        for the APR/native connector HTTP and AJP connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Further re-factoring of the HTTP connectors to align the BIO, NIO and

+        APR implementations. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51794">51794</a>: Fix race condition in NioEndpoint. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51811">51811</a>: Correct SSL configuration property name from

+        sslImplemenationName to sslImplementationName. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a timing issue in NIO connector that meant that stopping a connector

+        did not trigger a Comet END event if the associated processor was

+        processing a READ event when the connector was stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Replace unneeded call that iterated events queue in NioEndpoint.Poller.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51860">51860</a>: Fix issues if using NIO with a custom

+        SSLImplementation. Based on a suggestion by Roman Tsirulnikov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow the BIO HTTP connector to be used with SSL when running under Java

+        7. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Don't send AJP CPONG if endpoint is already paused. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Align APR AJP connector with NIO one. Send 503 if endpoint is paused.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Accept AJP request even if endpoint is paused, if CPING was successful.

+        (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When unloading JSPs due to configuration of the

+        <code>maxLoadedJsps</code> initialisation parameter, the unloading code

+        was retaining a reference to the to the unloaded JSP preventing the

+        associated class from being unloaded until the JSP that replaced it was

+        itself unloaded. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51852">51852</a>: Correct two problems in the handling of varargs

+        methods with the BeanELResolver. The first meant the wrong method was

+        sometimes called and the second that an ArrayIndexOutOfBoundsExceptions

+        could be thrown. Patch (including a test case) provided by Matt Benson.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Refactor cluster manager configuration: move handling of common

+        attributes to base class. (kfujino, rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        New cluster manager attribute <code>sessionAttributeFilter</code>

+        allows to filter which session attributes are replicated using a

+        regular expression applied to the attribute name. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the documentation for <code>connectionLinger</code> attribute

+        for the AJP and HTTP connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Document caveat of using <code>RemoteAddrValve</code> with IPv6

+        addresses. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.22_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In jdbc-pool: Avoid IllegalArgumentException when setting maxActive 

+        less than or equal to 0.

+        ArrayBlockingQueue doesn't allow capacity of 0 or less. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48392">48392</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1169796">r1169796</a>): Fix typo in

+        <code>StatementDecoratorInterceptor</code>. (fhanik) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51139">51139</a>:

+        In jdbc-pool: validatorClassName and suspectTimeout are ignored. 

+        In order to support them correctly, validatorClassName and 

+        suspectTimeout are added to a property list. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51786">51786</a>:

+        In jdbc-pool: Discarded connection is not active in a pool any longer. 

+        It removes from the active connection list. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51871">51871</a>: Fix dependency in Maven POM file of

+        tomcat-jbdc. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.22 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.22_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the "test" target in the default build file to report a test

+        failure only after all available connector variants (bio, nio, apr)

+        have been tested. Do not stop after first connector that fails.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51887">51887</a>: When running the unit tests, use a fast but insecure

+        random number source for session ID generation to reduce the delays

+        caused by waiting for entropy. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Code clean-up to further reduce the number of warnings reported by

+        Eclipse, FindBugs and CheckStyle. (markt/kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>  

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)"><!--()--></a><a name="Tomcat_7.0.21_(markt)"><strong>Tomcat 7.0.21 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-09-01</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41718">41718</a>: Include a response body when sending a redirect.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51640">51640</a>: Improve the memory leak prevention for leaks triggered

+        by java.sql.DriverManager. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51644">51644</a>: Fix annotation scanning for contexts with a

+        multi-level context path such as /a/b. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Unregisters MBean of DataSource when web application stops. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51650">51650</a>: Code clean-up. Patch provided by Felix Schumacher.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51653">51653</a>: Move application level error page handling from the

+        Host to the Context. This ensures that application error page handling

+        is completed before the requestDestroyed event of any

+        ServletRequestListener is fired. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51654">51654</a>: Improve handling of invalid appBase settings for Host

+        elements. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51658">51658</a>: Fix possible NPE when logging a failed request. Based

+        on a suggestion by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51688">51688</a>: JreMemoryLeakPreventionListener now protects against

+        AWT thread creation. (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51712">51712</a>: Ensure cache control headers are sent when appropriate

+        even if the request is secure. Patch provided by Michael Zampani.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51713">51713</a>: Improve message that is logged if there is an error

+        in the value of <code>protocol</code> in a <code>Connector</code>.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51739">51739</a>: When using a landing page with FORM authentication

+        ensure that the request has a valid HTTP method. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51641">51641</a>: Use correct key when removing processor instances from

+        the connections map during clean-up. Patch provided by zhh. (mark)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        More changes to align the code between the different HTTP connectors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure AjpMessage headers are correct for the direction of the message.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="code" class="icon" src="./images/code.gif"></td><td>

+        Code clean-up and re-factoring to reduce duplicate code in the AJP

+        processor implementations. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Detect incomplete AJP messages and reject the associated request if one

+        is found. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51698">51698</a>: Fix CVE-2011-3190. Prevent AJP message injection.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41673">41673</a>: Use platform line-endings when reporting compilation

+        errors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51736">51736</a>: Make rpcTimeout configurable in BackupManager. 

+        (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51649">51649</a>: Update the documentation web application to include

+        the ThreadLocal leak prevention listener. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.21_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51583">51583</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1157874">r1157874</a>, <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1162102">r1162102</a>): Fix

+        shutdown delay in jdbc-pool. (fhanik/kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.21 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.21_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51558">51558</a>: Don't force the use of StandardManager when using

+        any of the <code>Tomcat#addWebapp()</code> methods. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51704">51704</a>: Make use of <code>File#mkdirs()</code> more robust.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>  

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)"><!--()--></a><a name="Tomcat_7.0.20_(markt)"><strong>Tomcat 7.0.20 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-08-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Corrected missing comma in the value of <code>jarsToSkip</code>

+        property in <code>conf/catalina.properties</code> file, which

+        caused tomcat-jdbc.jar and commons-beanutils*.jar to be not

+        ignored when scanning jars for tag libraries. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41709">41709</a>: Provide exception messages where no message is

+        provided currently for IllegalStateExcpetions triggered by calling

+        HttpServletResponse methods when the reponse is committed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51509">51509</a>: Fix potential concurrency issue in CSRF prevention

+        filter that may lead to some requests failing that should not. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51518">51518</a>: Correct error in web.xml parsing rules for the

+        &lt;others/&gt; tag when using absolute ordering. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Move the SetCharacterEncoding filter from the examples web application

+        to the <code>org.apache.catalina.filters</code> package so it is

+        available for all web applications. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51550">51550</a>: Internal errors in Tomcat components that process

+        requests before they are passed to a web application, such as

+        Authenticators, now return a 500 response rather than a 200 response.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51555">51555</a>: Allow destroy() to be called on Lifecycle components

+        that are in the initialized state. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add x-threadname pattern format token to ExtendedAccessLogValve to log

+        the current request thread name. Based on a patch from Felix Schumacher.

+        (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51584">51584</a>: Ensure file paths are encoded/decoded when translated

+        to/from URLs when working with resources from a Context so special

+        characters don't cause issues. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51586">51586</a>: Expand error handling to cover anything that is

+        recoverable (or might be recoverable) when loading classes during

+        HandlesTypes processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51588">51588</a>: Make it easier to extend the AccessLogValve to add

+        support for custom elements. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that calls to StandardWrapper methods() that may trigger creation

+        of a Servlet instance always do so in way that correctly instantiates a

+        Servlet instance. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In JDBCStore: Committing connection if autoCommit is false.

+        Make sure committed connection is returned to the pool if datasource is 

+        enabled. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Split <code>condition</code> attribute of AccessLogValve into two,

+        <code>conditionIf</code> and <code>conditionUnless</code>. Implement

+        conditional logging that logs only if a request attribute is present.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Allow to have several AccessLogValve instances in the same scope (e.g.

+        in the same Context). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51610">51610</a>: If an unchecked exception occurs during a lifecycle

+        transition (e.g. web application start) ensure that the component is

+        put into the failed state. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51614">51614</a>: Avoid calling store.load() and  session.expire()

+        twice in PersistentManager when expiring sessions. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent spurious log warnings on container stop if a child component has

+        previously failed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing getter and setter for the alwaysUseSession attribute of the

+        authenticators. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49595">49595</a>: Prevent JVM crash with the AJP APR connector when

+        flushing a closed socket. (jfclere)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50394">50394</a>: Return -1 instead of throwing an exception when

+        encountering an EOF while processing an input stream with the HTTP APR

+        connector. (jfclere)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle a connectionTimeout value of -1 (no timeout) for the

+        HTTP NIO and AJP NIO connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51503">51503</a>: Add additional validation that prevents a connector

+        from starting if it does not have a port &gt; 0. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51557">51557</a>: Ignore HTTP headers that do not comply with RFC 2616

+        and use header names that are not tokens. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve error handling for HTTP APR if an error occurs while using

+        sendfile. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that when using sendfile, HTTP APR sockets are not added to

+        multiple pollers. This may cause errors during shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Set <code>reuse</code> flag of final AJP <code>END_RESPONSE</code>

+        packet to <code>0</code> if we plan to close the connection. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Correctly indicate if socket is closing when calling recycle for the AJP

+        NIO processor. Note since the flag is unused in this case there were no

+        bugs triggered by the re-factoring error. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51532">51532</a>: JSP files with dependencies in JARs were recompiled on

+        every access leading to poor performance. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51544">51544</a>: Correctly resolve bean methods in EL so accessible

+        methods that are overridden by inaccessible methods do not cause an

+        IllegalAccessException. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=41498">41498</a>: Add the allRolesMode attribute to the Realm

+        configuration page in the documentation web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48997">48997</a>: Fixed some typos and correct cross-referencing to the

+        HTTP Connector documentation with the SSL How-To page of the

+        documentation web application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49122">49122</a>: Improvements and fixes for index page for ROOT web

+        application. Based on a patch provided by pidster. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51516">51516</a>: Correct documentation web application to show correct

+        system property name for changing the name of the SSO session cookie.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Configure the Manager and Host Manager web applications with the Set

+        Character Encoding Filter to make the default request character encoding

+        UTF-8 to improve i18n support. Note that best results will be obtained

+        if the connector is also configured with

+        <code>URIEncoding="UTF-8"</code>.(markt)  

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the documentation web application to be even more explicit about

+        the implications of setting the path attribute on a Context element in

+        server.xml. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51561">51561</a>: Update the Realm page within the documentation web

+        application to recommend the use of digest.[bat|sh] to generate digests

+        rather than calling RealmBase directly. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51567">51567</a>: Update the class loading page of the documentation

+        web application to include information on the search order for the

+        common class loader when separate values are used for $CATALINA_HOME and

+        $CATALINA_BASE. (markt) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve class loading documentation and logging documentation.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add information to the security page of the the documentation web

+        application for the ciphers attribute of the Connector element. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.20 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.20_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51503">51503</a>: Add additional validation to Windows installer that

+        ensure that the shutdown port, HTTP port and AJP port are all specified

+        during the install process. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51531">51531</a>: Update sample Eclipse classpath file to reflect

+        updated ECJ jar. Patch provided by Ian Brandt. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Convert Tomcat unit tests to JUnit 4. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional CheckStyle library to 5.4. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove <code>resolveHosts</code> attribute from AccessLogValve

+        configuration in the default <code>server.xml</code>. It was documented

+        in 7.0.19 that it has no effect. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Simplify mapping for <code>jsp</code> servlet in the default

+        <code>web.xml</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle uninstall with the Windows installer if the service is

+        installed with a name that contains a '-' character. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51598">51598</a>: Prevent direct invocation of the Windows uninstaller

+        without a service name from executing since the uninstall will not be

+        complete. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use Tomcat icon (cat) instead of Apache Commons Daemon (feather) one

+        in the list of uninstallable programs on Windows. (kkolinko) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.7. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51621">51621</a>: Add additional required JARs to the deployer

+        distribution. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix a small number of warnings reported by FindBugs. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to version 1.1.22 of the native component for the AJP APR/native

+        and HTTP APR/native connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)"><!--()--></a><a name="Tomcat_7.0.19_(markt)"><strong>Tomcat 7.0.19 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-07-19</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add option to activate access log for unit tests. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix regression in year number formatting for AccessLogValve. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46252">46252</a>: Allow to specify character set to be used to write

+        the access log in AccessLogValve. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51494">51494</a>: Prevent an NPE when a long running request completes

+        if the associated web application was destroyed while the request was

+        processing. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Allow choosing a locale for timestamp formatting in AccessLogValve.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When generating access logs for errors, log at the Context/Host level if

+        a Context or Host can be identified for the failed request. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Create a directory for access log or error log (in AccessLogValve and

+        in JULI FileHandler) automatically when it is specified as a part of

+        the file name, e.g. in the <code>prefix</code> attribute. Earlier this

+        happened only if it was specified with the <code>directory</code>

+        attribute. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Log a failure if access log file cannot be opened. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use en_US as locale for timestamps in ExtendedAccessLogValve.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use en_US as locale for creationdate in WebdavServlet. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51477">51477</a>: Support all SSL protocol combinations in the

+        APR/native connector. This only works when using the native library

+        version 1.1.21 or later, which is not yet released. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct regression introduced in 7.0.17 that triggered 400 entries in

+        the AccessLog when using the AJP/BIO connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix regression producing invalid MBean names when using IPV6

+        addresses for connectors. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add missing thread name in RequestProcessor when Servlet 3 Async

+        is used. Fixes null thread name in access log and JMX MBean. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2011-2526. Protect against infinite loops (HTTP NIO) and crashes

+        (HTTP APR) if sendfile is configured to send more data than is available

+        in the file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent NPEs when a socket is closed in non-error conditions after

+        sendfile processing when using the HTTP NIO connector. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove unnecessary server.xml parsing code for old cluster

+        implementation that does not ship as part of Tomcat 7. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add additional information to the documentation web application on the

+        benefits and remaining risks when running under a security manager.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51490">51490</a>: Correct broken HTML in JSP tag plugin examples and

+        improve the &lt;c:if&gt; example to make failures more obvious. Based on

+        suggestions by Charles. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Document ExtendedAccessLogValve. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct default value of <code>enableLookups</code> for connectors

+        and mention, that <code>resolveHosts</code> for the AccessLogValve

+        is replaced by <code>enableLookups</code>. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/jdbc-pool"><!--()--></a><a name="Tomcat_7.0.19_(markt)/jdbc-pool"><strong>jdbc-pool</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include jdbc-pool into Tomcat release. (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.19 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.19_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.6. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Eclipse JDT Compiler 3.7. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)"><!--()--></a><a name="Tomcat_7.0.18_(markt)"><strong>Tomcat 7.0.18 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct regression introduced in 7.0.17 that triggered an NPE if a

+        CrawlerSessionManagerValve was used without setting crawlerUserAgents.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51466">51466</a>: Correct comment typos in HostManagerServlet. Patch

+        provided by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51467">51467</a>: Invoke Thread.start() rather than Thread.run() so that

+        listeners and filters are stopped in a separate thread rather than the

+        current thread. Patch provided by Felix Schumacher. (markt)  

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51473">51473</a>: Fix concatenation of values in

+        <code>SecurityConfig.setSecurityProperty()</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix response.encodeURL() for the special case of an absolute URL

+        with no path segment (http://name). (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct regression caused by connector re-factoring that made AJP

+        APR/native connector very unstable on Windows platforms. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct regression caused by connector re-factoring that meant that

+        sendfile data was not reset between pipe-lined HTTP requests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Re-factor tests to align packages for tests with the classes under test.

+        Start to convert non-JUnit tests to JUnit. Remove unnecessary code.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add synchronization to receiver socket binding to prevent test failures

+        on Linux. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.18 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.18_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        More code clean-up to remove unused code and reduce IDE warnings.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Further improvements to the Windows installer. (markt/kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)"><!--()--></a><a name="Tomcat_7.0.17_(markt)"><strong>Tomcat 7.0.17 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48956">48956</a>: Add regular expression support for SSI. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49165">49165</a>: Allow any time stamp formats supported by

+        SimpleDateFormat in AccessLogValve. Support logging begin and/or end of

+        request. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50677">50677</a>: Allow system property variables to be used in the

+        values of "common.loader" and other "*.loader" properties in the

+        <code>catalina.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51376">51376</a>: When adding a Servlet via

+        ServletContext#addServlet(String, Servlet), the Servlet was not

+        initialized when the web application started and a load on startup value

+        was set. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51386">51386</a>: Correct code for processing @HandlesTypes annotations

+        so only types of interest are reported to a ServletContainerInitializer.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Add the Tomcat extras, ant-junit and Java Help Jars to the list of JARs

+        to skip when scanning for TLDs and web fragments. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The fix for bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51310">51310</a> caused a regression that re-introduced

+        bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49957">49957</a> and deleted the contents of the work directory

+        when Tomcat was shutdown. This fix ensures that that work directory for

+        an application is not deleted when Tomcat is shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct issues with JULI's OneLineFormatter including: correctly

+        re-using formatted timestamps when possible; thread-safety issues in

+        timestamp formatting; correcting the output of any milliseconds to

+        include leading zeros and formatting any parameters present.

+        (kkolinko/markt/rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51395">51395</a>: Fix memory leak triggered when an application that

+        includes a SAXParserFactory is the first web application to be loaded.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51396">51396</a>: Correctly handle jsp-file entries in web.xml when the

+        JSP servlet has been configured via code when embedding Tomcat. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51400">51400</a>: Avoid known bottleneck in JVM when converting between

+        Strings and bytes by always providing a Charset rather than an encoding

+        name. Based on a patch by Dave Engberg. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51401">51401</a>: Correctly initialise shared WebRuleSet instance used

+        by the digesters that parse web.xml and prevent incorrect warnings about

+        multiple occurrences of elements that are only allowed to appear once in

+        web.xml and web-fragment.xml. (kfujino)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51403">51403</a>: Avoid NPE in JULI FileHandler if formatter is

+        misconfigured. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Previous improvements in JAR scanning performance introduced a start-up

+        performance penalty for some use cases. This fix addresses those

+        performance penalties while retaining the original improvements. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51418">51418</a>: Provide more control over Context creation when

+        embedding Tomcat. Based on a patch by Benson Margulies. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove redundant copy of catalina.properties from o.a.c.startup.

+        Generate this copy for inclusion in bin and src jars during the

+        ant "compile" task. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use system properties loaded from catalina.properties via the class

+        path in unit tests. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve JMX unit test. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix IllegalStateException for JavaScript files when switching from

+        Writer to OutputStream. The special handling of this case in the

+        DefaultServlet was broken due to a MIME type change for JavaScript.

+        (funkman)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix CVE-2011-2204. Prevent user passwords appearing in log files if a

+        runtime exception (e.g. OOME) occurs while creating a new user for a

+        MemoryUserDatabase via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix an issue with the CrawlerSessionManagerValve that meant sessions

+        were not always correctly tracked. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51436">51436</a>: Send 100 (Continue) response earlier to enable

+        ServletRequestListener implementations to read the request body. Based

+        on a patch by Simon Olofsson. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure an access log entry is made if an error occurs during

+        asynchronous request processing and the socket is immediately closed.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that if asyncDispatch() is called during an onTimeout event and

+        the target Servlet does not call startAsync() or complete() that Tomcat

+        calls complete() once the target Servlet exits. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the handling for Servlets that implement the deprecated

+        SingleThreadModel when embedding Tomcat. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51445">51445</a>: Correctly initialise all instances of Servlets that

+        implement SingleThreadModel. Based on a patch by Felix Schumacher.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51453">51453</a>: Fix a regression in the preemptive authentication

+        support (enhancement <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12428">12428</a>) that could trigger authentication

+        even if preemptive authentication was disabled. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent possible NPE when serving Servlets that implement the

+        SingleThreadModel interface. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In launcher for embedded Tomcat: do not change <code>catalina.home</code>

+        system property if it had a value. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using Servlets that implement the SingleThreadModel interface, add

+        the single instance created to the pool when it is determined that a

+        pool of servlets is required rather than throwing it away. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix unit test for bindOnInit which was failing for APR on some

+        platforms. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove superfluous quotes from thread names for connection pools.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix crash observed during pausing the connector when using APR.

+        Only add socket to poller if we are sure we don't close it later.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression introduced in Apache Tomcat 7.0.11 that broke

+        certificate revocation list handling. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve the message printed by TldLocationsCache and add configuration

+        example to the <code>logging.properties</code> file. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=33453">33453</a>: Recompile JSPs if last modified time of the source or

+        any of its dependencies changes either forwards or backwards. Note that

+        this introduces an incompatible change to the code generated for JSPs.

+        Tomcat will automatically re-compile any JSPs and tag files found in the

+        work directory when upgrading from 7.0.16 or earlier to 7.0.17 or later.

+        If you later downgrade from 7.0.17 or later to 7.0.16 or earlier, you

+        must empty the work directory as part of the downgrade process. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=36362">36362</a>: Handle the case where tag file attributes (which can

+        use any valid XML name) have a name which is not a Java identifier.

+        (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Broaden the exception handling in the EL Parser so that more failures to

+        parse an expression include the failed expression in the exception

+        message. Hopefully, this will help track down the cause of

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51088">51088</a>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51306">51306</a>: Avoid NPE when handleSESSION_EXPIRED is processed 

+        while handleSESSION_CREATED is being processed. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Notifications of changes in session ID to other nodes in the cluster

+        should be controlled by notifySessionListenersOnReplication rather than

+        notifyListenersOnReplication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        The change in session ID is notified to the container event listener on 

+        the backup node in cluster. 

+        This notification is controlled by 

+        notifyContainerListenersOnReplication.(kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update Maven repository information in the documentation to reflect

+        current usage. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43538">43538</a>: Add host name and IP address to the HTML Manager

+        application. Patch by Dennis Lundberg. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add <code>session="false"</code> directive to the index page of the

+        ROOT web application. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51443">51443</a>: Document the notifySessionListenersOnReplication

+        attribute for the DeltaManager. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51447">51447</a>: Viewing a back up session in the HTML Manager web

+        application no longer changes the session to a primary session. Based on

+        a patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.17 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.17_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=33262">33262</a>: Install monitor to auto-start for current user only

+        rather than all users to be consistent with menu item creation. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=40510">40510</a>: Provide an option to install shortcuts for the current

+        user or all users. Also ensure registry is correctly cleaned on

+        uninstall for 64-bit platforms. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50949">50949</a>: Provide the ability to specify the AJP port and

+        service name when installing Tomcat using the Windows installer. This

+        permits multiple instances of the same Tomcat version to be installed

+        side-by-side. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Clean up shell and batch scripts (improve consistency,

+        clarify comments, add <code>configtest</code> command support for

+        Windows). (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51206">51206</a>: Make CATALINA_BASE visible for setenv.sh. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove unnecessary variable BASEDIR from scripts. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51425">51425</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51450">51450</a>: Update Spanish translations. Based

+        on patches provided by Jesus Marin. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)"><!--()--></a><a name="Tomcat_7.0.16_(markt)"><strong>Tomcat 7.0.16 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-06-17</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51249">51249</a>: Further improve system property replacement code

+        in ClassLoaderLogManager of Tomcat JULI to cover some corner cases.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51264">51264</a>: Improve the previous fix for this issue by returning

+        the connection to the pool when not in use so it does not appear to be

+        an abandoned connection. Patch provided by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51324">51324</a>: Improve handling of exceptions when flushing the

+        response buffer to ensure that the doFlush flag does not get stuck in

+        the enabled state. Patch provided by Jeremy Norris. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51278">51278</a> that prevented any

+        web application from being marked as distributable. (kfujino/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51278">51278</a> that prevented a

+        web application from overriding the default welcome files. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable remaining valves for Servlet 3 asynchronous processing support.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid possible NPE when logging requests received during embedded Tomcat

+        shutdown. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51340">51340</a>: Fix thread-safety issue when parsing multiple web.xml

+        files in parallel. Apache Tomcat does not do this but products that

+        embed it may. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51344">51344</a>: Fix problem with Lifecycle re-factoring for deprecated

+        embedded class that prevented events being triggered. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51348">51348</a>: Prevent possible NPE when processing WebDAV locks.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When parsing the port in the HTTP host header, restrict the value to be

+        base 10 integer digits rather than hexadecimal ones.

+        (rjung/markt/kkolinko) 

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Change JAR scanning log messages where no TLDs are found to DEBUG level

+        and replace the multiple messages with a single INFO level message that

+        indicates that at least one JAR was scanned needlessly and how to obtain

+        more info. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Enable Servlet 3 asynchronous processing support when using clustering.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.16 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.16_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the log4j configuration settings when defining conversion

+        patterns in the documentation web application. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)"><!--()--></a><a name="Tomcat_7.0.15_(markt)"><strong>Tomcat 7.0.15 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27122">27122</a>: Remove a workaround for a very old and since fixed

+        Mozilla bug and change the default value of the securePagesWithPragma

+        attribute of the Authenticator Valves to false. These changes should

+        reduce the likelihood of issues when downloading files with IE. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=35054">35054</a>: Check that a file is not specified for a Host's

+        appBase and log an error if it is. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51197">51197</a>: Fix possible dropped connection when sendError or

+        sendRedirect are used during async processing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51221">51221</a>: Correct Spanish translation of text used in a 302

+        response. Patch provided by Paco Sober&oacute;n. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51249">51249</a>: Correct ClassLoaderLogManager system property

+        replacement code so properties of the form "}${...}" can be used

+        without error. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51264">51264</a>: Allow the JDBC persistent session store to use a

+        JNDI datasource to define the database in which sessions are persisted.

+        Patch provided by Felix Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51274">51274</a>: Add missing i18n strings in PersistentManagerBase.

+        Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51276">51276</a>: Provide an abstraction for accessing content in JARs

+        so the most efficient method can be selected depending on the type of

+        URL used to identify the JAR. This improves startup time when JARs are

+        located in $CATALINA_BASE/lib. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51277">51277</a>: Improve error message if an application is deployed

+        with an incomplete FORM authentication configuration. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51278">51278</a>: Allow ServletContainerInitializers to override

+        settings in the global default web.xml and the host web.xml. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51310">51310</a>: When stopping the Server object on shutdown call

+        destroy() after calling stop(). (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51145">51145</a>: Add an AJP-NIO connector. (markt/rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51220">51220</a>: Add a system property to enable tag pooling with JSPs

+        that use a custom base class. Based on a patch by Dan Mikusa. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include a comment header in generated java files that indicates when the

+        file was generated and which version of Tomcat generated it. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51240">51240</a>: Ensure that maxConnections limit is enforced when

+        multiple acceptor threads are configured. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51230">51230</a>: Add missing attributes to JMX for ReplicationValve and

+        JvmRouteBinderValve. Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add documentation for AJP-NIO connector. (markt/rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51182">51182</a>: Document JAAS supported added in <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51119">51119</a>.

+        Patch provided by Neil Laurance. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51225">51225</a>: Fix broken documentation links for non-English locales

+        in the HTML Manager application. Patch provided by Eiji Takahashi.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51229">51229</a>: Fix bugs in the Servlet 3.0 asynchronous examples.

+        Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51251">51251</a>: Add web application version support to the Ant tasks.

+        Based on a patch provided by Eiji Takahashi. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51294">51294</a>: Clarify behaviour of unpackWAR attribute of

+        StandardContext components. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.15 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.15_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46451">46451</a>: Configure svn:bugtraq properties for Tomcat trunk.

+        Based on a patch provided by Marc Guillemot. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51309">51309</a>: Correct logic in catalina.sh stop when using a PID

+        file to ensure the correct message is shown. Patch provided by Caio

+        Cezar. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.14 (markt)"><!--()--></a><a name="Tomcat_7.0.14_(markt)"><strong>Tomcat 7.0.14 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-05-12</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.14 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.14_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Stylistic improvements to MIME type sync script.

+        Based on a patch provided by Felix Schumacher. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the SSLValve provides the SSL key size as an Integer rather

+        than a String. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that the RemoteIpValve works correctly with Servlet 3.0

+        asynchronous requests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use safe equality test when determining event type in the

+        MapperListener. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use correct class loader when loading Servlet classes in

+        StandardWrapper. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide additional configuration options for the RemoteIpValve and

+        RemoteIpFilter to allow greater control over the values returned by

+        ServletRequest#getServerPort() and ServletRequest#getLocalPort() when

+        Tomcat is behind a reverse proxy. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure session cookie paths end in <code>/</code> so that session

+        cookies created for a context with a path of <code>/foo</code> do not

+        get returned with requests mapped to a context with a path of

+        <code>/foobar</code>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.14 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.14_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51177">51177</a>: Ensure Tomcat's MapElResolver always returns

+        <code>Object.class</code> for <code>getType()</code> as required by the

+        EL specification. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)"><!--()--></a><a name="Tomcat_7.0.13_(markt)"><strong>Tomcat 7.0.13 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct mix-up in Realm Javadoc. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix display of response headers in AccessLogValve. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Implement display of multiple request headers in AccessLogValve:

+        print not just the value of the first header, but of the all of them,

+        separated by commas. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50306">50306</a>: New StuckThreadDetectionValve to detect requests that

+        take a long time to process, which might indicate that their processing

+        threads are stuck. Based on a patch provided by TomLu. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51038">51038</a>: Ensure that asynchronous requests are included in

+        access logs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51042">51042</a>: Don't trigger session creation listeners when a

+        session ID is changed as part of the authentication process. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51050">51050</a>: Add additional common but non-standard file extension

+        to MIME type mappings for MPEG 4 files. Based on a patch by C&eacute;drik Lime.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add some additional common JARs that do not contain TLDs or web

+        fragments to the list of JARs to skip when scanning for TLDs and web

+        fragments. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        While scanning JARs for TLDs and fragments, avoid using JarFile and use

+        JarInputStream as in most circumstances where JARs are scanned, JarFile

+        will create a temporary copy of the JAR rather than using the resource

+        directly. This change significantly improves startup performance for

+        applications with lots of JARs to be scanned. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure response is committed when <code>AsyncContext#complete()</code>

+        is called. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a container event that is fired when a session's ID is changed,

+        e.g. on authentication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51099">51099</a>: Correctly implement non-default login configurations

+        (configured via the loginConfigName attribute) for the the SPNEGO

+        authenticator. (fhanik/markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51119">51119</a>: Add JAAS authentication support to the

+        JMXRemoteLifecycleListener. Patch provided by Neil Laurance. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51136">51136</a>: Provide methods that enable the name of a Context on

+        Context creation when using Tomcat in an embedded scenario. Based on a

+        patch provided by David Calavera. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51137">51137</a>: Add additional Microsoft Office MIME type mappings.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Partial sync of MIME type mapping with mime.types from the Apache web

+        server. About 600 MIME types added, some changed. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make access logging more robust when logging requests that generate 400

+        responses since the request object is unlikely to be fully/correctly

+        populated in that case. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50957">50957</a>: Fix regression in HTTP BIO connector that triggered

+        errors when processing pipe-lined requests. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50158">50158</a>: Ensure the asynchronous requests never timeout if the

+        timeout is set to zero or less. Based on a patch provided by Chris.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51073">51073</a>: Throw an exception and do not start the APR connector

+        if it is configured for SSL and an invalid value is provided for

+        SSLProtocol. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align all the connector implementations with the documented default

+        setting for processorCache of 200. This changes the default from -1

+        (unlimited) for the AJP-BIO, AJP-APR and HTTP-APR connectors. Additional

+        information was also added to the documentation on how to select an

+        appropriate value. 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Take account of time spent waiting for a processing thread when

+        calculating connection and keep-alive timeouts for the HTTP BIO

+        connector. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51095">51095</a>: Don't trigger a NullPointerException when the SSL

+        handshake fails with the HTTP-APR connector. Patch provided by Mike

+        Glazer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve handling in AJP connectors of the case where too large a AJP

+        packet is received. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Restore the automatic disabling of HTTP keep-alive with the BIO

+        connector once 75% of the processing threads are in use and make the

+        threshold configurable. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make pollerSize and maxConnections synonyms for the APR connectors since

+        they perform the same function. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Use maxThreads rather than 10000 as the default maxConnections for the

+        BIO connectors. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47371">47371</a>: Correctly coerce the empty string to zero when used as

+        an operand in EL arithmetic. Patch provided by gbt. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Label JSP/tag file line and column numbers when reporting errors since

+        it may not be immediately obvious what the numbers represent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49916">49916</a> that resulted in

+        JSPs being compiled twice rather than just once. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Log JARs that are scanned for TLDs where no TLD is found so that users

+        can easily identify JARs that can be added to the list of JARs to skip.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Use a single TLD location cache for a web application rather than one

+        per JSP compilation to speed up JSP compilation. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51124">51124</a>: Refactor BodyContentImpl to assist in determining the

+        root cause of this bug. Based on a patch by Ramiro. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50950">50950</a>: Correct possible NotSerializableException for an

+        authenticated session when running with a security manager. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Configure Security Manager How-To to include a copy of the actual

+        conf/catalina.policy file when the documentation is built, rather

+        than maintaining a copy of its content. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix broken stylesheet URL in XML based manager status output. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51156">51156</a>: Ensure session expiration option is available in

+        Manager application was running web applications that were defined in

+        server.xml. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.13 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.13_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Clarify error messages in *.sh files to mention that if a script is

+        not found it might be because execute permission is needed. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Pool to 1.5.6. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51135">51135</a>: Fix auto-detection of JAVA_HOME for 64-bit Windows

+        platforms that only have a 32-bit JVM installed. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51154">51154</a>: Remove duplicate @deprecated tags in ServletContext

+        Javadoc. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=51155">51155</a>: Add comments to @deprecated tags that have none. Patch

+        provided by sebb. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)"><!--()--></a><a name="Tomcat_7.0.12_(markt)"><strong>Tomcat 7.0.12 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-04-06</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Automatically correct invalid paths when specified for Context elements

+        inside server.xml and log a warning that the configuration has been

+        corrected. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't unpack WAR files if they are not located in the Host's

+        appBase. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't log to standard out in SSLValve. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the case where a web crawler provides an invalid session ID in

+        the CrawlerSessionManagerValve. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update pattern used in CrawlerSessionManagerValve to that used by the

+        ASF infrastructure team. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove unnecessary whitespace from MIME mapping entries in global

+        web.xml file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using parallel deployment, correctly handle the scenario when the

+        client sends multiple JSESSIONID cookies. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=12428">12428</a>: Add support (disabled by default) for preemptive

+        authentication. This can be configured per context. Based on a patch

+        suggested by Werner Donn. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make the CSRF nonce cache serializable so that it can be replicated

+        across a cluster and/or persisted across Tomcat restarts. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Resolve some refactoring TODOs in the implementation of the new Context

+        attribute "swallowAbortedUploads". (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Include the seed time when calculating the time taken to create

+        SecureRandom instances for session ID generation, report excessive times

+        (greater than 100ms) at INFO level and provide a value for the message

+        key so a meaningful message appears in the logs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't register Contexts that fail to start with the Mapper. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48685">48685</a>: Add initial support for SPNEGO/Kerberos authentication

+        also referred to as integrated Windows authentication. This includes

+        user authentication, authorisation via the directory using the

+        user's delegated credentials and exposing the user's delegated

+        credentials via a request attribute so applications can make use of them

+        to impersonate the current user when accessing third-party systems that

+        use a compatible authentication mechanism. Based on a patch provided by

+        Michael Osipov. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        HTTP range requests cannot be reliably served when a Writer is in use so

+        prevent the DefaultServlet from attempting to do so. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Protect the DefaultServlet from Valves, Filters and Wrappers that write

+        content to the response. Prevent partial responses to partial GET

+        requests in this case since the range cannot be reliably determined.

+        Also prevent the DefaultServlet from setting a content length header

+        since this too cannot be reliably determined. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50929">50929</a>: When wrapping an exception, include the root cause.

+        Patch provided by sebb. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50991">50991</a>: Fix regression in fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25060">25060</a> that called

+        close on a JNDI resource while it was still available to the

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide a configuration option that lets the close method to be used for

+        a JNDI Resource to be defined by the user. This change also disables

+        using the close method unless one is explicitly defined for the

+        resource and limits it to singleton resources. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly track changes to context.xml files and trigger redeployment

+        when copyXML is set to false. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50997">50997</a>: Relax the requirement that directories must have a

+        name ending in <code>.jar</code> to be treated as an expanded JAR file

+        by the default JarScanner. Based on patch by Rodion Zhitomirsky. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't append the jvmRoute to a session ID if the jvmRoute is a zero

+        length string. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't register non-singelton DataSource resources with JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        CVE-2011-1184: Provide additional configuration options for the DIGEST

+        authenticator. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Provide a workaround for Tomcat hanging during shutdown when running the

+        unit tests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50887">50887</a>: Add support for configuring the JSSE provider used to

+        convert client certificates. Based on a patch by pknopp. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50903">50903</a>: When a connector is stopped, ensure that requests that

+        are currently in a keep-alive state and waiting for client data are not

+        processed. Requests where processing has started will continue to

+        completion. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50927">50927</a>: Improve error message when SSLCertificateFile is not

+        specified when using APR with SSL. Based on a patch provided by sebb.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50928">50928</a>: Don't ignore keyPass attribute for HTTP BIO and

+        NIO connectors. Based on a patch provided by sebb. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Securely seed the SecureRandom instance used for UUID generation and

+        report excessive creation time (greater than 100ms) at INFO level.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50924">50924</a>: Clean-up HTTP connector comparison table. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Slightly expanded the documentation of the Host element to clarify the

+        relationship between host name and DNS name. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50925">50925</a>: Update SSL how-to to take account of

+        <code>keyPass</code> connector attribute. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve Tomcat Logging documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align the authenticator documentation and MBean descriptors with the

+        implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent the custom error pages for the Manager and Host Manager

+        applications from being accessed directly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50984">50984</a>: When using the Manager application ensure that

+        undeployment fails if a file cannot be deleted. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.12 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.12_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Eclipse JDT complier to 3.6.2. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update WSDL4J library to 1.6.2 (used by JSR 109 support in the extras

+        package). (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update optional CheckStyle library to 5.3. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50911">50911</a>: Reduce noise generated during the build of the Windows

+        installer so warnings are more obvious. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further work to reduce compiler and validation warnings across the code

+        base. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)"><!--()--></a><a name="Tomcat_7.0.11_(markt)"><strong>Tomcat 7.0.11 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-03-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.11_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2011-1088: Completed fix. Don't ignore @ServletSecurity

+        annotations. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=25060">25060</a>: Close Apache Commons DBCP datasources when the

+        associated JNDI naming context is stopped (e.g. for a non-global

+        DataSource resource on web application reload) to close remaining

+        database connections immediately rather than waiting for garbage 

+        collection. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=26701">26701</a>: Provide a mechanism for users to register their own

+        <code>URLStreamHandlerFactory</code> objects. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50855">50855</a>: Fix NPE on HttpServletRequest.logout() when debug

+        logging is enabled. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        New context attribute "swallowAbortedUploads" allows

+        to make request data swallowing configurable for requests

+        that are too large. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50854">50854</a>: Add additional permissions required by the Manager

+        application when running under a security Manager and support a shared

+        Manager installation when $CATALINA_HOME != CATALINA_BASE. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50893">50893</a>: Add additional information to the download README for

+        the extras components. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Calling <code>stop()</code> and then <code>destroy()</code> on a

+        connector incorrectly triggered an exception. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.11_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48208">48208</a>: Allow the configuration of a custom trust manager for

+        use in CLIENT-CERT authentication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix issues that prevented asynchronous servlets from working when used

+        with the HTTP APR connector on platforms that support TCP_DEFER_ACCEPT.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.11 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.11_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct possible threading issue in JSP compilation when development

+        mode is used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50895">50895</a>: Don't initialize classes created during the

+        compilation stage. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.10 (markt)"><!--()--></a><a name="Tomcat_7.0.10_(markt)"><strong>Tomcat 7.0.10 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-03-08</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.10 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.10_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2011-1088: Partial fix. Don't ignore @ServletSecurity

+        annotations. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=27988">27988</a>: Improve reporting of missing files. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=28852">28852</a>: Add URL encoding where missing to parameters in URLs

+        presented by Ant tasks to the Manager application. Based on a patch by

+        Stephane Bailliez. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve handling of SSL renegotiation by failing earlier when the

+        request body contains more bytes than maxSavePostSize. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve shut down speed by not renewing threads during shut down when

+        the <code>ThreadLocalLeakPreventionListener</code> is enabled. (markt)  

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.10 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.10_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49284">49284</a>: Add SSL re-negotiation support to the HTTP NIO

+        connector and extend test cases to cover CLIENT-CERT authentication.

+        (fhanik/markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)"><!--()--></a><a name="Tomcat_7.0.9_(markt)"><strong>Tomcat 7.0.9 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=19444">19444</a>: Add an option to the JNDI realm to allow role searches

+        to be performed by the authenticated user. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21669">21669</a>: Add the ability to specify the roleBase for the JNDI

+        Realm as relative to the users DN. Based on a patch by Art W. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22405">22405</a>: Add a new Lifecycle listener,

+        <code>org.apache.catalina.security.SecurityListener</code> that prevents

+        Tomcat from starting insecurely. It requires that Tomcat is not started

+        as root and that a umask at least as restrictive as 0007 is used. This

+        new listener is not enabled by default.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48863">48863</a>: Better logging when specifying an invalid directory

+        for a class loader. Based on a patch by Ralf Hauser. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48870">48870</a>: Refactor to remove use of parallel arrays. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Enhance the RemoteIpFilter and RemoteIpValve so that the modified remote

+        address, remote host, protocol and server port may be used in an access

+        log if desired. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Restore access to Environments, Resources and ResourceLinks via JMX

+        which was lost in early 7.0.x re-factoring. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove ServerLifecycleListener. This was already removed from server.xml

+        and with the Lifecycle re-factoring is no longer required. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add additional checks to ensure that sub-classes of

+        <code>org.apache.catalina.util.LifecycleBase</code> correctly implement

+        the expected state transitions. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50189">50189</a>: Once the application has finished writing to the

+        response, prevent further reads from the request since this causes

+        various problems in the connectors which do not expect this. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50700">50700</a>: Ensure that the override attribute of context

+        parameters is correctly followed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50721">50721</a>: Correctly handle URL decoding where the URL ends in

+        %nn. Patch provided by Christof Marti. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50737">50737</a>: Add additional information when an invalid WAR file is

+        detected. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50748">50748</a>: Allow the content length header to be set up to the

+        point the response is committed when a writer is being used. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50751">50751</a>: When authenticating with the JNDI Realm, only attempt

+        to read user attributes from the directory if attributes are required.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50752">50752</a>: Fix typo in debug message in deprecated Embedded

+        class. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50789">50789</a>: Provide an option to enable ServletRequestListeners

+        for forwards as required by some CDI frameworks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50793">50793</a>: When processing Servlet 3.0 async requests, ensure

+        that the requestInitialized and requestDestroyed events are only fired

+        once per request at the correct times. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50802">50802</a>: Ensure that

+        <code>ServletContext.getResourcePaths()</code> includes static resources

+        packaged in JAR files in its output. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Web crawlers can trigger the creation of many thousands of sessions as

+        they crawl a site which may result in significant memory consumption.

+        The new Crawler Session Manager Valve ensures that crawlers are

+        associated with a single session - just like normal users - regardless

+        of whether or not they provide a session token with their requests.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't attempt to start NamingResources for Contexts multiple times.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50826">50826</a>: Avoid <code>IllegalArgumentException</code> if an

+        embedded Tomcat instance that includes at least one Context is destroyed

+        without ever being started. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure a web application is taken out of service if the web.xml file is

+        not valid. (kkolinko/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure Servlet 2.2 jspFile elements are correctly converted to use a

+        leading '/' if missing. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50836">50836</a>: Better documentation of the meaning of

+        <code>Lifecycle.isAvailable()</code> and correct a couple of cases where

+        this could incorrectly return true. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50780">50780</a>: Fix memory leak in APR implementation of AJP

+        connector introduced by the refactoring for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If server configuration errors and/or faulty applications caused the

+        ulimit for open files to be reached, the acceptor threads for all

+        connectors could enter a tight loop. This loop consumed CPU and also

+        logged an error message for every iteration of the loop which lead to

+        large log files being generated. The acceptors have been enhanced to

+        better handle this situation. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50720">50720</a>: Ensure that the use of non-ISO-8859-1 character sets

+        for web.xml does not trigger an error when Jasper parses the web.xml

+        file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50726">50726</a>: Ensure that the use of the genStringAsCharArray does

+        not result in String constants that are too long for valid Java code.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50790">50790</a>: Improve method resolution in EL expressions. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50771">50771</a>: Ensure HttpServletRequest#getAuthType() returns the 

+        name of the authentication scheme if request has already been 

+        authenticated. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50713">50713</a>: Remove roles command from the Manager application.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Tribes"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Tribes"><strong>Tribes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50667">50667</a> (<a href="http://svn.apache.org/viewvc?view=rev&amp;rev=1068549">r1068549</a>): Allow RPC callers to get

+        confirmation when sending a reply. (fhanik)

+      </td></tr>  

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.9 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.9_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50743">50743</a>: Cache CheckStyle results between builds to speed up

+        validation. Patch provided by Oliver. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)"><!--()--></a><a name="Tomcat_7.0.8_(markt)"><strong>Tomcat 7.0.8 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-02-05</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.8_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in CoyoteAdapter when postParseRequest() call fails. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+       <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50709">50709</a>: Make <code>ApplicationContextFacade</code> non-final to

+       enable extension. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When running under a security manager, user requests may fail with a

+        security exception. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.8_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Reduce level of log message for invalid URL parameters from WARNING to

+        INFO. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix hanging Servlet 3 asynchronous requests when using the APR based AJP

+        connector. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.8 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.8_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Align server.xml installed by the Windows installer with the one

+        bundled in zip/tar.gz files. The differences are LockOutRealm being

+        used and AccessLogValve being enabled by default. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)"><!--()--></a><a name="Tomcat_7.0.7_(markt)"><strong>Tomcat 7.0.7 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=18462">18462</a>: Don't merge <code>stdout</code> and

+        <code>stderr</code> internally so users retain the option to treat them

+        separately. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=18797">18797</a>: Provide protection against <code>null</code> or zero

+        length names being provided for users, roles and groups in the

+        <code>MemoryRealm</code> and <code>UserDatabaseRealm</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50205">50205</a> to trigger an error earlier if invalid

+        configuration is used. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide additional control over component class loaders, primarily for

+        use when embedding. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix NPE in RemoteAddrFilter, RemoteHostFilter. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49711">49711</a>: HttpServletRequest#getParts will work in a filter

+        or servlet without an @MultipartConfig annotation or

+        MultipartConfigElement if the new "allowCasualMultipartParsing"

+        context attribute is set to "true". (schultz)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49978">49978</a>: Correct another instance where deployment incorrectly

+        failed if a directory in the work area already existed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50582">50582</a>: Refactor access logging so chunked encoding is not

+        forced for all requests if bytes sent is logged. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50597">50597</a>: Don't instantiate a new instance of a Filter if

+        an instance was provided via the

+        <code>ServletContext.addFilter(String, Filter)</code> method. Patch

+        provided by Ismael Juma. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50598">50598</a>: Correct URL for Manager text interface. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50620">50620</a>: Stop exceptions that occur during

+        <code>Session.endAccess()</code> from preventing the normal completion

+        of <code>Request.recycle()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50629">50629</a>: Make <code>StandardContext.bindThread()</code> and

+        <code>StandardContext.unbindThread()</code> protected to allow use by

+        sub-classes. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Use getName() instead of logName() in error messages in StandardContext.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50642">50642</a>: Move the <code>sun.net.www.http.HttpClient</code>

+        keep-alive thread memory leak protection from the

+        JreMemoryLeakPreventionListener to the WebappClassLoader since the

+        thread that triggers the memory leak is created on demand. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50673">50673</a>: Improve Catalina shutdown when running as a service.

+        Do not call System.exit(). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50683">50683</a>: Ensure annotations are scanned when

+        <code>unpackWARs</code> is set to <code>false</code> in the Host

+        where a web application is deployed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve HTTP specification compliance in support of

+        <code>Accept-Language</code> header. This protects from known exploit

+        of the Oracle JVM bug that triggers a DoS, CVE-2010-4476. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prevent possible thread exhaustion if a Comet timeout event takes a

+        while to complete. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Prvent multiple Comet END events if the CometServlet calls

+        <code>event.close()</code> during an END event. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50325">50325</a>: When the JVM indicates support for RFC 5746, disable

+        Tomcat's <code>allowUnsafeLegacyRenegotiation</code> configuration

+        attribute and use the JVM configuration to control renegotiation.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50405">50405</a>: Fix occassional NPE when using NIO connector and

+        Comet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure correct recycling of NIO input filters when processing Comet

+        events. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50627">50627</a>: Correct interaction of NIO socket and Poller when

+        processing Comet events. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct interaction of APR socket and Poller when processing Comet

+        events. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50631">50631</a>: InternalNioInputBuffer should honor

+        <code>maxHttpHeadSize</code>. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve special case handling of

+        <code>javax.servlet.jsp.el.ScopedAttributeELResolver</code> in

+        <code>javax.el.CompositeELResolver</code> to handle sub-classes. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=15688">15688</a>: Use fully-qualified class names in generated jsp files

+        to avoid naming conflicts with user imports. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46819">46819</a>: Remove redundant object instantiations in

+        JspRuntimeLibrary. Patch provided by Anthony Whitford. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve error message when EL identifiers are not valid Java identifiers

+        and use i18n for the error message. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50680">50680</a>: Prevent an NPE when using tag files from an exploded

+        JAR file, e.g. from within an IDE. Patch provided by Larry Isaacs.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50591">50591</a>: Fix NPE in ReplicationValve. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Internationalise the log messages for the FarmWarDeployer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50600">50600</a>: Prevent a <code>ConcurrentModificationException</code>

+        when removing a WAR file via the FarmWarDeployer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Be consistent with locks on sessionCreationTiming,

+        sessionExpirationTiming in DeltaManager.resetStatistics(). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50648">50648</a>: Correctly set the interrupt status if a thread using

+        <code>RpcChannel</code> is interrupted waiting for a message reply.

+        Based on a patch by Olivier Costet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50646">50646</a>: Ensure larger Tribes messages are fully read. Patch

+        provided by Olivier Costet. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50679">50679</a>: Update the FarmWarDeployer to support parallel

+        deployment. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22278">22278</a>: Add a commented out <code>RemoteAddrValve</code> that

+        limits access to the Manager and Host Manager applications to localhost.

+        Based on a patch by Yann C&eacute;bron. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a handful of Javadoc warnings. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide additional detail about how web application version order is

+        determined when using parallel deployment. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the documentation for the recoveryCount count attribute of the

+        the default cluster membership. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50441">50441</a>: Clarify when it is valid to set the docBase attribute

+        in a Context element. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50526">50526</a>: Provide additional documetation on configuring

+        JavaMail resources. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50599">50599</a>: Use correct names of roles required to access the 

+        Manager application. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.7 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.7_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend the Checkstyle tests to check for license headers. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Modify the build script so a release build always rebuilds the

+        dependencies to ensure that the correct Tomcat version appears in the

+        manifest. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Code clean-up to remove unused code and reduce IDE warnings. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50601">50601</a>: Code clean-up. Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50606">50606</a>: Improve CGIServlet: Provide support for specifying

+        empty value for the <code>executable</code> init-param. Provide support

+        for explicit additional arguments for the executable. Those were

+        broken when implementing fix for bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49657">49657</a>. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)"><!--()--></a><a name="Tomcat_7.0.6_(markt)"><strong>Tomcat 7.0.6 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>released 2011-01-14</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/General"><!--()--></a><a name="Tomcat_7.0.6_(markt)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.5. (mturk)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=8705">8705</a>: <code>org.apache.catalina.SessionListener</code> now

+        extends <code>java.util.EventListener</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10526">10526</a>: Add an option to the <code>Authenticator</code>s to

+        force the creation of a session on authentication which may offer some

+        performance benefits. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=10972">10972</a>: Improve error message if the className attribute is

+        missing on an element in server.xml where it is required. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48692">48692</a>: Provide option to parse

+        <code>application/x-www-form-urlencoded</code> PUT requests. (schultz)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48822">48822</a>: Include context name in case of error while stopping

+        or starting a context during its reload. Patch provided by Marc 

+        Guillemot. (slaurent)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48837">48837</a>: Extend thread local memory leak detection to include

+        classes loaded by subordinate class loaders to the web

+        application's class loader such as the Jasper class loader. Based

+        on a patch by Sylvain Laurent. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48973">48973</a>: Avoid creating a SESSIONS.ser file when stopping an 

+        application if there's no session. Patch provided by Marc Guillemot.

+        (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49000">49000</a>: No longer accept specification invalid name only

+        cookies by default. This behaviour can be restored using a system

+        property. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49159">49159</a>: Improve memory leak protection by renewing threads of

+        the pool when a web application is stopped. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49372">49372</a>: Re-fix after connector re-factoring. If connector

+        initialisation fails (e.g. if a port is alreasy in use) do not trigger

+        an <code>LifecycleException</code> for an invalid state transition.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49543">49543</a>: Allow Tomcat to use shared data sources with per

+        application credentials. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49650">49650</a>: Remove unnecessary entries package.access property

+        defined in catalina.properties. Patch provided by Owen Farrell. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50106">50106</a>: Correct several MBean descriptors. Patch provided by

+        Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Further performance improvements to session ID generation. Remove legacy

+        configuration options that are no longer required. Provide additional

+        options to control the <code>SecureRandom</code> instances used to

+        generate session IDs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50201">50201</a>: Update the access log reference in

+        <code>StandardEngine</code> when the ROOT web application is redeployed,

+        started, stopped or defaultHost is changed. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50282">50282</a>: Load

+        <code>javax.security.auth.login.Configuration</code> with

+        <code>JreMemoryLeakPreventionListener</code> to avoid memory leak when

+        stopping a web application that would use JAAS. (slaurent)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50351">50351</a>: Fix the regression that broke BeanFactory resources

+        caused by the previous fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50159">50159</a>. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50352">50352</a>: Ensure that <code>AsyncListener.onComplete()</code> is

+        fired when <code>AsyncContext.complete()</code> is called. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50358">50358</a>: Set the correct LifecycleState when stopping instances

+        of the deprecated Embedded class. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further Lifecycle refactoring for Connectors and associated components.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct handling of versioned web applications in deployer. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct removal of <code>LifeCycleListener</code>s from

+        <code>Container</code>s via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't use <code>null</code>s to construct log messages. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Code clean-up. Replace use of inefficient constructors with more

+        efficient alternatives. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50411">50411</a>: Ensure sessions are removed from the

+        <code>Store</code> associated with a <code>PersistentManager</code>.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50413">50413</a>: Ensure 304 responses are not returned when using

+        static files as error pages. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50448">50448</a>: Fix possible <code>IllegalStateException</code>

+        caused by recent session management refactoring. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure aliases settings for a context are retained after a context is

+        reloaded. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Log a warning if context.xml files define values for properties  that do

+        not exist (e.g. if there is a typo in a property name). (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50453">50453</a>: Correctly handle multiple <code>X-Forwarded-For</code>

+        headers in the RemoteIpFilter and RemoteIpValve. Patch provided by Jim

+        Riggs. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50541">50541</a>: Add support for setting the size limit and time limit

+        for LDAP seaches when using the JNDI Realm with <code>userSearch</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        All configuration options that use regular expression now require a

+        single regular expression (using <code>java.util.regex</code>) rather

+        than a list of comma-separated or semi-colon-separated expressions.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50496">50496</a>: Bytes sent in the access log are now counted after

+        compression, chunking etc rather than before. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50550">50550</a>: When a new directory is created (e.g. via WebDAV)

+        ensure that a subsequent request for that directory does not result in a

+        404 response. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50554">50554</a>: Code clean up. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50556">50556</a>: Improve JreMemoryLeakPreventionListener to prevent

+        a potential class loader leak caused by a thread spawned when the class

+        <code>com.sun.jndi.ldap.LdapPoolManager</code> is initialized and the 

+        system property <code>com.sun.jndi.ldap.connect.pool.timeout</code> is 

+        set to a value greater than 0. (slaurent)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47319">47319</a>: Return the client's IP address rather than null

+        for calls to <code>getRemoteHost()</code> when the APR connector is

+        used with <code>enableLookups="true"</code> but the IP address

+        is not resolveable. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50108">50108</a>: Add get/set methods for Connector property

+        minSpareThreads. Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50360">50360</a>:  Provide an option to control when the socket

+        associated with a connector is bound. By default, the socket is bound on

+        <code>Connector.init()</code> and released on

+        <code>Connector.destroy()</code> as per the current behaviour but this

+        can be changed so that the socket is bound on

+        <code>Connector.start()</code> and released on

+        <code>Connector.stop()</code>. This fix also includes further Lifecycle

+        refactoring for Connectors and associated components. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove a huge memory leak in the NIO connector introduced by the fix

+        for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50467">50467</a>: Protected against NPE triggered by a race condition

+        that causes the NIO poller to fail, preventing the processing of further

+        requests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=13731">13731</a>: Make variables in <code>_jspService()</code> method

+        final where possible. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50408">50408</a>: Fix <code>NoSuchMethodException</code> when using

+        scoped variables with EL method invocation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50460">50460</a>: Avoid a memory leak caused by using a cached exception

+        instance in <code>JspDocumentParser</code> and

+        <code>ProxyDirContext</code>. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50500">50500</a>: Use correct coercions (as per the EL spec) for

+        arithmetic operations involving string values containing '.',

+        'e' or 'E'. Based on a patch by Brian Weisleder.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50185">50185</a>: Add additional trace level logging to Tribes to assist

+        with fault diagnosis. Based on a patch by Ariel. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't try and obtain session data from the cluster if the current

+        node is the only node in the cluster. Log requesting session data as

+        INFO rather than WARNING. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50503">50503</a>: When web application has a version, Engine level 

+        Clustering works correctly. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50547">50547</a>: Add time stamp for CHANGE_SESSION_ID message and 

+        SESSION_EXPIRED message. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21157">21157</a>: Ensure cookies are written before the response is

+        commited in the Cookie example. Patch provided by Stefan Radzom. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50294">50294</a>: Add more information to documentation regarding format

+        of configuration files. Patch provided by Luke Meyer. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly validate provided context path so sessions for the ROOT web

+        application can be viewed through the HTML Manager. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve documentation of database connection factory. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50488">50488</a>: Update classpath required when using jsvc and add a

+        note regarding server VMs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Further filtering of Manager display output. (kkolinko) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.6 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.6_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't configure Windows installer to use PID file since it is not

+        removed when the service stops which prevents the service from starting.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=14416">14416</a>: Make <code>TagLibraryInfo.getTag()</code> more robust

+        at handling <code>null</code>s. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50552">50552</a>: Avoid NPE that hides error message when using Ant

+        tasks. (schultz)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide two alternative locations for the libraries downloaded from

+        the ASF web site at build time. Use the main distribution site as

+        default and the archive one as fallback. (kkolinko)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)"><!--()--></a><a name="Tomcat_7.0.5_(markt)"><strong>Tomcat 7.0.5 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-12-01</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/General"><!--()--></a><a name="Tomcat_7.0.5_(markt)/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update to Apache Commons Daemon 1.0.4. (mturk)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=3839">3839</a>: Provide a mechanism to gracefully handle the case where

+        users book-mark the form login page or otherwise misuse the FORM

+        authentication process. Based on a suggestion by Mark Morris. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49180">49180</a>: Add option to disable log rotation in 

+        juli FileHandler. Patch provided by Pid (pidster at apache). (funkman)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49991">49991</a>: Ensure servlet request listeners are fired for

+        the login and error pages during FORM authentication. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50107">50107</a>: When removing a Host via JMX, do not attempt to

+        destroy the host's pipeline twice. Patch provided by Eiji

+        Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50138">50138</a>: Fix threading issues in

+        <code>org.apache.catalina.security.SecurityUtil</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50157">50157</a>: Ensure MapperListener is only added to a container

+        object once. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50159">50159</a>: Add a new attribute for <code>&lt;Resource&gt;</code>

+        elements, <code>singleton</code>, that controls whether or not a new

+        object is created every time a JNDI lookup is performed to obtain the

+        resource. The default value is <code>true</code>, which will return the

+        same instance of the resource in every JNDI lookup. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50168">50168</a>: Separate the <code>Lifecycle.DESTROY_EVENT</code> into

+        <code>Lifecycle.BEFORE_DESTROY_EVENT</code> and

+        <code>Lifecycle.AFTER_DESTROY_EVENT</code>. Use the additional state to

+        ensure that <code>Context</code> objects are only destroyed once.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50169">50169</a>: Ensure that when a Container is started that it

+        doesn't try and register with the mapper unless its parent has

+        already started. Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50222">50222</a>: Modify memory leak prevention code so it pins the

+        system class loader in memory rather than than the common class loader,

+        which is better for embedded systems. Patch provided by Christopher

+        Schultz. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve debug logging for MapperListener registration. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Expose names of LifecycleListeners and ContainerListeners for

+        StandardContext via JMX. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a new option, <code>resourceOnlyServlets</code>, to Context elements

+        that provides a mechanism for working around the issues caused by new

+        requirements for welcome file mapping introduced in Servlet 3.0. By

+        default, the existing Tomcat 6.0.x welcome file handling is used.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make Tomcat more tolerant of <code>null</code> when generating JMX names

+        for Valves. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make AccessLogValve attribute <code>enabled</code> changeable via JMX.

+        (pero)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct infinite loop if <code>ServletRequest.startAsync(ServletRequest,

+        ServletResponse)</code> was called. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50232">50232</a>: Remove dependency between StoreBase and

+        PersistentManager and associated code clean-up. Patch provided by

+        Tiago Batista. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50252">50252</a>: Prevent ClassCastException when using a

+        &lt;ResourceLink&gt;. Patch provided by Eiji Takahashi. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Reduce synchronization in session managers to improve performance of

+        session creation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        If starting children automatically when adding them to a container (e.g.

+        when adding a Context to a Host) don't lock the parent's set

+        of children whilst the new child is being started since this can block

+        other threads and cause issues such as lost cluster messages. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Implement support for parallel deployment. This allows multiple versions

+        of the same web application to be deployed to the same context path at

+        the same time. Users without a current session will be mapped to the

+        latest version of the web application. Users with a current session will

+        continue to use the version of the web application with which the

+        session is associated until the session expires. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50308">50308</a>: Allow asynchronous request processing to call

+        <code>AsyncContext.dispatch()</code> once the asynchronous request has

+        timed out. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make memory leak prevention code that clears ThreadLocal instances more

+        robust against objects with toString() methods that throw exceptions.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49860">49860</a>: Complete support for handling trailing headers in

+        chunked HTTP requests. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Impose a limit on the length of the trailing headers. The limit

+        is configurable with a system property and is <code>8192</code>

+        by default. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50207">50207</a>: Ensure Comet timeout events are triggered. This bug

+        was a regression triggered by the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49297">49297</a>: Enforce the rules in the JSP specification for parsing

+        the attributes of custom and standard actions that require that

+        the attribute names are unique within an element and that there is

+        whitespace before the attribute name. The whitespace test can be

+        disabled by setting the system property

+        <code>org.apache.jasper.compiler.Parser.STRICT_WHITESPACE</code> to

+        <code>false</code>. Attributes of the page directive have slightly

+        different rules. The implementation of that part of the fix is based on

+        a patch by genspring. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50105">50105</a>: When processing composite EL expressions use

+        <code>Enum.name()</code> rather than <code>Enum.toString()</code> as

+        required by the EL specification. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix minor thread-safety and performance issues in the implementation

+        of <code>maxLoadedJsps</code>. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for unloading JSPs that have not been requested for a

+        long time using the new parameter <code>jspIdleTimeout</code>. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add logging and JMX support to JSP unloading. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50192">50192</a>: Improve performance for EL when running under a

+        security manager. Based on a patch by Robert Goff. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50228">50228</a>: Improve recycling of <code>BodyContentImpl</code>.

+        This avoids keeping a cached reference to a webapp-provided Writer

+        used in JspFragment.invoke() calls. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50273">50273</a>: Provide a workaround for an HP-UX issue that can

+        result in large numbers of SEVERE log messages appearing in the logs as

+        a result of normal operation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50293">50293</a>: Increase the size of internal ELResolver array from 2 

+        to 8 since in typical usage there are at least 5 resolvers. Based on a

+        patch by Robert Goff. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for maxActiveSessions attribute to BackupManager. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve sending an access message in DeltaManager.

+        maxInactiveInterval of not Manager but the session is used. 

+        If maxInactiveInterval is negative, an access message is not sending. 

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50183">50183</a>: BIO sender was not scheduling tasks to the executor

+        during normal operation. Patch provided by Ariel. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50184">50184</a>: Add an option to the RpcChannel to enable the Channel

+        send options to be set for the reply message. Based on a patch by Ariel.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that a new Context waiting for session data from other nodes in

+        the cluster does not block the processing of clustering messages for

+        other Contexts. (markt) 

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49426">49426</a>: Localize messages in the Manager application based on

+        the Locale of the user rather than the default Locale of the server.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Localize messages in the Host Manager application based on the Locale of

+        the user rather than the default Locale of the server. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50242">50242</a>: Provide a sample log4j  configuration that more

+        closely matches the default JULI configuration. Patch provided by

+        Christopher Schultz. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Restore the ability to edit the contents of /WEB-INF and /META-INF via

+        WebDAV via the provision of a new configuration option,

+        allowSpecialPaths. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct broken links for on-line JavaDocs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50230">50230</a>: Add new DistributedManager interface that is

+        implemented by the Backup Manager to remove circular dependency between

+        tomcat-catalina-ha and tomcat-catalina modules. Also allows third-party

+        distributed Manager implementations to report full session information

+        through the HTML Manager. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve Tomcat Logging documentation. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50303">50303</a>: Update JNDI how-to to reflect the new JavaMail

+        download location and that JAF is now included in Java SE 6. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix ordering functionality on sessions page for the HTML Manager 

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix primary sessions not always being treated as such in the HTML

+        Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix message not being displayed after session attribute removal in the

+        HTML Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50310">50310</a>: Fix display of Servlet information in the Manager

+        application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CVE-2010-4172: Multiple XSS in the Manager application. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50316">50316</a>: Fix display of negative values in the Manager 

+        application. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50318">50318</a>: Avoid NPE when trying to view session detail for an

+        expired session in the Manager application. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.5 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.5_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct a handful of Javadoc warnings. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22965">22965</a>: Fix some typos and formatting issues in the global

+        web.xml file. Based on a patch by Yann C&eacute;bron. (markt) 

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend Checkstyle validation checks to check for unused imports. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        General code clean-up to reduce (not eliminate) the number of warnings

+        reported by IDEs. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50140">50140</a>: Don't ignore a user specified installation

+        directory when performing a silent install with the Windows installer on

+        64-bit platforms. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Reimplemented Windows installer dialogs, using modern libraries

+        (nsDialogs, MUI2). (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        When installing with the Windows installer on 64-bit platforms, allow

+        the user to select either a 32-bit JDK or a 64-bit JDK. If a 32-bit JDK

+        is selected, the 32-bit service wrapper and the 32-bit native DLL will

+        be installed. If a 64-bit JDK is selected, the 64-bit service wrapper

+        and the 64-bit native DLL will be installed. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Create Windows shortcuts for the Manager and Host Manager webapps.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Support /? command line option in the Windows Installer. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Display and allow to change roles for the Tomcat admin user in the

+        Windows installer. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        In the Windows installer: do not leave stale <code>server.xml</code>

+        and <code>tomcat-users.xml</code> fragments in the $TEMP folder.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49819">49819</a>: Redesign of home page by Pid (pidster at apache).

+        (timw)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)"><!--()--></a><a name="Tomcat_7.0.4_(markt)"><strong>Tomcat 7.0.4 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-10-21</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a>: Re-implement the fix for bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a> &ndash;

+        namespace issues for some Microsoft WebDAV clients. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49669">49669</a>: Fix memory leak triggered by using the deprecated

+        javax.security.auth.Policy class. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49922">49922</a>: Don't add filter twice to filter chain if the

+        filter matches more than one URL pattern and/or Servlet name. Patch

+        provided by heyoulin. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49937">49937</a>: Use an InstanceManager when creating an AsyncListener

+        through the AsyncContext to ensure annotations are processed. Based on a

+        patch by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        To avoid NoSuchMethodException, xmlValidation and xmlNamespaceAware are 

+        removed from the createStandardHost definition 

+        of mbeans-descriptors.xml. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49945">49945</a>: Continue improvements to JMX. Fix a handful of

+        attributes that were showing as Unavailable in JConsole. Patch provided

+        by Chamith Buddhika. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49952">49952</a>: Allow ServletContainerInitializers to add listeners to

+        a web application. Patch provided by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49956">49956</a>: Handle case when @Resource annotation uses the full

+        JNDI name for a resource. Based on a patch by Gurkan Erdogdu. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49557">49557</a>: Correct regression due to Lifecycle refactoring that

+        cleared all work directories (with compiled JSPs and persisted sessions)

+        when Tomcat was stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49978">49978</a>: Correctly handle the case when a directory expected

+        to be created during web application start is already present. Rather

+        than throwing an exception and failing to start, allow the web

+        application to start normally. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49987">49987</a>: Fix thread safety issue with population of servlet

+        context initialization parameters. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49994">49994</a>: As per the Java EE 6 specification, return a new

+        object instance for each JNDI look up of a resource reference. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50015">50015</a>: Re-factor dynamic servlet security implementation to

+        make extensions, such as JACC implementations, simpler. Patch provided

+        by David Jencks. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50016">50016</a>: Re-factor <code>isUserInRole()</code> and

+        <code>login()/logout()</code> methods to support JACC implementations

+        and to improve encapsulation. Patch provided by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50017">50017</a>: Code clean-up. No functional change. Patch provided by

+        sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50027">50027</a>: Avoid NPE on start when a Context is defined in

+        server.xml with one or more JNDI resources. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50059">50059</a>: JARs should always be searched for static resources

+        even if the web application is marked as meta-data complete. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50063">50063</a>: Correct regression in fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50059">50059</a> that

+        causes applications marked as meta-data complete to return 404s for all

+        requests. Patch provided by heyoulin. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50087">50087</a>: Catch ClassFormatErrors when scanning for annotations.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49923">49923</a>: Avoid using negative timeouts during acceptor unlock

+        to ensure APR connector shuts down properly. (mturk) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49972">49972</a>: Fix potential thread safe issue when formatting dates

+        for use in HTTP headers. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50003">50003</a>: Set not maxThreads but minSpareThreads to

+        corePoolSize, if AbstractEndpoint.setMinSpareThreads is called.

+        (kfujino) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50044">50044</a>: Fix issue when using comet where socket remained in

+        long poll after the comet request has ended. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50054">50054</a>: Correctly handle the setting of minSpareThreads in 

+        AJP connector. (kfujino) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50072">50072</a>: Fix issues when using a non-blocking read for the

+        request line with the NIO connector that could result in the request

+        line being mis-read. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49986">49986</a>: Fix thread safety issue for JSP reload. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49998">49998</a>: Make jsp:root detection work with single quoted

+        attributes as well. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correctly handle the setting of primitive bean values via expression

+        language. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Don't swallow exceptions when processing TLD files and handle the

+        case when there is no web.xml file. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50066">50066</a>: Fix building of recursive tag files when the file

+        depends on a JAR file. Patch provided by Sylvain Laurent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50078">50078</a>: Fix threading problem in EL caches. Patch provided by

+        Takayoshi Kimura. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Make EL cache sizes configurable. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Apply filters to default home page so copyright year is correctly

+        displayed. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.4 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.4_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48716">48716</a>: Do not call reset if the default LogManager is in use.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50013">50013</a>: Correctly package classes from

+        <code>org.apache.tomcat.util.file</code> and add the tomcat-util.jar to

+        the class path for the Ant tasks. Based on a patch provided by

+        Sylvain Laurent. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)"><!--()--></a><a name="Tomcat_7.0.3_(markt)"><strong>Tomcat 7.0.3 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48644">48644</a>: Review all instances of catching Throwable and

+        re-throw where appropriate. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Allow glob patterns in the <code>jarsToSkip</code> configuration and add

+        some debug logging to the jar scanner. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48738">48738</a>: Workaround a couple of long standing JDK bugs to

+        enable GZIP compressed output streams to be flushed. Based on a patch

+        provided by Jiong Wang. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48967">48967</a>: Replace strings "catalina.base" and "catalina.home"

+        by globally defined constants. Patch provided by Marc Guillemot. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49195">49195</a>: Don't report an error when shutting down a Windows

+        service for a Tomcat instance that has a disabled shutdown port. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49209">49209</a>: Prevent possible AccessControlException during

+        undeployment when running with a security manager. Patch provided by

+        Sylvain Laurent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49657">49657</a>: Handle CGI executables with spaces in the path.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49667">49667</a>: Ensure that using the JDBC driver memory leak

+        prevention code does not cause a one of the memory leaks it is meant to

+        avoid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49670">49670</a>: Restore SSO functionality that was broken by Lifecycle

+        refactoring. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49698">49698</a>: Allow a listener to complete an asynchronous request

+        if it times out. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49714">49714</a>: The annotation process of Jar doesn't influence

+        distributable element of web.xml. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49721">49721</a>: Alls JAR in a web application should be searched for

+        resources, not just those with a web-fragment.xml that is going to be

+        processed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49728">49728</a>: Improve PID file handling when another process is

+        managing the PID file and Tomcat does not have write access. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49730">49730</a>: Fix a race condition in StandardThreadExector that can

+        cause requests to experience large delays. Patch provided by Sylvain

+        Laurent. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49749">49749</a>: Single sign on cookies should have httpOnly flag set

+        using same rules as session cookies. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49750">49750</a>: Align <code>WebappClassLoader.validate()</code>

+        implementation with Javadoc and ensure that <code>javax.servlet.*</code>

+        classes can not be loaded by a <code>WebappClassLoader</code> instance.

+        Patch provided by pid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49757">49757</a>: Correct some generics warnings. Based on a patch

+        provided by G&aacute;bor. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49779">49779</a>: Improve handling of POST requests and FORM

+        authentication, particularly when the user agent responds to the 302

+        response by repeating the POST request including a request body. Any

+        request body provided at this point is now swallowed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        CSRF prevention filter did not correctly handle URLs that used anchors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix memory leak on web application stopped caused by failed to

+        de-register the web application's Servlets with the MBean server.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        More tweaks to the Lifecycle refactoring to ensure that when a component

+        is being destroyed, the destroy method is only called once on each

+        child component. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Keep the MBean names for web applications consistent between Tomcat 6

+        and Tomcat 7. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49856">49856</a>: Add an executorName attribute to Connectors so it is

+        possible to trace ThreadPool to Connector to Executor via the JMX

+        interface. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49865">49865</a>: Tomcat failed to start if catalina.properties was not

+        present. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49876">49876</a>: Fix the generics warnings in the copied Apache Jakarta

+        BCEL code. Based on a patch by G&aacute;bor. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49883">49883</a>: Ensure that the CombinedRealm and LockOutRealm return

+        a name for use in log messages rather than throwing an

+        <code>UnsupportedOperationException</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>: Fix occassional NullPointerException on async

+        complete(). This resulted in a major refactoring of the async

+        implementation to address a number of threading issues. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update the version numbers in ServerInfo defaults to Tomcat 7.0.x.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49892">49892</a>: Correct JNDI name for method resource injections.

+        Based on a patch by Gurkan Erdogdu. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Ensure that Context elements defined in server.xml use any configClass

+        setting specified in the parent Host element. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        GSOC 2010. Enable the creation of Services, Engines, Connectors, Hosts

+        and Contexts via JMX from a minimal server.xml that contains only a

+        Server element. Based on a patch by Chamith Buddhika. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49909">49909</a>: Fix a regression introduced with the fix for

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=47950">47950</a> that prevented JSTL classes being loaded. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49915">49915</a>: Make error more obvious, particularly when accessed

+        via JConsole, if StandardServer.storeConfig() is called when there is

+        no StoreConfig implementation present. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50018">50018</a>: Fix some minor Javadoc errors in Jasper source.

+        Based on a patch by sebb. (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50021">50021</a>: Correct a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46844">46844</a>

+        that may have caused additional problems during a failure at start up.

+        (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50026">50026</a>: Prevent serving of resources from WEB-INF and

+        META-INF directories when DefaultServlet or WebdavServlet is mapped

+        to a sub-path of the context. This changes DefaultServlet to always

+        serve resources with paths relative to the root of the context

+        regardless of where it is mapped, which is a breaking change for

+        current servlet-mappings that map the default servlet to a subpath.

+        (timw)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=50689">50689</a>: Provide 100 Continue responses at appropriate points

+        during FORM authentication if client indicates that they are expected.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Wait for the connectors to exit before closing them down. (mturk)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Follow up to <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48545">48545</a>. Make JSSE connectors more tolerant of a

+        incorrect trust store password. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix some edge cases in the NIO connector when handling requests that are

+        not received all at the same time and the socket needs to be returned to

+        the poller. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Further work to reduce the code duplication in the HTTP connectors.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure acceptor threads are stopped when the connector is stopped.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Make sure async timeout thread is stopped when the connector is stopped.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49625">49625</a>: Ensure Vary header is set if response may be

+        compressed rather than only setting it if it is compressed. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49802">49802</a>: Re-factor connector pause, stop and destroy methods so

+        that calling any of those methods has the expected results. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Various refactorings to reduce code duplication and unnecessary code in

+        the connectors. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49860">49860</a>: Add partial support for trailing headers in chunked

+        HTTP requests. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49665">49665</a>: Provide better information including JSP file name and

+        location when a missing file is detected during TLD handling. Patch

+        provided by Ted Leung. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49726">49726</a>: Specifying a default content type via a JSP property

+        group should not prevent a page from setting some other content type.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49799">49799</a>: The new <code>omit</code> attribute for

+        <code>jsp:attribute</code> elements now supports the use of expressions

+        and expression language. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49916">49916</a>: Switch to using an initialisation parameter to pass

+        JSP file information from Catalina to Jasper. This simplifies the

+        Catalina code as well as making it easier for Geronimo and others to

+        integrate Jasper. Patch provided by David Jencks. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49985">49985</a>: Fix thread safety issue in EL parser. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove domainReplication attribute from ClusterManager.

+        If you send session to only same domain, use DomainFilterInterceptor.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add Null check when CHANGE_SESSION_ID message received. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Add support for LAST_ACCESS_AT_START system property to DeltaSession.

+        (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid a NPE in the DeltaManager when a parallel request invalidates the

+        session before the current request has a chance to send the replication

+        message. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49905">49905</a>: Prevent memory leak when using asynchronous session

+        replication. (markt) 

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49924">49924</a>: When non-primary node changes into a primary node,

+        make sure isPrimarySession is changed to true. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the class name of the default JAR scanner in the documentation

+        web application. (rjung)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49585">49585</a>: Update JSVC documentation to reflect new packaging

+        of Commons Daemon. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the Servlet, JSP and EL Javadoc links to link to the

+        specifications and the relevant part of the Java EE 6 Javadoc. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Update a few places in the docs where the Manager documentation referred

+        to the old role name of manager rather than than the new manager-script.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Extras"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49861">49861</a>: Don't log RMI ports formatted with commas for the

+        JMX remote listener. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.3 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.3_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the user names created by the Windows installer for the Manager

+        and Host Manager applications. (mturk)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct the Eclipse compiler dependency in the Jasper POM. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend Checkstyle validation checks to check import order. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49758">49758</a>: Fix generics warnings exposed by a fix in Eclipse 3.6.

+        Patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Pool to 1.5.5. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49955">49955</a>: Improvement and correction of Building Tomcat guide.

+        Based on a patch from Wesley Acheson. (timw)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)"><!--()--></a><a name="Tomcat_7.0.2_(markt)"><strong>Tomcat 7.0.2 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-08-11</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.2_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Fix regression that prevented running with a security manager enabled.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.2_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct Javadoc errors. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide Javadoc for Servlet 3.0 API, JSP 2.2 API and EL 2.2 API.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Remove second copy of RUNNING.txt from the full-docs distribution. Some

+        unpacking utilities can't handle multiple copies of a file with the same

+        name in a directory. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.2 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.2_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Extend Checkstyle validation checks to check for tabs in nearly all text

+        files. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Apache Commons Daemon from 1.0.2 to 1.0.3. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Eclipse JDT Core Batch Compiler (ecj.jar) from 3.5.1 to 3.6.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)"><!--()--></a><a name="Tomcat_7.0.1_(markt)"><strong>Tomcat 7.0.1 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>not released</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        GSOC 2010. Continue work to align MBean descriptors with reality. Patch

+        provided by Chamith Buddhika. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When running under a security manager, enforce package access and

+        package definition restrictions defined in the catalina.properties file.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        When using a Loader configured with

+        <code>searchExternalFirst="true"</code> failure to find the

+        class in an external repository should not prevent searching of the

+        local repositories. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add entryPoint support to the CSRF prevention filter. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48297">48297</a>: Correctly initialise handler chain for web services

+        resources. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48960">48960</a>: Add a new option to the SSI Servlet and SSI Filter to

+        allow the disabling of the <code>exec</code> command. This is now

+        disabled by default. Based on a patch by Yair Lenga. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48998">48998</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49617">49617</a>: Add the ExpiresFilter, a port of the

+        httpd mod_expires module. Patch provided by Cyrille Le Clerc. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49030">49030</a>: When initializing/starting/stopping connectors and

+        one of them fails, do not ignore the others. (markt/kkolinko)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49128">49128</a>: Don't swallow exceptions unnecessarily in

+        <code>WebappClassLoader.start()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49182">49182</a>: Align comments in setclasspath.[sh|bat] with

+        behaviour. Based on a patch provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49230">49230</a>: Enhance JRE leak prevention listener with protection

+        for the keep-alive thread started by

+        <code>sun.net.www.http.HttpClient</code>. Based on a patch provided by

+        Rob Kooper. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49414">49414</a>: When reporting threads that may have triggered a

+        memory leak on web application stop, attempt to differentiate between

+        request processing threads and threads started by the application.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a>: Add a work-around for the known namespace issues for

+        some Microsoft WebDAV clients. Patch provided by Panagiotis Astithas.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for <code>*.jar</code> pattern in VirtualWebappLoader.

+        (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Use a LockOutRealm in the default configuration to prevent attempts to

+        guess user passwords by brute-force. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49478">49478</a>: Add support for user specified character sets to the

+        <code>AddDefaultCharsetFilter</code>. Based on a patch by Felix

+        Schumacher. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49503">49503</a>: Make sure connectors bind to their associated ports

+        sufficiently early to allow jsvc and the

+        org.apache.catalina.startup.EXIT_ON_INIT_FAILURE system property to

+        operate correctly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49525">49525</a>: Ensure cookies for the ROOT context have a path of /

+        rather than an empty string. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49528">49528</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49567">49567</a>: Ensure that

+        <code>AsyncContext.isAsyncStarted()</code> returns the correct value

+        after <code>AsyncContext.start()</code> and that if

+        <code>AsyncContext.complete()</code> is called on a separate thread that

+        it is handled correctly. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49530">49530</a>: Contexts and Servlets not stopped when Tomcat is shut

+        down. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49536">49536</a>: If no ROOT context is deployed, ensure a 404 rather

+        than a 200 is returned for requests that don't map to any other context.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Additional debug logging in StandardContext to provide information on

+        Manager selection. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49550">49550</a>: Supress deprecation warning where deprecated code is

+        required to be used. No functional change. Patch provided by Sebb.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49551">49551</a>: Allow default context.xml location to be specified

+        using an absolute path. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve logging of unhandled exceptions in servlets by including the

+        path of the context where the error occurred. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Include session ID in error message logged when trying to set an

+        attribute on an invalid session. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Improve the CSRF protection filter by using SecureRandom rather than

+        Random to generate nonces. Also make the implementation class used user

+        configurable. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Avoid NullPointerException, when copyXML=true and META-INF/context.xml

+        does not exist. (kfujino)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49598">49598</a>: When session is changed and the session cookie is

+        replaced, ensure that the new Set-Cookie header overwrites the old

+        Set-Cookie header. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Create a thread to trigger asynchronous timeouts when using the BIO

+        connector, change the default timeout to 10s (was infinite) and make the

+        default timeout configurable using the <code>asyncTimeout</code>

+        attribute on the connector. (pero/markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49600">49600</a>: Make exceptions returned by the

+        <code>ProxyDirContext</code> consistent for resources that weren't found

+        by checking the <code>DirContext</code> or the cache. Test case based on

+        a patch provided by Marc Guillemot. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49613">49613</a>: Improve performance when using SSL for applications

+        that make multiple class to <code>Request.getAttributeNames()</code>.

+        Patch provided by Sampo Savolainen. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Handle the edge cases where resources packaged in JARs have names that

+        start with a single quote character or a double quote character. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct copy and paste typo in web.xml parsing rules that mixed up

+        <code>local-ejb-ref</code> and <code>resource-env-ref</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Refactor session managers to remove unused code and to reduce code

+        duplication. Also, all session managers used for session replication now

+        extend <code>org.apache.catalina.ha.session.ClusterManagerBase</code>.

+        (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Remove references to Jikes since it does not support Java 6. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct over zealous type checking for EL in attributes that broke the

+        use of JSF converters. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Correct algorithm used to identify correct method to use when a

+        MethodExpressions is used in EL. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49217">49217</a>: Ensure that identifiers used in EL meet the

+        requirements of the Java Language Specification. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Improve logging of JSP exceptions by including JSP snippet (if enabled)

+        rather than just the root cause in the host log. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49555">49555</a>: Correctly handled Tag Libraries where functions are

+        defined in static inner classes. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Cluster"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Cluster"><strong>Cluster</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49127">49127</a>: Don't swallow exceptions unnecessarily in

+        <code>SimpleTcpReplicationManager.startInternal()</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49407">49407</a>: Change the BackupManager so it is consistent with

+        DeltaManager and reports both primary and backup sessions when active

+        sessions are requested. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49445">49445</a>: When session ID is changed after authentication,

+        ensure the DeltaManager replicates the change in ID to the other nodes

+        in the cluster. (kfujino)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49112">49112</a>: Update the ROOT web application's index page. Patch

+        provided by pid. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49213">49213</a>: Add the permissions necessary to enable the Manager

+        application to operate currently when running with a security manager.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49436">49436</a>: Correct documented default for readonly attribute of

+        the UserDatabase component. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49475">49475</a>: Use new role name for manager application access on

+        the ROOT web application's index page. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49476">49476</a>: CSRF protection was preventing access to the session

+        expiration features. Also switch the manager application to the generic

+        CSRF protection filter. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Better handle failure to create directories required for new hosts in

+        the Host Manager application. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Switch the Host Manager application to the generic CSRF protection for

+        the HTML interface and prevent started hosts from being started and

+        stopped hosts from being stopped. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49518">49518</a>: Fix typo in extras documentation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49522">49522</a>: Fix regression due to change of name for MBeans for

+        naming resources that broke the complete server status page in the

+        manager application. Note these MBeans now have a new name. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49570">49570</a>: When using the example compression filter, set the

+        Vary header on compressed responses. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add redirects for the root of the manager and host-manager web

+        applications that redirect users to the html interface rather than

+        returning a 404. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide the HTML Manager application with the ability to differentiate

+        between primary, backup and proxy sessions. Note that proxy sessions are

+        only shown if enabled in web.xml. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.1 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.1_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49130">49130</a>: Better describe the core package in the Windows

+        installer, making it clear that the service will be installed. Patch

+        provided by sebb. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Re-factor unit tests to enable them to be run once with each of the HTTP

+        connector implementations (BIO, NIO and APR/native). (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49268">49268</a>: Add the necessary plumbing to include CheckStyle in

+        the build process. Start with no checks. Additional checks will be

+        added as they are agreed. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Updated to Ant 1.8.1. The build now requires a minimum of Ant 1.8.x.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the re-packaged version of commons-fileupload from 1.2.1 to

+        1.2.2. The layout of re-packaged version was also restored to the

+        original commons-fileupload layout to make merging of future updates

+        easier. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update the re-packaged version of Jakarta BCEL from trunk revision

+        880760 to trunk revision 978831. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)"><!--()--></a><a name="Tomcat_7.0.0_(markt)"><strong>Tomcat 7.0.0 (markt)</strong></a></font></td><td align="right" bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><strong>beta, 2010-06-29</strong></font></td></tr><tr><td colspan="2"><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Catalina"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Catalina"><strong>Catalina</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update Servlet support to the Servlet 3.0 specification. (all)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Improve and document VirtualWebappLoader. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=43642">43642</a>: Add prestartminSpareThreads attribute for Executor.

+        (jfclere)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Switch from AnnotationProcessor to InstanceManager. Patch provided by

+        David Jecks with modifications by Remy. (remm/fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=620845">r620845</a> and <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=669119">r669119</a>. Make shutdown address

+        configurable. (jfclere)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=651977">r651977</a> Add some missing control checks to

+        <code>ThreadWithAttributes</code>. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=677640">r677640</a> Add a startup class that does not require any

+        configuration files. (costin)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=700532">r700532</a> Log if temporary file operations within the CGI

+        servlet fail. Make sure header Reader is closed on failure. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=708541">r708541</a> Delete references to DefaultContext which was removed

+        in 6.0.x. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=709018">r709018</a> Initial implementation of an asynchronous file handler

+        for JULI. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Give session thisAccessedTime and lastAccessedTime clear semantics.

+        (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Expose thisAccessedTime via Session interface. (rjung)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Provide a log format for JULI that provides the same information as the

+        default but on a single line. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=723889">r723889</a> Provide the ability to configure the Executor job

+        queue size and a timeout for adding jobs to the queue. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for aliases to StandardContext. This allows content from

+        other directories and/or WAR files to be mapped to paths within the

+        context. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Provide clearer definition of Lifecycle interface, particularly start

+        and stop, and align components that implement Lifecycle with this

+        definition. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48662">48662</a>: Provide a new option to control the copying of context

+        XML descriptors from web applications to the host's xmlBase. Copying of

+        XML descriptors is now disabled by default. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Move comet classes from the org.apache.catalina package to the

+        org.apache.catalina.comet package to allow comet to work under a

+        security manager. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Coyote"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Coyote"><strong>Coyote</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Port SSLInsecureRenegotiation from mod_ssl. This requires

+        to use tomcat-native 1.2.21 that have option to detect this

+        support from OpenSSL library. (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Allow bigger AJP packets also for request bodies and responses

+        using the packetSize attribute of the Connector. (rjung)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td><a href="http://svn.apache.org/viewvc?view=rev&amp;rev=703017">r703017</a> Make Java socket options consistent between NIO

+        and JIO connector. Expose all the socket options available on

+        <code>java.net.Socket</code> (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=46051">46051</a>: The writer returned by <code>getWriter()</code> now

+        conforms to the <code>PrintWriter</code> specification and uses platform

+        dependent line endings rather than always using <code>\r\n</code>.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Use tc-native 1.2.x which is based on APR 1.3.3+ (mturk)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=724239">r724239</a> NIO connector now always uses an Executor. (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=724393">r724393</a> Implement keepAliveCount for NIO connector in a thread

+        safe manner. (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=724849">r724849</a> Implement keep alive timeout for NIO connector.

+        (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Jasper"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update JSP support to the JSP 2.2 specification. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Update EL support to the EL 2.2 specification. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=787978">r787978</a> Use "1.6" as the default value for compilerSourceVM

+        and compilerTargetVM options of Jasper. (kkolinko)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48358">48358</a>: Add support for limiting the number of JSPs that are

+        loaded at any one time. Based on a patch by Isabel Drost. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48689">48689</a>: Access TLD files through a new JarResource interface

+        to make extending Jasper simpler, particularly in OSGi environments.

+        Patch provided by Jarek Gawor. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="High Availability"><!--()--></a><a name="High_Availability"><strong>High Availability</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add support for UDP and secure communication to tribes. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add versioning to the tribes communication protocol to support future

+        developments. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Add a demo on how to use the payload. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        Started to add JMX support to the cluster implementation. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=609778">r609778</a> Minor fixes to the throughput interceptor and the

+        NIO receiver. (fhanik)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=630234">r630234</a> Additional checks for the NIO receiver. (fhanik)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=671650">r671650</a> Improve error message when multicast is not enabled.

+        (fhanik)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Web applications"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Web_applications"><strong>Web applications</strong></a></font></td></tr><tr><td><blockquote>

+     <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        <a href="http://svn.apache.org/viewvc?view=rev&amp;rev=631321">r631321</a> Update changelog to support the &lt;rev&gt; element

+        in the documentation. (fhanik)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        A number of additional roles were added to the Manager and Host Manager

+        applications to separate out permissions for the HTML interface, the

+        text interface and the JMX proxy. (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        CSRF protection was added to the Manager and Host Manager applications.

+        (markt)

+      </td></tr>

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        List array elements in the JMX proxy output of the Manager application.

+        (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Extras"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Extras"><strong>Extras</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>

+        A new JmxRemoteLifecycleListener that can be used to fix the ports used

+        for remote JMX connections, eg when using JConsole. (markt)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat 7.0.0 (markt)/Other"><!--()--></a><a name="Tomcat_7.0.0_(markt)/Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellpadding="2" cellspacing="2">

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        Numerous code clean-up changes including the use of generics and

+        removing unused imports, fields, parameters and methods. (markt)

+      </td></tr>

+      <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>

+        All deprecated internal code has been removed. <b>Warning:</b> If you

+        have custom components for a previous Tomcat version that extend

+        internal Tomcat classes and override deprecated methods it is highly

+        likely that they will no longer work. (markt)

+      </td></tr>

+      <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>

+        Parameterize version number throughout build scripts and source. (rjung)

+      </td></tr>

+    </table>

+  </blockquote></td></tr></table>

+</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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/class-loader-howto.html b/webapps/docs/class-loader-howto.html
new file mode 100644
index 0000000..ded6e74
--- /dev/null
+++ b/webapps/docs/class-loader-howto.html
@@ -0,0 +1,239 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Class Loader HOW-TO</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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Class Loader HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Overview">Overview</a></li><li><a href="#Class_Loader_Definitions">Class Loader Definitions</a></li><li><a href="#XML_Parsers_and_Java">XML Parsers and Java</a></li><li><a href="#Running_under_a_security_manager">Running under a security manager</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Like many server applications, Tomcat installs a variety of class loaders

+(that is, classes that implement <code>java.lang.ClassLoader</code>) to allow

+different portions of the container, and the web applications running on the

+container, to have access to different repositories of available classes and

+resources.  This mechanism is used to provide the functionality defined in the

+Servlet Specification, version 2.4&nbsp;&mdash; in particular, Sections 9.4

+and 9.6.</p>

+

+<p>In a Java environment, class loaders are

+arranged in a parent-child tree.  Normally, when a class loader is asked to

+load a particular class or resource, it delegates the request to a parent

+class loader first, and then looks in its own repositories only if the parent

+class loader(s) cannot find the requested class or resource.  Note, that the

+model for web application class loaders <em>differs</em> slightly from this,

+as discussed below, but the main principles are the same.</p>

+

+<p>When Tomcat is started, it creates a set of class loaders that are

+organized into the following parent-child relationships, where the parent

+class loader is above the child class loader:</p>

+

+<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>

+      Bootstrap

+          |

+       System

+          |

+       Common

+       /     \

+  Webapp1   Webapp2 ...

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>The characteristics of each of these class loaders, including the source

+of classes and resources that they make visible, are discussed in detail in

+the following section.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Class Loader Definitions"><!--()--></a><a name="Class_Loader_Definitions"><strong>Class Loader Definitions</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>As indicated in the diagram above, Tomcat creates the following class

+loaders as it is initialized:</p>

+<ul>

+<li><p><strong>Bootstrap</strong> &mdash; This class loader contains the basic

+    runtime classes provided by the Java Virtual Machine, plus any classes from

+    JAR files present in the System Extensions directory

+    (<code>$JAVA_HOME/jre/lib/ext</code>).  <em>Note</em>: some JVMs may

+    implement this as more than one class loader, or it may not be visible

+    (as a class loader) at all.</p></li>

+<li><p><strong>System</strong> &mdash; This class loader is normally initialized

+    from the contents of the <code>CLASSPATH</code> environment variable.  All

+    such classes are visible to both Tomcat internal classes, and to web

+    applications.  However, the standard Tomcat startup scripts

+    (<code>$CATALINA_HOME/bin/catalina.sh</code> or

+    <code>%CATALINA_HOME%\bin\catalina.bat</code>) totally ignore the contents

+    of the <code>CLASSPATH</code> environment variable itself, and instead

+    build the System class loader from the following repositories:

+    </p>

+    <ul>

+    <li><p><em>$CATALINA_HOME/bin/bootstrap.jar</em> &mdash; Contains the

+        main() method that is used to initialize the Tomcat server, and the

+        class loader implementation classes it depends on.</p></li>

+    <li><p><em>$CATALINA_BASE/bin/tomcat-juli.jar</em> or

+        <em>$CATALINA_HOME/bin/tomcat-juli.jar</em> &mdash; Logging

+        implementation classes. These include enhancement classes to

+        <code>java.util.logging</code> API, known as Tomcat JULI,

+        and a package-renamed copy of Apache Commons Logging library

+        used internally by Tomcat.

+        See <a href="logging.html">logging documentation</a> for more

+        details.</p>

+        <p>If <code>tomcat-juli.jar</code> is present in

+        <em>$CATALINA_BASE/bin</em>, it is used instead of the one in

+        <em>$CATALINA_HOME/bin</em>. It is useful in certain logging

+        configurations</p></li>

+    <li><p><em>$CATALINA_HOME/bin/commons-daemon.jar</em> &mdash; The classes

+        from <a href="http://commons.apache.org/daemon/">Apache Commons

+        Daemon</a> project.

+        This JAR file is not present in the <code>CLASSPATH</code> built by

+        <code>catalina.bat</code>|<code>.sh</code> scripts, but is referenced

+        from the manifest file of <em>bootstrap.jar</em>.</p></li>

+    </ul>

+    </li>

+<li><p><strong>Common</strong> &mdash; This class loader contains additional

+    classes that are made visible to both Tomcat internal classes and to all

+    web applications.</p>

+    <p>Normally, application classes should <strong>NOT</strong>

+    be placed here.  The locations searched by this class loader are defined by

+    the <code>common.loader</code> property in

+    $CATALINA_BASE/conf/catalina.properties. The default setting will search the

+    following locations in the order they are listed:</p>

+    <ul>

+      <li>unpacked classes and resources in <code>$CATALINA_BASE/lib</code></li>

+      <li>JAR files in <code>$CATALINA_BASE/lib</code></li>

+      <li>unpacked classes and resources in <code>$CATALINA_HOME/lib</code></li>

+      <li>JAR files in <code>$CATALINA_HOME/lib</code></li>

+    </ul>

+    <p>By default, this includes the following:</p>

+    <ul>

+    <li><em>annotations-api.jar</em> &mdash; JavaEE annotations classes.</li>

+    <li><em>catalina.jar</em> &mdash; Implementation of the Catalina servlet

+        container portion of Tomcat.</li>

+    <li><em>catalina-ant.jar</em> &mdash; Tomcat Catalina Ant tasks.</li>

+    <li><em>catalina-ha.jar</em> &mdash; High availability package.</li>

+    <li><em>catalina-tribes.jar</em> &mdash; Group communication package.</li>

+    <li><em>ecj-*.jar</em> &mdash; Eclipse JDT Java compiler.</li>

+    <li><em>el-api.jar</em> &mdash; EL 2.2 API.</li>

+    <li><em>jasper.jar</em> &mdash; Tomcat Jasper JSP Compiler and Runtime.</li>

+    <li><em>jasper-el.jar</em> &mdash; Tomcat Jasper EL implementation.</li>

+    <li><em>jsp-api.jar</em> &mdash; JSP 2.2 API.</li>

+    <li><em>servlet-api.jar</em> &mdash; Servlet 3.0 API.</li>

+    <li><em>tomcat-api.jar</em> &mdash; Several interfaces defined by Tomcat.</li>

+    <li><em>tomcat-coyote.jar</em> &mdash; Tomcat connectors and utility classes.</li>

+    <li><em>tomcat-dbcp.jar</em> &mdash; Database connection pool

+        implementation based on package-renamed copy of Apache Commons Pool

+        and Apache Commons DBCP.</li>

+    <li><em>tomcat-i18n-**.jar</em> &mdash; Optional JARs containing resource bundles

+        for other languages. As default bundles are also included in each

+        individual JAR, they can be safely removed if no internationalization

+        of messages is needed.</li>

+    <li><em>tomcat-jdbc.jar</em> &mdash; An alternative database connection pool

+        implementation, known as Tomcat JDBC pool. See

+        <a href="jdbc-pool.html">documentation</a> for more details.</li>

+    <li><em>tomcat-util.jar</em> &mdash; Common classes used by various components of

+        Apache Tomcat.</li>

+    </ul></li>

+<li><p><strong>WebappX</strong> &mdash; A class loader is created for each web

+    application that is deployed in a single Tomcat instance.  All unpacked

+    classes and resources in the <code>/WEB-INF/classes</code> directory of

+    your web application, plus classes and resources in JAR files

+    under the <code>/WEB-INF/lib</code> directory of your web application,

+    are made visible to this web application, but not to other ones.</p></li>

+</ul>

+

+<p>As mentioned above, the web application class loader diverges from the

+default Java delegation model (in accordance with the recommendations in the

+Servlet Specification, version 2.4, section 9.7.2 Web Application Classloader).

+When a request to load a

+class from the web application's <em>WebappX</em> class loader is processed,

+this class loader will look in the local repositories <strong>first</strong>,

+instead of delegating before looking.  There are exceptions. Classes which are

+part of the JRE base classes cannot be overridden. For some classes (such as

+the XML parser components in J2SE 1.4+), the J2SE 1.4 endorsed feature can be

+used.

+Last, any JAR file that contains Servlet API classes will be explicitly

+ignored by the classloader &mdash; Do not include such JARs in your web

+application.

+All other class loaders in Tomcat follow the usual delegation pattern.</p>

+

+<p>Therefore, from the perspective of a web application, class or resource

+loading looks in the following repositories, in this order:</p>

+<ul>

+<li>Bootstrap classes of your JVM</li>

+<li>System class loader classes (described above)</li>

+<li><em>/WEB-INF/classes</em> of your web application</li>

+<li><em>/WEB-INF/lib/*.jar</em> of your web application</li>

+<li>Common class loader classes (described above)</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="XML Parsers and Java"><!--()--></a><a name="XML_Parsers_and_Java"><strong>XML Parsers and Java</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Starting with Java 1.4 a copy of JAXP APIs and an XML parser are packed

+inside the JRE.  This has impacts on applications that wish to use their own

+XML parser.</p>

+

+<p>In old versions of Tomcat, you could simply replace the XML parser

+in the Tomcat libraries directory to change the parser

+used by all web applications.  However, this technique will not be effective

+when you are running modern versions of Java, because the usual class loader

+delegation process will always choose the implementation inside the JDK in

+preference to this one.</p>

+

+<p>Java supports a mechanism called the "Endorsed Standards Override

+Mechanism" to allow replacement of APIs created outside of the JCP

+(i.e. DOM and SAX from W3C).  It can also be used to update the XML parser

+implementation.  For more information, see:

+<a href="http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html">

+http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html</a>.</p>

+

+<p>Tomcat utilizes this mechanism by including the system property setting

+<code>-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS</code> in the

+command line that starts the container. The default value of this option is

+<em>$CATALINA_HOME/endorsed</em>. This <em>endorsed</em> directory is not

+created by default.</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="Running under a security manager"><!--()--></a><a name="Running_under_a_security_manager"><strong>Running under a security manager</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>When running under a security manager the locations from which classes

+are permitted to be loaded will also depend on the contents of your policy

+file. See <a href="security-manager-howto.html">Security Manager HOW-TO</a>

+for further information.</p>

+

+</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="/tomcat-7.0-doc/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/class-loader-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/cluster-howto.html b/webapps/docs/cluster-howto.html
new file mode 100644
index 0000000..0712ef5
--- /dev/null
+++ b/webapps/docs/cluster-howto.html
@@ -0,0 +1,683 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Clustering/Session Replication HOW-TO</title><meta name="author" content="Filip Hanik"><meta name="author" content="Peter Rossbach"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Clustering/Session Replication HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Important Note"><!--()--></a><a name="Important_Note"><strong>Important Note</strong></a></font></td></tr><tr><td><blockquote>

+<p><b>You can also check the <a href="config/cluster.html">configuration reference documentation.</a></b>

+</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="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="#For_the_impatient">For the impatient</a></li><li><a href="#Cluster_Basics">Cluster Basics</a></li><li><a href="#Overview">Overview</a></li><li><a href="#Cluster_Information">Cluster Information</a></li><li><a href="#Bind_session_after_crash_to_failover_node">Bind session after crash to failover node</a></li><li><a href="#Configuration_Example">Configuration Example</a></li><li><a href="#Cluster_Architecture">Cluster Architecture</a></li><li><a href="#How_it_Works">How it Works</a></li><li><a href="#Monitoring_your_Cluster_with_JMX">Monitoring your Cluster with JMX</a></li><li><a href="#FAQ">FAQ</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="For the impatient"><!--()--></a><a name="For_the_impatient"><strong>For the impatient</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    Simply add <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>&lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/&gt;</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>

+    to your <code>&lt;Engine&gt;</code> or your <code>&lt;Host&gt;</code> element to enable clustering.

+  </p>

+  <p>

+    Using the above configuration will enable all-to-all session replication

+    using the <code>DeltaManager</code> to replicate session deltas. By all-to-all we mean that the session gets replicated to all the other

+    nodes in the cluster. This works great for smaller cluster but we don't recommend it for larger clusters(a lot of Tomcat nodes).

+    Also when using the delta manager it will replicate to all nodes, even nodes that don't have the application deployed.<br>

+    To get around this problem, you'll want to use the BackupManager. This manager only replicates the session data to one backup

+    node, and only to nodes that have the application deployed. Downside of the BackupManager: not quite as battle tested as the delta manager.

+    <br>

+    Here are some of the important default values:<br>

+    1. Multicast address is 228.0.0.4<br>

+    2. Multicast port is 45564 (the port and the address together determine cluster membership.<br>

+    3. The IP broadcasted is <code>java.net.InetAddress.getLocalHost().getHostAddress()</code> (make sure you don't broadcast 127.0.0.1, this is a common error)<br>

+    4. The TCP port listening for replication messages is the first available server socket in range <code>4000-4100</code><br>

+    5. Two listeners are configured <code>ClusterSessionListener</code> and <code>JvmRouteSessionIDBinderListener</code><br>

+    6. Two interceptors are configured <code>TcpFailureDetector</code> and <code>MessageDispatch15Interceptor</code><br>

+    The following is the default cluster configuration:<br>

+    <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>

+        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

+                 channelSendOptions="8"&gt;

+

+          &lt;Manager className="org.apache.catalina.ha.session.DeltaManager"

+                   expireSessionsOnShutdown="false"

+                   notifyListenersOnReplication="true"/&gt;

+

+          &lt;Channel className="org.apache.catalina.tribes.group.GroupChannel"&gt;

+            &lt;Membership className="org.apache.catalina.tribes.membership.McastService"

+                        address="228.0.0.4"

+                        port="45564"

+                        frequency="500"

+                        dropTime="3000"/&gt;

+            &lt;Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

+                      address="auto"

+                      port="4000"

+                      autoBind="100"

+                      selectorTimeout="5000"

+                      maxThreads="6"/&gt;

+

+            &lt;Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&gt;

+              &lt;Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&gt;

+            &lt;/Sender&gt;

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&gt;

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&gt;

+          &lt;/Channel&gt;

+

+          &lt;Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

+                 filter=""/&gt;

+          &lt;Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/&gt;

+

+          &lt;Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

+                    tempDir="/tmp/war-temp/"

+                    deployDir="/tmp/war-deploy/"

+                    watchDir="/tmp/war-listen/"

+                    watchEnabled="false"/&gt;

+

+          &lt;ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/&gt;

+          &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt;

+        &lt;/Cluster&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </p>

+  <p>Will cover this section in more detail later in this document.</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="Cluster Basics"><!--()--></a><a name="Cluster_Basics"><strong>Cluster Basics</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>To run session replication in your Tomcat 7.0 container, the following steps

+should be completed:</p>

+<ul>

+  <li>All your session attributes must implement <code>java.io.Serializable</code></li>

+  <li>Uncomment the <code>Cluster</code> element in server.xml</li>

+  <li>If you have defined custom cluster valves, make sure you have the <code>ReplicationValve</code>  defined as well under the Cluster element in server.xml</li>

+  <li>If your Tomcat instances are running on the same machine, make sure the <code>tcpListenPort</code>

+      attribute is unique for each instance, in most cases Tomcat is smart enough to resolve this on it's own by autodetecting available ports in the range 4000-4100</li>

+  <li>Make sure your <code>web.xml</code> has the

+      <code>&lt;distributable/&gt;</code> element</li>

+  <li>If you are using mod_jk, make sure that jvmRoute attribute is set at your Engine <code>&lt;Engine name="Catalina" jvmRoute="node01" &gt;</code>

+      and that the jvmRoute attribute value matches your worker name in workers.properties</li>

+  <li>Make sure that all nodes have the same time and sync with NTP service!</li>

+  <li>Make sure that your loadbalancer is configured for sticky session mode.</li>

+</ul>

+<p>Load balancing can be achieved through many techniques, as seen in the

+<a href="balancer-howto.html">Load Balancing</a> chapter.</p>

+<p>Note: Remember that your session state is tracked by a cookie, so your URL must look the same from the out

+   side otherwise, a new session will be created.</p>

+<p>Note: Clustering support currently requires the JDK version 1.5 or later.</p>

+<p>The Cluster module uses the Tomcat JULI logging framework, so you can configure logging

+   through the regular logging.properties file. To track messages, you can enable logging on the key:<code>org.apache.catalina.tribes.MESSAGES</code></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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>To enable session replication in Tomcat, three different paths can be followed to achieve the exact same thing:</p>

+<ol>

+  <li>Using session persistence, and saving the session to a shared file system (PersistenceManager + FileStore)</li>

+  <li>Using session persistence, and saving the session to a shared database (PersistenceManager + JDBCStore)</li>

+  <li>Using in-memory-replication, using the SimpleTcpCluster that ships with Tomcat (lib/catalina-tribes.jar + lib/catalina-ha.jar)</li>

+</ol>

+

+<p>In this release of session replication, Tomcat can perform an all-to-all replication of session state using the <code>DeltaManager</code> or

+   perform backup replication to only one node using the <code>BackupManager</code>.

+   The all-to-all replication is an algorithm that is only efficient when the clusters are small. For larger clusters,  to use

+   a primary-secondary session replication where the session will only be stored at one backup server simply setup the BackupManager. <br>

+   Currently you can use the domain worker attribute (mod_jk &gt; 1.2.8) to build cluster partitions

+   with the potential of having a more scalable cluster solution with the DeltaManager(you'll need to configure the domain interceptor for this).

+   In order to keep the network traffic down in an all-to-all environment, you can split your cluster

+   into smaller groups. This can be easily achieved by using different multicast addresses for the different groups.

+   A very simple setup would look like this:

+   </p>

+

+<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>

+        DNS Round Robin

+               |

+         Load Balancer

+          /           \

+      Cluster1      Cluster2

+      /     \        /     \

+  Tomcat1 Tomcat2  Tomcat3 Tomcat4

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>What is important to mention here, is that session replication is only the beginning of clustering.

+   Another popular concept used to implement clusters is farming, i.e., you deploy your apps only to one

+   server, and the cluster will distribute the deployments across the entire cluster.

+   This is all capabilities that can go into with the FarmWarDeployer (s. cluster example at <code>server.xml</code>)</p>

+<p>In the next section will go deeper into how session replication works and how to configure it.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Cluster Information"><!--()--></a><a name="Cluster_Information"><strong>Cluster Information</strong></a></font></td></tr><tr><td><blockquote>

+<p>Membership is established using multicast heartbeats.

+   Hence, if you wish to subdivide your clusters, you can do this by

+   changing the multicast IP address or port in the <code>&lt;Membership&gt;</code> element.

+</p>

+<p>

+   The heartbeat contains the IP address of the Tomcat node and the TCP port that

+   Tomcat listens to for replication traffic. All data communication happens over TCP.

+</p>

+<p>

+    The <code>ReplicationValve</code> is used to find out when the request has been completed and initiate the

+    replication, if any. Data is only replicated if the session has changed (by calling setAttribute or removeAttribute

+    on the session).

+</p>

+<p>

+    One of the most important performance considerations is the synchronous versus asynchronous replication.

+    In a synchronous replication mode the request doesn't return until the replicated session has been

+    sent over the wire and reinstantiated on all the other cluster nodes.

+    Synchronous vs. asynchronous is configured using the <code>channelSendOptions</code>

+    flag and is an integer value. The default value for the <code>SimpleTcpCluster/DeltaManager</code> combo is

+    8, which is asynchronous. You can read more on the <a href="tribes/introduction.html">send flag(overview)</a> or the

+    <a href="http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/tribes/Channel.html">send flag(javadoc)</a>.

+    During async replication, the request is returned before the data has been replicated. async replication yields shorter

+    request times, and synchronous replication guarantees the session to be replicated before the request returns.

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Bind session after crash to failover node"><!--()--></a><a name="Bind_session_after_crash_to_failover_node"><strong>Bind session after crash to failover node</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+    If you are using mod_jk and not using sticky sessions or for some reasons sticky session don't

+    work, or you are simply failing over, the session id will need to be modified as it previously contained

+    the worker id of the previous tomcat (as defined by jvmRoute in the Engine element).

+    To solve this, we will use the JvmRouteBinderValve.

+</p>

+<p>

+    The JvmRouteBinderValve rewrites the session id to ensure that the next request will remain sticky

+    (and not fall back to go to random nodes since the worker is no longer available) after a fail over.

+    The valve rewrites the JSESSIONID value in the cookie with the same name.

+    Not having this valve in place, will make it harder to ensure stickiness in case of a failure for the mod_jk module.

+</p>

+<p>

+    By default, if no valves are configured, the JvmRouteBinderValve is added on.

+    The cluster message listener called JvmRouteSessionIDBinderListener is also defined by default and is used to actually rewrite the

+    session id on the other nodes in the cluster once a fail over has occurred.

+    Remember, if you are adding your own valves or cluster listeners in server.xml then the defaults are no longer valid,

+    make sure that you add in all the appropriate valves and listeners as defined by the default.

+</p>

+<p>

+    <b>Hint:</b><br>

+    With attribute <i>sessionIdAttribute</i> you can change the request attribute name that included the old session id.

+    Default attribute name is <i>org.apache.catalina.cluster.session.JvmRouteOrignalSessionID</i>.

+</p>

+<p>

+    <b>Trick:</b><br>

+    You can enable this mod_jk turnover mode via JMX before you drop a node to all backup nodes!

+    Set enable true on all JvmRouteBinderValve backups, disable worker at mod_jk

+    and then drop node and restart it! Then enable mod_jk Worker and disable JvmRouteBinderValves again.

+    This use case means that only requested session are migrated.

+</p>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration Example"><!--()--></a><a name="Configuration_Example"><strong>Configuration Example</strong></a></font></td></tr><tr><td><blockquote>

+    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

+                 channelSendOptions="6"&gt;

+

+          &lt;Manager className="org.apache.catalina.ha.session.BackupManager"

+                   expireSessionsOnShutdown="false"

+                   notifyListenersOnReplication="true"

+                   mapSendOptions="6"/&gt;

+          &lt;!--

+          &lt;Manager className="org.apache.catalina.ha.session.DeltaManager"

+                   expireSessionsOnShutdown="false"

+                   notifyListenersOnReplication="true"/&gt;

+          --&gt;

+          &lt;Channel className="org.apache.catalina.tribes.group.GroupChannel"&gt;

+            &lt;Membership className="org.apache.catalina.tribes.membership.McastService"

+                        address="228.0.0.4"

+                        port="45564"

+                        frequency="500"

+                        dropTime="3000"/&gt;

+            &lt;Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

+                      address="auto"

+                      port="5000"

+                      selectorTimeout="100"

+                      maxThreads="6"/&gt;

+

+            &lt;Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&gt;

+              &lt;Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&gt;

+            &lt;/Sender&gt;

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&gt;

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&gt;

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&gt;

+          &lt;/Channel&gt;

+

+          &lt;Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

+                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/&gt;

+

+          &lt;Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

+                    tempDir="/tmp/war-temp/"

+                    deployDir="/tmp/war-deploy/"

+                    watchDir="/tmp/war-listen/"

+                    watchEnabled="false"/&gt;

+

+          &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt;

+        &lt;/Cluster&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+      Break it down!!

+    </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>

+        &lt;Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"

+                 channelSendOptions="6"&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+      The main element, inside this element all cluster details can be configured.

+      The <code>channelSendOptions</code> is the flag that is attached to each message sent by the

+      SimpleTcpCluster class or any objects that are invoking the SimpleTcpCluster.send method.

+      The description of the send flags is available at <a href="http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/tribes/Channel.html">

+      our javadoc site</a>

+      The <code>DeltaManager</code> sends information using the SimpleTcpCluster.send method, while the backup manager

+      sends it itself directly through the channel.

+      <br>For more info, Please visit the <a href="config/cluster.html">reference documentation</a>

+    </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>

+          &lt;Manager className="org.apache.catalina.ha.session.BackupManager"

+                   expireSessionsOnShutdown="false"

+                   notifyListenersOnReplication="true"

+                   mapSendOptions="6"/&gt;

+          &lt;!--

+          &lt;Manager className="org.apache.catalina.ha.session.DeltaManager"

+                   expireSessionsOnShutdown="false"

+                   notifyListenersOnReplication="true"/&gt;

+          --&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        This is a template for the manager configuration that will be used if no manager is defined in the &lt;Context&gt;

+        element. In Tomcat 5.x each webapp marked distributable had to use the same manager, this is no longer the case

+        since Tomcat you can define a manager class for each webapp, so that you can mix managers in your cluster.

+        Obviously the managers on one node's application has to correspond with the same manager on the same application on the other node.

+        If no manager has been specified for the webapp, and the webapp is marked &lt;distributable/&gt; Tomcat will take this manager configuration

+        and create a manager instance cloning this configuration.

+        <br>For more info, Please visit the <a href="config/cluster-manager.html">reference documentation</a>

+    </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>

+          &lt;Channel className="org.apache.catalina.tribes.group.GroupChannel"&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        The channel element is <a href="tribes/introduction.html">Tribes</a>, the group communication framework

+        used inside Tomcat. This element encapsulates everything that has to do with communication and membership logic.

+        <br>For more info, Please visit the <a href="config/cluster-channel.html">reference documentation</a>

+    </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>

+            &lt;Membership className="org.apache.catalina.tribes.membership.McastService"

+                        address="228.0.0.4"

+                        port="45564"

+                        frequency="500"

+                        dropTime="3000"/&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        Membership is done using multicasting. Please note that Tribes also supports static memberships using the

+        <code>StaticMembershipInterceptor</code> if you want to extend your membership to points beyond multicasting.

+        The address attribute is the multicast address used and the port is the multicast port. These two together

+        create the cluster separation. If you want a QA cluster and a production cluster, the easiest config is to

+        have the QA cluster be on a separate multicast address/port combination than the production cluster.<br>

+        The membership component broadcasts TCP address/port of itself to the other nodes so that communication between

+        nodes can be done over TCP. Please note that the address being broadcasted is the one of the

+        <code>Receiver.address</code> attribute.

+        <br>For more info, Please visit the <a href="config/cluster-membership.html">reference documentation</a>

+    </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>

+            &lt;Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

+                      address="auto"

+                      port="5000"

+                      selectorTimeout="100"

+                      maxThreads="6"/&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        In tribes the logic of sending and receiving data has been broken into two functional components. The Receiver, as the name suggests

+        is responsible for receiving messages. Since the Tribes stack is thread less, (a popular improvement now adopted by other frameworks as well),

+        there is a thread pool in this component that has a maxThreads and minThreads setting.<br>

+        The address attribute is the host address that will be broadcasted by the membership component to the other nodes.

+        <br>For more info, Please visit the <a href="config/cluster-receiver.html">reference documentation</a>

+    </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>

+

+            &lt;Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"&gt;

+              &lt;Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/&gt;

+            &lt;/Sender&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        The sender component, as the name indicates is responsible for sending messages to other nodes.

+        The sender has a shell component, the <code>ReplicationTransmitter</code> but the real stuff done is done in the

+        sub component, <code>Transport</code>.

+        Tribes support having a pool of senders, so that messages can be sent in parallel and if using the NIO sender,

+        you can send messages concurrently as well.<br>

+        Concurrently means one message to multiple senders at the same time and Parallel means multiple messages to multiple senders

+        at the same time.

+        <br>For more info, Please visit the <a href="config/cluster-sender.html">reference documentation</a>

+    </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>

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/&gt;

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/&gt;

+            &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/&gt;

+          &lt;/Channel&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        Tribes uses a stack to send messages through. Each element in the stack is called an interceptor, and works much like the valves do

+        in the Tomcat servlet container.

+        Using interceptors, logic can be broken into more manageable pieces of code. The interceptors configured above are:<br>

+        TcpFailureDetector - verifies crashed members through TCP, if multicast packets get dropped, this interceptor protects against false positives,

+        ie the node marked as crashed even though it still is alive and running.<br>

+        MessageDispatch15Interceptor - dispatches messages to a thread (thread pool) to send message asynchrously.<br>

+        ThroughputInterceptor - prints out simple stats on message traffic.<br>

+        Please note that the order of interceptors is important. the way they are defined in server.xml is the way they are represented in the

+        channel stack. Think of it as a linked list, with the head being the first most interceptor and the tail the last.

+        <br>For more info, Please visit the <a href="config/cluster-interceptor.html">reference documentation</a>

+    </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>

+          &lt;Valve className="org.apache.catalina.ha.tcp.ReplicationValve"

+                 filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        The cluster uses valves to track requests to web applications, we've mentioned the ReplicationValve and the JvmRouteBinderValve above.

+        The &lt;Cluster&gt; element itself is not part of the pipeline in Tomcat, instead the cluster adds the valve to its parent container.

+        If the &lt;Cluster&gt; elements is configured in the &lt;Engine&gt; element, the valves get added to the engine and so on.

+        <br>For more info, Please visit the <a href="config/cluster-valve.html">reference documentation</a>

+    </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>

+          &lt;Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"

+                    tempDir="/tmp/war-temp/"

+                    deployDir="/tmp/war-deploy/"

+                    watchDir="/tmp/war-listen/"

+                    watchEnabled="false"/&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        The default tomcat cluster supports farmed deployment, ie, the cluster can deploy and undeploy applications on the other nodes.

+        The state of this component is currently in flux but will be addressed soon. There was a change in the deployment algorithm

+        between Tomcat 5.0 and 5.5 and at that point, the logic of this component changed to where the deploy dir has to match the

+        webapps directory.

+        <br>For more info, Please visit the <a href="config/cluster-deployer.html">reference documentation</a>

+    </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>

+          &lt;ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/&gt;

+        &lt;/Cluster&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+        Since the SimpleTcpCluster itself is a sender and receiver of the Channel object, components can register themselves as listeners to

+        the SimpleTcpCluster. The listener above <code>ClusterSessionListener</code> listens for DeltaManager replication messages

+        and applies the deltas to the manager that in turn applies it to the session.

+        <br>For more info, Please visit the <a href="config/cluster-listener.html">reference documentation</a>

+    </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="Cluster Architecture"><!--()--></a><a name="Cluster_Architecture"><strong>Cluster Architecture</strong></a></font></td></tr><tr><td><blockquote>

+

+<p><b>Component Levels:</b>

+<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>

+         Server

+           |

+         Service

+           |

+         Engine

+           |  \

+           |  --- Cluster --*

+           |

+         Host

+           |

+         ------

+        /      \

+     Cluster    Context(1-N)

+        |             \

+        |             -- Manager

+        |                   \

+        |                   -- DeltaManager

+        |                   -- BackupManager

+        |

+     ---------------------------

+        |                       \

+      Channel                    \

+    ----------------------------- \

+        |                          \

+     Interceptor_1 ..               \

+        |                            \

+     Interceptor_N                    \

+    -----------------------------      \

+     |          |         |             \

+   Receiver    Sender   Membership       \

+                                         -- Valve

+                                         |      \

+                                         |       -- ReplicationValve

+                                         |       -- JvmRouteBinderValve

+                                         |

+                                         -- LifecycleListener

+                                         |

+                                         -- ClusterListener

+                                         |      \

+                                         |       -- ClusterSessionListener

+                                         |       -- JvmRouteSessionIDBinderListener

+                                         |

+                                         -- Deployer

+                                                \

+                                                 -- FarmWarDeployer

+

+

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="How it Works"><!--()--></a><a name="How_it_Works"><strong>How it Works</strong></a></font></td></tr><tr><td><blockquote>

+<p>To make it easy to understand how clustering works, We are gonna take you through a series of scenarios.

+   In the scenario we only plan to use two tomcat instances <code>TomcatA</code> and <code>TomcatB</code>.

+   We will cover the following sequence of events:</p>

+

+<ol>

+<li><code>TomcatA</code> starts up</li>

+<li><code>TomcatB</code> starts up (Wait that TomcatA start is complete)</li>

+<li><code>TomcatA</code> receives a request, a session <code>S1</code> is created.</li>

+<li><code>TomcatA</code> crashes</li>

+<li><code>TomcatB</code> receives a request for session <code>S1</code></li>

+<li><code>TomcatA</code> starts up</li>

+<li><code>TomcatA</code> receives a request, invalidate is called on the session (<code>S1</code>)</li>

+<li><code>TomcatB</code> receives a request, for a new session (<code>S2</code>)</li>

+<li><code>TomcatA</code> The session <code>S2</code> expires due to inactivity.</li>

+</ol>

+

+<p>Ok, now that we have a good sequence, we will take you through exactly what happens in the session repliction code</p>

+

+<ol>

+<li><b><code>TomcatA</code> starts up</b>

+    <p>

+        Tomcat starts up using the standard start up sequence. When the Host object is created, a cluster object is associated with it.

+        When the contexts are parsed, if the distributable element is in place in web.xml

+        Tomcat asks the Cluster class (in this case <code>SimpleTcpCluster</code>) to create a manager

+        for the replicated context. So with clustering enabled, distributable set in web.xml

+        Tomcat will create a <code>DeltaManager</code> for that context instead of a <code>StandardManager</code>.

+        The cluster class will start up a membership service (multicast) and a replication service (tcp unicast).

+        More on the architecture further down in this document.

+    </p><p></p>

+</li>

+<li><b><code>TomcatB</code> starts up</b>

+    <p>

+        When TomcatB starts up, it follows the same sequence as TomcatA did with one exception.

+        The cluster is started and will establish a membership (TomcatA,TomcatB).

+        TomcatB will now request the session state from a server that already exists in the cluster,

+        in this case TomcatA. TomcatA responds to the request, and before TomcatB starts listening

+        for HTTP requests, the state has been transferred from TomcatA to TomcatB.

+        In case TomcatA doesn't respond, TomcatB will time out after 60 seconds, and issue a log

+        entry. The session state gets transferred for each web application that has distributable in

+        its web.xml. Note: To use session replication efficiently, all your tomcat instances should be

+        configured the same.

+    </p><p></p>

+</li>

+<li><B><code>TomcatA</code> receives a request, a session <code>S1</code> is created.</B>

+    <p>

+        The request coming in to TomcatA is treated exactly the same way as without session replication.

+        The action happens when the request is completed, the <code>ReplicationValve</code> will intercept

+        the request before the response is returned to the user.

+        At this point it finds that the session has been modified, and it uses TCP to replicata the

+        session to TomcatB. Once the serialized data has been handed off to the operating systems TCP logic,

+        the request returns to the user, back through the valve pipeline.

+        For each request the entire session is replicated, this allows code that modifies attributes

+        in the session without calling setAttribute or removeAttribute to be replicated.

+        a useDirtyFlag configuration parameter can be used to optimize the number of times

+        a session is replicated.

+    </p><p></p>

+

+</li>

+<li><b><code>TomcatA</code> crashes</b>

+    <p>

+        When TomcatA crashes, TomcatB receives a notification that TomcatA has dropped out

+        of the cluster. TomcatB removes TomcatA from its membership list, and TomcatA will no longer

+        be notified of any changes that occurs in TomcatB.

+        The load balancer will redirect the requests from TomcatA to TomcatB and all the sessions

+        are current.

+    </p><p></p>

+</li>

+<li><b><code>TomcatB</code> receives a request for session <code>S1</code></b>

+    <p>Nothing exciting, TomcatB will process the request as any other request.

+    </p><p></p>

+</li>

+<li><b><code>TomcatA</code> starts up</b>

+    <p>Upon start up, before TomcatA starts taking new request and making itself

+    available to it will follow the start up sequence described above 1) 2).

+    It will join the cluster, contact TomcatB for the current state of all the sessions.

+    And once it receives the session state, it finishes loading and opens its HTTP/mod_jk ports.

+    So no requests will make it to TomcatA until it has received the session state from TomcatB.

+    </p><p></p>

+</li>

+<li><b><code>TomcatA</code> receives a request, invalidate is called on the session (<code>S1</code>)</b>

+    <p>The invalidate is call is intercepted, and the session is queued with invalidated sessions.

+        When the request is complete, instead of sending out the session that has changed, it sends out

+        an "expire" message to TomcatB and TomcatB will invalidate the session as well.

+    </p><p></p>

+

+</li>

+<li><b><code>TomcatB</code> receives a request, for a new session (<code>S2</code>)</b>

+    <p>Same scenario as in step 3)

+    </p><p></p>

+

+

+</li>

+<li><code>TomcatA</code> The session <code>S2</code> expires due to inactivity.

+    <p>The invalidate is call is intercepted the same was as when a session is invalidated by the user,

+       and the session is queued with invalidated sessions.

+       At this point, the invalidet session will not be replicated across until

+       another request comes through the system and checks the invalid queue.

+    </p><p></p>

+</li>

+</ol>

+

+<p>Phuuuhh! :)</p>

+

+<p><b>Membership</b>

+    Clustering membership is established using very simple multicast pings.

+    Each Tomcat instance will periodically send out a multicast ping,

+    in the ping message the instance will broad cast its IP and TCP listen port

+    for replication.

+    If an instance has not received such a ping within a given timeframe, the

+    member is considered dead. Very simple, and very effective!

+    Of course, you need to enable multicasting on your system.

+</p>

+

+<p><b>TCP Replication</b>

+    Once a multicast ping has been received, the member is added to the cluster

+    Upon the next replication request, the sending instance will use the host and

+    port info and establish a TCP socket. Using this socket it sends over the serialized data.

+    The reason I choose TCP sockets is because it has built in flow control and guaranteed delivery.

+    So I know, when I send some data, it will make it there :)

+</p>

+

+<p><b>Distributed locking and pages using frames</b>

+    Tomcat does not keep session instances in sync across the cluster.

+    The implementation of such logic would be to much overhead and cause all

+    kinds of problems. If your client accesses the same session

+    simultanously using multiple requests, then the last request

+    will override the other sessions in the cluster.

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Monitoring your Cluster with JMX"><!--()--></a><a name="Monitoring_your_Cluster_with_JMX"><strong>Monitoring your Cluster with JMX</strong></a></font></td></tr><tr><td><blockquote>

+<p>Monitoring is a very important question when you use a cluster. Some of the cluster objects are JMX MBeans </p>

+<p>Add the following parameter to your startup script with Java 5:

+<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>

+set CATALINA_OPTS=\

+-Dcom.sun.management.jmxremote \

+-Dcom.sun.management.jmxremote.port=%my.jmx.port% \

+-Dcom.sun.management.jmxremote.ssl=false \

+-Dcom.sun.management.jmxremote.authenticate=false

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+List of Cluster Mbeans<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Name</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">MBean ObjectName - Engine</th>

+    <th align="center" bgcolor="aqua">MBean ObjectName - Host</th>

+  </tr>

+

+  <tr>

+    <td>Cluster</td>

+    <td>The complete cluster element</td>

+    <td><code>type=Cluster</code></td>

+    <td><code>type=Cluster,host=${HOST}</code></td>

+  </tr>

+

+  <tr>

+    <td>DeltaManager</td>

+    <td>This manager control the sessions and handle session replication </td>

+    <td><code>type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}</code></td>

+    <td><code>type=Manager,context=${APP.CONTEXT.PATH}, host=${HOST}</code></td>

+  </tr>

+

+  <tr>

+    <td>FarmWarDeployer</td>

+    <td>Manages the process of deploying an application to all nodes in the cluster</td>

+    <td>Not supported</td>

+    <td><code>type=Cluster, host=${HOST}, component=deployer</code></td>

+  </tr>

+

+  <tr>

+    <td>Member</td>

+    <td>Represents a node in the cluster</td>

+    <td>type=Cluster, component=member, name=${NODE_NAME}</td>

+    <td><code>type=Cluster, host=${HOST}, component=member, name=${NODE_NAME}</code></td>

+  </tr>

+

+  <tr>

+    <td>ReplicationValve</td>

+    <td>This valve control the replication to the backup nodes</td>

+    <td><code>type=Valve,name=ReplicationValve</code></td>

+    <td><code>type=Valve,name=ReplicationValve,host=${HOST}</code></td>

+  </tr>

+

+  <tr>

+    <td>JvmRouteBinderValve</td>

+    <td>This is a cluster fallback valve to change the Session ID to the current tomcat jvmroute.</td>

+    <td><code>type=Valve,name=JvmRouteBinderValve,

+              context=${APP.CONTEXT.PATH}</code></td>

+    <td><code>type=Valve,name=JvmRouteBinderValve,host=${HOST},

+              context=${APP.CONTEXT.PATH}</code></td>

+  </tr>

+

+</table>

+</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="FAQ"><strong>FAQ</strong></a></font></td></tr><tr><td><blockquote>

+<p>Please see <a href="http://wiki.apache.org/tomcat/FAQ/Clustering">the clustering section of the FAQ</a>.</p>

+</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="/tomcat-7.0-doc/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/cluster-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/comments.html b/webapps/docs/comments.html
new file mode 100644
index 0000000..b1ceaa3
--- /dev/null
+++ b/webapps/docs/comments.html
@@ -0,0 +1,122 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Documentation User Comments</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Documentation User Comments</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The Tomcat documentation integrates the

+<a href="https://comments.apache.org/help.html">Apache Comments System</a>.

+It allows users to add comments to most documentation pages. The comments

+section can be found at the end of each page.</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="Allowed Content"><!--()--></a><a name="Allowed_Content"><strong>Allowed Content</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Please use the Apache Comments System responsibly. We can only provide

+this service to the community as long as it isn't misused.</p>

+

+<p>The comments are not for general Q&amp;A.

+Comments should be pointed towards suggestions on improving the documentation

+or server. Questions on how to use Apache Tomcat should be directed

+to our <a href="http://tomcat.apache.org/lists.html">mailing lists</a>.</p>

+

+<p>Comments may be removed by moderators if they are either

+implemented or considered invalid/off-topic.</p>

+

+<p>HTML is not allowed in comments, and will just display as raw source code

+if attempted. Links that do not point to an Apache site (*.apache.org) will

+need approval by a moderator before the comment is visible to regular visitors.</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="License"><strong>License</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Any submitted comments must be contributed under the terms of the

+<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</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="Verified Users"><!--()--></a><a name="Verified_Users"><strong>Verified Users</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Verified users gain the Apache feather next to their name,

+and may post comments with links in them without requiring approval

+by a moderator before the comments are shown. Being a verified user

+in itself does not give you moderating rights. If you are interested

+in becoming a verified user, please contact us on the

+<a href="http://tomcat.apache.org/lists.html#tomcat-users">users mailing list</a>.</p>

+

+<p>All ASF committers are automatically verified users.</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="Moderators"><strong>Moderators</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Moderators are allowed to mark comments as "Resolved", "Invalid"

+or "Sticky", remove marks, approve comments e.g. if they contain

+a link, and delete comments. Moderators can also subscribe to new

+comments and comment updates and use the dashboard to gain some

+overview over all comments of a site.</p>

+

+<p>To use the moderation features, you need to login to the comments

+system. Furthermore you will need to allow cookies to be set for

+comments.apache.org (this is done using a secure https cookie). Once

+logged in as a moderator you will see additional moderation

+options attached to each comment.</p>

+

+<p>If you are a long time follower of the Apache Tomcat projects

+and you are interested in becoming a moderator, please contact us on the

+<a href="http://tomcat.apache.org/lists.html#tomcat-users">users mailing list</a>.</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="Privacy Policy"><!--()--></a><a name="Privacy_Policy"><strong>Privacy Policy</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>No data except what you personally submit is kept on record.

+A cookie is used to keep track of moderators and other people

+who wish to create an account to avoid having to enter their

+credentials whenever they wish to post a comment.</p>

+

+<p>To prevent spam and unsolicited comments, we use a digest of

+visitors' IPs to keep track of comments posted by them.</p>

+

+<p>Entering an email address when you post a comment is completely

+optional, and will not be shared with anyone. If you enter an

+email address, it will be used to notify you when someone posts

+a reply to one of your comments, provided you have registered

+an account and validated your email address.</p>

+

+</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="/tomcat-7.0-doc/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/comments.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/ajp.html b/webapps/docs/config/ajp.html
new file mode 100644
index 0000000..e2ee9c0
--- /dev/null
+++ b/webapps/docs/config/ajp.html
@@ -0,0 +1,568 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The AJP Connector</title><meta name="author" content="Remy Maucherat"><meta name="author" content="Yoav Shapira"><meta name="author" content="Andrew R. Jaquith"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The AJP Connector</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementations">Standard Implementations</a></li><li><a href="#Java_TCP_socket_attributes">Java TCP socket attributes</a></li><li><a href="#NIO_specific_configuration">NIO specific configuration</a></li><li><a href="#APR/native_specific_configuration">APR/native specific configuration</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Proxy_Support">Proxy Support</a></li><li><a href="#Connector_Comparison">Connector Comparison</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>AJP Connector</strong> element represents a

+  <strong>Connector</strong> component that communicates with a web

+  connector via the <code>AJP</code> protocol.  This is used for cases

+  where you wish to invisibly integrate Tomcat into an existing (or new)

+  Apache installation, and you want Apache to handle the static content

+  contained in the web application, and/or utilize Apache's SSL

+  processing.</p>

+

+  <p>This connector supports load balancing when used in conjunction with

+  the <code>jvmRoute</code> attribute of the

+  <a href="engine.html">Engine</a>.</p>

+

+  <p>The native connectors supported with this Tomcat release are:

+    <ul>

+      <li>JK 1.2.x with any of the supported servers. See

+      <a href="http://tomcat.apache.org/connectors-doc/">the JK docs</a>

+      for details.</li>

+      <li>mod_proxy on Apache httpd 2.x (included by default in Apache HTTP

+      Server 2.2), with AJP enabled: see

+      <a href="http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html">the

+      httpd docs</a> for details.</li>

+    </ul>

+  </p>

+

+  <p><b>Other native connectors supporting AJP may work, but are no longer

+  supported.</b></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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>All implementations of <strong>Connector</strong>

+  support the following attributes:</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allowTrace</code></td><td align="left" valign="center">

+      <p>A boolean value which can be used to enable or disable the TRACE

+      HTTP method. If not specified, this attribute is set to false.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">asyncTimeout</code></td><td align="left" valign="center">

+      <p>The default timeout for asynchronous requests in milliseconds. If not

+      specified, this attribute is set to 10000 (10 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">enableLookups</code></td><td align="left" valign="center">

+      <p>Set to <code>true</code> if you want calls to

+      <code>request.getRemoteHost()</code> to perform DNS lookups in

+      order to return the actual host name of the remote client.  Set

+      to <code>false</code> to skip the DNS lookup and return the IP

+      address in String form instead (thereby improving performance).

+      By default, DNS lookups are disabled.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxHeaderCount</code></td><td align="left" valign="center">

+      <p>The maximum number of headers in a request that are allowed by the

+      container. A request that contains more headers than the specified limit

+      will be rejected. A value of less than 0 means no limit.

+      If not specified, a default of 100 is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxParameterCount</code></td><td align="left" valign="center">

+      <p>The maximum number of parameter and value pairs (GET plus POST) which

+      will be automatically parsed by the container. Parameter and value pairs

+      beyond this limit will be ignored. A value of less than 0 means no limit.

+      If not specified, a default of 10000 is used. Note that

+      <code>FailedRequestFilter</code> <a href="filter.html">filter</a> can be

+      used to reject requests that hit the limit.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxPostSize</code></td><td align="left" valign="center">

+      <p>The maximum size in bytes of the POST which will be handled by

+      the container FORM URL parameter parsing. The limit can be disabled by

+      setting this attribute to a value less than or equal to 0.

+      If not specified, this attribute is set to 2097152 (2 megabytes).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSavePostSize</code></td><td align="left" valign="center">

+      <p>The maximum size in bytes of the POST which will be saved/buffered by

+      the container during FORM or CLIENT-CERT authentication. For both types

+      of authentication, the POST will be saved/buffered before the user is

+      authenticated. For CLIENT-CERT authentication, the POST is buffered for

+      the duration of the SSL handshake and the buffer emptied when the request

+      is processed. For FORM authentication the POST is saved whilst the user

+      is re-directed to the login form and is retained until the user

+      successfully authenticates or the session associated with the

+      authentication request expires. The limit can be disabled by setting this

+      attribute to -1. Setting the attribute to zero will disable the saving of

+      POST data during authentication. If not specified, this attribute is set

+      to 4096 (4 kilobytes).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">parseBodyMethods</code></td><td align="left" valign="center">

+      <p>A comma-separated list of HTTP methods for which request

+      bodies will be parsed for request parameters identically

+      to POST. This is useful in RESTful applications that want to

+      support POST-style semantics for PUT requests.

+      Note that any setting other than <code>POST</code> causes Tomcat

+      to behave in a way that goes against the intent of the servlet

+      specification.

+      The HTTP method TRACE is specifically forbidden here in accordance

+      with the HTTP specification.

+      The default is <code>POST</code></p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

+      <p>The TCP port number on which this <strong>Connector</strong>

+      will create a server socket and await incoming connections.  Your

+      operating system will allow only one server application to listen

+      to a particular port number on a particular IP address. If the special

+      value of 0 (zero) is used, then Tomcat will select a free port at random

+      to use for this connector. This is typically only useful in embedded and

+      testing applications.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocol</code></td><td align="left" valign="center">

+      <p>Sets the protocol to handle incoming traffic. To configure an AJP

+        connector this must be specified. If no value for protocol is provided,

+        an <a href="http.html">HTTP connector</a> rather than an AJP connector

+        will be configured.<br>

+        The standard protocol value for an AJP connector is <code>AJP/1.3</code>

+        which uses an auto-switching mechanism to select either a Java based

+        connector or an APR/native based connector. If the

+        <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code> (on most unix

+        systems) environment variables contain the Tomcat native library, the

+        native/APR connector will be used. If the native library cannot be

+        found, the Java based connector will be used.<br>

+        To use an explicit protocol rather than rely on the auto-switching

+        mechanism described above, the following values may be used:<br>

+        <code>org.apache.coyote.ajp.AjpProtocol</code>

+        - blocking Java connector<br>

+        <code>org.apache.coyote.ajp.AjpNioProtocol</code>

+        - non blocking Java connector.<br>

+        <code>org.apache.coyote.ajp.AjpAprProtocol</code>

+        - the APR/native connector.<br>

+        Custom implementations may also be used.<br>

+        Take a look at our <a href="#Connector Comparison">Connector

+        Comparison</a> chart.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyName</code></td><td align="left" valign="center">

+      <p>If this <strong>Connector</strong> is being used in a proxy

+      configuration, configure this attribute to specify the server name

+      to be returned for calls to <code>request.getServerName()</code>.

+      See <a href="#Proxy Support">Proxy Support</a> for more

+      information.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyPort</code></td><td align="left" valign="center">

+      <p>If this <strong>Connector</strong> is being used in a proxy

+      configuration, configure this attribute to specify the server port

+      to be returned for calls to <code>request.getServerPort()</code>.

+      See <a href="#Proxy Support">Proxy Support</a> for more

+      information.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">redirectPort</code></td><td align="left" valign="center">

+      <p>If this <strong>Connector</strong> is supporting non-SSL

+      requests, and a request is received for which a matching

+      <code>&lt;security-constraint&gt;</code> requires SSL transport,

+      Catalina will automatically redirect the request to the port

+      number specified here.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">scheme</code></td><td align="left" valign="center">

+      <p>Set this attribute to the name of the protocol you wish to have

+      returned by calls to <code>request.getScheme()</code>.  For

+      example, you would set this attribute to "<code>https</code>"

+      for an SSL Connector.  The default value is "<code>http</code>".

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">secure</code></td><td align="left" valign="center">

+      <p>Set this attribute to <code>true</code> if you wish to have

+      calls to <code>request.isSecure()</code> to return <code>true</code>

+      for requests received by this Connector. You would want this on an

+      SSL Connector or a non SSL connector that is receiving data from a

+      SSL accelerator, like a crypto card, a SSL appliance or even a webserver.

+      The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">URIEncoding</code></td><td align="left" valign="center">

+      <p>This specifies the character encoding used to decode the URI bytes,

+      after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useBodyEncodingForURI</code></td><td align="left" valign="center">

+      <p>This specifies if the encoding specified in contentType should be used

+      for URI query parameters, instead of using the URIEncoding. This

+      setting is present for compatibility with Tomcat 4.1.x, where the

+      encoding specified in the contentType, or explicitly set using

+      Request.setCharacterEncoding method was also used for the parameters from

+      the URL. The default value is <code>false</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useIPVHosts</code></td><td align="left" valign="center">

+      <p>Set this attribute to <code>true</code> to cause Tomcat to use

+      the IP address passed by the native web server to determine the Host

+      to send the request to.  The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">xpoweredBy</code></td><td align="left" valign="center">

+      <p>Set this attribute to <code>true</code> to cause Tomcat to advertise

+      support for the Servlet specification using the header recommended in the

+      specification.  The default value is <code>false</code>.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementations"><!--()--></a><a name="Standard_Implementations"><strong>Standard Implementations</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>To use AJP, you must specify the protocol attribute (see above).</p>

+

+  <p>The standard AJP connectors (BIO, NIO and APR/native) all support the

+  following attributes in addition to the common Connector attributes listed

+  above.</p>

+

+  <p><strong><font color="red">WARNING</font></strong>: The NIO connector for

+  AJP is experimental.</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">acceptCount</code></td><td align="left" valign="center">

+      <p>The maximum queue length for incoming connection requests when

+      all possible request processing threads are in use.  Any requests

+      received when the queue is full will be refused.  The default

+      value is 100.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadCount</code></td><td align="left" valign="center">

+      <p>The number of threads to be used to accept connections. Increase this

+      value on a multi CPU machine, although you would never really need more

+      than <code>2</code>. Also, with a lot of non keep alive connections, you

+      might want to increase this value as well. Default value is

+      <code>1</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadPriority</code></td><td align="left" valign="center">

+      <p>The priority of the acceptor threads. The threads used to accept

+      new connections. The default value is <code>5</code> (the value of the

+      <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+      for the <code>java.lang.Thread</code> class for more details on what

+      this priority means.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

+      <p>For servers with more than one IP address, this attribute

+      specifies which address will be used for listening on the specified

+      port.  By default, this port will be used on all IP addresses

+      associated with the server. A value of <code>127.0.0.1</code>

+      indicates that the Connector will only listen on the loopback

+      interface.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">bindOnInit</code></td><td align="left" valign="center">

+      <p>Controls when the socket used by the connector is bound. By default it

+      is bound when the connector is initiated and unbound when the connector is

+      destroyed. If set to <code>false</code>, the socket will be bound when the

+      connector is started and unbound when it is stopped.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">clientCertProvider</code></td><td align="left" valign="center">

+      <p>When client certificate information is presented in a form other than

+      instances of <code>java.security.cert.X509Certificate</code> it needs to

+      be converted before it can be used and this property controls which JSSE

+      provider is used to perform the conversion. For example it is used with

+      the AJP connectors, the <a href="http.html">HTTP APR connector</a> and

+      with the <a href="valve.html#SSL_Authenticator_Valve">

+      org.apache.catalina.valves.SSLValve</a>.If not specified, the default

+      provider will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionLinger</code></td><td align="left" valign="center">

+      <p>The number of seconds during which the sockets used by this

+      <strong>Connector</strong> will linger when they are closed.

+      If not specified, the JVM default will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionTimeout</code></td><td align="left" valign="center">

+      <p>The number of milliseconds this <strong>Connector</strong> will wait,

+      after accepting a connection, for the request URI line to be

+      presented.  The default value for AJP protocol connectors

+      is <code>-1</code> (i.e. infinite).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">executor</code></td><td align="left" valign="center">

+      <p>A reference to the name in an <a href="executor.html">Executor</a>

+      element. If this attribute is set, and the named executor exists, the

+      connector will use the executor, and all the other thread attributes will

+      be ignored. Note that if a shared executor is not specified for a

+      connector then the connector will use a private, internal executor to

+      provide the thread pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTimeout</code></td><td align="left" valign="center">

+      <p>The number of milliseconds this <strong>Connector</strong> will wait for

+       another AJP request before closing the connection.

+       The default value is to use the value that has been set for the

+       connectionTimeout attribute.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxConnections</code></td><td align="left" valign="center">

+      <p>The maximum number of connections that the server will accept and

+      process at any given time. When this number has been reached, the server

+      will not accept any more connections until the number of connections

+      falls below this value. The operating system may still accept

+      connections based on the <code>acceptCount</code> setting. Default value

+      varies by connector type. For BIO the default is the value of

+      <strong>maxThreads</strong> unless an <a href="executor.html">Executor</a>

+      is used in which case the default will be the value of maxThreads from the

+      executor. For NIO the default is <code>10000</code>.

+      For APR/native, the default is <code>8192</code>.</p>

+      <p>Note that for APR/native on Windows, the configured value will be

+      reduced to the highest multiple of 1024 that is less than or equal to

+      maxConnections. This is done for performance reasons.<br>

+      If set to a value of -1, the maxConnections feature is disabled 

+      and connections are not counted.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

+      <p>The maximum number of request processing threads to be created

+      by this <strong>Connector</strong>, which therefore determines the

+      maximum number of simultaneous requests that can be handled.  If

+      not specified, this attribute is set to 200. If an executor is associated

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minSpareThreads</code></td><td align="left" valign="center">

+      <p>The minimum number of threads always kept running. If not specified,

+      the default of <code>10</code> is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">packetSize</code></td><td align="left" valign="center">

+      <p>This attribute sets the maximum AJP packet size in Bytes. The maximum

+      value is 65536. It should be the same as the <code>max_packet_size</code>

+      directive configured for mod_jk. Normally it is not necessary to change

+      the maximum packet size. Problems with the default value have been

+      reported when sending certificates or certificate chains. The default

+      value is 8192. If set to less than 8192 then the setting will ignored and

+      the default value of 8192 used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">processorCache</code></td><td align="left" valign="center">

+      <p>The protocol handler caches Processor objects to speed up performance.

+      This setting dictates how many of these objects get cached.

+      <code>-1</code> means unlimited, default is <code>200</code>. If not using

+      Servlet 3.0 asynchronous processing, a good default is to use the same as

+      the maxThreads setting. If using Servlet 3.0 asynchronous processing, a

+      good default is to use the larger of maxThreads and the maximum number of

+      expected concurrent requests (synchronous and asynchronous).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">requiredSecret</code></td><td align="left" valign="center">

+      <p>Only requests from workers with this secret keyword will be accepted.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

+      <p>If set to <code>true</code>, the TCP_NO_DELAY option will be

+      set on the server socket, which improves performance under most

+      circumstances.  This is set to <code>true</code> by default.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

+      <p>The priority of the request processing threads within the JVM.

+      The default value is <code>5</code> (the value of the

+      <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+      for the <code>java.lang.Thread</code> class for more details on what

+      this priority means.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tomcatAuthentication</code></td><td align="left" valign="center">

+      <p>If set to <code>true</code>, the authentication will be done in Tomcat.

+      Otherwise, the authenticated principal will be propagated from the native

+      webserver and used for authorization in Tomcat.

+      The default value is <code>true</code>.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Java TCP socket attributes"><!--()--></a><a name="Java_TCP_socket_attributes"><strong>Java TCP socket attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The BIO and NIO implementation support the following Java TCP socket

+    attributes in addition to the common Connector and HTTP attributes listed

+    above.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.rxBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.txBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.tcpNoDelay</code></td><td align="left" valign="center">

+        <p>(bool)This is equivalent to standard attribute

+        <strong>tcpNoDelay</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soKeepAlive</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket's keep alive setting

+        (SO_KEEPALIVE). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.ooBInline</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket OOBINLINE setting. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soReuseAddress</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets reuse address option

+        (SO_REUSEADDR). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerOn</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets so linger option (SO_LINGER).

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &gt;=0 is equivalent to setting this to <code>true</code>.

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &lt;0 is equivalent to setting this to <code>false</code>.

+        Both this attribute and <code>soLingerTime</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerTime</code></td><td align="left" valign="center">

+        <p>(int)Value in seconds for the sockets so linger option (SO_LINGER).

+        This is equivalent to standard attribute

+        <strong>connectionLinger</strong>.

+        Both this attribute and <code>soLingerOn</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soTimeout</code></td><td align="left" valign="center">

+        <p>This is equivalent to standard attribute

+        <strong>connectionTimeout</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceConnectionTime</code></td><td align="left" valign="center">

+        <p>(int)The first value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceLatency</code></td><td align="left" valign="center">

+        <p>(int)The second value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceBandwidth</code></td><td align="left" valign="center">

+        <p>(int)The third value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.unlockTimeout</code></td><td align="left" valign="center">

+        <p>(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself.

+           The default value is <code>250</code> and the value is in milliseconds</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="NIO specific configuration"><!--()--></a><a name="NIO_specific_configuration"><strong>NIO specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the NIO connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.directBuffer</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped

+        ByteBuffers. Default is <code>false</code>.<br>

+        When you are using direct buffers, make sure you allocate the

+        appropriate amount of memory for the direct memory space. On Sun's JDK

+        that would be something like <code>-XX:MaxDirectMemorySize=256m</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appReadBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a read ByteBuffer. This attribute controls the size of this buffer. By

+        default this read buffer is sized at <code>8192</code> bytes. For lower

+        concurrency, you can increase this to buffer more data. For an extreme

+        amount of keep alive connections, decrease this number or increase your

+        heap size.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appWriteBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a write ByteBuffer. This attribute controls the size of this buffer. By

+        default this write buffer is sized at <code>8192</code> bytes. For low

+        concurrency you can increase this to buffer more response data. For an

+        extreme amount of keep alive connections, decrease this number or

+        increase your heap size.<br>

+        The default value here is pretty low, you should up it if you are not

+        dealing with tens of thousands concurrent connections.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPool</code></td><td align="left" valign="center">

+        <p>(int)The NIO connector uses a class called NioChannel that holds

+        elements linked to a socket. To reduce garbage collection, the NIO

+        connector caches these channel objects. This value specifies the size of

+        this cache. The default value is <code>500</code>, and represents that

+        the cache will hold 500 NioChannel objects. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPoolSize</code></td><td align="left" valign="center">

+        <p>(int)The NioChannel pool can also be size based, not used object

+        based. The size is calculated as follows:<br>

+        NioChannel

+        <code>buffer size = read buffer size + write buffer size</code><br>

+        SecureNioChannel <code>buffer size = application read buffer size +

+        application write buffer size + network read buffer size +

+        network write buffer size</code><br>

+        The value is in bytes, the default value is <code>1024*1024*100</code>

+        (100MB).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.processorCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.keyCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache KeyAttachment objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.eventCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache PollerEvent objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max selectors to be used in the pool, to reduce selector

+        contention. Use this option when the command line

+        <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set

+        to false. Default value is <code>200</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSpareSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max spare selectors to be used in the pool, to reduce

+        selector contention. When a selector is returned to the pool, the system

+        can decide to keep it or let it be GC'd. Use this option when the

+        command line <code>org.apache.tomcat.util.net.NioSelectorShared</code>

+        value is set to false. Default value is <code>-1</code> (unlimited).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">command-line-options</code></td><td align="left" valign="center">

+        <p>The following command line options are available for the NIO

+        connector:<br>

+        <code>-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false</code>

+        - default is <code>true</code>. Set this value to <code>false</code> if you wish to

+        use a selector for each thread. When you set it to <code>false</code>, you can

+        control the size of the pool of selectors by using the

+        <strong>selectorPool.maxSelectors</strong> attribute.</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR/native specific configuration"><!--()--></a><a name="APR/native_specific_configuration"><strong>APR/native specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The APR/native implementation supports the following attributes in

+    addition to the common Connector and AJP attributes listed above.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">pollTime</code></td><td align="left" valign="center">

+        <p>Duration of a poll call in microseconds. Lowering this value will

+        slightly decrease latency of connections being kept alive in some cases

+        , but will use more CPU as more poll calls are being made. The default

+        value is 2000 (2ms).

+        </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerSize</code></td><td align="left" valign="center">

+      <p>Amount of sockets that the poller responsible for polling kept alive

+      connections can hold at a given time. Extra connections will be closed

+      right away. The default value is 8192, corresponding to 8192 keep-alive

+      connections.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>None at this time.</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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Proxy Support"><!--()--></a><a name="Proxy_Support"><strong>Proxy Support</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <code>proxyName</code> and <code>proxyPort</code> attributes can

+  be used when Tomcat is run behind a proxy server.  These attributes

+  modify the values returned to web applications that call the

+  <code>request.getServerName()</code> and <code>request.getServerPort()</code>

+  methods, which are often used to construct absolute URLs for redirects.

+  Without configuring these attributes, the values returned would reflect

+  the server name and port on which the connection from the proxy server

+  was received, rather than the server name and port to whom the client

+  directed the original request.</p>

+

+  <p>For more information, see the

+  <a href="../proxy-howto.html">Proxy Support HOW-TO</a>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector Comparison"><!--()--></a><a name="Connector_Comparison"><strong>Connector Comparison</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Below is a small chart that shows how the connectors differentiate.</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>

+                       Java Blocking Connector   Java Nio Blocking Connector   APR/native Connector

+                                 BIO                         NIO                       APR

+    Classname                AjpProtocol               AjpNioProtocol           AjpAprProtocol

+    Tomcat Version           3.x onwards                 7.x onwards              5.5.x onwards

+    Support Polling              NO                          YES                       YES

+    Polling Size                 N/A                   maxConnections             maxConnections

+    Read Request Headers      Blocking                  Sim Blocking                   Blocking

+    Read Request Body         Blocking                  Sim Blocking                   Blocking

+    Write Response            Blocking                  Sim Blocking                   Blocking

+    Wait for next Request     Blocking                  Non Blocking               Non Blocking

+    Max Connections        maxConnections              maxConnections             maxConnections

+

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><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="/tomcat-7.0-doc/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/config/ajp.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-channel.html b/webapps/docs/config/cluster-channel.html
new file mode 100644
index 0000000..30f6c07
--- /dev/null
+++ b/webapps/docs/config/cluster-channel.html
@@ -0,0 +1,105 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Cluster Channel object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Channel object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  The cluster channel is the main component of a small framework we've nicknamed Apache Tribes.<br>

+  The channel manages a set of sub components and together they create a group communication framework.<br>

+  This framework is then used internally by the components that need to send messages between different Tomcat instances.

+  <br>

+  A few examples of these components would be the SimpleTcpCluster that does the messaging for the DeltaManager,

+  or the BackupManager that uses a different replication strategy. The ReplicatedContext object does also

+  use the channel object to communicate context attribute changes.

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+  <p><b><a href="cluster-membership.html">Channel/Membership</a>:</b> <br>

+    The Membership component is responsible for auto discovering new nodes in the cluster

+    and also to provide for notifications for any nodes that have not responded with a heartbeat.

+    The default implementation uses multicast.<br>

+    In the membership component you configure how your nodes, aka. members, are to be discovered and/or

+    divided up.

+    You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

+  </p>

+  <p><b><a href="cluster-sender.html">Channel/Sender</a>:</b> <br>

+    The Sender component manages all outbound connections and data messages that are sent

+    over the network from one node to another.

+    This component allows messages to be sent in parallel.

+    The default implementation uses TCP client sockets, and socket tuning for outgoing messages are

+    configured here.<br>

+    You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

+  </p>

+  <p><b><a href="cluster-sender.html#transport">Channel/Sender/Transport</a>:</b> <br>

+    The Transport component is the bottom IO layer for the sender component.

+    The default implementation uses non-blocking TCP client sockets.<br>

+    You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

+  </p>

+  <p><b><a href="cluster-receiver.html">Channel/Receiver</a>:</b> <br>

+    The receiver component listens for messages from other nodes.

+    Here you will configure the cluster thread pool, as it will dispatch incoming

+    messages to a thread pool for faster processing.

+    The default implementation uses non-blocking TCP server sockets.<br>

+    You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

+  </p>

+  <p><b><a href="cluster-interceptor.html">Channel/Interceptor</a>:</b> <br>

+    The channel will send messages through an interceptor stack. Because of this, you have the ability to

+    customize the way messages are sent and received, and even how membership is handled.<br>

+    You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

+  </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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+       The default value here is <code>org.apache.catalina.tribes.group.GroupChannel</code> and is

+       currently the only implementation available.

+    </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+

+

+</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="/tomcat-7.0-doc/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/config/cluster-channel.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-deployer.html b/webapps/docs/config/cluster-deployer.html
new file mode 100644
index 0000000..c1c6be6
--- /dev/null
+++ b/webapps/docs/config/cluster-deployer.html
@@ -0,0 +1,103 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Cluster Deployer object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Deployer object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#org.apache.catalina.ha.deploy.FarmWarDeployer">org.apache.catalina.ha.deploy.FarmWarDeployer</a><ol><li><a href="#Attributes">Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>The Farm War Deployer can deploy and undeploy web applications on the other

+  nodes in the cluster.</p>

+  <p><strong>Note: </strong>FarmWarDeployer can be configured at host level

+  cluster only.

+  </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="org.apache.catalina.ha.deploy.FarmWarDeployer"><strong>org.apache.catalina.ha.deploy.FarmWarDeployer</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        The cluster deployer class, currently only one is available,

+        <code>org.apache.catalina.ha.deploy.FarmWarDeployer.</code>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">deployDir</code></strong></td><td align="left" valign="center">

+        Deployment directory. This is the pathname of a directory where deploy

+        the web applications. You may specify an absolute pathname, or a

+        pathname that is relative to the $CATALINA_BASE directory. In the

+        current implementation, this attribute must be the same value as the

+        <strong>Host's appBase</strong>.

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">tempDir</code></strong></td><td align="left" valign="center">

+        The temporaryDirectory to store binary data when downloading a war from

+        the cluster. You may specify an absolute pathname, or a pathname that is

+        relative to the $CATALINA_BASE directory.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">watchDir</code></td><td align="left" valign="center">

+        This is the pathname of a directory where watch for changes(add/modify/remove)

+        of web applications. You may specify an absolute pathname, or a pathname

+        that is relative to the $CATALINA_BASE directory.

+        <strong>Note: </strong> if <strong>watchEnabled</strong> is false, this

+        attribute will have no effect.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">watchEnabled</code></td><td align="left" valign="center">

+        Set to true if you want to watch for changes of web applications.

+        Only when this attribute set to true, you can trigger a deploy/undeploy

+        of web applications. The flag's value defaults to false.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processDeployFrequency</code></td><td align="left" valign="center">

+        Frequency of the Farm watchDir check. Cluster wide deployment will be

+        done once for the specified amount of backgrondProcess calls (ie, the

+        lower the amount, the most often the checks will occur). The minimum

+        value is 1, and the default value is 2.

+        <strong>Note: </strong> if <strong>watchEnabled</strong> is false, this

+        attribute will have no effect.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxValidTime</code></td><td align="left" valign="center">

+        The maximum valid time(in seconds) of FileMessageFactory.

+        FileMessageFactory will be removed immediately after receiving the

+        complete WAR file but when failing to receive a FileMessage which was

+        sent dividing, FileMessageFactory will leak without being removed.

+        FileMessageFactory that is leaking will be automatically removed after

+        maxValidTime. If a negative value specified, FileMessageFactory will

+        never be removed. If the attribute is not provided, a default of 300

+        seconds (5 minutes) is used.

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/cluster-deployer.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-interceptor.html b/webapps/docs/config/cluster-interceptor.html
new file mode 100644
index 0000000..4454dd9
--- /dev/null
+++ b/webapps/docs/config/cluster-interceptor.html
@@ -0,0 +1,212 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Channel Interceptor object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Channel Interceptor object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Available_Interceptors">Available Interceptors</a></li><li><a href="#Static_Membership">Static Membership</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor_Attributes">org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.TcpFailureDetector_Attributes">org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes</a></li><li><a href="#org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor_Attributes">org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes</a></li><li><a href="#Nested_element_StaticMember_Attributes">Nested element StaticMember Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+  Apache Tribes supports an interceptor architecture to intercept both messages and membership notifications.

+  This architecture allows decoupling of logic and opens the way for some very kewl feature add ons.

+  </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="Available Interceptors"><!--()--></a><a name="Available_Interceptors"><strong>Available Interceptors</strong></a></font></td></tr><tr><td><blockquote>

+ <p>

+   <ul>

+    <li><code>org.apache.catalina.tribes.group.interceptors.TcpFailureDetector</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.NonBlockingCoordinator</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.OrderInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.SimpleCoordinator</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.TwoPhaseCommitInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.GzipInterceptor</code></li>

+    <li><code>org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor</code></li>

+   </ul>

+ </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="Static Membership"><!--()--></a><a name="Static_Membership"><strong>Static Membership</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+   In addition to dynamic discovery, Apache Tribes also supports static membership, with membership verification.

+   To achieve this add the <code>org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor</code>

+   underneath the <code>org.apache.catalina.tribes.group.interceptors.TcpFailureDetector</code> interceptor.

+   Inside the <code>StaticMembershipInterceptor</code> you can add the static members you wish to have.

+   The <code>TcpFailureDetector</code> will do a health check on the static members,and also monitor them for crashes

+   so they will have the same level of notification mechanism as the members that are automatically discovered.

+   <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>

+     &lt;Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor"&gt;

+       &lt;Member className="org.apache.catalina.tribes.membership.StaticMember"

+                  port="5678"

+                  securePort="-1"

+                  host="tomcat01.mydomain.com"

+                  domain="staging-cluster"

+                  uniqueId="{0,1,2,3,4,5,6,7,8,9}"/&gt;

+     &lt;/Interceptor&gt;

+

+   </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+       Required, as there is no default

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">optionFlag</code></td><td align="left" valign="center">

+       If you want the interceptor to trigger on certain message depending on the message's option flag,

+       you can setup the interceptors flag here.

+       The default value is <code>0</code>, meaning this interceptor will trigger on all messages.

+     </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">domain</code></strong></td><td align="left" valign="center">

+       The logical cluster domain that this Interceptor accepts.

+       Two different type of values are possible:<br>

+       1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes

+       using ISO-8859-1 encoding.<br>

+       2. byte array in string form, for example {216,123,12,3}<br>

+     </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+       Required, This dispatcher uses JDK 1.5 java.util.concurrent package

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">optionFlag</code></td><td align="left" valign="center">

+       The default and hard coded value is <code>8 (org.apache.catalina.tribes.Channel.SEND_OPTIONS_ASYNCHRONOUS)</code>.

+       The dispatcher will trigger on this value only, as it is predefined by Tribes.

+       The other attributes are inherited from its base class <code>org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor</code>.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

+       The maximum number of threads in this pool, default is 10.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSpareThreads</code></td><td align="left" valign="center">

+       The number of threads to keep in the pool, default is 2.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTime</code></td><td align="left" valign="center">

+       Maximum number of milliseconds of until Idle thread terminates. Default value is 5000(5 seconds).

+     </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+       Required, Same implementation as <code>MessageDispatch15Interceptor</code>, but with JDK 1.4 compliance.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">optionFlag</code></td><td align="left" valign="center">

+       The default and hard coded value is <code>8 (org.apache.catalina.tribes.Channel.SEND_OPTIONS_ASYNCHRONOUS)</code>.

+       The dispatcher will trigger on this value only, as it is predefined by Tribes.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysSend</code></td><td align="left" valign="center">

+       What behavior should be executed when the dispatch queue is full. If <code>true</code> (default), then the message is

+       is sent synchronously, if <code>false</code> an error is thrown.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxQueueSize</code></td><td align="left" valign="center">

+       Size in bytes of the dispatch queue, the default value is <code> 1024*1024*64 (64MB)</code> sets the maximum queue size for the dispatch queue

+       if the queue fills up, one can trigger the behavior, if <code>alwaysSend</code> is set to true, the message will be sent synchronously

+       if the flag is false, an error is thrown

+     </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.TcpFailureDetector Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">connectTimeout</code></td><td align="left" valign="center">

+       Specifies the timeout, in milliseconds, to use when attempting a TCP connection

+       to the suspect node. Default is 1000.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">performSendTest</code></td><td align="left" valign="center">

+       If true is set, send a test message to the suspect node. Default is true.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">performReadTest</code></td><td align="left" valign="center">

+       If true is set, read the response of the test message that sent. Default is false.

+       <strong>Note: </strong>if <code>performSendTest</code> is false, this attribute will have no effect.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">readTestTimeout</code></td><td align="left" valign="center">

+       Specifies the timeout, in milliseconds, to use when performing a read test

+       to the suspicious node. Default is 5000.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">removeSuspectsTimeout</code></td><td align="left" valign="center">

+       The maximum time(in seconds)  for remove from removeSuspects. Member of

+       removeSuspects will be automatically removed after removeSuspectsTimeout.

+       If a negative value specified, the removeSuspects members never be

+       removed until disappeared really. If the attribute is not provided,

+       a default of 300 milliseconds (5 minutes) is used.

+     </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.TcpPingInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">interval</code></td><td align="left" valign="center">

+       If useThread == true, defines the interval of sending a ping message.

+       default is 1000 ms.

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">useThread</code></td><td align="left" valign="center">

+       Flag of whether to start a thread for sending a ping message.

+       If set to true, this interceptor will start a local thread for sending a ping message.

+       if set to false, channel heartbeat will send a ping message.

+       default is false.

+     </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes"><!--()--></a><a name="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor_Attributes"><strong>org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">interval</code></td><td align="left" valign="center">

+       Defines the interval in number of messages when we are to report the throughput statistics.

+       The report is logged to the <code>org.apache.juli.logging.LogFactory.getLog(ThroughputInterceptor.class)</code>

+       logger under the <code>INFO</code> level.

+       Default value is to report every <code>10000</code> messages.

+     </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested element StaticMember Attributes"><!--()--></a><a name="Nested_element_StaticMember_Attributes"><strong>Nested element StaticMember Attributes</strong></a></font></td></tr><tr><td><blockquote>

+   <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+       Only one implementation available:<code>org.apache.catalina.tribes.membership.StaticMember</code>

+     </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

+       The port that this static member listens to for cluster messages

+     </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePort</code></td><td align="left" valign="center">

+       The secure port this static member listens to for encrypted cluster messages

+       default value is <code>-1</code>, this value means the member is not listening on a secure port

+     </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">host</code></strong></td><td align="left" valign="center">

+       The host (or network interface) that this static member listens for cluster messages.

+       Three different type of values are possible:<br>

+       1. IP address in the form of "216.123.1.23"<br>

+       2. Hostnames like "tomcat01.mydomain.com" or "tomcat01" as long as they resolve correctly<br>

+       3. byte array in string form, for example {216,123,12,3}<br>

+     </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">domain</code></strong></td><td align="left" valign="center">

+       The logical cluster domain for this this static member listens for cluster messages.

+       Two different type of values are possible:<br>

+       1. Regular string values like "staging-domain" or "tomcat-cluster" will be converted into bytes

+       using ISO-8859-1 encoding.

+       2. byte array in string form, for example {216,123,12,3}<br>

+     </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">uniqueId</code></strong></td><td align="left" valign="center">

+       A universally uniqueId for this static member.

+       The values must be 16 bytes in the following form:<br>

+       1. byte array in string form, for example {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}<br>

+     </td></tr></table>

+  </blockquote></td></tr></table>

+  

+

+</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="/tomcat-7.0-doc/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/config/cluster-interceptor.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-listener.html b/webapps/docs/config/cluster-listener.html
new file mode 100644
index 0000000..01cb6e4
--- /dev/null
+++ b/webapps/docs/config/cluster-listener.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The ClusterListener object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The ClusterListener object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#org.apache.catalina.ha.session.ClusterSessionListener">org.apache.catalina.ha.session.ClusterSessionListener</a></li><li><a href="#org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener">org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    The <code>org.apache.catalina.ha.ClusterListener</code> base class

+    lets you listen in on messages that are received by the <code>Cluster</code> component.

+  </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="org.apache.catalina.ha.session.ClusterSessionListener"><strong>org.apache.catalina.ha.session.ClusterSessionListener</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+   When using the DeltaManager, the messages are received by the Cluster object and are propagated to the

+   to the manager through this listener.

+   </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="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"><strong>org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+   Listens for session Id changes. This listener is only used if you are using mod_jk

+   along with the <code>jvmRoute</code> attribute where the session Id can change.

+   In the event of a change, the <code>JvmRouteBinderValve</code> will broadcast the

+   session change and it will get picked up by this listener.

+   </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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+

+    </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+

+

+</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="/tomcat-7.0-doc/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/config/cluster-listener.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-manager.html b/webapps/docs/config/cluster-manager.html
new file mode 100644
index 0000000..50f59b2
--- /dev/null
+++ b/webapps/docs/config/cluster-manager.html
@@ -0,0 +1,145 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The ClusterManager object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The ClusterManager object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#The_<Manager>">The &lt;Manager&gt;</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#org.apache.catalina.ha.session.DeltaManager_Attributes">org.apache.catalina.ha.session.DeltaManager Attributes</a></li><li><a href="#org.apache.catalina.ha.session.BackupManager_Attributes">org.apache.catalina.ha.session.BackupManager Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>A cluster manager is an extension to Tomcat's session manager interface,

+  <code>org.apache.catalina.Manager</code>.

+  A cluster manager must implement the

+  <code>org.apache.catalina.ha.ClusterManager</code> and is solely  responsible

+  for how the session is replicated.<br>

+  There are currently two different managers, the

+  <code>org.apache.catalina.ha.session.DeltaManager</code> replicates deltas of

+  session data to all members in the cluster. This implementation is proven and

+  works very well, but has a limitation as it requires the cluster members to be

+  homogeneous, all nodes must deploy the same applications and be exact

+  replicas. The <code>org.apache.catalina.ha.session.BackupManager</code> also

+  replicates deltas but only to one backup node. The location of the backup node

+  is known to all nodes in the cluster. It also supports heterogeneous

+  deployments, so the manager knows at what locations the web application is

+  deployed.</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="The <Manager>"><!--()--></a><a name="The_<Manager>"><strong>The &lt;Manager&gt;</strong></a></font></td></tr><tr><td><blockquote>

+  <p>The <code>&lt;Manager&gt;</code> element defined inside the

+  <code>&lt;Cluster&gt;</code> element is the template defined for all web

+  applications that are marked <code>&lt;distributable/&gt;</code> in their

+  <code>web.xml</code> file. However, you can still override the manager

+  implementation on a per web application basis, by putting the

+  <code>&lt;Manager&gt;</code> inside the <code>&lt;Context&gt;</code> element

+  either in the <code><a href="context.html">context.xml</a></code> file or the

+  <code><a href="index.html">server.xml</a></code> file.</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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">name</code></td><td align="left" valign="center">

+        <b>The name of this cluster manager, the name is used to identify a

+        session manager on a node. The name might get modified by the

+        <code>Cluster</code> element to make it unique in the container.</b>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">notifyListenersOnReplication</code></td><td align="left" valign="center">

+        Set to <code>true</code> if you wish to have session listeners notified

+        when session attributes are being replicated or removed across Tomcat

+        nodes in the cluster.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">expireSessionsOnShutdown</code></td><td align="left" valign="center">

+        When a web application is being shutdown, Tomcat issues an expire call

+        to each session to notify all the listeners. If you wish for all

+        sessions to expire on all nodes when a shutdown occurs on one node, set

+        this value to <code>true</code>. Default value is <code>false</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionAttributeFilter</code></td><td align="left" valign="center">

+        A regular expression used to filter, which session attributes will

+        be replicated. An attribute will only be replicated, if its name

+        matches this pattern. If the pattern is not set (default), all

+        attributes are eligible for replication. As an example, the value

+        <code>^(userName|sessionHistory)$</code> will only replicate the two

+        session attributes named <code>userName</code> and

+        <code>sessionHistory</code>.

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.DeltaManager Attributes"><!--()--></a><a name="org.apache.catalina.ha.session.DeltaManager_Attributes"><strong>org.apache.catalina.ha.session.DeltaManager Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">expireSessionsOnShutdown</code></td><td align="left" valign="center">

+        When a web application is being shutdown, Tomcat issues an expire call

+        to each session to notify all the listeners. If you wish for all

+        sessions to expire on all nodes when a shutdown occurs on one node, set

+        this value to <code>true</code>.

+        Default value is <code>false</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActiveSessions</code></td><td align="left" valign="center">

+        The maximum number of active sessions that will be created by this

+        Manager, or -1 (the default) for no limit. For this manager, all

+        sessions are counted as active sessions irrespective if whether or not

+        the current node is the primary node for the session.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">notifySessionListenersOnReplication</code></td><td align="left" valign="center">

+        Set to <code>true</code> if you wish to have session listeners notified

+        when sessions are created and expired across Tomcat nodes in the

+        cluster.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">notifyContainerListenersOnReplication</code></td><td align="left" valign="center">

+        Set to <code>true</code> if you wish to have container listeners notified

+        across Tomcat nodes in the cluster.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stateTransferTimeout</code></td><td align="left" valign="center">

+        The time in seconds to wait for a session state transfer to complete

+        from another node when a node is starting up.

+        Default value is <code>60</code> seconds.

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.BackupManager Attributes"><!--()--></a><a name="org.apache.catalina.ha.session.BackupManager_Attributes"><strong>org.apache.catalina.ha.session.BackupManager Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">mapSendOptions</code></td><td align="left" valign="center">

+        The backup manager uses a replicated map, this map is sending and

+        receiving messages. You can setup the flag for how this map is sending

+        messages, the default value is <code>6</code>(synchronous).<br>

+        Note that if you use asynchronous messaging it is possible for update

+        messages for a session to be processed by the receiving node in a

+        different order to the order in which they were sent.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActiveSessions</code></td><td align="left" valign="center">

+        The maximum number of active sessions that will be created by this

+        Manager, or -1 (the default) for no limit. For this manager, only

+        sessions where the current node is the primary node for the session are

+        considered active sessions.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rpcTimeout</code></td><td align="left" valign="center">

+        Timeout for RPC message used for broadcast and transfer state from

+        another map.

+        Default value is <code>15000</code> milliseconds.

+      </td></tr></table>

+  </blockquote></td></tr></table>

+</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="/tomcat-7.0-doc/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/config/cluster-manager.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-membership.html b/webapps/docs/config/cluster-membership.html
new file mode 100644
index 0000000..9398d75
--- /dev/null
+++ b/webapps/docs/config/cluster-membership.html
@@ -0,0 +1,160 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Cluster Membership object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Membership object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Default_Implementation">Default Implementation</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Multicast_Attributes">Multicast Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    The membership component in the Apache Tribes <a href="cluster-channel.html">Channel</a> is responsible

+    for dynamic discovery of other members(nodes) in the cluster.

+  </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="Default Implementation"><!--()--></a><a name="Default_Implementation"><strong>Default Implementation</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    The default implementation of the cluster group notification is built on top of multicast heartbeats

+    sent using UDP packets to a multicast IP address.

+    Cluster members are grouped together by using the same multicast address/port combination.

+    Each member sends out a heartbeat with a given interval (<code>frequency</code>), and this

+    heartbeat is used for dynamic discovery.

+    In a similar fashion, if a heartbeat has not been received in a timeframe specified by <code>dropTime</code>

+    ms. a member is considered suspect and the channel and any membership listener will be notified.

+  </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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Multicast Attributes"><!--()--></a><a name="Multicast_Attributes"><strong>Multicast Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+      <p>

+      The default value is <code>org.apache.catalina.tribes.membership.McastService</code>

+      and is currently the only implementation.

+      This implementation uses multicast heartbeats for member discovery.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

+      <p>

+      The multicast address that the membership will broadcast its presence and listen

+      for other heartbeats on. The default value is <code>228.0.0.4</code>

+      Make sure your network is enabled for multicast traffic.<br>

+      The multicast address, in conjunction with the <code>port</code> is what

+      creates a cluster group. To divide up your farm into several different group, or to

+      split up QA from production, change the <code>port</code> or the <code>address</code>

+      <br>Previously known as mcastAddr.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">port</code></td><td align="left" valign="center">

+      <p>

+      The multicast port, the default value is <code>45564</code><br>

+      The multicast port, in conjunction with the <code>address</code> is what

+      creates a cluster group. To divide up your farm into several different group, or to

+      split up QA from production, change the <code>port</code> or the <code>address</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">frequency</code></td><td align="left" valign="center">

+      <p>

+      The frequency in milliseconds in which heartbeats are sent out. The default value is <code>500</code> ms.<br>

+      In most cases the default value is sufficient. Changing this value, simply changes the interval in between heartbeats.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dropTime</code></td><td align="left" valign="center">

+      <p>

+      The membership component will time out members and notify the Channel if a member fails to send a heartbeat within

+      a give time. The default value is <code>3000</code> ms. This means, that if a heartbeat is not received from a

+      member in that timeframe, the membership component will notify the cluster of this.<br>

+      On a high latency network you may wish to increase this value, to protect against false positives.<br>

+      Apache Tribes also provides a <a href="cluster-interceptor.html#tcpfailuredetector"><code>TcpFailureDetector</code></a> that will

+      verify a timeout using a TCP connection when a heartbeat timeout has occurred. This protects against false positives.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">bind</code></td><td align="left" valign="center">

+      <p>

+      Use this attribute if you wish to bind your multicast traffic to a specific network interface.

+      By default, or when this attribute is unset, it tries to bind to <code>0.0.0.0</code> and sometimes on multihomed hosts

+      this becomes a problem.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">ttl</code></td><td align="left" valign="center">

+      <p>

+      The time-to-live setting for the multicast heartbeats.

+      This setting should be a value between 0 and 255. The default value is VM implementation specific.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">domain</code></td><td align="left" valign="center">

+      <p>

+      Apache Tribes has the ability to logically group members into domains, by using this domain attribute.

+      The <code>org.apache.catalina.tribes.Member.getDomain()</code> method returns the value specified here.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soTimeout</code></td><td align="left" valign="center">

+      <p>

+      The sending and receiving of heartbeats is done on a single thread, hence to avoid blocking this thread forever,

+      you can control the <code>SO_TIMEOUT</code> value on this socket.<br>

+      If a value smaller or equal to 0 is presented, the code will default this value to frequency

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">recoveryEnabled</code></td><td align="left" valign="center">

+      <p>

+      In case of a network failure, Java multicast socket don't transparently fail over, instead the socket will continuously

+      throw IOException upon each receive request. When recoveryEnabled is set to true, this will close the multicast socket

+      and open a new socket with the same properties as defined above.<br>

+      The default is <code>true</code>. <br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">recoveryCounter</code></td><td align="left" valign="center">

+      <p>

+      When <code>recoveryEnabled==true</code> this value indicates how many

+      times an error has to occur before recovery is attempted. The default is

+      <code>10</code>. <br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">recoverySleepTime</code></td><td align="left" valign="center">

+      <p>

+      When <code>recoveryEnabled==true</code> this value indicates how long time (in milliseconds)

+      the system will sleep in between recovery attempts, until we either recovered successfully or we have reached the

+      recoveryCounter limit.

+      The default is <code>5000</code> (5 seconds). <br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">localLoopbackDisabled</code></td><td align="left" valign="center">

+      <p>

+      Membership uses multicast, it will call <code>java.net.MulticastSocket.setLoopbackMode(localLoopbackDisabled)</code>.

+      When <code>localLoopbackDisabled==true</code> multicast messages will not reach other nodes on the same local machine.

+      The default is <code>false</code>. <br>

+      </p>

+    </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+

+

+</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="/tomcat-7.0-doc/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/config/cluster-membership.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-receiver.html b/webapps/docs/config/cluster-receiver.html
new file mode 100644
index 0000000..5849dd6
--- /dev/null
+++ b/webapps/docs/config/cluster-receiver.html
@@ -0,0 +1,153 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Cluster Receiver object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Receiver object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Blocking_vs_Non-Blocking_Receiver">Blocking vs Non-Blocking Receiver</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#NioReceiver">NioReceiver</a></li><li><a href="#BioReceiver">BioReceiver</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+  The receiver component is responsible for receiving cluster messages.

+  As you might notice through the configuration, is that the receiving of messages

+  and sending of messages are two different components, this is different from many other

+  frameworks, but there is a good reason for it, to decouple the logic for how messages are sent from

+  how messages are received.<br>

+  The receiver is very much like the Tomcat Connector, its the base of the thread pool

+  for incoming cluster messages. The receiver is straight forward, but all the socket settings

+  for incoming traffic are managed here.

+  </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="Blocking vs Non-Blocking Receiver"><!--()--></a><a name="Blocking_vs_Non-Blocking_Receiver"><strong>Blocking vs Non-Blocking Receiver</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+  The receiver supports both a non blocking, <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code>, and a

+  blocking, <code>org.apache.catalina.tribes.transport.bio.BioReceiver</code>. It is preferred to use the non blocking receiver

+  to be able to grow your cluster without running into thread starvation.<br>

+  Using the non blocking receiver allows you to with a very limited thread count to serve a large number of messages.

+  Usually the rule is to use 1 thread per node in the cluster for small clusters, and then depending on your message frequency

+  and your hardware, you'll find an optimal number of threads peak out at a certain number.

+  </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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+      The implementation of the receiver component. Two implementations available,

+      <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> and

+      <code>org.apache.catalina.tribes.transport.bio.BioReceiver</code>.<br>

+      The <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> is the

+      preferred implementation

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

+      The address (network interface) to listen for incoming traffic.

+      Same as the bind address. The default value is <code>auto</code> and translates to

+      <code>java.net.InetAddress.getLocalHost().getHostAddress()</code>.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">direct</code></td><td align="left" valign="center">

+      Possible values are <code>true</code> or <code>false</code>.

+      Set to true if you want the receiver to use direct bytebuffers when reading data

+      from the sockets.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">port</code></td><td align="left" valign="center">

+      The listen port for incoming data. The default value is <code>4000</code>.

+      To avoid port conflicts the receiver will automatically bind to a free port within the range of

+      <code> port &lt;= bindPort &lt; port+autoBind</code>

+      So for example, if port is 4000, and autoBind is set to 10, then the receiver will open up

+      a server socket on the first available port in the range 4000-4009.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">autoBind</code></td><td align="left" valign="center">

+      Default value is <code>100</code>.

+      Use this value if you wish to automatically avoid port conflicts the cluster receiver will try to open a

+      server socket on the <code>port</code> attribute port, and then work up <code>autoBind</code> number of times.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePort</code></td><td align="left" valign="center">

+      The secure listen port. This port is SSL enabled. If this attribute is omitted no SSL port is opened up.

+      There default value is unset, meaning there is no SSL socket available.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpPort</code></td><td align="left" valign="center">

+      The UDP listen port. If this attribute is omitted no UDP port is opened up.

+      There default value is unset, meaning there is no UDP listener available.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorTimeout</code></td><td align="left" valign="center">

+      The value in milliseconds for the polling timeout in the <code>NioReceiver</code>. On older versions of the JDK

+      there have been bugs, that should all now be cleared out where the selector never woke up.

+      The default value is a very high <code>5000</code> milliseconds.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

+      The maximum number of threads in the receiver thread pool. The default value is <code>6</code>

+      Adjust this value relative to the number of nodes in the cluster, the number of messages being exchanged and

+      the hardware you are running on. A higher value doesn't mean more efficiency, tune this value according to your

+      own test results.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minThreads</code></td><td align="left" valign="center">

+      Minimum number of threads to be created when the receiver is started up. Default value is <code>6</code>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">ooBInline</code></td><td align="left" valign="center">

+      Boolean value for the socket OOBINLINE option. Possible values are <code>true</code> or <code>false</code>.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">rxBufSize</code></td><td align="left" valign="center">

+      The receiver buffer size on the receiving sockets. Value is in bytes, the default value is <code>43800</code> bytes.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">txBufSize</code></td><td align="left" valign="center">

+      The sending buffer size on the receiving sockets. Value is in bytes, the default value is <code>25188</code> bytes.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpRxBufSize</code></td><td align="left" valign="center">

+        The receive buffer size on the datagram socket.

+        Default value is <code>25188</code> bytes.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpTxBufSize</code></td><td align="left" valign="center">

+       The send buffer size on the datagram socket.

+       Default value is <code>43800</code> bytes.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soKeepAlive</code></td><td align="left" valign="center">

+      Boolean value for the socket SO_KEEPALIVE option. Possible values are <code>true</code> or <code>false</code>.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerOn</code></td><td align="left" valign="center">

+      Boolean value to determine whether to use the SO_LINGER socket option.

+      Possible values are <code>true</code> or <code>false</code>. Default value is <code>true</code>.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerTime</code></td><td align="left" valign="center">

+      Sets the SO_LINGER socket option time value. The value is in seconds.

+      The default value is <code>3</code> seconds.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">soReuseAddress</code></td><td align="left" valign="center">

+     Boolean value for the socket SO_REUSEADDR option. Possible values are <code>true</code> or <code>false</code>.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

+     Boolean value for the socket TCP_NODELAY option. Possible values are <code>true</code> or <code>false</code>.

+     The default value is <code>true</code>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeout</code></td><td align="left" valign="center">

+     Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is <code>3000</code>

+     milliseconds.

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useBufferPool</code></td><td align="left" valign="center">

+     Boolean value whether to use a shared buffer pool of cached <code>org.apache.catalina.tribes.io.XByteBuffer</code>

+     objects. If set to true, the XByteBuffer that is used to pass a message up the channel, will be recycled at the end

+     of the requests. This means that interceptors in the channel must not maintain a reference to the object

+     after the <code>org.apache.catalina.tribes.ChannelInterceptor#messageReceived</code> method has exited.

+    </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="NioReceiver"><strong>NioReceiver</strong></a></font></td></tr><tr><td><blockquote>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="BioReceiver"><strong>BioReceiver</strong></a></font></td></tr><tr><td><blockquote>

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/cluster-receiver.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-sender.html b/webapps/docs/config/cluster-sender.html
new file mode 100644
index 0000000..3c76712
--- /dev/null
+++ b/webapps/docs/config/cluster-sender.html
@@ -0,0 +1,163 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Cluster Sender object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Sender object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Concurrent_Parallel_Delivery">Concurrent Parallel Delivery</a></li><li><a href="#Nested_Elements">Nested Elements</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Sender_Attributes">Common Sender Attributes</a></li><li><a href="#Common_Transport_Attributes">Common Transport Attributes</a></li><li><a href="#Common_PooledSender_Attributes">Common PooledSender Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+  The channel sender component is responsible for delivering outgoing cluster messages over the network.

+  In the default implementation, <code>org.apache.catalina.tribes.transport.ReplicationTransmitter</code>,

+  the sender is a fairly empty shell with not much logic around a fairly complex <code>&lt;Transport&gt;</code>

+  component the implements the actual delivery mechanism.

+  </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="Concurrent Parallel Delivery"><!--()--></a><a name="Concurrent_Parallel_Delivery"><strong>Concurrent Parallel Delivery</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+  In the default <code>transport</code> implementation, <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code>,

+  Apache Tribes implements what we like to call "Concurrent Parallel Delivery".

+  This means that we can send a message to more than one destination at the same time(parallel), and

+  deliver two messages to the same destination at the same time(concurrent). Combine these two and we have

+  "Concurrent Parallel Delivery".

+  </p>

+  <p>

+  When is this useful? The simplest example we can think of is when part of your code is sending a 10MB message,

+  like a war file being deployed, and you need to push through a small 10KB message, say a session being replicated,

+  you don't have to wait for the 10MB message to finish, as a separate thread will push in the small message

+  transmission at the same time. Currently there is no interrupt, pause or priority mechanism available, but check back soon.

+  </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="Nested Elements"><!--()--></a><a name="Nested_Elements"><strong>Nested Elements</strong></a></font></td></tr><tr><td><blockquote>

+ <p>

+   The nested element <code>&lt;Transport&gt;</code> is is not required, by encouraged, as this is where

+   you would set all the socket options for the outgoing messages. Please see its attributes below.

+   There are two implementations, in a similar manner to the <a href="cluster-receiver.html">receiver</a>, one is non-blocking

+   based and the other is built using blocking IO. <br>

+   <code>org.apache.catalina.tribes.transport.bio.PooledMultiSender</code> is the blocking implementation and

+   <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code>.

+   Parallel delivery is not available for the blocking implementation due to the fact that it is blocking a thread on sending data.

+ </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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Sender Attributes"><!--()--></a><a name="Common_Sender_Attributes"><strong>Common Sender Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        Required, only available implementation is <code>org.apache.catalina.tribes.transport.ReplicationTransmitter</code>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Transport Attributes"><!--()--></a><a name="Common_Transport_Attributes"><strong>Common Transport Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        Required, an implementation of the <code>org.apache.catalina.tribes.transport.MultiPointSender</code>.<br>

+        Non-blocking implementation is <code>org.apache.catalina.tribes.transport.nio.PooledParallelSender</code><br>

+        Blocking implementation is <code>org.apache.catalina.tribes.transport.bio.PooledMultiSender</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rxBufSize</code></td><td align="left" valign="center">

+        The receive buffer size on the socket.

+        Default value is <code>25188</code> bytes.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">txBufSize</code></td><td align="left" valign="center">

+       The send buffer size on the socket.

+       Default value is <code>43800</code> bytes.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpRxBufSize</code></td><td align="left" valign="center">

+        The receive buffer size on the datagram socket.

+        Default value is <code>25188</code> bytes.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">udpTxBufSize</code></td><td align="left" valign="center">

+       The send buffer size on the datagram socket.

+       Default value is <code>43800</code> bytes.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">directBuffer</code></td><td align="left" valign="center">

+       Possible values are <code>true</code> or <code>false</code>.

+       Set to true if you want the receiver to use direct bytebuffers when writing data

+       to the sockets. Default value is <code>false</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveCount</code></td><td align="left" valign="center">

+       The number of requests that can go through the socket before the socket is closed, and reopened

+       for the next request. The default value is <code>-1</code>, which is unlimited.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTime</code></td><td align="left" valign="center">

+       The number of milliseconds a connection is kept open after its been opened.

+       The default value is <code>-1</code>, which is unlimited.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeout</code></td><td align="left" valign="center">

+        Sets the SO_TIMEOUT option on the socket. The value is in milliseconds and the default value is <code>3000</code>

+        milliseconds.(3 seconds) This timeout starts when a message send attempt is starting, until the transfer has been completed.

+        For the NIO sockets, this will mean, that the caller can guarantee that we will not attempt sending the message

+        longer than this timeout value. For the blocking IO implementation, this translated directly to the soTimeout.<br>

+        A timeout will not spawn a retry attempt, in order to guarantee the return of the application thread.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxRetryAttempts</code></td><td align="left" valign="center">

+        How many times do we retry a failed message, that received a IOException at the socket level.

+        The default value is <code>1</code>, meaning we will retry a message that has failed once.

+        In other words, we will attempt a message send no more than twice. One is the original send, and one is the

+        <code>maxRetryAttempts</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ooBInline</code></td><td align="left" valign="center">

+        Boolean value for the socket OOBINLINE option. Possible values are <code>true</code> or <code>false</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soKeepAlive</code></td><td align="left" valign="center">

+        Boolean value for the socket SO_KEEPALIVE option. Possible values are <code>true</code> or <code>false</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerOn</code></td><td align="left" valign="center">

+        Boolean value to determine whether to use the SO_LINGER socket option.

+        Possible values are <code>true</code> or <code>false</code>. Default value is <code>true</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soLingerTime</code></td><td align="left" valign="center">

+        Sets the SO_LINGER socket option time value. The value is in seconds.

+        The default value is <code>3</code> seconds.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soReuseAddress</code></td><td align="left" valign="center">

+       Boolean value for the socket SO_REUSEADDR option. Possible values are <code>true</code> or <code>false</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">soTrafficClass</code></td><td align="left" valign="center">

+       Sets the traffic class level for the socket, the value is between 0 and 255.

+       Default value is <code>int soTrafficClass = 0x04 | 0x08 | 0x010;</code>

+       Different values are defined in <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setTrafficClass(int)">

+       java.net.Socket#setTrafficClass(int)</a>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

+       Boolean value for the socket TCP_NODELAY option. Possible values are <code>true</code> or <code>false</code>.

+       The default value is <code>true</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">throwOnFailedAck</code></td><td align="left" valign="center">

+       Boolean value, default value is <code>true</code>.

+       If set to true, the sender will throw a <code>org.apache.catalina.tribes.RemoteProcessException</code>

+       when we receive a negative ack from the remote member.

+       Set to false, and Tribes will treat a positive ack the same way as a negative ack, that the message was received.

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common PooledSender Attributes"><!--()--></a><a name="Common_PooledSender_Attributes"><strong>Common PooledSender Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">poolSize</code></td><td align="left" valign="center">

+        The maximum number of concurrent connections from A to B.

+        The value is based on a per-destination count.

+        The default value is <code>25</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxWait</code></td><td align="left" valign="center">

+        The maximum number of milliseconds that the senderPool will wait when

+        there are no available senders. The default value is <code>3000</code>

+        milliseconds.(3 seconds).

+      </td></tr></table>

+  </blockquote></td></tr></table>

+</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="/tomcat-7.0-doc/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/config/cluster-sender.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-valve.html b/webapps/docs/config/cluster-valve.html
new file mode 100644
index 0000000..99f8a20
--- /dev/null
+++ b/webapps/docs/config/cluster-valve.html
@@ -0,0 +1,102 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Cluster Valve object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster Valve object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#org.apache.catalina.ha.tcp.ReplicationValve">org.apache.catalina.ha.tcp.ReplicationValve</a><ol><li><a href="#org.apache.catalina.ha.tcp.ReplicationValve/Attributes">Attributes</a></li></ol></li><li><a href="#org.apache.catalina.ha.session.JvmRouteBinderValve">org.apache.catalina.ha.session.JvmRouteBinderValve</a><ol><li><a href="#org.apache.catalina.ha.session.JvmRouteBinderValve/Attributes">Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+  A cluster valve is no different from any other <a href="valve.html">Tomcat <code>Valve</code></a>.

+  The cluster valves are interceptors in the invocation chain for HTTP requests, and the clustering implementation

+  uses these valves to make intelligent decision around data and when data should be replicated.

+  </p>

+  <p>

+  A cluster valve must implement the <code>org.apache.catalina.ha.ClusterValve</code> interface.

+  This is a simple interface that extends the <code>org.apache.catalina.Valve</code> interface.

+  </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="org.apache.catalina.ha.tcp.ReplicationValve"><strong>org.apache.catalina.ha.tcp.ReplicationValve</strong></a></font></td></tr><tr><td><blockquote>

+  The <code>ReplicationValve</code> will notify the cluster at the end of a HTTP request

+  so that the cluster can make a decision whether there is data to be replicated or not.

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.tcp.ReplicationValve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        Set value to <code>org.apache.catalina.ha.tcp.ReplicationValve</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">filter</code></td><td align="left" valign="center">

+        For known file extensions or urls, you can use this Valve to notify the

+        cluster that the session has not been modified during this  request and

+        the cluster doesn't have to probe the session managers for changes. If

+        the request matches this filter pattern, the cluster assumes there has

+        been no session change. An example filter would look like <code>

+        filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"

+        </code>. The filter is a regular expression using

+        <code>java.util.regex</code>.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">primaryIndicator</code></td><td align="left" valign="center">

+        Boolean value, so to true, and the replication valve will insert a request attribute with the name

+        defined by the <code>primaryIndicatorName</code> attribute.

+        The value inserted into the request attribute is either <code>Boolean.TRUE</code> or

+        <code>Boolean.FALSE</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">primaryIndicatorName</code></td><td align="left" valign="center">

+        Default value is <code>org.apache.catalina.ha.tcp.isPrimarySession</code>

+        The value defined here is the name of the request attribute that contains the boolean value

+        if the session is primary on this server or not.

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">statistics</code></td><td align="left" valign="center">

+        Boolean value. Set to <code>true</code> if you want the valve to collect request statistics.

+        Default value is <code>false</code>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.JvmRouteBinderValve"><strong>org.apache.catalina.ha.session.JvmRouteBinderValve</strong></a></font></td></tr><tr><td><blockquote>

+  In case of a mod_jk failover, the <code>JvmRouteBinderValve</code> will replace the

+  <code>jvmWorker</code> attribute in the session Id, to make future requests stick to this

+  node. If you want failback capability, don't enable this valve, but if you want your failover to stick,

+  and for mod_jk not to have to keep probing the node that went down, you use this valve.

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.catalina.ha.session.JvmRouteBinderValve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <code>org.apache.catalina.ha.session.JvmRouteBinderValve</code>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">enabled</code></td><td align="left" valign="center">

+        Default value is <code>true</code>

+        Runtime attribute to turn on and off turn over of the session's jvmRoute value.

+      </td></tr></table>

+  </blockquote></td></tr></table>

+</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="/tomcat-7.0-doc/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/config/cluster-valve.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster.html b/webapps/docs/config/cluster.html
new file mode 100644
index 0000000..99bcca2
--- /dev/null
+++ b/webapps/docs/config/cluster.html
@@ -0,0 +1,165 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Cluster object</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Cluster object</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Engine_vs_Host_placement">Engine vs Host placement</a></li><li><a href="#Context_Attribute_Replication">Context Attribute Replication</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Deprecated_configuration_options">Deprecated configuration options</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#SimpleTcpCluster_Attributes">SimpleTcpCluster Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+  The tomcat cluster implementation provides session replication, context attribute replication and

+  cluster wide WAR file deployment.

+  While the <code>Cluster</code> configuration is fairly complex, the default configuration will work

+  for most people out of the box. </p><p>

+  The Tomcat Cluster implementation is very extensible, and hence we have exposed a myriad of options,

+  making the configuration seem like a lot, but don't lose faith, instead you have a tremendous control

+  over what is going on.</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="Engine vs Host placement"><!--()--></a><a name="Engine_vs_Host_placement"><strong>Engine vs Host placement</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+   You can place the <code>&lt;Cluster&gt;</code> element inside either the <code>&lt;Engine&gt;</code>

+   container or the <code>&lt;Host&gt;</code> container.<br>

+   Placing it in the engine, means that you will support clustering in all virtual hosts of Tomcat,

+   and share the messaging component. When you place the <code>&lt;Cluster&gt;</code> inside the <code>&lt;Engine&gt;</code>

+   element, the cluster will append the host name of each session manager to the managers name so that two contexts with

+   the same name but sitting inside two different hosts will be distinguishable.

+  </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="Context Attribute Replication"><!--()--></a><a name="Context_Attribute_Replication"><strong>Context Attribute Replication</strong></a></font></td></tr><tr><td><blockquote>

+  <p>To configure context attribute replication, simply do this by swapping out the context implementation

+  used for your application context.

+    <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>&lt;Context className="org.apache.catalina.ha.context.ReplicatedContext"/&gt;</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>

+    This context extends the Tomcat <code><a href="context.html">StandardContext</a></code>

+    so all the options from the <a href="context.html">base implementation</a> are valid.

+  </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="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+  <p><b><a href="cluster-manager.html">Manager</a>:</b> <br>

+    The session manager element identifies what kind of session manager is used in this cluster implementation.

+    This manager configuration is identical to the one you would use in a regular <code><a href="context.html#Nested%20xComponents">&lt;Context&gt;</a></code> configuration.

+    <br>The default value is the <code>org.apache.catalina.ha.session.DeltaManager</code> that is closely coupled with

+    the <code>SimpleTcpCluster</code> implementation. Other managers like the <code>org.apache.catalina.ha.session.BackupManager</code>

+    are/could be loosely coupled and don't rely on the <code>SimpleTcpCluster</code> for its data replication.

+  </p>

+  <p><b><a href="cluster-channel.html">Channel</a>:</b> <br>

+    The Channel and its sub components are all part of the IO layer

+    for the cluster group, and is a module in it's own that we have nick named "Tribes"

+    <br>

+    Any configuring and tuning of the network layer, the messaging and the membership logic

+    will be done in the channel and its nested components.

+    You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>

+  </p>

+  <p><b><a href="cluster-valve.html">Valve</a>:</b> <br>

+    The Tomcat Cluster implementation uses <code>Tomcat <a href="valve.html">Valves</a></code> to

+    track when requests enter and exit the servlet container. It uses these valves to be able to make

+    intelligent decisions on when to replicate data, which is always at the end of a request.

+  </p>

+  <p><b><a href="cluster-deployer.html">Deployer</a>:</b> <br>

+    The Deployer component is the Tomcat Farm Deployer. It allows you to deploy and undeploy applications

+    cluster wide.

+  </p>

+  <p><b><a href="cluster-listener.html">ClusterListener</a>:</b> <br>

+    ClusterListener's are used to track messages sent and received using the <code>SimpleTcpCluster</code>.

+    If you wish to track messages, you can add a listener here, or you can add a valve to the channel object.

+  </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="Deprecated configuration options"><!--()--></a><a name="Deprecated_configuration_options"><strong>Deprecated configuration options</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    <b>Deprecated settings:</b> In the previous version of Tomcat you were able to control session

+       manager settings using manager.&lt;property&gt;=value.

+       This has been discontinued, as the way it was written interferes with

+       the ability to support multiple different manager classes under one cluster implementation,

+       as the same properties might have the different effect on different managers.

+  </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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SimpleTcpCluster Attributes"><!--()--></a><a name="SimpleTcpCluster_Attributes"><strong>SimpleTcpCluster Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+      <p>The main cluster class, currently only one is available,

+         <code>org.apache.catalina.ha.tcp.SimpleTcpCluster</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">channelSendOptions</code></strong></td><td align="left" valign="center">

+      <p>The Tribes channel send options, default is <code>8</code>.<br>

+         This option is used to set the flag that all messages sent through the

+         SimpleTcpCluster uses. The flag decides how the messages are sent, and is a simple logical OR.<br>

+

+      <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>

+        int options= Channel.SEND_OPTIONS_ASYNCHRONOUS |

+                     Channel.SEND_OPTIONS_SYNCHRONIZED_ACK |

+                     Channel.SEND_OPTIONS_USE_ACK;

+      </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>

+      Some of the values are:<br>

+      <code>Channel.SEND_OPTIONS_SYNCHRONIZED_ACK = 0x0004</code><br>

+      <code>Channel.SEND_OPTIONS_ASYNCHRONOUS = 0x0008</code><br>

+      <code>Channel.SEND_OPTIONS_USE_ACK = 0x0002</code><br>

+      So to use ACK and ASYNC messaging, the flag would be <code>10 (8+2) or 0x000B</code><br>

+      Note that if you use ASYNC messaging it is possible for update messages

+      for a session to be processed by the receiving nodes in a different order

+      to the order in which they were sent.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">channelStartOptions</code></td><td align="left" valign="center">

+      <p>Sets the start and stop flags for the &lt;Channel&gt; object used by the cluster.

+         The default is <code>Channel.DEFAULT</code> which starts all the channel services, such as

+         sender, receiver, multicast sender and multicast receiver.

+         The following flags are available today:

+         <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>

+           Channel.DEFAULT = Channel.SND_RX_SEQ (1)| Channel.SND_TX_SEQ (2)| Channel.MBR_RX_SEQ (4)| Channel.MBR_TX_SEQ (8);

+         </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>

+         To start a channel without multicasting, you would want to use the value <code>Channel.SND_RX_SEQ | Channel.SND_TX_SEQ</code>

+         that equals to <code>3</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">heartbeatBackgroundEnabled</code></td><td align="left" valign="center">

+      <p>Enable this flag don't forget to disable the channel heartbeat thread.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">doClusterLog</code></td><td align="left" valign="center">

+      <p><b>Deprecated since 6.0.0</b></p>

+      <p>Possible values are <code>true</code> or <code>false</code><br>

+         Value is inherited from Tomcat 5.5 and has no official meaning.

+         to configure logging, use the standard tomcat logging configuration.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">clusterLogName</code></td><td align="left" valign="center">

+      <p><b>Deprecated since 6.0.0</b></p>

+      <p>

+        Value is inherited from Tomcat 5.5 and has no official meaning.

+         to configure logging, use the standard tomcat logging configuration.

+      </p>

+    </td></tr></table>

+  </blockquote></td></tr></table>

+</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="/tomcat-7.0-doc/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/config/cluster.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/context.html b/webapps/docs/config/context.html
new file mode 100644
index 0000000..a4d4912
--- /dev/null
+++ b/webapps/docs/config/context.html
@@ -0,0 +1,1261 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Context Container</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Context Container</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a><ol><li><a href="#Parallel_deployment">Parallel deployment</a></li><li><a href="#Naming">Naming</a></li><li><a href="#Defining_a_context">Defining a context</a></li></ol></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Automatic_Context_Configuration">Automatic Context Configuration</a></li><li><a href="#Context_Parameters">Context Parameters</a></li><li><a href="#Environment_Entries">Environment Entries</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li><li><a href="#Resource_Definitions">Resource Definitions</a></li><li><a href="#Resource_Links">Resource Links</a></li><li><a href="#Transaction">Transaction</a></li><li><a href="#Virtual_webapp">Virtual webapp</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <blockquote><p><em>

+    The description below uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.

+    </em></p></blockquote>

+

+  <p>The <strong>Context</strong> element represents a <em>web

+  application</em>, which is run within a particular virtual host.

+  Each web application is based on a <em>Web Application Archive</em>

+  (WAR) file, or a corresponding directory containing the corresponding

+  unpacked contents, as described in the Servlet Specification (version

+  2.2 or later).  For more information about web application archives,

+  you can download the

+  <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

+  Specification</a>, and review the Tomcat

+  <a href="../appdev/index.html">Application Developer's Guide</a>.</p>

+

+  <p>The web application used to process each HTTP request is selected

+  by Catalina based on matching the longest possible prefix of the

+  Request URI against the <em>context path</em> of each defined Context.

+  Once selected, that Context will select an appropriate servlet to

+  process the incoming request, according to the servlet mappings defined

+  by the web application deployment.</p>

+

+  <p>You may define as many <strong>Context</strong> elements as you

+  wish.  Each such Context MUST have a unique context name within a virtual

+  host. The context path does not need to be unique (see <em>parallel

+  deployment</em> below). In addition, a Context must be present with a

+  context path equal to

+  a zero-length string.  This Context becomes the <em>default</em>

+  web application for this virtual host, and is used to process all

+  requests that do not match any other Context's context path.</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Parallel deployment"><!--()--></a><a name="Parallel_deployment"><strong>Parallel deployment</strong></a></font></td></tr><tr><td><blockquote>

+  <p><b>You may deploy multiple versions of a web application with the same

+  context path at the same time.</b> The rules used to match requests to a

+  context version are as follows:

+  </p>

+  <ul>

+  <li>If no session information is present in the request, use the latest

+  version.</li>

+  <li>If session information is present in the request, check the session

+  manager of each version for a matching session and if one is found, use that

+  version.</li>

+  <li>If session information is present in the request but no matching session

+  can be found, use the latest version.</li>

+  </ul>

+  <p>The <a href="host.html">Host</a> may be configured (via the

+  <code>undeployOldVersions</code>) to remove old versions deployed in this way

+  once they are no longer in use.</p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Naming"><strong>Naming</strong></a></font></td></tr><tr><td><blockquote>

+  <p>When <code>autoDeploy</code> or <code>deployOnStartup</code> operations

+  are performed by a Host, the name and context path of the web application are

+  derived from the name(s) of the file(s) that define(s) the web application.

+  Consequently, the context path <strong>may not</strong> be defined in a

+  <code>META-INF/context.xml</code> embedded in the application and there is a

+  close relationship between the <em>context name</em>, <em>context path</em>,

+  <em>context version</em> and the <em>base file name</em> (the name minus any

+  <code>.war</code> or <code>.xml</code> extension) of the file.</p>

+

+  <p>If no version is specified then the <em>context name</em> is always the

+  same as the <em>context path</em>. If the <em>context path</em> is the empty

+  string them the <em>base name</em> will be ROOT (always in upper case)

+  otherwise the <em>base name</em> will be the <em>context path</em> with the

+  leading '/' removed and any remaining '/' characters replaced with '#'.</p>

+

+  <p>If a version is specified then the <em>context path</em> remains unchanged

+  and both the <em>context name</em> and the <em>base name</em> have the string

+  '##' appended to them followed by the version identifier.</p>

+

+  <p>Some examples of these naming conventions are given below.</p>

+

+  <table class="detail-table">

+    <tr>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Path</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Version</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Name</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Base File Name</font></td>

+      <td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Example File Names (.xml, .war &amp; directory)</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo.xml, foo.war, foo</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar.xml, foo#bar.war, foo#bar</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT.xml, ROOT.war, ROOT</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo##42.xml, foo##42.war, foo##42</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar##42.xml, foo#bar##42.war, foo#bar##42</font></td>

+    </tr>

+    <tr>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT##42</font></td>

+      <td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT##42.xml, ROOT##42.war, ROOT##42</font></td>

+    </tr>

+  </table>

+

+  <p>The version component is treated as a <code>String</code> both for

+  performance reasons and to allow flexibility in versioning schemes. String

+  comparisons are used to determine version order. If version is not specified,

+  it is treated as the empty string.

+  Therefore,

+  <code>foo.war</code> will be treated as an earlier version than

+  <code>foo##11.war</code> and

+  <code>foo##11.war</code> will be treated as an earlier version than

+  <code>foo##2.war</code>. If using a purely numerical versioning scheme it is

+  recommended that zero padding is used so that <code>foo##002.war</code> is

+  treated as an earlier version than <code>foo##011.war</code>.

+  </p>

+

+  <p>If you want to deploy a WAR file or a directory using a context path that

+  is not related to the base file name then one of the following options must

+  be used to prevent double-deployment:

+  </p>

+  <ul>

+  <li>Disable autoDeploy and deployOnStartup and define all

+  <strong>Context</strong>s in server.xml</li>

+  <li>Locate the WAR and/or directory outside of the Host's appBase and use

+      a context.xml file with a docBase attribute to define it.</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Defining a context"><!--()--></a><a name="Defining_a_context"><strong>Defining a context</strong></a></font></td></tr><tr><td><blockquote>

+  <p><b>It is NOT recommended to place &lt;Context&gt; elements directly in the

+  server.xml file.</b> This is because it makes modifying the

+  <strong>Context</strong> configuration more invasive since the main

+  <code>conf/server.xml</code> file cannot be reloaded without restarting

+  Tomcat.</p>

+

+  <p>Individual <strong>Context</strong> elements may be explicitly defined:

+  </p>

+  <ul>

+  <li>In an individual file at <code>/META-INF/context.xml</code> inside the

+  application files. Optionally (based on the Host's copyXML attribute)

+  this may be copied to

+  <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> and renamed to

+  application's base file name plus a ".xml" extension.</li>

+  <li>In individual files (with a ".xml" extension) in the

+  <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.

+  The context path and version will be derived from the base name of the file

+  (the file name less the .xml extension). This file will always take precedence

+  over any context.xml file packaged in the web application's META-INF

+  directory.</li>

+  <li>Inside a <a href="host.html">Host</a> element in the main

+  <code>conf/server.xml</code>.</li>

+  </ul>

+

+  <p>Default <strong>Context</strong> elements may be defined that apply to

+  multiple web applications. Configuration for an individual web application

+  will override anything configured in one of these defaults. Any nested

+  elements, e.g. &lt;Resource&gt; elements, that are defined in a default

+  <strong>Context</strong> will be created once for each

+  <strong>Context</strong> to which the default applies. They will <b>not</b> be

+  shared between <strong>Context</strong> elements.

+  </p>

+  <ul>

+  <li>In the <code>$CATALINA_BASE/conf/context.xml</code> file:

+  the Context element information will be loaded by all web applications.</li>

+  <li>In the

+  <code>$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default</code>

+  file: the Context element information will be loaded by all web applications

+  of that host.</li>

+  </ul>

+

+  <p>With the exception of server.xml, files that define <strong>Context

+  </strong> elements may only define a single <strong>Context</strong> element.

+  </p>

+

+  <p>In addition to explicitly specified Context elements, there are

+  several techniques by which Context elements can be created automatically

+  for you.  See <a href="host.html#Automatic_Application_Deployment">

+  Automatic Application Deployment</a> and

+  <a href="host.html#User_Web_Applications">User Web Applications</a>

+  for more information.</p>

+

+  <p>To define multiple contexts that use a single WAR file or directory,

+  use one of the options described in the <a href="#Naming">Naming</a>

+  section above for creating a <strong>Context</strong> that has a path

+  that is not related to the base file name.</p>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Context</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allowCasualMultipartParsing</code></td><td align="left" valign="center">

+        <p>Set to true if Tomcat should automatically parse

+        multipart/form-data request bodies when HttpServletRequest.getPart*

+        or HttpServletRequest.getParameter* is called, even when the

+        target servlet isn't marked with the @MultipartConfig annotation

+        (See Servlet Specification 3.0, Section 3.2 for details).

+        Note that any setting other than <code>false</code> causes Tomcat

+        to behave in a way that is not technically spec-compliant.

+        The default is <code>false</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">backgroundProcessorDelay</code></td><td align="left" valign="center">

+        <p>This value represents the delay in seconds between the

+        invocation of the backgroundProcess method on this context and

+        its child containers, including all wrappers.

+        Child containers will not be invoked if their delay value is not

+        negative (which would mean they are using their own processing

+        thread). Setting this to a positive value will cause

+        a thread to be spawn. After waiting the specified amount of time,

+        the thread will invoke the backgroundProcess method on this host

+        and all its child containers. A context will use background

+        processing to perform session expiration and class monitoring for

+        reloading. If not specified, the default value for this attribute is

+        -1, which means the context will rely on the background processing

+        thread of its parent host.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.catalina.Context</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cookies</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want cookies to be used for

+        session identifier communication if supported by the client (this

+        is the default).  Set to <code>false</code> if you want to disable

+        the use of cookies for session identifier communication, and rely

+        only on URL rewriting by the application.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">crossContext</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want calls within this application

+        to <code>ServletContext.getContext()</code> to successfully return a

+        request dispatcher for other web applications running on this virtual

+        host.  Set to <code>false</code> (the default) in security

+        conscious environments, to make <code>getContext()</code> always

+        return <code>null</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">docBase</code></strong></td><td align="left" valign="center">

+        <p>The <em>Document Base</em> (also known as the <em>Context

+        Root</em>) directory for this web application, or the pathname

+        to the web application archive file (if this web application is

+        being executed directly from the WAR file). You may specify

+        an absolute pathname for this directory or WAR file, or a pathname

+        that is relative to the <code>appBase</code> directory of the

+        owning <a href="host.html">Host</a>.</p>

+        <p>The value of this field must not be set unless the Context element is

+        defined in server.xml or the <code>docBase</code> is not located under

+        the <a href="host.html">Host</a>'s <code>appBase</code>.</p>

+        <p>If a symbolic link is used for docBase then changes to the

+        symbolic link will only be effective after a Tomcat restart or

+        by undeploying and redeploying the context. A context reload is not

+        sufficient.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">fireRequestListenersOnForwards</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to fire any configured

+        ServletRequestListeners  when Tomcat forwards a request. This is

+        primarily of use to users of CDI frameworks that use

+        ServletRequestListeners to configure the necessary environment for a

+        request. If not specified, the default value of <code>false</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">logEffectiveWebXml</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want the effective web.xml used for a

+        web application to be logged (at INFO level) when the application

+        starts. The effective web.xml is the result of combining the

+        application's web.xml with any defaults configured by Tomcat and any

+        web-fragment.xml files and annotations discovered. If not specified, the

+        default value of <code>false</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to ignore any settings in both the global

+        or <a href="host.html">Host</a> default contexts.  By default, settings

+        from a default context will be used but may be overridden by a setting

+        the same attribute explicitly for the Context.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">path</code></td><td align="left" valign="center">

+        <p>The <em>context path</em> of this web application, which is

+        matched against the beginning of each request URI to select the

+        appropriate web application for processing.  All of the context paths

+        within a particular <a href="host.html">Host</a> must be unique.

+        If you specify a context path of an empty string (""), you are

+        defining the <em>default</em> web application for this Host, which

+        will process all requests not assigned to other Contexts.</p>

+        <p>This attribute must only be used when statically defining a Context

+        in server.xml. In all other circumstances, the path will be inferred

+        from the filenames used for either the .xml context file or the docBase.

+        </p>

+        <p>Even when statically defining a Context in server.xml, this attribute

+        must not be set unless either the docBase is not located under the

+        <a href="host.html">Host</a>'s <code>appBase</code> or both

+        <code>deployOnStartup</code> and <code>autoDeploy</code> are false. If

+        this rule is not followed, double deployment is likely to result.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">preemptiveAuthentication</code></td><td align="left" valign="center">

+        <p>When set to <code>true</code> and the user presents credentials for a

+        resource that is not protected by a security constraint, if the

+        authenticator supports preemptive authentication (the standard

+        authenticators provided with Tomcat do) then the user' credentials

+        will be processed. If not specified, the default of <code>false</code>is

+        used.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">privileged</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to allow this context to use container

+        servlets, like the manager servlet. Use of the <code>privileged</code>

+        attribute will change the context's parent class loader to be the

+        <em>Server</em> class loader rather than the <em>Shared</em> class

+        loader. Note that in a default installation, the <em>Common</em> class

+        loader is used for both the <em>Server</em> and the <em>Shared</em>

+        class loaders.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">reloadable</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want Catalina to monitor classes in

+        <code>/WEB-INF/classes/</code> and <code>/WEB-INF/lib</code> for

+        changes, and automatically reload the web application if a change

+        is detected.  This feature is very useful during application

+        development, but it requires significant runtime overhead and is

+        not recommended for use on deployed production applications.  That's

+        why the default setting for this attribute is <i>false</i>.  You

+        can use the <a href="../manager-howto.html">Manager</a> web

+        application, however, to trigger reloads of deployed applications

+        on demand.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">resourceOnlyServlets</code></td><td align="left" valign="center">

+        <p>Comma separated list of Servlet names (as used in

+        <code>/WEB-INF/web.xml</code>) that expect a resource to be present.

+        Ensures that welcome files associated with Servlets that expect a

+        resource to be present (such as the JSP Servlet) are not used when there

+        is no resource present. This prevents issues caused by the clarification

+        of welcome file mapping in section 10.10 of the Servlet 3.0

+        specification. If the

+        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        <a href="systemprops.html">system property</a> is set to

+        <code>true</code>, the default value of this attribute will be the empty

+        string, else the default value will be <code>jsp</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendRedirectBody</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, redirect responses will include a short

+        response body that includes details of the redirect as recommended by

+        RFC 2616. This is disabled by default since including a response body

+        may cause problems for some application component such as compression

+        filters.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookieDomain</code></td><td align="left" valign="center">

+        <p>The domain to be used for all session cookies created for this

+        context. If set, this overrides any domain set by the web application.

+        If not set, the value specified by the web application, if any, will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookieName</code></td><td align="left" valign="center">

+        <p>The name to be used for all session cookies created for this

+        context. If set, this overrides any name set by the web application.

+        If not set, the value specified by the web application, if any, will be

+        used, or the name <code>JSESSIONID</code> if the web application does

+        not explicitly set one.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookiePath</code></td><td align="left" valign="center">

+        <p>The path to be used for all session cookies created for this

+        context. If set, this overrides any path set by the web application.

+        If not set, the value specified by the web application will be used, or

+        the context path used if the web application does not explicitly set

+        one. To configure all web application to use an empty path (this can be

+        useful for portlet specification implementations) set this attribute to

+        <code>/</code> in the global <code>CATALINA_BASE/conf/context.xml</code>

+        file.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookiePathUsesTrailingSlash</code></td><td align="left" valign="center">

+        <p>Some browsers, such as IE, will send a session cookie for a context

+        with a path of /foo with a request to /foobar. To prevent this, Tomcat

+        will add a trailing slash to the path associated with the session cookie

+        so, in the above example, the cookie path becomes /foo/. However, with a

+        cookie path of /foo/, IE will no longer send the cookie with a request

+        to /foo. This should not be a problem unless there is a servlet mapped

+        to /*. In this case this feature will need to be disabled. The default

+        value for this attribute is <code>true.</code> To disable this feature,

+        set the attribute to <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">swallowAbortedUploads</code></td><td align="left" valign="center">

+        <p>Set to false if Tomcat should <b>not</b> read any additional request

+        body data for aborted uploads and instead abort the client connection.

+        This setting is used in the following situations:

+        </p>

+        <ul>

+        <li>the size of the request body is larger than the

+            <code>maxPostSize</code> configured in the connector</li>

+        <li>the size limit of a MultiPart upload is reached</li>

+        <li>the servlet sets the response status to 413 (Request Entity Too

+            Large) </li>

+        </ul>

+        <p>

+        Not reading the additional data will free the request processing thread

+        more quickly. Unfortunately most HTTP clients will not read the response

+        if they can not write the full request.</p>

+        <p>The default is <code>true</code>, so additional data will be

+        read.</p>

+        <p>Note if an error occurs during the request processing that triggers

+        a 5xx response, any unread request data will always be ignored and the

+        client connection will be closed once the error response has been

+        written.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">swallowOutput</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the bytes output to

+        System.out and System.err by the web application will be redirected to

+        the web application logger. If not specified, the default value

+        of the flag is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">tldNamespaceAware</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the TLD files

+        XML validation will be namespace-aware.  If you turn this flag on,

+        you should probably also turn <code>tldValidation</code> on. If the

+        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        <a href="systemprops.html">system property</a> is set to

+        <code>true</code>, the default value of this attribute will be

+        <code>true</code>, else the default value will be <code>false</code>.

+        Setting this attribute to <code>true</code> will incur a performance

+        penalty.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">tldValidation</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the TLD files

+        will be XML validated on context startup. If the

+        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        <a href="systemprops.html">system property</a> is set to

+        <code>true</code>, the default value of this attribute will be

+        <code>true</code>, else the default value will be <code>false</code>.

+        Setting this attribute to <code>true</code> will incur a performance

+        penalty.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useHttpOnly</code></td><td align="left" valign="center">

+       <p>Should the HttpOnly flag be set on session cookies to prevent client

+          side script from accessing the session ID? Defaults to

+          <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">wrapperClass</code></td><td align="left" valign="center">

+        <p>Java class name of the <code>org.apache.catalina.Wrapper</code>

+        implementation class that will be used for servlets managed by this

+        Context.  If not specified, a standard default value will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlNamespaceAware</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the validation of

+        XML files will be namespace-aware.  If you turn this flag on,

+        you should probably also turn <code>xmlValidation</code> on. If

+        the <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        <a href="systemprops.html">system property</a> is set to

+        <code>true</code>, the default value of this attribute will be

+        <code>true</code>, else the default value will be <code>false</code>.

+        Setting this attribute to <code>true</code> will incur a performance

+        penalty.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlValidation</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the XML files

+        will be validated on context startup. If the

+        <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+        <a href="systemprops.html">system property</a> is set to

+        <code>true</code>, the default value of this attribute will be

+        <code>true</code>, else the default value will be <code>false</code>.

+        Setting this attribute to <code>true</code> will incur a performance

+        penalty.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The standard implementation of <strong>Context</strong> is

+    <strong>org.apache.catalina.core.StandardContext</strong>.

+    It supports the following additional attributes (in addition to the

+    common attributes listed above):</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">addWebinfClassesResources</code></td><td align="left" valign="center">

+        <p>This attribute controls if, in addition to static resources being

+        served from <code>META-INF/resources</code> inside web application JAR

+        files, static resources are also served from

+        <code>WEB-INF/classes/META-INF/resources</code>. This only applies to

+        web applications with a major version of 3 or higher. Since this is a

+        proprietary extension to the Servlet 3 specification, it is disabled by

+        default. To enable this feature, set the attribute to <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">aliases</code></td><td align="left" valign="center">

+        <p>This attribute provides a list of external locations from which to

+        load resources for this context. The list of aliases should be of

+        the form <code>"/aliasPath1=docBase1,/aliasPath2=docBase2"</code> where

+        <code>aliasPathN</code> must include a leading '/' and

+        <code>docBaseN</code> must be an absolute path to either a .war file or

+        a directory.</p>

+        <p>Whitespace is permitted around both the <code>,</code> and

+        <code>=</code> delimiters, and will be trimmed. Therefore, an aliases

+        attribute with the value <code>"/aliasPath1 = docBase1,<br>

+        /aliasPath2= docBase2"</code> is equivalent to

+        <code>"/aliasPath1=docBase1,/aliasPath2=docBase2"</code></p>

+        <p>A resource will be searched for in the first <code>docBaseN</code>

+        for which <code>aliasPathN</code> is a leading path segment of the

+        resource. If there is no such alias, then the resource will be searched

+        in the usual way.</p>

+        <p>Using '/' as an aliasPath is not allowed. Consider using

+        <code>docBase</code> instead.</p>

+        <p>These external locations will not be emptied if the context

+        is un-deployed.</p>

+        <p>A more powerful feature (for development only) is

+        <a href="#Virtual_webapp">Virtual webapp</a>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowLinking</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, symlinks will be

+        allowed inside the web application, pointing to resources outside the

+        web application base path. If not specified, the default value

+        of the flag is <code>false</code>.</p>

+        <p><b>NOTE: This flag MUST NOT be set to true on the Windows platform

+        (or any other OS which does not have a case sensitive filesystem),

+        as it will disable case sensitivity checks, allowing JSP source code

+        disclosure, among other security problems.</b></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiJARLocking</code></td><td align="left" valign="center">

+        <p>If true, the Tomcat classloader will take extra measures to avoid

+        JAR file locking when resources are accessed inside JARs through URLs.

+        This will impact startup time of applications, but could prove to be

+        useful on platforms or configurations where file locking can occur.

+        If not specified, the default value is <code>false</code>.</p>

+

+        <p><code>antiJARLocking</code> is a subset of

+        <code>antiResourceLocking</code> and therefore, to prevent duplicate

+        work and possible issues, only one of these attributes should be set

+        to <code>true</code> at any one time.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiResourceLocking</code></td><td align="left" valign="center">

+        <p>If true, Tomcat will prevent any file locking.

+        This will significantly impact startup time of applications,

+        but allows full webapp hot deploy and undeploy on platforms

+        or configurations where file locking can occur.

+        If not specified, the default value is <code>false</code>.</p>

+

+        <p><code>antiJARLocking</code> is a subset of

+        <code>antiResourceLocking</code> and therefore, to prevent duplicate

+        work and possible issues, only one of these attributes should be set

+        to <code>true</code> at any one time.</p>

+

+        <p>Please note that setting this to <code>true</code> has some side

+        effects, including the disabling of JSP reloading in a running server:

+        see <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37668">

+        Bugzilla 37668</a>.</p>

+

+        <p>Please note that setting this flag to true in applications that are

+        outside the appBase for the Host (the <code>webapps</code> directory

+        by default) will cause the application to be <strong>deleted</strong> on

+        Tomcat shutdown.  You probably don't want to do this, so think twice

+        before setting antiResourceLocking=true on a webapp that's outside the

+        appBase for its Host.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheMaxSize</code></td><td align="left" valign="center">

+        <p>Maximum size of the static resource cache in kilobytes.

+        If not specified, the default value is <code>10240</code>

+        (10 megabytes).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheObjectMaxSize</code></td><td align="left" valign="center">

+        <p>Maximum size of the static resource that will be placed in the cache.

+        If not specified, the default value is <code>512</code>

+        (512 kilobytes). If this value is greater than

+        <code>cacheMaxSize/20</code> it will be reduced to

+        <code>cacheMaxSize/20</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheTTL</code></td><td align="left" valign="center">

+        <p>Amount of time in milliseconds between cache entries revalidation.

+        If not specified, the default value is <code>5000</code>

+        (5 seconds).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cachingAllowed</code></td><td align="left" valign="center">

+        <p>If the value of this flag is <code>true</code>, the cache for static

+        resources will be used. If not specified, the default value

+        of the flag is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesHttpClientKeepAliveThread</code></td><td align="left" valign="center">

+        <p>If <code>true</code> and an <code>sun.net.www.http.HttpClient</code>

+        keep-alive timer thread has been started by this web application and is

+        still running, Tomcat will change the context class loader for that

+        thread from the current <code>WebappClassLoader</code> to

+        <code>WebappClassLoader#parent</code> to prevent a memory leak. Note

+        that the keep-alive timer thread will stop on its own once the

+        keep-alives all expire however, on a busy system that might not happen

+        for some time. If not specified, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStatic</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, Tomcat attempts to null out any static or final

+        fields from loaded classes when a web application is stopped as a work

+        around for apparent garbage collection bugs and application coding

+        errors. There have been some issues reported with log4j when this

+        is <code>true</code>. Applications without memory leaks using recent

+        JVMs should operate correctly with this attribute set to

+        <code>false</code>. If not specified, the default value of

+        <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStopThreads</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, Tomcat attempts to terminate threads that have

+        been started by the web application. Stopping threads is performed via

+        the deprecated (for good reason) <code>Thread.stop()</code> method and

+        is likely to result in instability. As such, enabling this should be

+        viewed as an option of last resort in a development environment and is

+        not recommended in a production environment. If not specified, the

+        default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStopTimerThreads</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, Tomcat attempts to terminate

+        <code>java.util.Timer</code> threads that have been started by the web

+        application. Unlike standard threads, timer threads can be stopped

+        safely although there may still be side-effects for the application. If

+        not specified, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">jndiExceptionOnFailedWrite</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, any attempt by an application to modify the

+        provided JNDI context with a call to bind(), unbind(),

+        createSubContext(), destroySubContext() or close() will trigger a

+        <code>javax.naming.OperationNotSupportedException</code> as required by

+        section EE.5.3.4 of the Java EE specification. This exception can be

+        disabled by setting this attribute to true in which case any calls to

+        modify the JNDI context will return <b>without</b> making any changes

+        and methods that return values will return <code>null</code>. If not

+        specified, the specification compliant default of <code>true</code> will

+        be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processTlds</code></td><td align="left" valign="center">

+        <p>Whether the context should process TLDs on startup.  The default

+        is true.  The false setting is intended for special cases

+        that know in advance TLDs are not part of the webapp.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">renewThreadsWhenStoppingContext</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, when this context is stopped, Tomcat renews all

+        the threads from the thread pool that was used to serve this context.

+        This also requires that the

+        <code>ThreadLocalLeakPreventionListener</code> be configured in

+        <code>server.xml</code> and that the <code>threadRenewalDelay</code>

+        property of the <code>Executor</code> be &gt;=0. If not specified, the

+        default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">unloadDelay</code></td><td align="left" valign="center">

+        <p>Number of ms that the container will wait for servlets to unload.

+        If not specified, the default value is <code>2000</code> ms.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">unpackWAR</code></td><td align="left" valign="center">

+        <p>If <code>false</code>, the <strong>unpackWARs</strong> attribute of

+        the owning <a href="host.html">Host</a> will be overridden and the WAR

+        file will not be unpacked. If <code>true</code>, the value of the owning

+        <a href="host.html">Host</a>'s <strong>unpackWARs</strong>

+        attribute will determine if the WAR is unpacked. If not specified, the

+        default value is <code>true</code>. Note that WAR files located outside

+        of a <a href="host.html">Host</a>'s <strong>appBase</strong> are

+        never unpacked.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useNaming</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> (the default) to have Catalina enable a

+        JNDI <code>InitialContext</code> for this web application that is

+        compatible with Java2 Enterprise Edition (J2EE) platform

+        conventions.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">workDir</code></td><td align="left" valign="center">

+        <p>Pathname to a scratch directory to be provided by this Context

+        for temporary read-write use by servlets within the associated web

+        application.  This directory will be made visible to servlets in the

+        web application by a servlet context attribute (of type

+        <code>java.io.File</code>) named

+        <code>javax.servlet.context.tempdir</code> as described in the

+        Servlet Specification.  If not specified, a suitable directory

+        underneath <code>$CATALINA_BASE/work</code> will be provided.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>You can nest at most one instance of the following utility components

+  by nesting a corresponding element inside your <strong>Context</strong>

+  element:</p>

+  <ul>

+  <li><a href="loader.html"><strong>Loader</strong></a> -

+      Configure the web application class loader that will be used to load

+      servlet and bean classes for this web application.  Normally, the

+      default configuration of the class loader will be sufficient.</li>

+  <li><a href="manager.html"><strong>Manager</strong></a> -

+      Configure the session manager that will be used to create, destroy,

+      and persist HTTP sessions for this web application.  Normally, the

+      default configuration of the session manager will be sufficient.</li>

+  <li><a href="realm.html"><strong>Realm</strong></a> -

+      Configure a realm that will allow its

+      database of users, and their associated roles, to be utilized solely

+      for this particular web application.  If not specified, this web

+      application will utilize the Realm associated with the owning

+      <a href="host.html">Host</a> or <a href="engine.html">Engine</a>.</li>

+  <li><a href="resources.html"><strong>Resources</strong></a> -

+      Configure the resource manager that will be used to access the static

+      resources associated with this web application.  Normally, the

+      default configuration of the resource manager will be sufficient.</li>

+  <li><strong>WatchedResource</strong> - The auto deployer will monitor the

+      specified static resource of the web application for updates, and will

+      reload the web application if it is updated. The content of this element

+      must be a string.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>A context is associated with the

+       <code>org.apache.catalina.core.ContainerBase.[enginename].[hostname].[path]</code>

+       log category.  Note that the brackets are actually part of the name, don't omit them.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Logs"><!--()--></a><a name="Access_Logs"><strong>Access Logs</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>When you run a web server, one of the output files normally generated

+    is an <em>access log</em>, which generates one line of information for

+    each request processed by the server, in a standard format.  Catalina

+    includes an optional <a href="valve.html">Valve</a> implementation that

+    can create access logs in the same standard format created by web servers,

+    or in any number of custom formats.</p>

+

+    <p>You can ask Catalina to create an access log for all requests

+    processed by an <a href="engine.html">Engine</a>,

+    <a href="host.html">Host</a>, or <a href="context.html">Context</a>

+    by nesting a <a href="valve.html">Valve</a> element like this:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Context&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.valves.AccessLogValve"

+         prefix="localhost_access_log." suffix=".txt"

+         pattern="common"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>

+    for more information on the configuration attributes that are

+    supported.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Automatic Context Configuration"><!--()--></a><a name="Automatic_Context_Configuration"><strong>Automatic Context Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>If you use the standard <strong>Context</strong> implementation,

+    the following configuration steps occur automatically when Catalina

+    is started, or whenever this web application is reloaded.  No special

+    configuration is required to enable this feature.</p>

+

+    <ul>

+    <li>If you have not declared your own <a href="loader.html">Loader</a>

+       element, a standard web application class loader will be configured.

+       </li>

+    <li>If you have not declared your own <a href="manager.html">Manager</a>

+        element, a standard session manager will be configured.</li>

+    <li>If you have not declared your own <a href="resources.html">Resources</a>

+        element, a standard resources manager will be configured.</li>

+    <li>The web application properties listed in <code>conf/web.xml</code>

+        will be processed as defaults for this web application.  This is used

+        to establish default mappings (such as mapping the <code>*.jsp</code>

+        extension to the corresponding JSP servlet), and other standard

+        features that apply to all web applications.</li>

+    <li>The web application properties listed in the

+        <code>/WEB-INF/web.xml</code> resource for this web application

+        will be processed (if this resource exists).</li>

+    <li>If your web application has specified security constraints that might

+        require user authentication, an appropriate Authenticator that

+        implements the login method you have selected will be configured.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context Parameters"><!--()--></a><a name="Context_Parameters"><strong>Context Parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can configure named values that will be made visible to the

+    web application as servlet context initialization parameters by nesting

+    <code>&lt;Parameter&gt;</code> elements inside this element.  For

+    example, you can create an initialization parameter like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Context&gt;

+  ...

+  &lt;Parameter name="companyName" value="My Company, Incorporated"

+         override="false"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>This is equivalent to the inclusion of the following element in the

+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):

+    </p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;context-param&gt;

+  &lt;param-name&gt;companyName&lt;/param-name&gt;

+  &lt;param-value&gt;My Company, Incorporated&lt;/param-value&gt;

+&lt;/context-param&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>but does <em>not</em> require modification of the deployment descriptor

+    to customize this value.</p>

+

+    <p>The valid attributes for a <code>&lt;Parameter&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

+        <p>Optional, human-readable description of this context

+        initialization parameter.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>The name of the context initialization parameter to be created.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

+        <p>Set this to <code>false</code> if you do <strong>not</strong> want

+        a <code>&lt;context-param&gt;</code> for the same parameter name,

+        found in the web application deployment descriptor, to override the

+        value specified here.  By default, overrides are allowed.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">

+        <p>The parameter value that will be presented to the application

+        when requested by calling

+        <code>ServletContext.getInitParameter()</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environment Entries"><!--()--></a><a name="Environment_Entries"><strong>Environment Entries</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can configure named values that will be made visible to the

+    web application as environment entry resources, by nesting

+    <code>&lt;Environment&gt;</code> entries inside this element.  For

+    example, you can create an environment entry like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Context&gt;

+  ...

+  &lt;Environment name="maxExemptions" value="10"

+         type="java.lang.Integer" override="false"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>This is equivalent to the inclusion of the following element in the

+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):

+    </p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;env-entry&gt;

+  &lt;env-entry-name&gt;maxExemptions&lt;/env-entry-name&gt;

+  &lt;env-entry-value&gt;10&lt;/env-entry-value&gt;

+  &lt;env-entry-type&gt;java.lang.Integer&lt;/env-entry-type&gt;

+&lt;/env-entry&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>but does <em>not</em> require modification of the deployment descriptor

+    to customize this value.</p>

+

+    <p>The valid attributes for an <code>&lt;Environment&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

+        <p>Optional, human-readable description of this environment entry.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>The name of the environment entry to be created, relative to the

+        <code>java:comp/env</code> context.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

+        <p>Set this to <code>false</code> if you do <strong>not</strong> want

+        an <code>&lt;env-entry&gt;</code> for the same environment entry name,

+        found in the web application deployment descriptor, to override the

+        value specified here.  By default, overrides are allowed.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

+        <p>The fully qualified Java class name expected by the web application

+        for this environment entry.  Must be a legal value for

+        <code>&lt;env-entry-type&gt;</code> in the web application deployment

+        descriptor.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">

+        <p>The parameter value that will be presented to the application

+        when requested from the JNDI context.  This value must be convertable

+        to the Java type defined by the <code>type</code> attribute.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Lifecycle Listeners"><!--()--></a><a name="Lifecycle_Listeners"><strong>Lifecycle Listeners</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>If you have implemented a Java object that needs to know when this

+    <strong>Context</strong> is started or stopped, you can declare it by

+    nesting a <strong>Listener</strong> element inside this element.  The

+    class name you specify must implement the

+    <code>org.apache.catalina.LifecycleListener</code> interface, and

+    the class must be packaged in a jar and placed in the

+    <code>$CATALINA_HOME/lib</code> directory.

+    It will be notified about the occurrence of the corresponding

+    lifecycle events.  Configuration of such a listener looks like this:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Context&gt;

+  ...

+  &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that a Listener can have any number of additional properties

+    that may be configured from this element.  Attribute names are matched

+    to corresponding JavaBean property names using the standard property

+    method naming patterns.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Filters"><!--()--></a><a name="Request_Filters"><strong>Request Filters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can ask Catalina to check the IP address, or host name, on every

+    incoming request directed to the surrounding

+    <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

+    <a href="context.html">Context</a> element.  The remote address or name

+    will be checked against configured "accept" and/or "deny"

+    filters, which are defined using <code>java.util.regex</code> Regular

+    Expression syntax.  Requests that come from locations that are

+    not accepted will be rejected with an HTTP "Forbidden" error.

+    Example filter declarations:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Context&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"

+         allow=".*\.mycompany\.com|www\.yourcompany\.com"/&gt;

+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         deny="192\.168\.1\.\d+"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>See <a href="valve.html#Remote Address Filter">Remote Address Filter</a>

+    and <a href="valve.html#Remote Host Filter">Remote Host Filter</a> for

+    more information about the configuration options that are supported.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Definitions"><!--()--></a><a name="Resource_Definitions"><strong>Resource Definitions</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can declare the characteristics of the resource

+    to be returned for JNDI lookups of <code>&lt;resource-ref&gt;</code> and

+    <code>&lt;resource-env-ref&gt;</code> elements in the web application

+    deployment descriptor.  You <strong>MUST</strong> also define

+    the needed resource parameters as attributes of the <code>Resource</code>

+    element, to configure the object factory to be used (if not known to Tomcat

+    already), and the properties used to configure that object factory.</p>

+

+    <p>For example, you can create a resource definition like this:</p>

+<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>

+&lt;Context&gt;

+  ...

+  &lt;Resource name="jdbc/EmployeeDB" auth="Container"

+            type="javax.sql.DataSource"

+     description="Employees Database for HR Applications"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>This is equivalent to the inclusion of the following element in the

+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;resource-ref&gt;

+  &lt;description&gt;Employees Database for HR Applications&lt;/description&gt;

+  &lt;res-ref-name&gt;jdbc/EmployeeDB&lt;/res-ref-name&gt;

+  &lt;res-ref-type&gt;javax.sql.DataSource&lt;/res-ref-type&gt;

+  &lt;res-auth&gt;Container&lt;/res-auth&gt;

+&lt;/resource-ref&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>but does <em>not</em> require modification of the deployment

+    descriptor to customize this value.</p>

+

+    <p>The valid attributes for a <code>&lt;Resource&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">auth</code></td><td align="left" valign="center">

+        <p>Specify whether the web Application code signs on to the

+        corresponding resource manager programatically, or whether the

+        Container will sign on to the resource manager on behalf of the

+        application.  The value of this attribute must be

+        <code>Application</code> or <code>Container</code>.  This

+        attribute is <strong>required</strong> if the web application

+        will use a <code>&lt;resource-ref&gt;</code> element in the web

+        application deployment descriptor, but is optional if the

+        application uses a <code>&lt;resource-env-ref&gt;</code> instead.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">closeMethod</code></td><td align="left" valign="center">

+        <p>Name of the zero-argument method to call on a singleton resource when

+        it is no longer required. This is intended to speed up clean-up of

+        resources that would otherwise happen as part of garbage collection.

+        This attribute is ignored if the <code>singleton</code> attribute is

+        false. If not specificed, no default is defined and no close method will

+        be called.</p>

+        <p>For Apache Commons DBCP and Apache Tomcat JDBC connection pools

+        you can use <code>closeMethod="close"</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

+        <p>Optional, human-readable description of this resource.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>The name of the resource to be created, relative to the

+        <code>java:comp/env</code> context.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scope</code></td><td align="left" valign="center">

+        <p>Specify whether connections obtained through this resource

+        manager can be shared.  The value of this attribute must be

+        <code>Shareable</code> or <code>Unshareable</code>.  By default,

+        connections are assumed to be shareable.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">singleton</code></td><td align="left" valign="center">

+        <p>Specify whether this resource definition is for a singleton resource,

+        i.e. one where there is only a single instance of the resource. If this

+        attribute is <code>true</code>, multiple JNDI lookups for this resource

+        will return the same object. If this attribute is <code>false</code>,

+        multiple JNDI lookups for this resource will return different objects.

+        This attribute must be <code>true</code> for

+        <code>javax.sql.DataSource</code> resources to enable JMX registration

+        of the DataSource. The value of this attribute must be <code>true</code>

+        or <code>false</code>. By default, this attribute is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

+        <p>The fully qualified Java class name expected by the web

+        application when it performs a lookup for this resource.</p>

+      </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Links"><!--()--></a><a name="Resource_Links"><strong>Resource Links</strong></a></font></td></tr><tr><td><blockquote>

+

+     <p>This element is used to create a link to a global JNDI resource. Doing

+     a JNDI lookup on the link name will then return the linked global

+     resource.</p>

+

+    <p>For example, you can create a resource link like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Context&gt;

+  ...

+  &lt;ResourceLink name="linkToGlobalResource"

+            global="simpleValue"

+            type="java.lang.Integer"

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>The valid attributes for a <code>&lt;ResourceLink&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">global</code></strong></td><td align="left" valign="center">

+        <p>The name of the linked global resource in the

+        global JNDI context.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>The name of the resource link to be created, relative to the

+        <code>java:comp/env</code> context.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

+        <p>The fully qualified Java class name expected by the web

+        application when it performs a lookup for this resource link.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">factory</code></td><td align="left" valign="center">

+        <p>The fully qualified Java class name for the class creating these objects.

+        This class should implement the <code>javax.naming.spi.ObjectFactory</code> interface.</p>

+      </td></tr></table>

+

+    <p>When the attribute <code>factory="org.apache.naming.factory.DataSourceLinkFactory"</code> the resource link can be used with

+       two additional attributes to allow a shared data source to be used with different credentials.

+       When these two additional attributes are used in combination with the <code>javax.sql.DataSource</code>

+       type, different contexts can share a global data source with different credentials.

+       Under the hood, what happens is that a call to <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection()"><code>getConnection()</code></a>

+       is simply translated to a call <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection(java.lang.String,%20java.lang.String)">

+       <code>getConnection(username, password)</code></a> on the global data source. This is an easy way to get code to be transparent to what schemas are being used,

+       yet be able to control connections (or pools) in the global configuration.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">username</code></td><td align="left" valign="center">

+        <p><code>username</code> value for the <code>getConnection(username, password)</code>

+           call on the linked global DataSource.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">password</code></td><td align="left" valign="center">

+        <p><code>password</code> value for the <code>getConnection(username, password)</code>

+           call on the linked global DataSource.

+        </p>

+      </td></tr></table>

+    <p>Shared Data Source Example:</p>

+    <p><strong>Warning:</strong> This feature works only if the global DataSource

+supports <code>getConnection(username, password)</code> method.

+<a href="http://commons.apache.org/dbcp/">Apache Commons DBCP</a> pool that

+Tomcat uses by default does not support it. See its Javadoc for

+<code>BasicDataSource</code> class.

+<a href="../jdbc-pool.html">Apache Tomcat JDBC pool</a> does support it,

+but by default this support is disabled and can be enabled by

+<code>alternateUsernameAllowed</code> attribute. See its documentation

+for details.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;GlobalNamingResources&gt;

+  ...

+  &lt;Resource name="sharedDataSource"

+            global="sharedDataSource"

+            type="javax.sql.DataSource"

+            factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

+            alternateUsernameAllowed="true"

+            username="bar"

+            password="barpass"

+            ...

+  ...

+&lt;/GlobalNamingResources&gt;

+

+&lt;Context path="/foo"...&gt;

+  ...

+  &lt;ResourceLink

+            name="appDataSource"

+            global="sharedDataSource"

+            type="javax.sql.DataSource"

+            factory="org.apache.naming.factory.DataSourceLinkFactory"

+            username="foo"

+            password="foopass"

+  ...

+&lt;/Context&gt;

+&lt;Context path="/bar"...&gt;

+  ...

+  &lt;ResourceLink

+            name="appDataSource"

+            global="sharedDataSource"

+            type="javax.sql.DataSource"

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>When a request for <code>getConnection()</code> is made in the

+       <code>/foo</code> context, the request is translated into

+       <code>getConnection("foo","foopass")</code>,

+       while a request in the <code>/bar</code> gets passed straight through.</p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transaction"><strong>Transaction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can declare the characteristics of the UserTransaction

+    to be returned for JNDI lookup for <code>java:comp/UserTransaction</code>.

+    You <strong>MUST</strong> define an object factory class to instantiate

+    this object as well as the needed resource parameters as attributes of the

+    <code>Transaction</code>

+    element, and the properties used to configure that object factory.</p>

+

+    <p>The valid attributes for the <code>&lt;Transaction&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">factory</code></strong></td><td align="left" valign="center">

+        <p>The class name for the JNDI object factory.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Virtual webapp"><!--()--></a><a name="Virtual_webapp"><strong>Virtual webapp</strong></a></font></td></tr><tr><td><blockquote>

+    <p>During development it may be more productive to avoid copying files (static

+    resources, JSPs, classes, jars...) and configure tomcat to use files from their

+    source locations. To do that, several customisations of the context configuration are

+    required:</p>

+    <ul>

+      <li>The <code>VirtualDirContext</code> implementation of

+      <a href="resources.html">Resources</a></li>

+      <li>The <code>VirtualWebappLoader</code> implementation of

+      <a href="loader.html">Loader</a></li>

+      <li><code>scanAllDirectories="true"</code> on the <a href="jar-scanner.html">JarScanner</a></li>

+    </ul>

+    <p>To illustrate this feature, here is an example of a standard maven webapp source tree:</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>

+mywebapp/

+         src/

+             main/

+                  java/

+                  resources/

+                  webapp/

+                         WEB-INF/

+                                 classes/

+         target/

+                classes/

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>To deploy such an application (assuming it also uses the log4j maven artefact),

+    the context configuration looks like:</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>

+&lt;Context path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp" &gt;

+  &lt;Resources className="org.apache.naming.resources.VirtualDirContext"

+    extraResourcePaths=

+      "/WEB-INF/classes=/Users/theuser/mywebapp/target/classes" /&gt;

+  &lt;Loader className="org.apache.catalina.loader.VirtualWebappLoader"

+    virtualClasspath="/Users/theuser/mywebapp/target/classes;

+      /Users/theuser/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar" /&gt;

+  &lt;JarScanner scanAllDirectories="true" /&gt;

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Here is another example where the webapp serves pictures under /pictures and movies

+    under /movies and also depends on another maven project mylib that would normally

+    produce a jar to be packaged in WEB-INF/lib:</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>

+mylib/

+      src/

+          main/

+               java/

+               resources/

+                         META-INF/

+                                  resources/

+      target/

+             classes/

+mymovies/

+mypictures/

+mywebapp/

+         src/

+             main/

+                  java/

+                  resources/

+                  webapp/

+                         WEB-INF/

+                                 classes/

+         target/

+                classes/

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>The configuration is:</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"><div class="wrapped-source"><code>

+&lt;Context path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp" &gt;

+<div>

+  &lt;Resources className="org.apache.naming.resources.VirtualDirContext"

+    <div><p>extraResourcePaths="/WEB-INF/classes=/Users/theuser/mywebapp/target/classes,/pictures=/Users/theuser/mypictures,/movies=/Users/theuser/mymovies"</p></div>

+    <div>/&gt;</div>

+</div>

+<div>

+  &lt;Loader className="org.apache.catalina.loader.VirtualWebappLoader"

+    <div><p>virtualClasspath="/Users/theuser/mywebapp/target/classes;/Users/theuser/mylib/target/classes;/Users/theuser/.m2/repository/log4j/log4j/1.2.15/log4j-1.2.15.jar"</p></div>

+    <div>/&gt;</div>

+</div>

+<div>

+  &lt;JarScanner scanAllDirectories="true" /&gt;

+</div>

+&lt;/Context&gt;

+</code></div></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that resources in mylib/target/classes/META-INF/resources/ are mapped to / as

+    required by servlet 3 specification.</p>

+  </blockquote></td></tr></table>

+</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="/tomcat-7.0-doc/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/config/context.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/engine.html b/webapps/docs/config/engine.html
new file mode 100644
index 0000000..a1cd36e
--- /dev/null
+++ b/webapps/docs/config/engine.html
@@ -0,0 +1,251 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Engine Container</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Engine Container</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Engine</strong> element represents the entire request

+  processing machinery associated with a particular Catalina

+  <a href="service.html">Service</a>.  It receives and processes

+  <em>all</em> requests from one or more <strong>Connectors</strong>,

+  and returns the completed response to the Connector for ultimate

+  transmission back to the client.</p>

+

+  <p>Exactly one <strong>Engine</strong> element MUST be nested inside

+  a <a href="service.html">Service</a> element, following all of the

+  corresponding Connector elements associated with this Service.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Engine</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">backgroundProcessorDelay</code></td><td align="left" valign="center">

+        <p>This value represents the delay in seconds between the

+        invocation of the backgroundProcess method on this engine and

+        its child containers, including all hosts and contexts.

+        Child containers will not be invoked if their delay value is not

+        negative (which would mean they are using their own processing

+        thread). Setting this to a positive value will cause

+        a thread to be spawn. After waiting the specified amount of time,

+        the thread will invoke the backgroundProcess method on this engine

+        and all its child containers. If not specified, the default value for

+        this attribute is 10, which represent a 10 seconds delay.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.catalina.Engine</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">defaultHost</code></strong></td><td align="left" valign="center">

+        <p>The default host name, which identifies the

+        <a href="host.html">Host</a> that will process requests directed

+        to host names on this server, but which are not configured in

+        this configuration file.  This name MUST match the <code>name</code>

+        attributes of one of the <a href="host.html">Host</a> elements

+        nested immediately inside.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">jvmRoute</code></td><td align="left" valign="center">

+        <p>Identifier which must be used in load balancing scenarios to enable

+        session affinity. The identifier, which must be unique across all

+        Tomcat servers which participate in the cluster, will be appended to

+        the generated session identifier, therefore allowing the front end

+        proxy to always forward a particular session to the same Tomcat

+        instance.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>Logical name of this Engine, used in log and error messages. <em>When

+        using multiple <a href="service.html">Service</a> elements in the same

+        <a href="server.html">Server</a>, each Engine MUST be assigned a unique

+        name.</em></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">startStopThreads</code></td><td align="left" valign="center">

+        <p>The number of threads this <strong>Engine</strong> will use to start

+        child <a href="host.html">Host</a> elements in parallel. The special

+        value of 0 will result in the value of

+        <code>Runtime.getRuntime().availableProcessors()</code> being used.

+        Negative values will result in

+        <code>Runtime.getRuntime().availableProcessors() + value</code> being

+        used unless this is less than 1 in which case 1 thread will be used. If

+        not specified, the default value of 1 will be used. </p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The standard implementation of <strong>Engine</strong> is

+    <strong>org.apache.catalina.core.StandardEngine</strong>.

+    It supports the following additional attributes (in addition to the

+    common attributes listed above):</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>You can nest one or more <a href="host.html">Host</a> elements inside

+  this <strong>Engine</strong> element, each representing a different virtual

+  host associated with this server.  At least one <a href="host.html">Host</a>

+  is required, and one of the nested <a href="host.html">Hosts</a> MUST

+  have a name that matches the name specified for the

+  <code>defaultHost</code> attribute, listed above.</p>

+

+  <p>You can nest at most one instance of the following utility components

+  by nesting a corresponding element inside your <strong>Engine</strong>

+  element:</p>

+  <ul>

+  <li><a href="realm.html"><strong>Realm</strong></a> -

+      Configure a realm that will allow its

+      database of users, and their associated roles, to be shared across all

+      <a href="host.html">Hosts</a> and <a href="context.html">Contexts</a>

+      nested inside this Engine, unless overridden by a

+      <a href="realm.html">Realm</a> configuration at a lower level.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>An engine is associated with the

+       <code>org.apache.catalina.core.ContainerBase.[enginename]</code>

+       log category.  Note that the brackets are actually part of the name,

+       don't omit them.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Logs"><!--()--></a><a name="Access_Logs"><strong>Access Logs</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>When you run a web server, one of the output files normally generated

+    is an <em>access log</em>, which generates one line of information for

+    each request processed by the server, in a standard format.  Catalina

+    includes an optional <a href="valve.html">Valve</a> implementation that

+    can create access logs in the same standard format created by web servers,

+    or in any number of custom formats.</p>

+

+    <p>You can ask Catalina to create an access log for all requests

+    processed by an <a href="engine.html">Engine</a>,

+    <a href="host.html">Host</a>, or <a href="context.html">Context</a>

+    by nesting a <a href="valve.html">Valve</a> element like this:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Engine name="Standalone" ...&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.valves.AccessLogValve"

+         prefix="catalina_access_log." suffix=".txt"

+         pattern="common"/&gt;

+  ...

+&lt;/Engine&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>

+    for more information on the configuration attributes that are

+    supported.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Lifecycle Listeners"><!--()--></a><a name="Lifecycle_Listeners"><strong>Lifecycle Listeners</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>If you have implemented a Java object that needs to know when this

+    <strong>Engine</strong> is started or stopped, you can declare it by

+    nesting a <strong>Listener</strong> element inside this element.  The

+    class name you specify must implement the

+    <code>org.apache.catalina.LifecycleListener</code> interface, and

+    it will be notified about the occurrence of the corresponding

+    lifecycle events.  Configuration of such a listener looks like this:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Engine name="Standalone" ...&gt;

+  ...

+  &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;

+  ...

+&lt;/Engine&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that a Listener can have any number of additional properties

+    that may be configured from this element.  Attribute names are matched

+    to corresponding JavaBean property names using the standard property

+    method naming patterns.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Filters"><!--()--></a><a name="Request_Filters"><strong>Request Filters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can ask Catalina to check the IP address, or host name, on every

+    incoming request directed to the surrounding

+    <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

+    <a href="context.html">Context</a> element.  The remote address or name

+    will be checked against configured "accept" and/or "deny"

+    filters, which are defined using <code>java.util.regex</code> Regular

+    Expression syntax.  Requests that come from locations that are

+    not accepted will be rejected with an HTTP "Forbidden" error.

+    Example filter declarations:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Engine name="Standalone" ...&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"

+         allow=".*\.mycompany\.com|www\.yourcompany\.com"/&gt;

+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         deny="192\.168\.1\.\d+"/&gt;

+  ...

+&lt;/Engine&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  <p>See <a href="valve.html#Remote Address Filter">Remote Address Filter</a>

+  and <a href="valve.html#Remote Host Filter">Remote Host Filter</a> for

+  more information about the configuration options that are supported.</p>

+

+  </blockquote></td></tr></table>

+

+

+</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="/tomcat-7.0-doc/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/config/engine.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/executor.html b/webapps/docs/config/executor.html
new file mode 100644
index 0000000..1bd7c3e
--- /dev/null
+++ b/webapps/docs/config/executor.html
@@ -0,0 +1,117 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Executor (thread pool)</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Executor (thread pool)</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Executor</strong> represents a thread pool that can be shared

+     between components in Tomcat. Historically there has been a thread pool per

+     connector created but this allows you to share a thread pool, between (primarly) connector

+     but also other components when those get configured to support executors</p>

+

+

+  <p>The executor has to implement the <code>org.apache.catalina.Executor</code> interface.</p>

+

+  <p>The executor is a nested element to the <a href="service.html">Service</a> element.

+     And in order for it to be picked up by the connectors, the Executor element has to appear

+     prior to the Connector element in server.xml</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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>All implementations of <strong>Executor</strong>

+  support the following attributes:</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+      <p>The class of the implementation. The implementation has to implement the

+         <code>org.apache.catalina.Executor</code> interface.

+         This interface ensures that the object can be referenced through its <code>name</code> attribute

+         and that implements Lifecycle, so that it can be started and stopped with the container.

+         The default value for the className is <code>org.apache.catalina.core.StandardThreadExecutor</code></p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+      <p>The name used to reference this pool in other places in server.xml.

+         The name is required and must be unique.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+  The default implementation supports the following attributes:</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

+      <p>(int) The thread priority for threads in the executor, the default is

+      <code>5</code> (the value of the <code>Thread.NORM_PRIORITY</code> constant)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">daemon</code></td><td align="left" valign="center">

+      <p>(boolean) Whether the threads should be daemon threads or not, the default is <code>true</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">namePrefix</code></td><td align="left" valign="center">

+      <p>(String) The name prefix for each thread created by the executor.

+         The thread name for an individual thread will be <code>namePrefix+threadNumber</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

+      <p>(int) The max number of active threads in this pool, default is <code>200</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minSpareThreads</code></td><td align="left" valign="center">

+      <p>(int) The minimum number of threads always kept alive, default is <code>25</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdleTime</code></td><td align="left" valign="center">

+      <p>(int) The number of milliseconds before an idle thread shutsdown, unless the number of active threads are less

+         or equal to minSpareThreads. Default value is <code>60000</code>(1 minute)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxQueueSize</code></td><td align="left" valign="center">

+      <p>(int) The maximum number of runnable tasks that can queue up awaiting

+        execution before we reject them. Default value is <code>Integer.MAX_VALUE</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">prestartminSpareThreads</code></td><td align="left" valign="center">

+      <p>(boolean) Whether minSpareThreads should be started when starting the Executor or not,

+          the default is <code>false</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadRenewalDelay</code></td><td align="left" valign="center">

+      <p>After a context is stopped, threads in the pool are renewed. To avoid renewing all threads at the same time,

+        this delay is observed between 2 threads being renewed. Value is in ms, default value is 1000ms.

+        If negative, threads are not renewed.</p>

+    </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+</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="/tomcat-7.0-doc/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/config/executor.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/filter.html b/webapps/docs/config/filter.html
new file mode 100644
index 0000000..aa3a896
--- /dev/null
+++ b/webapps/docs/config/filter.html
@@ -0,0 +1,1371 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - Container Provided Filters</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Container Provided Filters</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Add_Default_Character_Set_Filter">Add Default Character Set Filter</a><ol><li><a href="#Add_Default_Character_Set_Filter/Introduction">Introduction</a></li><li><a href="#Add_Default_Character_Set_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Add_Default_Character_Set_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#CORS_Filter">CORS Filter</a><ol><li><a href="#CORS_Filter/Introduction">Introduction</a></li><li><a href="#CORS_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#CORS_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#CORS_Filter_and_HttpServletRequest_attributes">CORS Filter and HttpServletRequest attributes</a></li></ol></li><li><a href="#CSRF_Prevention_Filter">CSRF Prevention Filter</a><ol><li><a href="#CSRF_Prevention_Filter/Introduction">Introduction</a></li><li><a href="#CSRF_Prevention_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#CSRF_Prevention_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Expires_Filter">Expires Filter</a><ol><li><a href="#Expires_Filter/Introduction">Introduction</a></li><li><a href="#Basic_configuration_sample">Basic configuration sample</a></li><li><a href="#Alternate_Syntax">Alternate Syntax</a></li><li><a href="#Expiration_headers_generation_eligibility">Expiration headers generation eligibility</a></li><li><a href="#Expiration_configuration_selection">Expiration configuration selection</a></li><li><a href="#Expires_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Expires_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#Troubleshooting">Troubleshooting</a></li></ol></li><li><a href="#Failed_Request_Filter">Failed Request Filter</a><ol><li><a href="#Failed_Request_Filter/Introduction">Introduction</a></li><li><a href="#Failed_Request_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Failed_Request_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Remote_Address_Filter">Remote Address Filter</a><ol><li><a href="#Remote_Address_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Address_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Remote_Address_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#Example">Example</a></li></ol></li><li><a href="#Remote_Host_Filter">Remote Host Filter</a><ol><li><a href="#Remote_Host_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Host_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Remote_Host_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Remote_IP_Filter">Remote IP Filter</a><ol><li><a href="#Remote_IP_Filter/Introduction">Introduction</a></li><li><a href="#Remote_IP_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Basic_configuration_to_handle_'x-forwarded-for'">Basic configuration to handle 'x-forwarded-for'</a></li><li><a href="#Basic_configuration_to_handle_'x-forwarded-for'_and_'x-forwarded-proto'">Basic configuration to handle 'x-forwarded-for' and 'x-forwarded-proto'</a></li><li><a href="#Advanced_configuration_with_internal_proxies">Advanced configuration with internal proxies</a></li><li><a href="#Advanced_configuration_with_trusted_proxies">Advanced configuration with trusted proxies</a></li><li><a href="#Advanced_configuration_with_internal_and_trusted_proxies">Advanced configuration with internal and trusted proxies</a></li><li><a href="#Advanced_configuration_with_an_untrusted_proxy">Advanced configuration with an untrusted proxy</a></li><li><a href="#Remote_IP_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#Request_Dumper_Filter">Request Dumper Filter</a><ol><li><a href="#Request_Dumper_Filter/Introduction">Introduction</a></li><li><a href="#Request_Dumper_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Request_Dumper_Filter/Initialisation_parameters">Initialisation parameters</a></li><li><a href="#Sample_Configuration">Sample Configuration</a></li></ol></li><li><a href="#Set_Character_Encoding_Filter">Set Character Encoding Filter</a><ol><li><a href="#Set_Character_Encoding_Filter/Introduction">Introduction</a></li><li><a href="#Set_Character_Encoding_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#Set_Character_Encoding_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li><li><a href="#WebDAV_Fix_Filter">WebDAV Fix Filter</a><ol><li><a href="#WebDAV_Fix_Filter/Introduction">Introduction</a></li><li><a href="#WebDAV_Fix_Filter/Filter_Class_Name">Filter Class Name</a></li><li><a href="#WebDAV_Fix_Filter/Initialisation_parameters">Initialisation parameters</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Tomcat provides a number of <strong>Filters</strong> which may be

+  configured for use with all web applications using

+  <code>$CATALINA_BASE/conf/web.xml</code> or may be configured for individual

+  web applications by configuring them in the application's

+  <code>WEB-INF/web.xml</code>. Each filter is described below.</p>

+

+    <blockquote><em>

+    <p>This description uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></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="Add Default Character Set Filter"><!--()--></a><a name="Add_Default_Character_Set_Filter"><strong>Add Default Character Set Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Add Default Character Set Filter/Introduction"><!--()--></a><a name="Add_Default_Character_Set_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The HTTP specification is clear that if no character set is specified for

+    media sub-types of the "text" media type, the ISO-8859-1 character set must

+    be used. However, browsers may attempt to auto-detect the character set.

+    This may be exploited by an attacker to perform an XSS attack. Internet

+    Explorer has this behaviour by default. Other browsers have an option to

+    enable it.</p>

+

+    <p>This filter prevents the attack by explicitly setting a character set.

+    Unless the provided character set is explicitly overridden by the user the

+    browser will adhere to the explicitly set character set, thus preventing the

+    XSS attack.</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="Add Default Character Set Filter/Filter Class Name"><!--()--></a><a name="Add_Default_Character_Set_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Add Default Character Set Filter is

+    <strong><code>org.apache.catalina.filters.AddDefaultCharsetFilter</code>

+    </strong>.</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="Add Default Character Set Filter/Initialisation parameters"><!--()--></a><a name="Add_Default_Character_Set_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Add Default Character Set Filter supports the following initialization

+    parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">encoding</code></td><td align="left" valign="center">

+        <p>Name of the character set which should be set, if no other character set

+        was set explicitly by a Servlet. This parameter has two special values

+        <code>default</code> and <code>system</code>. A value of <code>system</code>

+        uses the JVM wide default character set, which is usually set by locale.

+        A value of <code>default</code> will use <strong>ISO-8859-1</strong>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter"><!--()--></a><a name="CORS_Filter"><strong>CORS Filter</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter/Introduction"><!--()--></a><a name="CORS_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+    <p>This filter is an implementation of W3C's CORS (Cross-Origin Resource

+    Sharing) <a href="http://www.w3.org/TR/cors/">specification</a>, which is a

+    mechanism that enables cross-origin requests.</p>

+    <p>The filter works by adding required <code>Access-Control-*</code> headers

+    to HttpServletResponse object. The filter also protects against HTTP

+    response splitting. If request is invalid, or is not permitted, then request

+    is rejected with HTTP status code 403 (Forbidden). A

+    <a href="../images/cors-flowchart.png">flowchart</a> that

+    demonstrates request processing by this filter is available.</p>

+    <p>The minimal configuration required to use this filter is:</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>

+&lt;filter&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;filter-class&gt;org.apache.catalina.filters.CorsFilter&lt;/filter-class&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter/Filter Class Name"><!--()--></a><a name="CORS_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The filter class name for the CORS Filter is

+    <strong><code>org.apache.catalina.filters.CorsFilter</code></strong>.</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="CORS Filter/Initialisation parameters"><!--()--></a><a name="CORS_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The CORS Filter supports following initialisation parameters:</p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">cors.allowed.origins</code></td><td align="left" valign="center">

+        <p>A list of <a href="http://tools.ietf.org/html/rfc6454">origins</a>

+        that are allowed to access the resource. A <code>*</code> can be

+        specified to enable access to resource from any origin. Otherwise, a

+        whitelist of comma separated origins can be provided. Eg: <code>

+        http://www.w3.org, https://www.apache.org</code>.

+        <strong>Defaults:</strong> <code>*</code> (Any origin is allowed to

+        access the resource).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.allowed.methods</code></td><td align="left" valign="center">

+        <p>A comma separated list of HTTP methods that can be used to access the

+        resource, using cross-origin requests. These are the methods which will

+        also be included as part of <code>Access-Control-Allow-Methods</code> 

+        header in pre-flight response. Eg: <code>GET, POST</code>.

+        <strong>Defaults:</strong> <code>GET, POST, HEAD, OPTIONS</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.allowed.headers</code></td><td align="left" valign="center">

+        <p>A comma separated list of request headers that can be used when

+        making an actual request. These headers will also be returned as part 

+        of <code>Access-Control-Allow-Headers</code> header in a pre-flight

+        response. Eg: <code>Origin,Accept</code>. <strong>Defaults:</strong>

+        <code>Origin, Accept, X-Requested-With, Content-Type,

+        Access-Control-Request-Method, Access-Control-Request-Headers</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.exposed.headers</code></td><td align="left" valign="center">

+        <p>A comma separated list of headers other than simple response headers

+        that browsers are allowed to access. These are the headers which will 

+        also be included as part of <code>Access-Control-Expose-Headers</code> 

+        header in the pre-flight response. Eg:

+        <code>X-CUSTOM-HEADER-PING,X-CUSTOM-HEADER-PONG</code>.

+        <strong>Default:</strong> None. Non-simple headers are not exposed by

+        default.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.preflight.maxage</code></td><td align="left" valign="center">

+        <p>The amount of seconds, browser is allowed to cache the result of the

+        pre-flight request. This will be included as part of

+        <code>Access-Control-Max-Age</code> header in the pre-flight response.

+        A negative value will prevent CORS Filter from adding this response

+        header to pre-flight response. <strong>Defaults:</strong>

+        <code>1800</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.support.credentials</code></td><td align="left" valign="center">

+        <p>A flag that indicates whether the resource supports user credentials.

+        This flag is exposed as part of

+        <code>Access-Control-Allow-Credentials</code> header in a pre-flight

+        response. It helps browser determine whether or not an actual request

+        can be made using credentials. <strong>Defaults:</strong>

+        <code>true</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cors.request.decorate</code></td><td align="left" valign="center">

+        <p>A flag to control if CORS specific attributes should be added to

+        HttpServletRequest object or not. <strong>Defaults:</strong>

+        <code>true</code></p>

+      </td></tr></table>

+    <p>Here's an example of a more advanced configuration, that overrides

+    defaults:</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>

+&lt;filter&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;filter-class&gt;org.apache.catalina.filters.CorsFilter&lt;/filter-class&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.allowed.origins&lt;/param-name&gt;

+    &lt;param-value&gt;*&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.allowed.methods&lt;/param-name&gt;

+    &lt;param-value&gt;GET,POST,HEAD,OPTIONS,PUT&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.allowed.headers&lt;/param-name&gt;

+    &lt;param-value&gt;Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.exposed.headers&lt;/param-name&gt;

+    &lt;param-value&gt;Access-Control-Allow-Origin,Access-Control-Allow-Credentials&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.support.credentials&lt;/param-name&gt;

+    &lt;param-value&gt;true&lt;/param-value&gt;

+  &lt;/init-param&gt;

+  &lt;init-param&gt;

+    &lt;param-name&gt;cors.preflight.maxage&lt;/param-name&gt;

+    &lt;param-value&gt;10&lt;/param-value&gt;

+  &lt;/init-param&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+  &lt;filter-name&gt;CorsFilter&lt;/filter-name&gt;

+  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CORS Filter and HttpServletRequest attributes"><!--()--></a><a name="CORS_Filter_and_HttpServletRequest_attributes"><strong>CORS Filter and HttpServletRequest attributes</strong></a></font></td></tr><tr><td><blockquote>

+    <p>CORS Filter adds information about the request, in HttpServletRequest

+    object, for consumption downstream. Following attributes are set, if

+    <code>cors.request.decorate</code> initialisation parameter is

+    <code>true</code>:</p>

+    <ul>

+      <li><strong>cors.isCorsRequest:</strong> Flag to determine if request is

+          a CORS request.</li>

+      <li><strong>cors.request.origin:</strong> The Origin URL, i.e. the URL of

+          the page from where the request originated.</li>

+      <li><strong>cors.request.type:</strong> Type of CORS request. Possible

+          values:

+        <ul>

+          <li><code>SIMPLE</code>: A request which is not preceded by a

+              pre-flight request.</li>

+          <li><code>ACTUAL</code>: A request which is preceded by a pre-flight

+              request.</li>

+          <li><code>PRE_FLIGHT</code>: A pre-flight request.</li>

+          <li><code>NOT_CORS</code>: A normal same-origin request.</li>

+          <li><code>INVALID_CORS</code>: A cross-origin request, which is

+              invalid.</li>

+        </ul>

+      </li>

+      <li><strong>cors.request.headers:</strong> Request headers sent as

+          <code>Access-Control-Request-Headers</code> header, for a pre-flight 

+          request.

+      </li>

+    </ul>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter"><!--()--></a><a name="CSRF_Prevention_Filter"><strong>CSRF Prevention Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CSRF Prevention Filter/Introduction"><!--()--></a><a name="CSRF_Prevention_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This filter provides basic CSRF protection for a web application. The

+    filter assumes that it is mapped to <code>/*</code> and that all URLs

+    returned to the client are encoded via a call to

+    <code>HttpServletResponse#encodeRedirectURL(String)</code> or

+    <code>HttpServletResponse#encodeURL(String)</code>.</p>

+

+    <p>This filter prevents CSRF by generating a nonce and storing it in the

+    session. URLs are also encoded with the same nonce. When the next request is

+    received the nonce in the request is compared to the nonce in the session

+    and only if they are the same is the request allowed to continue.</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="CSRF Prevention Filter/Filter Class Name"><!--()--></a><a name="CSRF_Prevention_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the CSRF Prevention Filter is

+    <strong><code>org.apache.catalina.filters.CsrfPreventionFilter</code>

+    </strong>.</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="CSRF Prevention Filter/Initialisation parameters"><!--()--></a><a name="CSRF_Prevention_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The CSRF Prevention Filter supports the following initialisation

+    parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">entryPoints</code></td><td align="left" valign="center">

+        <p>A comma separated list of URLs that will not be tested for the

+        presence of a valid nonce. They are used to provide a way to navigate

+        back to a protected application after having navigated away from it.

+        Entry points will be limited to HTTP GET requests and should not trigger

+        any security sensitive actions.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceCacheSize</code></td><td align="left" valign="center">

+        <p>The number of previously issued nonces that will be cached on a LRU

+        basis to support parallel requests, limited use of the refresh and back

+        in the browser and similar behaviors that may result in the submission

+        of a previous nonce rather than the current one. If not set, the default

+        value of 5 will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">randomClass</code></td><td align="left" valign="center">

+        <p>The name of the class to use to generate nonces. The class must be an

+        instance of <code>java.util.Random</code>. If not set, the default value

+        of <code>java.security.SecureRandom</code> will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expires Filter"><!--()--></a><a name="Expires_Filter"><strong>Expires Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expires Filter/Introduction"><!--()--></a><a name="Expires_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+    ExpiresFilter is a Java Servlet API port of <a href="http://httpd.apache.org/docs/2.2/mod/mod_expires.html">Apache

+    mod_expires</a>.

+    This filter controls the setting of the <code>Expires</code> HTTP header and the

+    <code>max-age</code> directive of the <code>Cache-Control</code> HTTP header in

+    server responses. The expiration date can set to be relative to either the

+    time the source file was last modified, or to the time of the client access.

+    </p>

+

+    <p>

+    These HTTP headers are an instruction to the client about the document's

+    validity and persistence. If cached, the document may be fetched from the

+    cache rather than from the source until this time has passed. After that, the

+    cache copy is considered "expired" and invalid, and a new copy must

+    be obtained from the source.

+    </p>

+    <p>

+    To modify <code>Cache-Control</code> directives other than <code>max-age</code> (see

+    <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">RFC

+    2616 section 14.9</a>), you can use other servlet filters or <a href="http://httpd.apache.org/docs/2.2/mod/mod_headers.html">Apache Httpd

+    mod_headers</a> module.

+    </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="Basic configuration sample"><!--()--></a><a name="Basic_configuration_sample"><strong>Basic configuration sample</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    Basic configuration to add '<code>Expires</code>' and '<code>Cache-Control: max-age=</code>'

+    headers to images, css and javascript.

+    </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>

+&lt;filter&gt;

+ &lt;filter-name&gt;ExpiresFilter&lt;/filter-name&gt;

+ &lt;filter-class&gt;org.apache.catalina.filters.ExpiresFilter&lt;/filter-class&gt;

+ &lt;init-param&gt;

+    &lt;param-name&gt;ExpiresByType image&lt;/param-name&gt;

+    &lt;param-value&gt;access plus 10 minutes&lt;/param-value&gt;

+ &lt;/init-param&gt;

+ &lt;init-param&gt;

+    &lt;param-name&gt;ExpiresByType text/css&lt;/param-name&gt;

+    &lt;param-value&gt;access plus 10 minutes&lt;/param-value&gt;

+ &lt;/init-param&gt;

+ &lt;init-param&gt;

+    &lt;param-name&gt;ExpiresByType application/javascript&lt;/param-name&gt;

+    &lt;param-value&gt;access plus 10 minutes&lt;/param-value&gt;

+ &lt;/init-param&gt;

+&lt;/filter&gt;

+...

+&lt;filter-mapping&gt;

+ &lt;filter-name&gt;ExpiresFilter&lt;/filter-name&gt;

+ &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+ &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;

+&lt;/filter-mapping&gt;

+

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Alternate Syntax"><!--()--></a><a name="Alternate_Syntax"><strong>Alternate Syntax</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    The <code>ExpiresDefault</code> and <code>ExpiresByType</code> directives can also be

+    defined in a more readable syntax of the form:

+    </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>

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;&lt;base&gt; [plus] {&lt;num&gt;   &lt;type&gt;}*&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType type&lt;/param-name&gt;

+ &lt;param-value&gt;&lt;base&gt; [plus]   {&lt;num&gt; &lt;type&gt;}*&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType type;encoding&lt;/param-name&gt;

+ &lt;param-value&gt;&lt;base&gt; [plus]   {&lt;num&gt; &lt;type&gt;}*&lt;/param-value&gt;

+&lt;/init-param&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+    where <code>&lt;base&gt;</code> is one of:

+    <ul>

+    <li><code>access</code></li>

+    <li><code>now</code> (equivalent to '<code>access</code>')</li>

+    <li><code>modification</code></li>

+    </ul>

+    </p>

+    <p>

+    The <code>plus</code> keyword is optional. <code>&lt;num&gt;</code> should be an

+    integer value (acceptable to <code>Integer.parseInt()</code>), and

+    <code>&lt;type&gt;</code> is one of:

+    <ul>

+    <li><code>years</code></li>

+    <li><code>months</code></li>

+    <li><code>weeks</code></li>

+    <li><code>days</code></li>

+    <li><code>hours</code></li>

+    <li><code>minutes</code></li>

+    <li><code>seconds</code></li>

+    </ul>

+    For example, any of the following directives can be used to make documents

+    expire 1 month after being accessed, by default:

+    </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>

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 1 month&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 4 weeks&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresDefault&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 30 days&lt;/param-value&gt;

+&lt;/init-param&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>

+The expiry time can be fine-tuned by adding several '

+<code>&lt;num&gt; &lt;type&gt;</code>' clauses:

+</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>

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType text/html&lt;/param-name&gt;

+ &lt;param-value&gt;access plus 1 month 15   days 2 hours&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresByType image/gif&lt;/param-name&gt;

+ &lt;param-value&gt;modification plus 5 hours 3   minutes&lt;/param-value&gt;

+&lt;/init-param&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+    Note that if you use a modification date based setting, the <code>Expires</code>

+    header will <strong>not</strong> be added to content that does not come from

+    a file on disk. This is due to the fact that there is no modification time

+    for such content.

+    </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="Expiration headers generation eligibility"><!--()--></a><a name="Expiration_headers_generation_eligibility"><strong>Expiration headers generation eligibility</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    A response is eligible to be enriched by <code>ExpiresFilter</code> if :

+    <ol>

+    <li>no expiration header is defined (<code>Expires</code> header or the

+    <code>max-age</code> directive of the <code>Cache-Control</code> header),</li>

+    <li>the response status code is not excluded by the directive

+    <code>ExpiresExcludedResponseStatusCodes</code>,</li>

+    <li>the <code>Content-Type</code> of the response matches one of the types

+    defined the in <code>ExpiresByType</code> directives or the

+    <code>ExpiresDefault</code> directive is defined.</li>

+    </ol>

+    </p>

+    <p>

+    Note : If <code>Cache-Control</code> header contains other directives than

+    <code>max-age</code>, they are concatenated with the <code>max-age</code> directive

+    that is added by the <code>ExpiresFilter</code>.

+    </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="Expiration configuration selection"><!--()--></a><a name="Expiration_configuration_selection"><strong>Expiration configuration selection</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    The expiration configuration if elected according to the following algorithm:

+    <ol>

+    <li><code>ExpiresByType</code> matching the exact content-type returned by

+    <code>HttpServletResponse.getContentType()</code> possibly including the charset

+    (e.g. '<code>text/xml;charset=UTF-8</code>'),</li>

+    <li><code>ExpiresByType</code> matching the content-type without the charset if

+    <code>HttpServletResponse.getContentType()</code> contains a charset (e.g. '

+    <code>text/xml;charset=UTF-8</code>' -&gt; '<code>text/xml</code>'),</li>

+    <li><code>ExpiresByType</code> matching the major type (e.g. substring before

+    '<code>/</code>') of <code>HttpServletResponse.getContentType()</code>

+    (e.g. '<code>text/xml;charset=UTF-8</code>' -&gt; '<code>text</code>

+    '),</li>

+    <li><code>ExpiresDefault</code></li>

+    </ol>

+    </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="Expires Filter/Filter Class Name"><!--()--></a><a name="Expires_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Expires Filter is

+    <strong><code>org.apache.catalina.filters.ExpiresFilter</code>

+    </strong>.</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="Expires Filter/Initialisation parameters"><!--()--></a><a name="Expires_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Expires Filter</strong> supports the following

+    initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">ExpiresExcludedResponseStatusCodes</code></td><td align="left" valign="center">

+         <p>

+         This directive defines the http response status codes for which the

+         <code>ExpiresFilter</code> will not generate expiration headers. By default, the

+         <code>304</code> status code ("<code>Not modified</code>") is skipped. The

+         value is a comma separated list of http status codes.

+         </p>

+         <p>

+         This directive is useful to ease usage of <code>ExpiresDefault</code> directive.

+         Indeed, the behavior of <code>304 Not modified</code> (which does specify a

+         <code>Content-Type</code> header) combined with <code>Expires</code> and

+         <code>Cache-Control:max-age=</code> headers can be unnecessarily tricky to

+         understand.

+         </p>

+         <p><i>See sample below the table</i></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ExpiresByType &lt;content-type&gt;</code></td><td align="left" valign="center">

+         <p>

+         This directive defines the value of the <code>Expires</code> header and the

+         <code>max-age</code> directive of the <code>Cache-Control</code> header generated for

+         documents of the specified type (<i>e.g.</i>, <code>text/html</code>). The second

+         argument sets the number of seconds that will be added to a base time to

+         construct the expiration date. The <code>Cache-Control: max-age</code> is

+         calculated by subtracting the request time from the expiration date and

+         expressing the result in seconds.

+         </p>

+         <p>

+         The base time is either the last modification time of the file, or the time

+         of the client's access to the document. Which should be used is

+         specified by the <code>&lt;code&gt;</code> field; <code>M</code> means that the

+         file's last modification time should be used as the base time, and

+         <code>A</code> means the client's access time should be used. The duration

+         is expressed in seconds. <code>A2592000</code> stands for

+         <code>access plus 30 days</code> in alternate syntax.

+         </p>

+         <p>

+         The difference in effect is subtle. If <code>M</code> (<code>modification</code> in

+         alternate syntax) is used, all current copies of the document in all caches

+         will expire at the same time, which can be good for something like a weekly

+         notice that's always found at the same URL. If <code>A</code> (

+         <code>access</code> or <code>now</code> in alternate syntax) is used, the date of

+         expiration is different for each client; this can be good for image files

+         that don't change very often, particularly for a set of related

+         documents that all refer to the same images (<i>i.e.</i>, the images will be

+         accessed repeatedly within a relatively short timespan).

+         </p>

+         <p>

+         <strong>Note:</strong> When the content type includes a charset (e.g.

+         <code>'ExpiresByType text/xml;charset=utf-8'</code>), Tomcat removes blank chars

+         between the '<code>;</code>' and the '<code>charset</code>' keyword. Due to this,

+         configuration of an expiration with a charset must <strong>not</strong> include

+         such a space character.

+         </p>

+         <p><i>See sample below the table</i></p>

+         <p>

+         It overrides, for the specified MIME type <i>only</i>, any

+         expiration date set by the <code>ExpiresDefault</code> directive.

+         </p>

+         <p>

+         You can also specify the expiration time calculation using an alternate

+         syntax, described earlier in this document.

+         </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ExpiresDefault</code></td><td align="left" valign="center">

+         <p>

+         This directive sets the default algorithm for calculating the

+         expiration time for all documents in the affected realm. It can be

+         overridden on a type-by-type basis by the <code>ExpiresByType</code> directive. See the

+         description of that directive for details about the syntax of the

+         argument, and the "alternate syntax"

+         description as well.

+         </p>

+      </td></tr></table>

+

+    <p><i>Sample : exclude response status codes 302, 500 and 503</i></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>

+&lt;init-param&gt;

+ &lt;param-name&gt;ExpiresExcludedResponseStatusCodes&lt;/param-name&gt;

+ &lt;param-value&gt;302, 500, 503&lt;/param-value&gt;

+&lt;/init-param&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p><i>Sample for ExpiresByType initialization parameter</i></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>

+&lt;init-param&gt;

+   &lt;param-name&gt;ExpiresByType text/html&lt;/param-name&gt;

+   &lt;param-value&gt;access plus 1 month 15   days 2 hours&lt;/param-value&gt;

+&lt;/init-param&gt;

+

+&lt;init-param&gt;

+   &lt;!-- 2592000 seconds = 30 days --&gt;

+   &lt;param-name&gt;ExpiresByType image/gif&lt;/param-name&gt;

+   &lt;param-value&gt;A2592000&lt;/param-value&gt;

+&lt;/init-param&gt;

+         </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Troubleshooting"><strong>Troubleshooting</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    To troubleshoot, enable logging on the

+    <code>org.apache.catalina.filters.ExpiresFilter</code>.

+    </p>

+    <p>

+    Extract of logging.properties

+    </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>

+org.apache.catalina.filters.ExpiresFilter.level = FINE

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+    Sample of initialization log message:

+    </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>

+Mar 26, 2010 2:01:41 PM org.apache.catalina.filters.ExpiresFilter init

+FINE: Filter initialized with configuration ExpiresFilter[

+ excludedResponseStatusCode=[304],

+ default=null,

+ byType={

+    image=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]],

+    text/css=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]],

+    text/javascript=ExpiresConfiguration[startingPoint=ACCESS_TIME, duration=[10 MINUTE]]}]

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+    Sample of per-request log message where <code>ExpiresFilter</code> adds an

+    expiration date is below. The message is on one line and is wrapped here

+    for better readability.

+    </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>

+Mar 26, 2010 2:09:47 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody

+FINE: Request "/tomcat.gif" with response status "200"

+ content-type "image/gif", set expiration date 3/26/10 2:19 PM

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+    Sample of per-request log message where <code>ExpiresFilter</code> does not add

+    an expiration date:

+    </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>

+Mar 26, 2010 2:10:27 PM org.apache.catalina.filters.ExpiresFilter onBeforeWriteResponseBody

+FINE: Request "/docs/config/manager.html" with response status "200"

+ content-type "text/html", no expiration configured

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Failed Request Filter"><!--()--></a><a name="Failed_Request_Filter"><strong>Failed Request Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Failed Request Filter/Introduction"><!--()--></a><a name="Failed_Request_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This filter triggers parameters parsing in a request and rejects the

+    request if some parameters were skipped during parameter parsing because

+    of parsing errors or request size limitations (such as

+    <code>maxParameterCount</code> attribute in a

+    <a href="http.html">Connector</a>).

+    This filter can be used to ensure that none parameter values submitted by

+    client are lost.</p>

+

+    <p>Note that parameter parsing may consume the body of an HTTP request, so

+    caution is needed if the servlet protected by this filter uses

+    <code>request.getInputStream()</code> or <code>request.getReader()</code>

+    calls. In general the risk of breaking a web application by adding this

+    filter is not so high, because parameter parsing does check content type

+    of the request before consuming the request body.</p>

+

+    <p>Note, that for the POST requests to be parsed correctly, a

+    <code>SetCharacterEncodingFilter</code> filter must be configured above

+    this one. See CharacterEncoding page in the FAQ for details.</p>

+

+    <p>The request is rejected with HTTP status code 400 (Bad Request).</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="Failed Request Filter/Filter Class Name"><!--()--></a><a name="Failed_Request_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Failed Request Filter is

+    <strong><code>org.apache.catalina.filters.FailedRequestFilter</code>

+    </strong>.</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="Failed Request Filter/Initialisation parameters"><!--()--></a><a name="Failed_Request_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Failed Request Filter does not support any initialization parameters.</p>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter"><!--()--></a><a name="Remote_Address_Filter"><strong>Remote Address Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter/Introduction"><!--()--></a><a name="Remote_Address_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Address Filter</strong> allows you to compare the

+    IP address of the client that submitted this request against one or more

+    <em>regular expressions</em>, and either allow the request to continue

+    or refuse to process the request from this client. </p>

+

+    <p>The syntax for <em>regular expressions</em> is different than that for

+    'standard' wildcard matching. Tomcat uses the <code>java.util.regex</code>

+    package. Please consult the Java documentation for details of the

+    expressions supported.</p>

+

+    <p><strong>Note:</strong> There is a caveat when using this filter with

+    IPv6 addresses. Format of the IP address that this valve is processing

+    depends on the API that was used to obtain it. If the address was obtained

+    from Java socket using Inet6Address class, its format will be

+    <code>x:x:x:x:x:x:x:x</code>. That is, the IP address for localhost

+    will be <code>0:0:0:0:0:0:0:1</code> instead of the more widely used

+    <code>::1</code>. Consult your access logs for the actual value.</p>

+

+    <p>See also: <a href="#Remote_Host_Filter">Remote Host Filter</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="Remote Address Filter/Filter Class Name"><!--()--></a><a name="Remote_Address_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Remote Address Filter is

+    <strong><code>org.apache.catalina.filters.RemoteAddrFilter</code>

+    </strong>.</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="Remote Address Filter/Initialisation parameters"><!--()--></a><a name="Remote_Address_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Address Filter</strong> supports the following

+    initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

+        is specified, the remote address MUST match for this request to be

+        accepted.  If this attribute is not specified, all requests will be

+        accepted UNLESS the remote address matches a <code>deny</code>

+        pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

+        is specified, the remote address MUST NOT match for this request to be

+        accepted.  If this attribute is not specified, request acceptance is

+        governed solely by the <code>accept</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>. For example,

+        it can be set to the value <code>404</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Example"><strong>Example</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To allow access only for the clients connecting from localhost:</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>

+    &lt;filter&gt;

+      &lt;filter-name&gt;Remote Address Filter&lt;/filter-name&gt;

+      &lt;filter-class&gt;org.apache.catalina.filters.RemoteAddrFilter&lt;/filter-class&gt;

+      &lt;init-param&gt;

+        &lt;param-name&gt;allow&lt;/param-name&gt;

+        &lt;param-value&gt;127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1&lt;/param-value&gt;

+      &lt;/init-param&gt;

+    &lt;/filter&gt;

+    &lt;filter-mapping&gt;

+      &lt;filter-name&gt;Remote Address Filter&lt;/filter-name&gt;

+      &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+    &lt;/filter-mapping&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter"><!--()--></a><a name="Remote_Host_Filter"><strong>Remote Host Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter/Introduction"><!--()--></a><a name="Remote_Host_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Host Filter</strong> allows you to compare the

+    hostname of the client that submitted this request against one or more

+    <em>regular expressions</em>, and either allow the request to continue

+    or refuse to process the request from this client. </p>

+

+    <p>The syntax for <em>regular expressions</em> is different than that for

+    'standard' wildcard matching. Tomcat uses the <code>java.util.regex</code>

+    package. Please consult the Java documentation for details of the

+    expressions supported.</p>

+

+    <p><strong>Note:</strong> This filter processes the value returned by

+    method <code>ServletRequest.getRemoteHost()</code>. To allow the method

+    to return proper host names, you have to enable "DNS lookups" feature on

+    a <strong>Connector</strong>.</p>

+

+    <p>See also: <a href="#Remote_Address_Filter">Remote Address Filter</a>,

+    <a href="http.html">HTTP Connector</a> configuration.</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="Remote Host Filter/Filter Class Name"><!--()--></a><a name="Remote_Host_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Remote Address Filter is

+    <strong><code>org.apache.catalina.filters.RemoteHostFilter</code>

+    </strong>.</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="Remote Host Filter/Initialisation parameters"><!--()--></a><a name="Remote_Host_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Host Filter</strong> supports the following

+    initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

+        is specified, the remote hostname MUST match for this request to be

+        accepted.  If this attribute is not specified, all requests will be

+        accepted UNLESS the remote hostname matches a <code>deny</code>

+        pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

+        is specified, the remote hostname MUST NOT match for this request to be

+        accepted.  If this attribute is not specified, request acceptance is

+        governed solely by the <code>accept</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>. For example,

+        it can be set to the value <code>404</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Filter"><!--()--></a><a name="Remote_IP_Filter"><strong>Remote IP Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Filter/Introduction"><!--()--></a><a name="Remote_IP_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat port of

+    <a href="http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html">mod_remoteip</a>,

+    this filter replaces the apparent client remote IP address and hostname for

+    the request with the IP address list presented by a proxy or a load balancer

+    via a request headers (e.g. "X-Forwarded-For").</p>

+

+    <p>Another feature of this filter is to replace the apparent scheme

+    (http/https), server port and <code>request.secure</code> with the scheme presented

+    by a proxy or a load balancer via a request header

+    (e.g. "X-Forwarded-Proto").</p>

+

+    <p>If used in conjunction with Remote Address/Host filters then this filter

+    should be defined first to ensure that the correct client IP address is

+    presented to the Remote Address/Host filters.</p>

+

+    <p><strong>Note:</strong> By default this filter has no effect on the

+    values that are written into access log. The original values are restored

+    when request processing leaves the filter and that always happens earlier

+    than access logging. To pass the remote address, remote host, server port

+    and protocol values set by this filter to the access log,

+    they are put into request attributes. Publishing these values here

+    is enabled by default, but <code>AccessLogValve</code> should be explicitly

+    configured to use them. See documentation for

+    <code>requestAttributesEnabled</code> attribute of

+    <code>AccessLogValve</code>.</p>

+

+    <p>The names of request attributes that are set by this filter

+    and can be used by access logging are the following:</p>

+

+    <ul>

+      <li><code>org.apache.catalina.AccessLog.RemoteAddr</code></li>

+      <li><code>org.apache.catalina.AccessLog.RemoteHost</code></li>

+      <li><code>org.apache.catalina.AccessLog.Protocol</code></li>

+      <li><code>org.apache.catalina.AccessLog.ServerPort</code></li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Filter/Filter Class Name"><!--()--></a><a name="Remote_IP_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Remote IP Filter is

+    <strong><code>org.apache.catalina.filters.RemoteIpFilter</code>

+    </strong>.</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="Basic configuration to handle 'x-forwarded-for'"><!--()--></a><a name="Basic_configuration_to_handle_'x-forwarded-for'"><strong>Basic configuration to handle 'x-forwarded-for'</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+    The filter will process the <code>x-forwarded-for</code> http header.

+    </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>

+      &lt;filter&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+      &lt;/filter&gt;

+

+      &lt;filter-mapping&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;

+      &lt;/filter-mapping&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic configuration to handle 'x-forwarded-for' and 'x-forwarded-proto'"><!--()--></a><a name="Basic_configuration_to_handle_'x-forwarded-for'_and_'x-forwarded-proto'"><strong>Basic configuration to handle 'x-forwarded-for' and 'x-forwarded-proto'</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+    The filter will process <code>x-forwarded-for</code> and

+    <code>x-forwarded-proto</code> http headers. Expected value for the

+    <code>x-forwarded-proto</code> header in case of SSL connections is

+    <code>https</code> (case insensitive). </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>

+      &lt;filter&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+        &lt;init-param&gt;

+          &lt;param-name&gt;protocolHeader&lt;/param-name&gt;

+          &lt;param-value&gt;x-forwarded-proto&lt;/param-value&gt;

+        &lt;/init-param&gt;

+      &lt;/filter&gt;

+

+      &lt;filter-mapping&gt;

+        &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;

+        &lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;

+      &lt;/filter-mapping&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Advanced configuration with internal proxies"><!--()--></a><a name="Advanced_configuration_with_internal_proxies"><strong>Advanced configuration with internal proxies</strong></a></font></td></tr><tr><td><blockquote>

+    <p>RemoteIpFilter configuration: </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>

+     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;protocolHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-proto&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>Request values:

+    <table border="1" cellpadding="5">

+      <tr>

+        <th bgcolor="#023264"><font color="#ffffff">Property</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, 192.168.0.10 </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-proto'<code>]</code> </td>

+        <td> https </td>

+        <td> https </td>

+      </tr>

+      <tr>

+        <td> request.scheme </td>

+        <td> http </td>

+        <td> https </td>

+      </tr>

+      <tr>

+        <td> request.secure </td>

+        <td> false </td>

+        <td> true </td>

+      </tr>

+      <tr>

+        <td> request.serverPort </td>

+        <td> 80 </td>

+        <td> 443 </td>

+      </tr>

+    </table>

+    </p>

+    <p>

+    Note : <code>x-forwarded-by</code> header is <code>null</code> because only

+    internal proxies has been traversed by the request.

+    <code>x-forwarded-for</code> is <code>null</code> because all the proxies are

+    trusted or internal.

+    </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="Advanced configuration with trusted proxies"><!--()--></a><a name="Advanced_configuration_with_trusted_proxies"><strong>Advanced configuration with trusted proxies</strong></a></font></td></tr><tr><td><blockquote>

+    <p>RemoteIpFilter configuration: </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>

+     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;trustedProxies&lt;/param-name&gt;

+         &lt;param-value&gt;proxy1|proxy2&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>Request values: <table border="1" cellpadding="5">

+      <tr>

+        <th bgcolor="#023264"><font color="#ffffff">Property</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, proxy1, proxy2 </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> proxy1, proxy2 </td>

+      </tr>

+    </table>

+    </p>

+    <p>

+    Note : <code>proxy1</code> and <code>proxy2</code> are both trusted proxies that

+    come in <code>x-forwarded-for</code> header, they both are migrated in

+    <code>x-forwarded-by</code> header. <code>x-forwarded-for</code> is <code>null</code>

+    because all the proxies are trusted or internal.

+    </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="Advanced configuration with internal and trusted proxies"><!--()--></a><a name="Advanced_configuration_with_internal_and_trusted_proxies"><strong>Advanced configuration with internal and trusted proxies</strong></a></font></td></tr><tr><td><blockquote>

+    <p>RemoteIpFilter configuration: </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>

+     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;trustedProxies&lt;/param-name&gt;

+         &lt;param-value&gt;proxy1|proxy2&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>Request values: <table border="1" cellpadding="5">

+      <tr>

+        <th bgcolor="#023264"><font color="#ffffff">Property</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, proxy1, proxy2, 192.168.0.10 </td>

+        <td> null </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> proxy1, proxy2 </td>

+      </tr>

+    </table>

+    </p>

+    <p>

+    Note : <code>proxy1</code> and <code>proxy2</code> are both trusted proxies that

+    come in <code>x-forwarded-for</code> header, they both are migrated in

+    <code>x-forwarded-by</code> header. As <code>192.168.0.10</code> is an internal

+    proxy, it does not appear in <code>x-forwarded-by</code>.

+    <code>x-forwarded-for</code> is <code>null</code> because all the proxies are

+    trusted or internal.

+    </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="Advanced configuration with an untrusted proxy"><!--()--></a><a name="Advanced_configuration_with_an_untrusted_proxy"><strong>Advanced configuration with an untrusted proxy</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>RemoteIpFilter configuration: </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>

+     &lt;filter&gt;

+       &lt;filter-name&gt;RemoteIpFilter&lt;/filter-name&gt;

+       &lt;filter-class&gt;org.apache.catalina.filters.RemoteIpFilter&lt;/filter-class&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;allowedInternalProxies&lt;/param-name&gt;

+         &lt;param-value&gt;192\.168\.0\.10|192\.168\.0\.11&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-for&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;remoteIpProxiesHeader&lt;/param-name&gt;

+         &lt;param-value&gt;x-forwarded-by&lt;/param-value&gt;

+       &lt;/init-param&gt;

+       &lt;init-param&gt;

+         &lt;param-name&gt;trustedProxies&lt;/param-name&gt;

+         &lt;param-value&gt;proxy1|proxy2&lt;/param-value&gt;

+       &lt;/init-param&gt;

+     &lt;/filter&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>Request values: <table border="1" cellpadding="5">

+      <tr>

+        <th bgcolor="#023264"><font color="#ffffff">Property</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>

+        <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></th>

+      </tr>

+      <tr>

+        <td> request.remoteAddr </td>

+        <td> 192.168.0.10 </td>

+        <td> untrusted-proxy </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-for'<code>]</code> </td>

+        <td> 140.211.11.130, untrusted-proxy, proxy1 </td>

+        <td> 140.211.11.130 </td>

+      </tr>

+      <tr>

+        <td> request.header<code>[</code>'x-forwarded-by'<code>]</code> </td>

+        <td> null </td>

+        <td> proxy1 </td>

+      </tr>

+    </table>

+    </p>

+    <p>

+    Note : <code>x-forwarded-by</code> holds the trusted proxy <code>proxy1</code>.

+    <code>x-forwarded-by</code> holds <code>140.211.11.130</code> because

+    <code>untrusted-proxy</code> is not trusted and thus, we can not trust that

+    <code>untrusted-proxy</code> is the actual remote ip.

+    <code>request.remoteAddr</code> is <code>untrusted-proxy</code> that is an IP

+    verified by <code>proxy1</code>.

+    </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="Remote IP Filter/Initialisation parameters"><!--()--></a><a name="Remote_IP_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote IP Filter</strong> supports the

+    following initialisation parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">remoteIpHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the list of

+        traversed IP addresses starting from the requesting client. If not

+        specified, the default of <code>x-forwarded-for</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">internalProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an internal proxy.

+        Internal proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will not appear in the <strong>proxiesHeader</strong>

+        value. If not specified the default value of <code>

+        10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}

+        </code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxiesHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP header created by this valve to hold the list of

+        proxies that have been processed in the incoming

+        <strong>remoteIpHeader</strong>. If not specified, the default of

+        <code>x-forwarded-by</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requestAttributesEnabled</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to set the request attributes used by

+        AccessLog implementations to override the values returned by the

+        request for remote address, remote host, server port and protocol.

+        If not set, the default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustedProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an trusted proxy.

+        Trusted proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will appear in the <strong>proxiesHeader</strong> value.

+        If not specified, no proxies will be trusted.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the protocol

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">portHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the port

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeaderHttpsValue</code></td><td align="left" valign="center">

+        <p>Value of the <strong>protocolHeader</strong> to indicate that it is

+        an HTTPS request. If not specified, the default of <code>https</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpServerPort</code></td><td align="left" valign="center">

+        <p>Value returned by <code>ServletRequest.getServerPort()</code>

+        when the <strong>protocolHeader</strong> indicates <code>http</code>

+        protocol and no <strong>portHeader</strong> is present. If not

+        specified, the default of <code>80</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpsServerPort</code></td><td align="left" valign="center">

+        <p>Value returned by <code>ServletRequest.getServerPort()</code>

+        when the <strong>protocolHeader</strong> indicates <code>https</code>

+        protocol and no <strong>portHeader</strong> is present. If not

+        specified, the default of <code>443</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeLocalPort</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, the value returned by

+        <code>ServletRequest.getLocalPort()</code> and

+        <code>ServletRequest.getServerPort()</code> is modified by the this

+        filter. If not specified, the default of <code>false</code> is used.</p>

+      </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter"><!--()--></a><a name="Request_Dumper_Filter"><strong>Request Dumper Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter/Introduction"><!--()--></a><a name="Request_Dumper_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Request Dumper Filter logs information from the request and response

+    objects and is intended to be used for debugging purposes. When using this

+    Filter, it is recommended that the

+    <code>org.apache.catalina.filter.RequestDumperFilter</code> logger is

+    directed to a dedicated file and that the

+    <code>org.apache.juli.VerbatimFormmater</code> is used.</p>

+

+    <p><strong>WARNING: Using this filter has side-effects.</strong>  The

+    output from this filter includes any parameters included with the request.

+    The parameters will be decoded using the default platform encoding. Any

+    subsequent calls to <code>request.setCharacterEncoding()</code> within

+    the web application will have no effect.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter/Filter Class Name"><!--()--></a><a name="Request_Dumper_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Request Dumper Filter is

+    <strong><code>org.apache.catalina.filters.RequestDumperFilter</code>

+    </strong>.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Dumper Filter/Initialisation parameters"><!--()--></a><a name="Request_Dumper_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Request Dumper Filter does not support any initialization

+    parameters.</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="Sample Configuration"><!--()--></a><a name="Sample_Configuration"><strong>Sample Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following entries in a web application's web.xml would enable the

+    Request Dumper filter for all requests for that web application. If the

+    entries were added to <code>CATALINA_BASE/conf/web.xml</code>, the Request

+    Dumper Filter would be enabled for all web applications.</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>

+&lt;filter&gt;

+    &lt;filter-name&gt;requestdumper&lt;/filter-name&gt;

+    &lt;filter-class&gt;

+        org.apache.catalina.filters.RequestDumperFilter

+    &lt;/filter-class&gt;

+&lt;/filter&gt;

+&lt;filter-mapping&gt;

+    &lt;filter-name&gt;requestdumper&lt;/filter-name&gt;

+    &lt;url-pattern&gt;*&lt;/url-pattern&gt;

+&lt;/filter-mapping&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>The following entries in CATALINA_BASE/conf/logging.properties would

+    create a separate log file for the Request Dumper Filter output.</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>

+# To this configuration below, 1request-dumper.org.apache.juli.FileHandler

+# also needs to be added to the handlers property near the top of the file

+1request-dumper.org.apache.juli.FileHandler.level = INFO

+1request-dumper.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+1request-dumper.org.apache.juli.FileHandler.prefix = request-dumper.

+1request-dumper.org.apache.juli.FileHandler.formatter = org.apache.juli.VerbatimFormatter

+org.apache.catalina.filters.RequestDumperFilter.level = INFO

+org.apache.catalina.filters.RequestDumperFilter.handlers = \

+  1request-dumper.org.apache.juli.FileHandler

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter"><!--()--></a><a name="Set_Character_Encoding_Filter"><strong>Set Character Encoding Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Set Character Encoding Filter/Introduction"><!--()--></a><a name="Set_Character_Encoding_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>User agents don't always include character encoding information in

+    requests. Depending on the how the request is processed, usually the

+    default encoding of ISO-8859-1 is used. This is not always

+    desirable. This filter provides options for setting that encoding or

+    forcing it to a particular value. Essentially this filter calls

+    <code>ServletRequest.setCharacterEncoding()</code> method.</p>

+

+    <p>Effectively the value set by this filter is used when parsing parameters

+    in a POST request, if parameter parsing occurs later than this filter. Thus

+    the order of filter mappings is important. Note that the encoding for GET

+    requests is not set here, but on a <b>Connector</b>. See

+    CharacterEncoding page in the FAQ for details.</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="Set Character Encoding Filter/Filter Class Name"><!--()--></a><a name="Set_Character_Encoding_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the Set Character Encoding Filter is

+    <strong><code>org.apache.catalina.filters.SetCharacterEncodingFilter</code>

+    </strong>.</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="Set Character Encoding Filter/Initialisation parameters"><!--()--></a><a name="Set_Character_Encoding_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The Set Character Encoding Filter supports the following initialization

+    parameters:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">encoding</code></strong></td><td align="left" valign="center">

+        <p>Name of the character encoding which should be set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ignore</code></td><td align="left" valign="center">

+        <p>Determines if any character encoding specified by the user agent is

+        ignored. If this attribute is <code>true</code>, any value provided by

+        the user agent is ignored. If <code>false</code>, the encoding is only

+        set if the user agent did not specify an encoding. The default value

+        is <code>false</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Filter"><!--()--></a><a name="WebDAV_Fix_Filter"><strong>WebDAV Fix Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="WebDAV Fix Filter/Introduction"><!--()--></a><a name="WebDAV_Fix_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Microsoft operating systems have two WebDAV clients. One is used with

+    port 80, the other is used for all other ports. The implementation used with

+    port 80 does not adhere to the WebDAV specification and fails when trying to

+    communicate with the Tomcat WebDAV Servlet. This Filter provides a fix for

+    this by forcing the use of the WebDAV implementation that works, even when

+    connecting via port 80.</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="WebDAV Fix Filter/Filter Class Name"><!--()--></a><a name="WebDAV_Fix_Filter/Filter_Class_Name"><strong>Filter Class Name</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The filter class name for the WebDAV Fix Filter is

+    <strong><code>org.apache.catalina.filters.WebdavFixFilter</code>

+    </strong>.</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="WebDAV Fix Filter/Initialisation parameters"><!--()--></a><a name="WebDAV_Fix_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The WebDAV Fix Filter does not support any initialization parameters.</p>

+

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/filter.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/globalresources.html b/webapps/docs/config/globalresources.html
new file mode 100644
index 0000000..d07e8a4
--- /dev/null
+++ b/webapps/docs/config/globalresources.html
@@ -0,0 +1,258 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The GlobalNamingResources Component</title><meta name="author" content="Remy Maucherat"><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The GlobalNamingResources Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Environment_Entries">Environment Entries</a></li><li><a href="#Resource_Definitions">Resource Definitions</a></li><li><a href="#Resource_Links">Resource Links</a></li><li><a href="#Transaction">Transaction</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>GlobalNamingResources</strong> element defines the global

+  JNDI resources for the <a href="server.html">Server</a>.</p>

+

+  <p>These resources are listed in the server's global JNDI resource context.

+   This context is distinct from the per-web-application JNDI contexts

+  described in

+  the <a href="../jndi-resources-howto.html">JNDI Resources HOW-TO</a>.

+  The resources defined in this element are <strong>not</strong> visible in

+  the per-web-application contexts unless you explicitly link them with

+  <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a> elements.

+  </p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environment Entries"><!--()--></a><a name="Environment_Entries"><strong>Environment Entries</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>You can configure named values that will be made visible to all

+    web applications as environment entry resources by nesting

+    <code>&lt;Environment&gt;</code> entries inside this element. For

+    example, you can create an environment entry like this:</p>

+<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>

+&lt;GlobalNamingResources ...&gt;

+  ...

+  &lt;Environment name="maxExemptions" value="10"

+         type="java.lang.Integer" override="false"/&gt;

+  ...

+&lt;/GlobalNamingResources&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>This is equivalent to the inclusion of the following element in the

+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):

+    </p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;env-entry&gt;

+  &lt;env-entry-name&gt;maxExemptions&lt;/env-entry-name&gt;

+  &lt;env-entry-value&gt;10&lt;/env-entry-value&gt;

+  &lt;env-entry-type&gt;java.lang.Integer&lt;/env-entry-type&gt;

+&lt;/env-entry&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>but does <em>not</em> require modification of the deployment descriptor

+    to customize this value.</p>

+

+    <p>The valid attributes for an <code>&lt;Environment&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

+        <p>Optional, human-readable description of this environment entry.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>The name of the environment entry to be created, relative to the

+        <code>java:comp/env</code> context.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">

+        <p>Set this to <code>false</code> if you do <strong>not</strong> want

+        an <code>&lt;env-entry&gt;</code> for the same environment entry name,

+        found in the web application deployment descriptor, to override the

+        value specified here.  By default, overrides are allowed.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

+        <p>The fully qualified Java class name expected by the web application

+        for this environment entry.  Must be a legal value for

+        <code>&lt;env-entry-type&gt;</code> in the web application deployment

+        descriptor.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">

+        <p>The parameter value that will be presented to the application

+        when requested from the JNDI context.  This value must be convertable

+        to the Java type defined by the <code>type</code> attribute.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Definitions"><!--()--></a><a name="Resource_Definitions"><strong>Resource Definitions</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can declare the characteristics of resources

+    to be returned for JNDI lookups of <code>&lt;resource-ref&gt;</code> and

+    <code>&lt;resource-env-ref&gt;</code> elements in the web application

+    deployment descriptor by defining them in this element and then linking

+    them with <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a>

+    elements

+    in the <code><strong>&lt;Context&gt;</strong></code> element.

+

+    You <strong>MUST</strong> also define any other needed parameters using

+    attributes on the Resource element, to configure

+    the object factory to be used (if not known to Tomcat already), and

+    the properties used to configure that object factory.</p>

+

+    <p>For example, you can create a resource definition like this:</p>

+<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>

+&lt;GlobalNamingResources ...&gt;

+  ...

+  &lt;Resource name="jdbc/EmployeeDB" auth="Container"

+            type="javax.sql.DataSource"

+     description="Employees Database for HR Applications"/&gt;

+  ...

+&lt;/GlobalNamingResources&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>This is equivalent to the inclusion of the following element in the

+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;resource-ref&gt;

+  &lt;description&gt;Employees Database for HR Applications&lt;/description&gt;

+  &lt;res-ref-name&gt;jdbc/EmployeeDB&lt;/res-ref-name&gt;

+  &lt;res-ref-type&gt;javax.sql.DataSource&lt;/res-ref-type&gt;

+  &lt;res-auth&gt;Container&lt;/res-auth&gt;

+&lt;/resource-ref&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>but does <em>not</em> require modification of the deployment

+    descriptor to customize this value.</p>

+

+    <p>The valid attributes for a <code>&lt;Resource&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">auth</code></td><td align="left" valign="center">

+        <p>Specify whether the web Application code signs on to the

+        corresponding resource manager programmatically, or whether the

+        Container will sign on to the resource manager on behalf of the

+        application.  The value of this attribute must be

+        <code>Application</code> or <code>Container</code>.  This

+        attribute is <strong>required</strong> if the web application

+        will use a <code>&lt;resource-ref&gt;</code> element in the web

+        application deployment descriptor, but is optional if the

+        application uses a <code>&lt;resource-env-ref&gt;</code> instead.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">closeMethod</code></td><td align="left" valign="center">

+        <p>Name of the zero-argument method to call on a singleton resource when

+        it is no longer required. This is intended to speed up clean-up of

+        resources that would otherwise happen as part of garbage collection.

+        This attribute is ignored if the <code>singleton</code> attribute is

+        false. If not specificed, no default is defined and no close method will

+        be called.</p>

+        <p>For Apache Commons DBCP and Apache Tomcat JDBC connection pools

+        you can use <code>closeMethod="close"</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">

+        <p>Optional, human-readable description of this resource.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>The name of the resource to be created, relative to the

+        <code>java:comp/env</code> context.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scope</code></td><td align="left" valign="center">

+        <p>Specify whether connections obtained through this resource

+        manager can be shared.  The value of this attribute must be

+        <code>Shareable</code> or <code>Unshareable</code>.  By default,

+        connections are assumed to be shareable.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">singleton</code></td><td align="left" valign="center">

+        <p>Specify whether this resource definition is for a singleton resource,

+        i.e. one where there is only a single instance of the resource. If this

+        attribute is <code>true</code>, multiple JNDI lookups for this resource

+        will return the same object. If this attribute is <code>false</code>,

+        multiple JNDI lookups for this resource will return different objects.

+        This attribute must be <code>true</code> for

+        <code>javax.sql.DataSource</code> resources to enable JMX registration

+        of the DataSource. The value of this attribute must be <code>true</code>

+        or <code>false</code>. By default, this attribute is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

+        <p>The fully qualified Java class name expected by the web

+        application when it performs a lookup for this resource.</p>

+      </td></tr></table>

+

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Links"><!--()--></a><a name="Resource_Links"><strong>Resource Links</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Use <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a>

+    elements to link resources from the global context into

+    per-web-application contexts. Here is an example of making a custom

+    factory available to an application, based on the example definition in the

+    <a href="../jndi-resources-howto.html#Generic JavaBean Resources">

+    JNDI Resource HOW-TO</a>:

+    </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>

+      

+        &lt;Context&gt;

+          &lt;ResourceLink

+            name="bean/MyBeanFactory"

+            global="bean/MyBeanFactory"

+            type="com.mycompany.MyBean"

+          /&gt;

+        &lt;/Context&gt;

+      

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+   </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transaction"><strong>Transaction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can declare the characteristics of the UserTransaction

+    to be returned for JNDI lookup for <code>java:comp/UserTransaction</code>.

+    You <strong>MUST</strong> define an object factory class to instantiate

+    this object as well as the needed resource parameters as attributes of the

+    <code>Transaction</code>

+    element, and the properties used to configure that object factory.</p>

+

+    <p>The valid attributes for the <code>&lt;Transaction&gt;</code> element

+    are as follows:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">factory</code></strong></td><td align="left" valign="center">

+        <p>The class name for the JNDI object factory.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/globalresources.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/host.html b/webapps/docs/config/host.html
new file mode 100644
index 0000000..9f5fffb
--- /dev/null
+++ b/webapps/docs/config/host.html
@@ -0,0 +1,653 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Host Container</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Remy Maucherat"><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Host Container</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Automatic_Application_Deployment">Automatic Application Deployment</a></li><li><a href="#Host_Name_Aliases">Host Name Aliases</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li><li><a href="#Single_Sign_On">Single Sign On</a></li><li><a href="#User_Web_Applications">User Web Applications</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Host</strong> element represents a <em>virtual host</em>,

+  which is an association of a network name for a server (such as

+  "www.mycompany.com" with the particular server on which Tomcat is running.

+  For clients to be able to connect to a Tomcat server using its network name,

+  this name must be registered in the <em>Domain Name Service</em> (DNS) server

+  that manages the Internet domain you belong to - contact your Network

+  Administrator for more information.</p>

+

+  <p>In many cases, System Administrators wish to associate more than

+  one network name (such as <code>www.mycompany.com</code> and

+  <code>company.com</code>) with the same virtual host and applications.

+  This can be accomplished using the <a href="#Host Name Aliases">Host

+  Name Aliases</a> feature discussed below.</p>

+

+  <p>One or more <strong>Host</strong> elements are nested inside an

+  <a href="engine.html">Engine</a> element.  Inside the Host element, you

+  can nest <a href="context.html">Context</a> elements for the web

+  applications associated with this virtual host.  Exactly one of the Hosts

+  associated with each Engine MUST have a name matching the

+  <code>defaultHost</code> attribute of that Engine.</p>

+

+  <p>Clients normally use host names to identify the server they wish to connect

+  to. This host name is also included in the HTTP request headers. Tomcat

+  extracts the host name from the HTTP headers and looks for a

+  <strong>Host</strong> with a matching name. If no match is found, the request

+  is routed to the default host. The name of the default host does not have to

+  match a DNS name (although it can) since any request where the DNS name does

+  not match the name of a <strong>Host</strong> element will be routed to the

+  default host.</p>

+

+    <blockquote><em>

+    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Host</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">appBase</code></strong></td><td align="left" valign="center">

+        <p>The <em>Application Base</em> directory for this virtual host.

+        This is the pathname of a directory that may contain web applications

+        to be deployed on this virtual host.  You may specify an

+        absolute pathname, or a pathname that is relative to the

+        <code>$CATALINA_BASE</code> directory.  See

+        <a href="#Automatic_Application_Deployment">Automatic Application

+        Deployment</a> for more information on automatic recognition and

+        deployment of web applications. If not specified, the default of

+        <code>webapps</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlBase</code></td><td align="left" valign="center">

+        <p>The <em>XML Base</em> directory for this virtual host.

+        This is the pathname of a directory that may contain context XML

+        descriptors to be deployed on this virtual host.  You may specify an

+        absolute pathname for this directory, or a pathname that is relative

+        to the <code>$CATALINA_BASE</code> directory.  See

+        <a href="#Automatic_Application_Deployment">Automatic Application

+        Deployment</a> for more information on automatic recognition and

+        deployment of web applications. If not specified the default of

+        <code>conf/&lt;engine_name&gt;/&lt;host_name&gt;</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">createDirs</code></td><td align="left" valign="center">

+        <p>If set to true, Tomcat will attempt to create the directories defined

+        by the  attributes <code>appBase</code> and <code>xmlBase</code> during

+        the startup phase. The default value is <code>true</code>. If set to

+        true, and directory creation fails, an error message will be printed out

+        but will not halt the startup sequence.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">autoDeploy</code></td><td align="left" valign="center">

+        <p>This flag value indicates if Tomcat should check periodically for new

+        or updated web applications while Tomcat is running. If true, Tomcat

+        periodically checks the <code>appBase</code> and <code>xmlBase</code>

+        directories and deploys any new web applications or context XML

+        descriptors found. Updated web applications or context XML descriptors

+        will trigger a reload of the web application. The flag's value defaults

+        to true.  See

+        <a href="#Automatic_Application_Deployment">Automatic Application

+        Deployment</a> for more information.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">backgroundProcessorDelay</code></td><td align="left" valign="center">

+        <p>This value represents the delay in seconds between the

+        invocation of the backgroundProcess method on this host and

+        its child containers, including all contexts.

+        Child containers will not be invoked if their delay value is not

+        negative (which would mean they are using their own processing

+        thread). Setting this to a positive value will cause

+        a thread to be spawn. After waiting the specified amount of time,

+        the thread will invoke the backgroundProcess method on this host

+        and all its child containers. A host will use background processing to

+        perform live web application deployment related tasks. If not

+        specified, the default value for this attribute is -1, which means

+        the host will rely on the background processing thread of its parent

+        engine.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.catalina.Host</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deployIgnore</code></td><td align="left" valign="center">

+        <p>A regular expression defining paths to ignore when

+        <code>autoDeploy</code> and <code>deployOnStartup</code> are set. This

+        allows you to keep your configuration in a version control system, for

+        example, and not deploy a .svn or CVS folder that happens to be in the

+        <code>appBase</code>.</p>

+        <p>This regular expression is relative to <code>appBase</code>. It is

+        also <em>anchored</em>, meaning the match is performed against the

+        entire file/directory name. So, <code>foo</code> matches only a file or

+        directory named <code>foo</code> but not <code>foo.war</code>,

+        <code>foobar</code>, or <code>myfooapp</code>. To match anything with

+        "foo", you could use <code>.*foo.*</code>.</p>

+        <p>See <a href="#Automatic_Application_Deployment">Automatic Application

+        Deployment</a> for more information.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deployOnStartup</code></td><td align="left" valign="center">

+        <p>This flag value indicates if web applications from this host should

+        be automatically deployed when Tomcat starts. The flag's value defaults

+        to true.  See

+        <a href="#Automatic_Application_Deployment">Automatic Application

+        Deployment</a> for more information.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+        <p>Usually the network name of this virtual host, as registered in your

+        <em>Domain Name Service</em> server. Regardless of the case used to

+        specify the host name, Tomcat will convert it to lower case internally.

+        One of the Hosts nested within an <a href="engine.html">Engine</a> MUST

+        have a name that matches the <code>defaultHost</code> setting for that

+        Engine.  See <a href="#Host Name Aliases">Host Name Aliases</a> for

+        information on how to assign more than one network name to the same

+        virtual host.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">startStopThreads</code></td><td align="left" valign="center">

+        <p>The number of threads this <strong>Host</strong> will use to start

+        child <a href="context.html">Context</a> elements in parallel. The same

+        thread pool will be used to deploy new

+        <a href="context.html">Context</a>s if automatic deployment is being

+        used. The special value of 0 will result in the value of

+        <code>Runtime.getRuntime().availableProcessors()</code> being used.

+        Negative values will result in

+        <code>Runtime.getRuntime().availableProcessors() + value</code> being

+        used unless this is less than 1 in which case 1 thread will be used. If

+        not specified, the default value of 1 will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">undeployOldVersions</code></td><td align="left" valign="center">

+        <p>This flag determines if Tomcat, as part of the auto deployment

+        process, will check for old, unused versions of web applications

+        deployed using parallel deployment and, if any are found, remove them.

+        This flag only applies if <code>autoDeploy</code> is true. If not

+        specified the default value of false will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The standard implementation of <strong>Host</strong> is

+    <strong>org.apache.catalina.core.StandardHost</strong>.

+    It supports the following additional attributes (in addition to the

+    common attributes listed above):</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">copyXML</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want a context XML descriptor

+        embedded inside the application (located at

+        <code>/META-INF/context.xml</code>) to be copied to <code>xmlBase</code>

+        when the application is deployed. On subsequent starts, the copied

+        context XML descriptor will be used in preference to any context XML

+        descriptor embedded inside the application even if the descriptor

+        embedded inside the application is more recent. The flag's value

+        defaults to <code>false</code>.  Note if <strong>deployXML</strong>

+        is <code>false</code>, this attribute will have no effect.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deployXML</code></td><td align="left" valign="center">

+        <p>Set to <code>false</code> if you want to disable parsing the context

+        XML descriptor embedded inside the application (located at

+        <code>/META-INF/context.xml</code>). Security conscious environments

+        should set this to <code>false</code> to prevent applications from

+        interacting with the container's configuration. The  administrator will

+        then be responsible for providing an external context configuration

+        file, and putting it in the location defined by the

+        <strong>xmlBase</strong> attribute. The flag's value defaults to

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">errorReportValveClass</code></td><td align="left" valign="center">

+        <p>Java class name of the error reporting valve which will be used

+        by this Host. The responsibility of this valve is to output error

+        reports. Setting this property allows to customize the look of the

+        error pages which will be generated by Tomcat. This class must

+        implement the

+        <code>org.apache.catalina.Valve</code> interface. If none is specified,

+        the value <code>org.apache.catalina.valves.ErrorReportValve</code>

+        will be used by default.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">unpackWARs</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want web applications that are

+        placed in the <code>appBase</code> directory as web application

+        archive (WAR) files to be unpacked into a corresponding disk directory

+        structure, <code>false</code> to run such web applications directly

+        from a WAR file. WAR files located outside of the Host's

+        <strong>appBase</strong> will not be expanded. See

+        <a href="#Automatic_Application_Deployment">Automatic Application

+        Deployment</a> for more information.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">workDir</code></td><td align="left" valign="center">

+        <p>Pathname to a scratch directory to be used by applications for

+        this Host. Each application will have its own sub directory with

+        temporary read-write use.  Configuring a Context workDir will override

+        use of the Host workDir configuration.  This directory will be made

+        visible to servlets in the web application by a servlet context

+        attribute (of type <code>java.io.File</code>) named

+        <code>javax.servlet.context.tempdir</code> as described in the

+        Servlet Specification.  If not specified, a suitable directory

+        underneath <code>$CATALINA_BASE/work</code> will be provided.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>You can nest one or more <a href="context.html">Context</a> elements

+  inside this <strong>Host</strong> element, each representing a different web

+  application associated with this virtual host.</p>

+

+  <p>You can nest at most one instance of the following utility components

+  by nesting a corresponding element inside your <strong>Host</strong>

+  element:</p>

+  <ul>

+  <li><a href="realm.html"><strong>Realm</strong></a> -

+      Configure a realm that will allow its

+      database of users, and their associated roles, to be shared across all

+      <a href="context.html">Contexts</a> nested inside this Host (unless

+      overridden by a <a href="realm.html">Realm</a> configuration

+      at a lower level).</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>A host is associated with the

+       <code>org.apache.catalina.core.ContainerBase.[engine_name].[host_name]</code>

+       log category.  Note that the brackets are part of the name,

+       don't omit them.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Logs"><!--()--></a><a name="Access_Logs"><strong>Access Logs</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>When you run a web server, one of the output files normally generated

+    is an <em>access log</em>, which generates one line of information for

+    each request processed by the server, in a standard format.  Catalina

+    includes an optional <a href="valve.html">Valve</a> implementation that

+    can create access logs in the same standard format created by web servers,

+    or in any number of custom formats.</p>

+

+    <p>You can ask Catalina to create an access log for all requests

+    processed by an <a href="engine.html">Engine</a>,

+    <a href="host.html">Host</a>, or <a href="context.html">Context</a>

+    by nesting a <a href="valve.html">Valve</a> element like this:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Host name="localhost" ...&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.valves.AccessLogValve"

+         prefix="localhost_access_log." suffix=".txt"

+         pattern="common"/&gt;

+  ...

+&lt;/Host&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>

+    for more information on the configuration attributes that are

+    supported.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Automatic Application Deployment"><!--()--></a><a name="Automatic_Application_Deployment"><strong>Automatic Application Deployment</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>If you are using the standard <strong>Host</strong> implementation,

+    the following actions take place automatically when Catalina is first

+    started, if the <code>deployOnStartup</code> property is set to

+    <code>true</code> (which is the default value):</p>

+    <ul>

+    <li>Any XML file in the Host's <code>xmlBase</code> directory (by

+        default <code>$CATALINA_BASE/conf/[engine_name]/[host_name]</code>) is

+        assumed to be a context XML descriptor containing a

+        <a href="context.html">Context</a> element (and its associated

+        sub-elements) for a single web application. The web applications

+        associated with each of these context XML descriptor files will be

+        deployed first.<br>

+        The <code>docBase</code> attribute of this <code>&lt;Context&gt;</code>

+        element must only be set if the docBase is outside the Host's

+        <code>appBase</code>. For web applications located inside the Host's

+        <code>appBase</code>, the <code>docBase</code> will be the name of the

+        XML file with ".xml" replaced with ".war" for a web application archive

+        or the name of the XML file with ".xml" removed for a directory.<br>

+        The <code>path</code> attribute must not be set. The context path used

+        will be a slash character ("/") followed by the name of the XML file

+        (less the .xml extension). Multi-level context paths may be defined

+        using #, e.g. <code>foo#bar.xml</code> for a context path of

+        <code>/foo/bar</code>. The default web application that has a context

+        path of <code>/</code> may be defined by using a file called

+        <code>ROOT.xml</code>.</li>

+    <li>Any web application archive file within the Host's <code>appBase</code>

+        directory that has not already been deployed as a result of a context

+        XML descriptor, does not have a corresponding directory of the same

+        name (without the ".war" extension), and is not excluded by

+        <code>deployIgnore</code> will be deployed next. The context path

+        used will be a slash character ("/") followed by the web application

+        archive name less the ".war" extension. The one exception to this rule

+        is that a web application archive named "ROOT.war" will be deployed with

+        a context path of <code>/</code>. Multi-level contexts may be defined by

+        using #, e.g. use a WAR named <code>foo#bar.war</code> for a context

+        path of <code>/foo/bar</code>.<br>

+        If the <code>unpackWARs</code> attribute is <code>true</code>, the web

+        application archive file will be expanded to a directory of the same

+        name (without the ".war" extension".<br>

+        Note: If you re-deploy an updated WAR file while Tomcat is stopped, be

+        sure to delete the associated expanded directory before restarting

+        Tomcat, so that the updated WAR file will be re-expanded when Tomcat

+        restarts.<br>

+        If <code>copyXML</code> is <code>true</code> (it is <code>false</code>

+        by default), any web application archive file within the Hosts's

+        <code>appBase</code> directory that does not have a corresponding

+        context XML descriptor (with a ".xml" extension rather than a ".war"

+        extension) in the Host's <code>xmlBase</code> will be scanned to see

+        if it contains a context XML descriptor (located at

+        <code>/META-INF/context.xml</code>) and if one is found the descriptor

+        will be copied to the <code>xmlBase</code> directory and renamed.

+        </li>

+    <li>Finally, any sub-directory within the Host's <code>appBase</code> that

+        has not already been deployed as a result of a context XML descriptor

+        and is not excluded by <code>deployIgnore</code> will be deployed.

+        The context path used will be a slash character ("/") followed by the

+        directory name, unless the directory name is ROOT, in which case the

+        context path will <code>/</code>. Multi-level contexts may be defined by

+        using #, e.g. use a directory named <code>foo#bar</code> for a context

+        path of <code>/foo/bar</code>.<br>

+        If <code>copyXML</code> is <code>true</code> (it is <code>false</code>

+        by default), any directory within the Hosts's <code>appBase</code>

+        directory that does not have a corresponding context XML descriptor in

+        the Host's <code>xmlBase</code> will be scanned to see if it contains

+        a context XML descriptor (located at <code>/META-INF/context.xml</code>)

+        and if one is found the descriptor will be copied to the

+        <code>xmlBase</code> directory and renamed.

+        </li>

+    </ul>

+

+    <p>In addition to the automatic deployment that occurs at startup time,

+    you can also request that new XML configuration files, WAR files, or

+    sub-directories that are dropped in to the <code>appBase</code> (or

+    <code>xmlBase</code> in the case of an XML configuration file) directory

+    while Tomcat is running will be automatically deployed, according to the

+    rules described above. The  auto deployer will also track web applications

+    for the following changes:

+    <ul>

+        <li>An update to the WEB-INF/web.xml file will trigger a reload of the

+          web application</li>

+        <li>Deleting a WAR file will trigger an undeploy of the application with

+          the removal of any associated expanded directory, context file and

+          work directory. Any current user sessions will not be persisted.</li>

+        <li>Deleting a directory will trigger an undeploy of the application

+          with the removal of any associated context file and work directory.

+          Any current user sessions will not be persisted. If there is an

+          associated WAR file, it will not be deleted and the application will

+          be redeployed from the WAR file the next time the auto deployer checks

+          for changes.</li>

+        <li>Deleting a context file will trigger an undeploy of the application

+          with the removal of any associated work directory. Any current user

+          sessions will not be persisted. If there is an associated WAR file

+          and/or directory, they will not be deleted and the application will be

+          redeployed from the WAR file (or from directory if there is no WAR

+          file) the next time the auto deployer checks for changes.</li>

+        <li>Updating a WAR file will trigger an undeploy of the application with

+          the removal of any associated expanded directory, context file and

+          work directory. Any current user sessions will not be persisted.</li>

+        <li>Updating a directory (not the directory contents) will trigger an

+          undeploy of the application with the removal of any associated context

+          file and work directory. Any current user sessions will not be

+          persisted. The application will be redeployed the next time the auto

+          deployer checks for changes.</li>

+        <li>Updating a context file will trigger an undeploy of the application

+          with the removal of any associated work directory. Any current user

+          sessions will not be persisted. The application will be redeployed the

+          next time the auto deployer checks for changes.</li>

+    </ul>

+    </p>

+

+    <p>When using automatic deployment, the <code>docBase</code> defined by

+    an XML <a href="context.html">Context</a> file should be outside of the

+    <code>appBase</code> directory. If this is not the case, difficulties

+    may be experienced deploying the web application or the application may

+    be deployed twice. The <code>deployIgnore</code> attribute can be used

+    to avoid this situation.</p>

+

+    <p>Finally, note that if you are defining contexts explicitly in server.xml,

+    you should probably turn off automatic application deployment or specify

+    <code>deployIgnore</code> carefully. Otherwise, the web applications

+    will each be deployed twice, and that may cause problems for the

+    applications.</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="Host Name Aliases"><!--()--></a><a name="Host_Name_Aliases"><strong>Host Name Aliases</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>In many server environments, Network Administrators have configured

+    more than one network name (in the <em>Domain Name Service</em> (DNS)

+    server), that resolve to the IP address of the same server.  Normally,

+    each such network name would be configured as a separate

+    <strong>Host</strong> element in <code>conf/server.xml</code>, each

+    with its own set of web applications.</p>

+

+    <p>However, in some circumstances, it is desirable that two or more

+    network names should resolve to the <strong>same</strong> virtual host,

+    running the same set of applications.  A common use case for this

+    scenario is a corporate web site, where it is desirable that users

+    be able to utilize either <code>www.mycompany.com</code> or

+    <code>company.com</code> to access exactly the same content and

+    applications.</p>

+

+    <p>This is accomplished by utilizing one or more <strong>Alias</strong>

+    elements nested inside your <strong>Host</strong> element.  For

+    example:</p>

+<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>

+&lt;Host name="www.mycompany.com" ...&gt;

+  ...

+  &lt;Alias&gt;mycompany.com&lt;/Alias&gt;

+  ...

+&lt;/Host&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>In order for this strategy to be effective, all of the network names

+    involved must be registered in your DNS server to resolve to the

+    same computer that is running this instance of Catalina.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Lifecycle Listeners"><!--()--></a><a name="Lifecycle_Listeners"><strong>Lifecycle Listeners</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>If you have implemented a Java object that needs to know when this

+    <strong>Host</strong> is started or stopped, you can declare it by

+    nesting a <strong>Listener</strong> element inside this element.  The

+    class name you specify must implement the

+    <code>org.apache.catalina.LifecycleListener</code> interface, and

+    it will be notified about the occurrence of the corresponding

+    lifecycle events.  Configuration of such a listener looks like this:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Host name="localhost" ...&gt;

+  ...

+  &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;

+  ...

+&lt;/Host&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that a Listener can have any number of additional properties

+    that may be configured from this element.  Attribute names are matched

+    to corresponding JavaBean property names using the standard property

+    method naming patterns.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Filters"><!--()--></a><a name="Request_Filters"><strong>Request Filters</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>You can ask Catalina to check the IP address, or host name, on every

+    incoming request directed to the surrounding

+    <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

+    <a href="context.html">Context</a> element.  The remote address or name

+    will be checked against configured "accept" and/or "deny"

+    filters, which are defined using <code>java.util.regex</code> Regular

+    Expression syntax.  Requests that come from locations that are

+    not accepted will be rejected with an HTTP "Forbidden" error.

+    Example filter declarations:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Host name="localhost" ...&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"

+         allow=".*\.mycompany\.com|www\.yourcompany\.com"/&gt;

+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         deny="192\.168\.1\.\d+"/&gt;

+  ...

+&lt;/Host&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  <p>See <a href="valve.html#Remote Address Filter">Remote Address Filter</a>

+  and <a href="valve.html#Remote Host Filter">Remote Host Filter</a> for

+  more information about the configuration options that are supported.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Single Sign On"><!--()--></a><a name="Single_Sign_On"><strong>Single Sign On</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>In many environments, but particularly in portal environments, it

+    is desireable to have a user challenged to authenticate themselves only

+    once over a set of web applications deployed on a particular virtual

+    host.  This can be accomplished by nesting an element like this inside

+    the Host element for this virtual host:</p>

+

+<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>

+&lt;Host name="localhost" ...&gt;

+  ...

+  &lt;Valve className="org.apache.catalina.authenticator.SingleSignOn"/&gt;

+  ...

+&lt;/Host&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>The Single Sign On facility operates according to the following rules:

+    </p>

+    <ul>

+    <li>All web applications configured for this virtual host must share the

+        same <a href="realm.html">Realm</a>.  In practice, that means you can

+        nest the Realm element inside this Host element (or the surrounding

+        <a href="engine.html">Engine</a> element), but not inside a

+        <a href="context.html">Context</a> element for one of the involved

+        web applications.</li>

+    <li>As long as the user accesses only unprotected resources in any of the

+        web applications on this virtual host, they will not be challenged

+        to authenticate themselves.</li>

+    <li>As soon as the user accesses a protected resource in

+        <strong>any</strong> web application associated with this virtual

+        host, the user will be challenged to authenticate himself or herself,

+        using the login method defined for the web application currently

+        being accessed.</li>

+    <li>Once authenticated, the roles associated with this user will be

+        utilized for access control decisions across <strong>all</strong>

+        of the associated web applications, without challenging the user

+        to authenticate themselves to each application individually.</li>

+    <li>As soon as the user logs out of one web application (for example,

+        by invalidating the corresponding session if form

+        based login is used), the user's sessions in <strong>all</strong>

+        web applications will be invalidated.  Any subsequent attempt to

+        access a protected resource in any application will require the

+        user to authenticate himself or herself again.</li>

+    <li>The Single Sign On feature utilizes HTTP cookies to transmit a token

+        that associates each request with the saved user identity, so it can

+        only be utilized in client environments that support cookies.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="User Web Applications"><!--()--></a><a name="User_Web_Applications"><strong>User Web Applications</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Many web servers can automatically map a request URI starting with

+    a tilde character ("~") and a username to a directory (commonly named

+    <code>public_html</code>) in that user's home directory on the server.

+    You can accomplish the same thing in Catalina by using a special

+    <strong>Listener</strong> element like this (on a Unix system that

+    uses the <code>/etc/passwd</code> file to identify valid users):</p>

+

+<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>

+&lt;Host name="localhost" ...&gt;

+  ...

+  &lt;Listener className="org.apache.catalina.startup.UserConfig"

+            directoryName="public_html"

+            userClass="org.apache.catalina.startup.PasswdUserDatabase"/&gt;

+  ...

+&lt;/Host&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>On a server where <code>/etc/passwd</code> is not in use, you can

+    request Catalina to consider all directories found in a specified base

+    directory (such as <code>c:\Homes</code> in this example) to be

+    considered "user home" directories for the purposes of this directive:</p>

+

+<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>

+&lt;Host name="localhost" ...&gt;

+  ...

+  &lt;Listener className="org.apache.catalina.startup.UserConfig"

+            directoryName="public_html"

+            homeBase=c:\Homes"

+            userClass="org.apache.catalina.startup.HomesUserDatabase"/&gt;

+  ...

+&lt;/Host&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>If a user home directory has been set up for a user named

+    <code>craigmcc</code>, then its contents will be visible from a

+    client browser by making a request to a URL like:</p>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://www.mycompany.com:8080/~craigmcc

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Successful use of this feature requires recognition of the following

+    considerations:</p>

+    <ul>

+    <li>Each user web application will be deployed with characteristics

+        established by the global and host level default context settings.</li>

+    <li>It is legal to include more than one instance of this Listener

+        element.  This would only be useful, however, in circumstances

+        where you wanted to configure more than one "homeBase" directory.</li>

+    <li>The operating system username under which Catalina is executed

+        MUST have read access to each user's web application directory,

+        and all of its contents.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</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="/tomcat-7.0-doc/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/config/host.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/http.html b/webapps/docs/config/http.html
new file mode 100644
index 0000000..46c09f1
--- /dev/null
+++ b/webapps/docs/config/http.html
@@ -0,0 +1,1011 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The HTTP Connector</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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The HTTP Connector</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li><li><a href="#Java_TCP_socket_attributes">Java TCP socket attributes</a></li><li><a href="#BIO_specific_configuration">BIO specific configuration</a></li><li><a href="#NIO_specific_configuration">NIO specific configuration</a></li><li><a href="#APR/native_specific_configuration">APR/native specific configuration</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#HTTP/1.1_and_HTTP/1.0_Support">HTTP/1.1 and HTTP/1.0 Support</a></li><li><a href="#Proxy_Support">Proxy Support</a></li><li><a href="#SSL_Support">SSL Support</a><ol><li><a href="#SSL_Support_-_BIO_and_NIO">SSL Support - BIO and NIO</a></li><li><a href="#SSL_Support_-_APR/Native">SSL Support - APR/Native</a></li></ol></li><li><a href="#Connector_Comparison">Connector Comparison</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>HTTP Connector</strong> element represents a

+  <strong>Connector</strong> component that supports the HTTP/1.1 protocol.

+  It enables Catalina to function as a stand-alone web server, in addition

+  to its ability to execute servlets and JSP pages.  A particular instance

+  of this component listens for connections on a specific TCP port number

+  on the server.  One or more such <strong>Connectors</strong> can be

+  configured as part of a single <a href="service.html">Service</a>, each

+  forwarding to the associated <a href="engine.html">Engine</a> to perform

+  request processing and create the response.</p>

+

+  <p>If you wish to configure the <strong>Connector</strong> that is used

+  for connections to web servers using the AJP protocol (such as the

+  <code>mod_jk 1.2.x</code> connector for Apache 1.3), please refer to the

+  <a href="ajp.html">AJP Connector</a> documentation.</p>

+

+  <p>Each incoming request requires

+  a thread for the duration of that request.  If more simultaneous requests

+  are received than can be handled by the currently available request

+  processing threads, additional threads will be created up to the

+  configured maximum (the value of the <code>maxThreads</code> attribute).

+  If still more simultaneous requests are received, they are stacked up

+  inside the server socket created by the <strong>Connector</strong>, up to

+  the configured maximum (the value of the <code>acceptCount</code>

+  attribute).  Any further simultaneous requests will receive "connection

+  refused" errors, until resources are available to process them.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>All implementations of <strong>Connector</strong>

+  support the following attributes:</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allowTrace</code></td><td align="left" valign="center">

+      <p>A boolean value which can be used to enable or disable the TRACE

+      HTTP method. If not specified, this attribute is set to false.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">asyncTimeout</code></td><td align="left" valign="center">

+      <p>The default timeout for asynchronous requests in milliseconds. If not

+      specified, this attribute is set to 10000 (10 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">enableLookups</code></td><td align="left" valign="center">

+      <p>Set to <code>true</code> if you want calls to

+      <code>request.getRemoteHost()</code> to perform DNS lookups in

+      order to return the actual host name of the remote client.  Set

+      to <code>false</code> to skip the DNS lookup and return the IP

+      address in String form instead (thereby improving performance).

+      By default, DNS lookups are disabled.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxHeaderCount</code></td><td align="left" valign="center">

+      <p>The maximum number of headers in a request that are allowed by the

+      container. A request that contains more headers than the specified limit

+      will be rejected. A value of less than 0 means no limit.

+      If not specified, a default of 100 is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxParameterCount</code></td><td align="left" valign="center">

+      <p>The maximum number of parameter and value pairs (GET plus POST) which

+      will be automatically parsed by the container. Parameter and value pairs

+      beyond this limit will be ignored. A value of less than 0 means no limit.

+      If not specified, a default of 10000 is used. Note that

+      <code>FailedRequestFilter</code> <a href="filter.html">filter</a> can be

+      used to reject requests that hit the limit.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxPostSize</code></td><td align="left" valign="center">

+      <p>The maximum size in bytes of the POST which will be handled by

+      the container FORM URL parameter parsing. The limit can be disabled by

+      setting this attribute to a value less than or equal to 0.

+      If not specified, this attribute is set to 2097152 (2 megabytes).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxSavePostSize</code></td><td align="left" valign="center">

+      <p>The maximum size in bytes of the POST which will be saved/buffered by

+      the container during FORM or CLIENT-CERT authentication. For both types

+      of authentication, the POST will be saved/buffered before the user is

+      authenticated. For CLIENT-CERT authentication, the POST is buffered for

+      the duration of the SSL handshake and the buffer emptied when the request

+      is processed. For FORM authentication the POST is saved whilst the user

+      is re-directed to the login form and is retained until the user

+      successfully authenticates or the session associated with the

+      authentication request expires. The limit can be disabled by setting this

+      attribute to -1. Setting the attribute to zero will disable the saving of

+      POST data during authentication. If not specified, this attribute is set

+      to 4096 (4 kilobytes).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">parseBodyMethods</code></td><td align="left" valign="center">

+      <p>A comma-separated list of HTTP methods for which request

+      bodies will be parsed for request parameters identically

+      to POST. This is useful in RESTful applications that want to

+      support POST-style semantics for PUT requests.

+      Note that any setting other than <code>POST</code> causes Tomcat

+      to behave in a way that goes against the intent of the servlet

+      specification.

+      The HTTP method TRACE is specifically forbidden here in accordance

+      with the HTTP specification.

+      The default is <code>POST</code></p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

+      <p>The TCP port number on which this <strong>Connector</strong>

+      will create a server socket and await incoming connections.  Your

+      operating system will allow only one server application to listen

+      to a particular port number on a particular IP address. If the special

+      value of 0 (zero) is used, then Tomcat will select a free port at random

+      to use for this connector. This is typically only useful in embedded and

+      testing applications.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocol</code></td><td align="left" valign="center">

+      <p>Sets the protocol to handle incoming traffic. The default value is

+        <code>HTTP/1.1</code> which uses an auto-switching mechanism to select

+        either a blocking Java based connector or an APR/native based connector.

+        If the <code>PATH</code> (Windows) or <code>LD_LIBRARY_PATH</code> (on

+        most unix systems) environment variables contain the Tomcat native

+        library, the APR/native connector will be used. If the native library

+        cannot be found, the blocking Java based connector will be used. Note

+        that the APR/native connector has different settings for HTTPS than the

+        Java connectors.<br>

+        To use an explicit protocol rather than rely on the auto-switching

+        mechanism described above, the following values may be used:<br>

+        <code>org.apache.coyote.http11.Http11Protocol</code> -

+              blocking Java connector<br>

+        <code>org.apache.coyote.http11.Http11NioProtocol</code> -

+              non blocking Java connector<br>

+        <code>org.apache.coyote.http11.Http11AprProtocol</code> -

+              the APR/native connector.<br>

+        Custom implementations may also be used.<br>

+        Take a look at our <a href="#Connector Comparison">Connector

+        Comparison</a> chart. The configuration for both Java connectors is

+        identical, for http and https.<br>

+        For more information on the APR connector and APR specific SSL settings

+        please  visit the <a href="../apr.html">APR documentation</a>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyName</code></td><td align="left" valign="center">

+      <p>If this <strong>Connector</strong> is being used in a proxy

+      configuration, configure this attribute to specify the server name

+      to be returned for calls to <code>request.getServerName()</code>.

+      See <a href="#Proxy Support">Proxy Support</a> for more

+      information.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxyPort</code></td><td align="left" valign="center">

+      <p>If this <strong>Connector</strong> is being used in a proxy

+      configuration, configure this attribute to specify the server port

+      to be returned for calls to <code>request.getServerPort()</code>.

+      See <a href="#Proxy Support">Proxy Support</a> for more

+      information.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">redirectPort</code></td><td align="left" valign="center">

+      <p>If this <strong>Connector</strong> is supporting non-SSL

+      requests, and a request is received for which a matching

+      <code>&lt;security-constraint&gt;</code> requires SSL transport,

+      Catalina will automatically redirect the request to the port

+      number specified here.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">scheme</code></td><td align="left" valign="center">

+      <p>Set this attribute to the name of the protocol you wish to have

+      returned by calls to <code>request.getScheme()</code>.  For

+      example, you would set this attribute to "<code>https</code>"

+      for an SSL Connector.  The default value is "<code>http</code>".

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">secure</code></td><td align="left" valign="center">

+      <p>Set this attribute to <code>true</code> if you wish to have

+      calls to <code>request.isSecure()</code> to return <code>true</code>

+      for requests received by this Connector. You would want this on an

+      SSL Connector or a non SSL connector that is receiving data from a

+      SSL accelerator, like a crypto card, a SSL appliance or even a webserver.

+      The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">URIEncoding</code></td><td align="left" valign="center">

+      <p>This specifies the character encoding used to decode the URI bytes,

+      after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useBodyEncodingForURI</code></td><td align="left" valign="center">

+      <p>This specifies if the encoding specified in contentType should be used

+      for URI query parameters, instead of using the URIEncoding. This

+      setting is present for compatibility with Tomcat 4.1.x, where the

+      encoding specified in the contentType, or explicitly set using

+      Request.setCharacterEncoding method was also used for the parameters from

+      the URL. The default value is <code>false</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useIPVHosts</code></td><td align="left" valign="center">

+      <p>Set this attribute to <code>true</code> to cause Tomcat to use

+      the IP address that the request was received on to determine the Host

+      to send the request to.  The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">xpoweredBy</code></td><td align="left" valign="center">

+      <p>Set this attribute to <code>true</code> to cause Tomcat to advertise

+      support for the Servlet specification using the header recommended in the

+      specification.  The default value is <code>false</code>.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The standard HTTP connectors (BIO, NIO and APR/native) all support the

+  following attributes in addition to the common Connector attributes listed

+  above.</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">acceptCount</code></td><td align="left" valign="center">

+      <p>The maximum queue length for incoming connection requests when

+      all possible request processing threads are in use.  Any requests

+      received when the queue is full will be refused.  The default

+      value is 100.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadCount</code></td><td align="left" valign="center">

+      <p>The number of threads to be used to accept connections. Increase this

+      value on a multi CPU machine, although you would never really need more

+      than <code>2</code>. Also, with a lot of non keep alive connections, you

+      might want to increase this value as well. Default value is

+      <code>1</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">acceptorThreadPriority</code></td><td align="left" valign="center">

+      <p>The priority of the acceptor threads. The threads used to accept

+      new connections. The default value is <code>5</code> (the value of the

+      <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+      for the <code>java.lang.Thread</code> class for more details on what

+      this priority means.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

+      <p>For servers with more than one IP address, this attribute

+      specifies which address will be used for listening on the specified

+      port.  By default, this port will be used on all IP addresses

+      associated with the server.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">bindOnInit</code></td><td align="left" valign="center">

+      <p>Controls when the socket used by the connector is bound. By default it

+      is bound when the connector is initiated and unbound when the connector is

+      destroyed. If set to <code>false</code>, the socket will be bound when the

+      connector is started and unbound when it is stopped.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">compressableMimeType</code></td><td align="left" valign="center">

+      <p>The value is a comma separated list of MIME types for which HTTP

+      compression may be used.

+      The default value is <code>text/html,text/xml,text/plain</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">compression</code></td><td align="left" valign="center">

+      <p>The <strong>Connector</strong> may use HTTP/1.1 GZIP compression in

+      an attempt to save server bandwidth. The acceptable values for the

+      parameter is "off" (disable compression), "on" (allow compression, which

+      causes text data to be compressed), "force" (forces compression in all

+      cases), or a numerical integer value (which is equivalent to "on", but

+      specifies the minimum amount of data before the output is compressed). If

+      the content-length is not known and compression is set to "on" or more

+      aggressive, the output will also be compressed. If not specified, this

+      attribute is set to "off".</p>

+      <p><em>Note</em>: There is a tradeoff between using compression (saving

+      your bandwidth) and using the sendfile feature (saving your CPU cycles).

+      If the connector supports the sendfile feature, e.g. the NIO connector,

+      using sendfile will take precedence over compression. The symptoms will

+      be that static files greater that 48 Kb will be sent uncompressed.

+      You can turn off sendfile by setting <code>useSendfile</code> attribute

+      of the connector, as documented below, or change the sendfile usage

+      threshold in the configuration of the

+      <a href="../default-servlet.html">DefaultServlet</a> in the default

+      <code>conf/web.xml</code> or in the <code>web.xml</code> of your web

+      application.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">compressionMinSize</code></td><td align="left" valign="center">

+      <p>If <strong>compression</strong> is set to "on" then this attribute

+      may be used to specify the minimum amount of data before the output is

+      compressed. If not specified, this attribute is defaults to "2048".</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionLinger</code></td><td align="left" valign="center">

+      <p>The number of seconds during which the sockets used by this

+      <strong>Connector</strong> will linger when they are closed.

+      If not specified, the JVM default will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionTimeout</code></td><td align="left" valign="center">

+      <p>The number of milliseconds this <strong>Connector</strong> will wait,

+      after accepting a connection, for the request URI line to be

+      presented. Use a value of -1 to indicate no (i.e. infinite) timeout.

+      The default value is 60000 (i.e. 60 seconds) but note that the standard

+      server.xml that ships with Tomcat sets this to 20000 (i.e. 20 seconds).

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionUploadTimeout</code></td><td align="left" valign="center">

+      <p>Specifies the timeout, in milliseconds, to use while a data upload is

+      in progress. This only takes effect if

+      <strong>disableUploadTimeout</strong> is set to <code>false</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableUploadTimeout</code></td><td align="left" valign="center">

+      <p>This flag allows the servlet container to use a different, usually

+      longer connection timeout during data upload. If not specified, this

+      attribute is set to <code>true</code> which disables this longer timeout.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">executor</code></td><td align="left" valign="center">

+      <p>A reference to the name in an <a href="executor.html">Executor</a>

+      element. If this attribute is set, and the named executor exists, the

+      connector will use the executor, and all the other thread attributes will

+      be ignored. Note that if a shared executor is not specified for a

+      connector then the connector will use a private, internal executor to

+      provide the thread pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keepAliveTimeout</code></td><td align="left" valign="center">

+      <p>The number of milliseconds this <strong>Connector</strong> will wait

+      for another HTTP request before closing the connection. The default value

+      is to use the value that has been set for the

+      <strong>connectionTimeout</strong> attribute.

+      Use a value of -1 to indicate no (i.e. infinite) timeout.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxConnections</code></td><td align="left" valign="center">

+      <p>The maximum number of connections that the server will accept and

+      process at any given time. When this number has been reached, the server

+      will not accept any more connections until the number of connections

+      falls below this value. The operating system may still accept

+      connections based on the <code>acceptCount</code> setting. Default value

+      varies by connector type. For BIO the default is the value of

+      <strong>maxThreads</strong> unless an <a href="executor.html">Executor</a>

+      is used in which case the default will be the value of maxThreads from the

+      executor. For NIO the default is <code>10000</code>.

+      For APR/native, the default is <code>8192</code>.</p>

+      <p>Note that for APR/native on Windows, the configured value will be

+      reduced to the highest multiple of 1024 that is less than or equal to

+      maxConnections. This is done for performance reasons.<br>

+      If set to a value of -1, the maxConnections feature is disabled 

+      and connections are not counted.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxHttpHeaderSize</code></td><td align="left" valign="center">

+      <p>The maximum size of the request and response HTTP header, specified

+      in bytes. If not specified, this attribute is set to 8192 (8 KB).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxKeepAliveRequests</code></td><td align="left" valign="center">

+      <p>The maximum number of HTTP requests which can be pipelined until

+      the connection is closed by the server. Setting this attribute to 1 will

+      disable HTTP/1.0 keep-alive, as well as HTTP/1.1 keep-alive and

+      pipelining. Setting this to -1 will allow an unlimited amount of

+      pipelined or keep-alive HTTP requests.

+      If not specified, this attribute is set to 100.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxThreads</code></td><td align="left" valign="center">

+      <p>The maximum number of request processing threads to be created

+      by this <strong>Connector</strong>, which therefore determines the

+      maximum number of simultaneous requests that can be handled.  If

+      not specified, this attribute is set to 200. If an executor is associated

+      with this connector, this attribute is ignored as the connector will

+      execute tasks using the executor rather than an internal thread pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxTrailerSize</code></td><td align="left" valign="center">

+      <p>Limits the total length of trailing headers in the last chunk of

+      a chunked HTTP request. If the value is <code>-1</code>, no limit will be

+      imposed. If not specified, the default value of <code>8192</code> will be

+      used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minSpareThreads</code></td><td align="left" valign="center">

+      <p>The minimum number of threads always kept running. If not specified,

+      the default of <code>10</code> is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">noCompressionUserAgents</code></td><td align="left" valign="center">

+      <p>The value is a regular expression (using <code>java.util.regex</code>)

+      matching the <code>user-agent</code> header of HTTP clients for which

+      compression should not be used,

+      because these clients, although they do advertise support for the

+      feature, have a broken implementation.

+      The default value is an empty String (regexp matching disabled).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">processorCache</code></td><td align="left" valign="center">

+      <p>The protocol handler caches Processor objects to speed up performance.

+      This setting dictates how many of these objects get cached.

+      <code>-1</code> means unlimited, default is <code>200</code>. If not using

+      Servlet 3.0 asynchronous processing, a good default is to use the same as

+      the maxThreads setting. If using Servlet 3.0 asynchronous processing, a

+      good default is to use the larger of maxThreads and the maximum number of

+      expected concurrent requests (synchronous and asynchronous).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">restrictedUserAgents</code></td><td align="left" valign="center">

+      <p>The value is a regular expression (using <code>java.util.regex</code>)

+      matching the <code>user-agent</code> header of HTTP clients for which

+      HTTP/1.1 or HTTP/1.0 keep alive should not be used, even if the clients

+      advertise support for these features.

+      The default value is an empty String (regexp matching disabled).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">server</code></td><td align="left" valign="center">

+      <p>Overrides the Server header for the http response. If set, the value

+      for this attribute overrides the Tomcat default and any Server header set

+      by a web application. If not set, any value specified by the application

+      is used. If the application does not specify a value then

+      <code>Apache-Coyote/1.1</code> is used. Unless you are paranoid, you won't

+      need this feature.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">socketBuffer</code></td><td align="left" valign="center">

+      <p>The size (in bytes) of the buffer to be provided for socket

+      output buffering. -1 can be specified to disable the use of a buffer.

+      By default, a buffers of 9000 bytes will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLEnabled</code></td><td align="left" valign="center">

+      <p>Use this attribute to enable SSL traffic on a connector.

+      To turn on SSL handshake/encryption/decryption on a connector

+      set this value to <code>true</code>.

+      The default value is <code>false</code>.

+      When turning this value <code>true</code> you will want to set the

+      <code>scheme</code> and the <code>secure</code> attributes as well

+      to pass the correct <code>request.getScheme()</code> and

+      <code>request.isSecure()</code> values to the servlets

+      See <a href="#SSL Support">SSL Support</a> for more information.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">tcpNoDelay</code></td><td align="left" valign="center">

+      <p>If set to <code>true</code>, the TCP_NO_DELAY option will be

+      set on the server socket, which improves performance under most

+      circumstances.  This is set to <code>true</code> by default.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

+      <p>The priority of the request processing threads within the JVM.

+      The default value is <code>5</code> (the value of the

+      <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+      for the <code>java.lang.Thread</code> class for more details on what

+      this priority means.

+      </p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Java TCP socket attributes"><!--()--></a><a name="Java_TCP_socket_attributes"><strong>Java TCP socket attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The BIO and NIO implementation support the following Java TCP socket

+    attributes in addition to the common Connector and HTTP attributes listed

+    above.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">socket.rxBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket receive buffer (SO_RCVBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.txBufSize</code></td><td align="left" valign="center">

+        <p>(int)The socket send buffer (SO_SNDBUF) size in bytes. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.tcpNoDelay</code></td><td align="left" valign="center">

+        <p>(bool)This is equivalent to standard attribute

+        <strong>tcpNoDelay</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soKeepAlive</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket's keep alive setting

+        (SO_KEEPALIVE). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.ooBInline</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the socket OOBINLINE setting. JVM default

+        used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soReuseAddress</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets reuse address option

+        (SO_REUSEADDR). JVM default used if not set.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerOn</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value for the sockets so linger option (SO_LINGER).

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &gt;=0 is equivalent to setting this to <code>true</code>.

+        A value for the standard attribute <strong>connectionLinger</strong>

+        that is &lt;0 is equivalent to setting this to <code>false</code>.

+        Both this attribute and <code>soLingerTime</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soLingerTime</code></td><td align="left" valign="center">

+        <p>(int)Value in seconds for the sockets so linger option (SO_LINGER).

+        This is equivalent to standard attribute

+        <strong>connectionLinger</strong>.

+        Both this attribute and <code>soLingerOn</code> must be set else the

+        JVM defaults will be used for both.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.soTimeout</code></td><td align="left" valign="center">

+        <p>This is equivalent to standard attribute

+        <strong>connectionTimeout</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceConnectionTime</code></td><td align="left" valign="center">

+        <p>(int)The first value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceLatency</code></td><td align="left" valign="center">

+        <p>(int)The second value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.performanceBandwidth</code></td><td align="left" valign="center">

+        <p>(int)The third value for the performance settings. See

+        <a href="http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setPerformancePreferences(int,%20int,%20int)">Socket Performance Options</a>

+        All three performance attributes must be set else the JVM defaults will

+        be used for all three.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.unlockTimeout</code></td><td align="left" valign="center">

+        <p>(int) The timeout for a socket unlock. When a connector is stopped, it will try to release the acceptor thread by opening a connector to itself.

+           The default value is <code>250</code> and the value is in milliseconds</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="BIO specific configuration"><!--()--></a><a name="BIO_specific_configuration"><strong>BIO specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the BIO connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">disableKeepAlivePercentage</code></td><td align="left" valign="center">

+        <p>The percentage of processing threads that have to be in use before

+        HTTP keep-alives are disabled to improve scalability. Values less than

+        <code>0</code> will be changed to <code>0</code> and values greater than

+        <code>100</code> will be changed to <code>100</code>. If not specified,

+        the default value is <code>75</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="NIO specific configuration"><!--()--></a><a name="NIO_specific_configuration"><strong>NIO specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the NIO connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">pollerThreadCount</code></td><td align="left" valign="center">

+        <p>(int)The number of threads to be used to run for the polling events.

+        Default value is <code>1</code> per processor up to and including version 7.0.27.

+        Default value as of version 7.0.28 is <code>1</code> per processor but not more than 2.<br>

+        When accepting a socket, the operating system holds a global lock. So the benefit of 

+        going above 2 threads diminishes rapidly. Having more than one thread is for 

+        system that need to accept connections very rapidly. However usually just 

+        increasing <code>acceptCount</code> will solve that problem. 

+        Increasing this value may also be beneficial when a large amount of send file 

+        operations are going on.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerThreadPriority</code></td><td align="left" valign="center">

+        <p>(int)The priority of the poller threads.

+        The default value is <code>5</code> (the value of the

+        <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+        for the <code>java.lang.Thread</code> class for more details on what

+        this priority means.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorTimeout</code></td><td align="left" valign="center">

+        <p>(int)The time in milliseconds to timeout on a select() for the

+        poller. This value is important, since connection clean up is done on

+        the same thread, so do not set this value to an extremely high one. The

+        default value is <code>1000</code> milliseconds.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useComet</code></td><td align="left" valign="center">

+        <p>(bool)Whether to allow comet servlets or not. Default value is

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useSendfile</code></td><td align="left" valign="center">

+        <p>(bool)Use this attribute to enable or disable sendfile capability.

+        The default value is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.directBuffer</code></td><td align="left" valign="center">

+        <p>(bool)Boolean value, whether to use direct ByteBuffers or java mapped

+        ByteBuffers. Default is <code>false</code>.<br>

+        When you are using direct buffers, make sure you allocate the

+        appropriate amount of memory for the direct memory space. On Sun's JDK

+        that would be something like <code>-XX:MaxDirectMemorySize=256m</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appReadBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a read ByteBuffer. This attribute controls the size of this buffer. By

+        default this read buffer is sized at <code>8192</code> bytes. For lower

+        concurrency, you can increase this to buffer more data. For an extreme

+        amount of keep alive connections, decrease this number or increase your

+        heap size.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.appWriteBufSize</code></td><td align="left" valign="center">

+        <p>(int)Each connection that is opened up in Tomcat get associated with

+        a write ByteBuffer. This attribute controls the size of this buffer. By

+        default this write buffer is sized at <code>8192</code> bytes. For low

+        concurrency you can increase this to buffer more response data. For an

+        extreme amount of keep alive connections, decrease this number or

+        increase your heap size.<br>

+        The default value here is pretty low, you should up it if you are not

+        dealing with tens of thousands concurrent connections.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPool</code></td><td align="left" valign="center">

+        <p>(int)The NIO connector uses a class called NioChannel that holds

+        elements linked to a socket. To reduce garbage collection, the NIO

+        connector caches these channel objects. This value specifies the size of

+        this cache. The default value is <code>500</code>, and represents that

+        the cache will hold 500 NioChannel objects. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.bufferPoolSize</code></td><td align="left" valign="center">

+        <p>(int)The NioChannel pool can also be size based, not used object

+        based. The size is calculated as follows:<br>

+        NioChannel

+        <code>buffer size = read buffer size + write buffer size</code><br>

+        SecureNioChannel <code>buffer size = application read buffer size +

+        application write buffer size + network read buffer size +

+        network write buffer size</code><br>

+        The value is in bytes, the default value is <code>1024*1024*100</code>

+        (100MB).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.processorCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache SocketProcessor objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.keyCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache KeyAttachment objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">socket.eventCache</code></td><td align="left" valign="center">

+        <p>(int)Tomcat will cache PollerEvent objects to reduce garbage

+        collection. The integer value specifies how many objects to keep in the

+        cache at most. The default is <code>500</code>. Other values are

+        <code>-1</code> for unlimited cache and <code>0</code> for no cache.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max selectors to be used in the pool, to reduce selector

+        contention. Use this option when the command line

+        <code>org.apache.tomcat.util.net.NioSelectorShared</code> value is set

+        to false. Default value is <code>200</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">selectorPool.maxSpareSelectors</code></td><td align="left" valign="center">

+        <p>(int)The max spare selectors to be used in the pool, to reduce

+        selector contention. When a selector is returned to the pool, the system

+        can decide to keep it or let it be GC'd. Use this option when the

+        command line <code>org.apache.tomcat.util.net.NioSelectorShared</code>

+        value is set to false. Default value is <code>-1</code> (unlimited).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">command-line-options</code></td><td align="left" valign="center">

+        <p>The following command line options are available for the NIO

+        connector:<br>

+        <code>-Dorg.apache.tomcat.util.net.NioSelectorShared=true|false</code>

+        - default is <code>true</code>. Set this value to <code>false</code> if you wish to

+        use a selector for each thread. When you set it to <code>false</code>, you can

+        control the size of the pool of selectors by using the

+        <strong>selectorPool.maxSelectors</strong> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">oomParachute</code></td><td align="left" valign="center">

+        <p>(int)The NIO connector implements an OutOfMemoryError strategy called

+        parachute. It holds a chunk of data as a byte array. In case of an OOM,

+        this chunk of data is released and the error is reported. This will give

+        the VM enough room to clean up. The <code>oomParachute</code> represents

+        the size in bytes of the parachute(the byte array). The default value is

+        <code>1024*1024</code>(1MB). Please note, this only works for OOM errors

+        regarding the Java Heap space, and there is absolutely no  guarantee

+        that you will be able to recover at all. If you have an OOM outside of

+        the Java Heap, then this parachute trick will not help.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR/native specific configuration"><!--()--></a><a name="APR/native_specific_configuration"><strong>APR/native specific configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following attributes are specific to the APR/native connector.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">deferAccept</code></td><td align="left" valign="center">

+        <p>Sets the <code>TCP_DEFER_ACCEPT</code> flag on the listening socket

+        for this connector. The default value is <code>true</code> where

+        <code>TCP_DEFER_ACCEPT</code> is supported by the operating system,

+        otherwise it is <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerSize</code></td><td align="left" valign="center">

+        <p>Amount of sockets that the poller responsible for polling kept alive

+        connections can hold at a given time. Extra connections will be closed

+        right away. The default value is 8192, corresponding to 8192 keep-alive

+        connections. This is a synonym for maxConnections.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollerThreadCount</code></td><td align="left" valign="center">

+        <p>Number of threads used to poll kept alive connections. On Windows the

+        default is chosen so that the sockets managed by each thread is

+        less than 1024. For Linux the default is 1. Changing the default on

+        Windows is likely to have a negative performance impact.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pollTime</code></td><td align="left" valign="center">

+        <p>Duration of a poll call in microseconds. Lowering this value will

+        slightly decrease latency of connections being kept alive in some cases,

+        but will use more CPU as more poll calls are being made. The default

+        value is 2000 (2ms).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendfileSize</code></td><td align="left" valign="center">

+        <p>Amount of sockets that the poller responsible for sending static

+        files asynchronously can hold at a given time. Extra connections will be

+        closed right away without any data being sent (resulting in a zero

+        length file on the client side). Note that in most cases, sendfile is a

+        call that will return right away (being taken care of "synchronously" by

+        the kernel), and the sendfile poller will not be used, so the amount of

+        static files which can be sent concurrently is much larger than the

+        specified amount. The default value is 1024.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendfileThreadCount</code></td><td align="left" valign="center">

+        <p>Number of threads used service sendfile sockets. On Windows the

+        default is chosen so that the sockets managed by each thread is

+        less than 1024. For Linux the default is 1. Changing the default on

+        Windows is likely to have a negative performance impact.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">threadPriority</code></td><td align="left" valign="center">

+        <p>(int)The priority of the acceptor and poller threads.

+        The default value is <code>5</code> (the value of the

+        <code>java.lang.Thread.NORM_PRIORITY</code> constant). See the JavaDoc

+        for the <code>java.lang.Thread</code> class for more details on what

+        this priority means.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useComet</code></td><td align="left" valign="center">

+        <p>(bool)Whether to allow comet servlets or not. Default value is

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useSendfile</code></td><td align="left" valign="center">

+        <p>(bool)Use this attribute to enable or disable sendfile capability.

+        The default value is <code>true</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>None at this time.</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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP/1.1 and HTTP/1.0 Support"><!--()--></a><a name="HTTP/1.1_and_HTTP/1.0_Support"><strong>HTTP/1.1 and HTTP/1.0 Support</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>This <strong>Connector</strong> supports all of the required features

+  of the HTTP/1.1 protocol, as described in RFC 2616, including persistent

+  connections, pipelining, expectations and chunked encoding.  If the client

+  (typically a browser) supports only HTTP/1.0, the

+  <strong>Connector</strong> will gracefully fall back to supporting this

+  protocol as well.  No special configuration is required to enable this

+  support. The <strong>Connector</strong> also supports HTTP/1.0

+  keep-alive.</p>

+

+  <p>RFC 2616 requires that HTTP servers always begin their responses with

+  the highest HTTP version that they claim to support.  Therefore, this

+  <strong>Connector</strong> will always return <code>HTTP/1.1</code> at

+  the beginning of its responses.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Proxy Support"><!--()--></a><a name="Proxy_Support"><strong>Proxy Support</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <code>proxyName</code> and <code>proxyPort</code> attributes can

+  be used when Tomcat is run behind a proxy server.  These attributes

+  modify the values returned to web applications that call the

+  <code>request.getServerName()</code> and <code>request.getServerPort()</code>

+  methods, which are often used to construct absolute URLs for redirects.

+  Without configuring these attributes, the values returned would reflect

+  the server name and port on which the connection from the proxy server

+  was received, rather than the server name and port to whom the client

+  directed the original request.</p>

+

+  <p>For more information, see the

+  <a href="../proxy-howto.html">Proxy Support HOW-TO</a>.</p>

+

+  </blockquote></td></tr></table>

+

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Support"><!--()--></a><a name="SSL_Support"><strong>SSL Support</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>You can enable SSL support for a particular instance of this

+  <strong>Connector</strong> by setting the <code>SSLEnabled</code> attribute to

+  <code>true</code>.</p>

+

+  <p>You will also need to set the <code>scheme</code> and <code>secure</code>

+  attributes to the values <code>https</code> and <code>true</code>

+  respectively, to pass correct information to the servlets.</p>

+

+  <p>The BIO and NIO connectors use the JSSE SSL whereas the APR/native

+  connector uses OpenSSL. Therefore, in addition to using different attributes

+  to configure SSL, the APR/native connector also requires keys and certificates

+  to be provided in a different format.</p>

+

+  <p>For more information, see the

+  <a href="../ssl-howto.html">SSL Configuration HOW-TO</a>.</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Support - BIO and NIO"><!--()--></a><a name="SSL_Support_-_BIO_and_NIO"><strong>SSL Support - BIO and NIO</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The BIO and NIO connectors use the following attributes to configure SSL:

+  </p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">algorithm</code></td><td align="left" valign="center">

+      <p>The certificate encoding algorithm to be used. This defaults to

+      <code>KeyManagerFactory.getDefaultAlgorithm()</code> which returns

+      <code>SunX509</code> for Sun JVMs. IBM JVMs return

+      <code>IbmX509</code>. For other vendors, consult the JVM

+      documentation for the default value.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowUnsafeLegacyRenegotiation</code></td><td align="left" valign="center">

+      <p>Is unsafe legacy TLS renegotiation allowed which is likely to expose

+      users to CVE-2009-3555, a man-in-the-middle vulnerability in the TLS

+      protocol that allows an attacker to inject arbitrary data into the user's

+      request. If not specified, a default of <code>false</code> is used. This

+      attribute only has an effect if the JVM does not support RFC 5746 as

+      indicated by the presence of the pseudo-ciphersuite

+      TLS_EMPTY_RENEGOTIATION_INFO_SCSV. This is available JRE/JDK 6 update 22

+      onwards. Where RFC 5746 is supported the renegotiation - including support

+      for unsafe legacy renegotiation - is controlled by the JVM configuration.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">ciphers</code></td><td align="left" valign="center">

+      <p>The comma separated list of encryption ciphers to support for HTTPS

+      connections. If specified, only the ciphers that are listed and supported

+      by the SSL implementation will be used. By default, the default ciphers

+      for the JVM will be used. Note that this usually means that the weak

+      export grade ciphers will be included in the list of available ciphers.

+      The ciphers are specified using the JSSE cipher naming convention. The

+      special value of <code>ALL</code> will enable all supported ciphers. This

+      will include many that are not secure. <code>ALL</code> is intended for

+      testing purposes only.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">clientAuth</code></td><td align="left" valign="center">

+      <p>Set to <code>true</code> if you want the SSL stack to require a

+      valid certificate chain from the client before accepting a connection.

+      Set to <code>want</code> if you want the SSL stack to request a client

+      Certificate, but not fail if one isn't presented. A <code>false</code>

+      value (which is the default) will not require a certificate chain

+      unless the client requests a resource protected by a security

+      constraint that uses <code>CLIENT-CERT</code> authentication.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">clientCertProvider</code></td><td align="left" valign="center">

+      <p>When client certificate information is presented in a form other than

+      instances of <code>java.security.cert.X509Certificate</code> it needs to

+      be converted before it can be used and this property controls which JSSE

+      provider is used to perform the conversion. For example it is used with

+      the <a href="ajp.html">AJP connectors</a>, the HTTP APR connector and

+      with the <a href="valve.html#SSL_Authenticator_Valve">

+      org.apache.catalina.valves.SSLValve</a>. If not specified, the default

+      provider will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">crlFile</code></td><td align="left" valign="center">

+      <p>The certificate revocation list to be used to verify client

+      certificates. If not defined, client certificates will not be checked

+      against a certificate revocation list.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keyAlias</code></td><td align="left" valign="center">

+      <p>The alias used to for the server certificate in the keystore. If not

+      specified the first key read in the keystore will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keyPass</code></td><td align="left" valign="center">

+      <p>The password used to access the server certificate from the

+      specified keystore file.  The default value is "<code>changeit</code>".

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystoreFile</code></td><td align="left" valign="center">

+      <p>The pathname of the keystore file where you have stored the

+      server certificate to be loaded.  By default, the pathname is

+      the file "<code>.keystore</code>" in the operating system home

+      directory of the user that is running Tomcat. If your

+      <code>keystoreType</code> doesn't need a file use <code>""</code>

+      (empty string) for this parameter.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystorePass</code></td><td align="left" valign="center">

+      <p>The password used to access the specified keystore file. The default

+      value is the value of the <code>keyPass</code> attribute.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystoreProvider</code></td><td align="left" valign="center">

+      <p>The name of the keystore provider to be used for the server

+      certificate. If not specified, the list of registered providers is

+      traversed in preference order and the first provider that supports the

+      <code>keystoreType</code> is used.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">keystoreType</code></td><td align="left" valign="center">

+      <p>The type of keystore file to be used for the server certificate.

+      If not specified, the default value is "<code>JKS</code>".</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCacheSize</code></td><td align="left" valign="center">

+      <p>The number of SSL sessions to maintain in the session cache. Use 0 to

+      specify an unlimited cache size. If not specified, a default of 0 is

+      used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionTimeout</code></td><td align="left" valign="center">

+      <p>The time, in seconds, after the creation of an SSL session that it will

+      timeout. Use 0 to specify an unlimited timeout. If not specified, a

+      default of 86400 (24 hours) is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslEnabledProtocols</code></td><td align="left" valign="center">

+      <p>The comma separated list of SSL protocols to support for HTTPS

+      connections. If specified, only the protocols that are listed and

+      supported by the SSL implementation will be enabled. If not specified,

+      the JVM default is used. The permitted values may be obtained from the

+      JVM documentation for the allowed values for 

+      <code>SSLSocket.setEnabledProtocols()</code> e.g.

+      <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#jssenames">

+      Oracle Java 6</a> and

+      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#jssenames">

+      Oracle Java 7</a>. Note: There is overlap between this attribute and

+      <code>sslProtocol</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslImplementationName</code></td><td align="left" valign="center">

+      <p>The class name of the SSL implementation to use. If not specified, the

+      default of <code>org.apache.tomcat.util.net.jsse.JSSEImplementation</code>

+      will be used which wraps JVM's default JSSE provider. Note that the

+      JVM can be configured to use a different JSSE provider as the default.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">sslProtocol</code></td><td align="left" valign="center">

+      <p>The the SSL protocol(s) to use (a single value may enable multiple

+      protocols - see the JVM documentation for details). If not specified, the

+      default is <code>TLS</code>. The permitted values may be obtained from the

+      JVM documentation for the allowed values for algorithm when creating an

+      <code>SSLContext</code> instance e.g.

+      <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#SSLContext">

+      Oracle Java 6</a> and

+      <a href="http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#SSLContext">

+      Oracle Java 7</a>. Note: There is overlap between this attribute and

+      <code>sslEnabledProtocols</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustManagerClassName</code></td><td align="left" valign="center">

+      <p>The name of a custom trust manager class to use to validate client

+      certificates. The class must have a zero argument constructor and must

+      also implement <code>javax.net.ssl.X509TrustManager</code>. If this

+      attribute is set, the trust store attributes may be ignored.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustMaxCertLength</code></td><td align="left" valign="center">

+      <p>The maximum number of intermediate certificates that will be allowed

+      when validating client certificates. If not specified, the default value

+      of 5 will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreAlgorithm</code></td><td align="left" valign="center">

+      <p>The algorithm to use for truststore. If not specified, the default

+      value returned by

+      <code>javax.net.ssl.TrustManagerFactory.getDefaultAlgorithm()</code> is

+      used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreFile</code></td><td align="left" valign="center">

+      <p>The trust store file to use to validate client certificates. The

+      default is the value of the <code>javax.net.ssl.trustStore</code> system

+      property. If neither this attribute nor the default system property is

+      set, no trust store will be configured.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststorePass</code></td><td align="left" valign="center">

+      <p>The password to access the trust store. The default is the value of the

+      <code>javax.net.ssl.trustStorePassword</code> system property. If that

+      property is null, no trust store password will be configured. If an

+      invalid trust store password is specified, a warning will be logged and an

+      attempt will be made to access the trust store without a password which

+      will skip validation of the trust store contents.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreProvider</code></td><td align="left" valign="center">

+      <p>The name of the truststore provider to be used for the server

+      certificate. The default is the value of the

+      <code>javax.net.ssl.trustStoreProvider</code> system property. If

+      that property is null, the value of <code>keystoreProvider</code> is used

+      as the default. If neither this attribute, the default system property nor

+      <code>keystoreProvider</code>is set, the list of registered providers is

+      traversed in preference order and the first provider that supports the

+      <code>truststoreType</code> is used.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">truststoreType</code></td><td align="left" valign="center">

+      <p>The type of key store used for the trust store. The default is the

+      value of the <code>javax.net.ssl.trustStoreType</code> system property. If

+      that property is null, the value of <code>keystoreType</code> is used as

+      the default.</p>

+     </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Support - APR/Native"><!--()--></a><a name="SSL_Support_-_APR/Native"><strong>SSL Support - APR/Native</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>When APR/native is enabled, the HTTPS connector will use a socket poller

+  for keep-alive, increasing scalability of the server. It also uses OpenSSL,

+  which may be more optimized than JSSE depending on the processor being used,

+  and can be complemented with many commercial accelerator components. Unlike

+  the HTTP connector, the HTTPS connector cannot use sendfile to optimize static

+  file processing.</p>

+

+  <p>The HTTPS APR/native connector has the same attributes than the HTTP

+  APR/native connector, but adds OpenSSL specific ones. For the full details on

+  using OpenSSL, please refer to OpenSSL documentations and the many books

+  available for it (see the <a href="http://www.openssl.org">Official OpenSSL

+  website</a>). The SSL specific attributes for the APR/native connector are:

+  </p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificateFile</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatefile">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificatePath</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatepath">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationFile</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationfile">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationPath</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationpath">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCertificateChainFile</code></td><td align="left" valign="center">

+      <p>See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcertificatechainfile">

+      the mod_ssl documentation</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificateFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains the concatenated certificates for the

+      trusted certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCACertificatePath</code></td><td align="left" valign="center">

+      <p>Name of the directory that contains the certificates for the trusted

+      certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains the concatenated certificate revocation

+      lists for the certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCARevocationPath</code></td><td align="left" valign="center">

+      <p>Name of the directory that contains the certificate revocation lists

+      for the certificate authorities. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCertificateChainFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains concatenated certifcates for the

+      certificate authorities which form the certifcate chain for the server

+      certificate. The format is PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">SSLCertificateFile</code></strong></td><td align="left" valign="center">

+      <p>Name of the file that contains the server certificate. The format is

+      PEM-encoded.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCertificateKeyFile</code></td><td align="left" valign="center">

+      <p>Name of the file that contains the server private key. The format is

+      PEM-encoded. The default value is the value of "SSLCertificateFile" and in

+      this case both certificate and private key have to be in this file (NOT

+      RECOMMENDED).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLCipherSuite</code></td><td align="left" valign="center">

+      <p>Ciphers which may be used for communicating with clients. The default

+      is "ALL", with other acceptable values being a list of ciphers, with ":"

+      used as the delimiter (see OpenSSL documentation for the list of ciphers

+      supported).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLDisableCompression</code></td><td align="left" valign="center">

+      <p>Disables compression if set to <code>true</code> and OpenSSL supports

+      disabling compression. Default is <code>false</code> which inherits the

+      default compression setting in OpenSSL.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLHonorCipherOrder</code></td><td align="left" valign="center">

+      <p>Set to <code>true</code> to enforce the server's cipher order

+      (from the <code>SSLCipherSuite</code> setting) instead of allowing

+      the client to choose the cipher (which is the default).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLPassword</code></td><td align="left" valign="center">

+      <p>Pass phrase for the encrypted private key. If "SSLPassword" is not

+      provided, the callback function should prompt for the pass phrase.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLProtocol</code></td><td align="left" valign="center">

+      <p>Protocol which may be used for communicating with clients. The default

+      value is <code>all</code>, which is equivalent to <code>SSLv3+TLSv1</code>

+      with other acceptable values being <code>SSLv2</code>,

+      <code>SSLv3</code>, <code>TLSv1</code> and any combination of the three

+      protocols concatenated with a plus sign. Note that the protocol

+      <code>SSLv2</code> is inherently unsafe.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLVerifyClient</code></td><td align="left" valign="center">

+      <p>Ask client for certificate. The default is "none", meaning the client

+      will not have the opportunity to submit a certificate. Other acceptable

+      values include "optional", "require" and "optionalNoCA".</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLVerifyDepth</code></td><td align="left" valign="center">

+      <p>Maximum verification depth for client certificates. The default is

+      "10".</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector Comparison"><!--()--></a><a name="Connector_Comparison"><strong>Connector Comparison</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Below is a small chart that shows how the connectors differentiate.</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>

+                       Java Blocking Connector   Java Non Blocking Connector   APR/native Connector

+                                 BIO                         NIO                       APR

+    Classname              Http11Protocol             Http11NioProtocol         Http11AprProtocol

+    Tomcat Version           3.x onwards                 6.x onwards              5.5.x onwards

+    Support Polling              NO                          YES                       YES

+    Polling Size                 N/A                   maxConnections             maxConnections

+    Read HTTP Request         Blocking                  Non Blocking                 Blocking

+    Read HTTP Body            Blocking                  Sim Blocking                 Blocking

+    Write HTTP Response       Blocking                  Sim Blocking                 Blocking

+    Wait for next Request     Blocking                  Non Blocking               Non Blocking

+    SSL Support               Java SSL                    Java SSL                   OpenSSL

+    SSL Handshake             Blocking                  Non blocking                 Blocking

+    Max Connections        maxConnections              maxConnections             maxConnections

+

+

+    </pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table></td></tr><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="/tomcat-7.0-doc/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/config/http.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/index.html b/webapps/docs/config/index.html
new file mode 100644
index 0000000..e8b8596
--- /dev/null
+++ b/webapps/docs/config/index.html
@@ -0,0 +1,107 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - Overview</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Overview</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>This manual contains reference information about all of the configuration

+directives that can be included in a <code>conf/server.xml</code> file to

+configure the behavior of the Tomcat 7 Servlet/JSP container.  It does not

+attempt to describe which configuration directives should be used to perform

+specific tasks - for that, see the various <em>HOW-TO</em> documents on the

+main index page.</p>

+

+<p>Tomcat configuration files are formatted as schemaless XML; elements and

+attributes are case-sensitive. Apache Ant-style variable substitution

+is supported; a system property with the name <code>propname</code> may be

+used in a configuration file using the syntax <code>${propname}</code>. All

+system properties are available including those set using the <code>-D</code>

+syntax, those automatically made available by the JVM and those configured in

+the <code>$CATALINA_BASE/conf/catalina.properties</code> file.

+</p>

+

+<p>The configuration element descriptions are organized into the following

+major categories:</p>

+<ul>

+<li><strong>Top Level Elements</strong> - <code>&lt;Server&gt;</code> is the

+    root element of the entire configuration file, while

+    <code>&lt;Service&gt;</code> represents a group of Connectors that is

+    associated with an Engine.</li>

+<li><strong>Connectors</strong> - Represent the interface between external

+    clients sending requests to (and receiving responses from) a particular

+    Service.</li>

+<li><strong>Containers</strong> - Represent components whose function is to

+    process incoming requests, and create the corresponding responses.

+    An Engine handles all requests for a Service, a Host handles all requests

+    for a particular virtual host, and a Context handles all requests for a

+    specific web application.</li>

+<li><strong>Nested Components</strong> - Represent elements that can be

+    nested inside the element for a Container.  Some elements can be nested

+    inside any Container, while others can only be nested inside a

+    Context.</li>

+</ul>

+

+<p>For each element, the corresponding documentation follows this general

+outline:</p>

+<ul>

+<li><strong>Introduction</strong> - Overall description of this particular

+    component.  There will be a corresponding Java <em>interface</em> (in

+    the <code>org.apache.catalina</code> package) that is implemented by one

+    or more standard implementations.</li>

+<li><strong>Attributes</strong> - The set of attributes that are legal for

+    this element.  Generally, this will be subdivided into <em>Common</em>

+    attributes that are supported by all implementations of the corresponding

+    Java interface, and <em>Standard Implementation</em> attributes that are

+    specific to a particular Java class that implements this interface.

+    The names of required attributes are <strong>bolded</strong>.</li>

+<li><strong>Nested Components</strong> - Enumerates which of the <em>Nested

+    Components</em> can be legally nested within this element.</li>

+<li><strong>Special Features</strong> - Describes the configuration of a large

+    variety of special features (specific to each element type) that are

+    supported by the standard implementation of this interface.</li>

+</ul>

+

+</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="/tomcat-7.0-doc/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/config/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/jar-scanner.html b/webapps/docs/config/jar-scanner.html
new file mode 100644
index 0000000..974e055
--- /dev/null
+++ b/webapps/docs/config/jar-scanner.html
@@ -0,0 +1,116 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Jar Scanner Component</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Jar Scanner Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Jar Scanner</strong> element represents the component that is

+  used to scan the web application for JAR files. It is typically used during

+  web application start to identify configuration files such as TLDs or

+  web-fragment.xml files that must be processed as part of the web application

+  initialisation.</p>

+

+  <p>A Jar Scanner element MAY be nested inside a

+  <a href="context.html">Context</a> component.  If it is not included,

+  a default Jar Scanner configuration will be created automatically, which

+  is sufficient for most requirements.</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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Jar Scanner</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.tomcat.JarScanner</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The standard implementation of <strong>Jar Scanner</strong> is

+    <strong>org.apache.tomcat.util.scan.StandardJarScanner</strong>.

+    It supports the following additional attributes (in addition to the

+    common attributes listed above):</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">scanAllDirectories</code></td><td align="left" valign="center">

+       <p>If true, any directories found on the classpath will be checked to see

+       if are expanded Jar files. The default is <code>false</code>. Tomcat

+       determines if directory is an expanded JAR file by looking for a META-INF

+       sub-directory. Only if the META-INF sub-directory exists, is the

+       directory to be an expanded JAR file.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scanAllFiles</code></td><td align="left" valign="center">

+       <p>If true, any files found on the classpath will be checked to see if

+       they are Jar files rather than relying on the file extension being

+       <code>.jar</code>. The default is <code>false</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scanClassPath</code></td><td align="left" valign="center">

+       <p>If true, the full web application classpath, including the shared and

+       common classloaders and the system classpath (but not the bootstrap

+       classpath) will be scanned for Jar files in addition to the web

+       application. The default is <code>true</code>. </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">scanBootstrapClassPath</code></td><td align="left" valign="center">

+       <p>If <code>scanClassPath</code> is true and this is true the bootstrap

+       classpath will also be scanned for Jar files. The default is

+       <code>false</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+  <p>No components may be nested inside a <strong>Jar Scanner</strong> 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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+  <p>No special features are associated with a <strong>Jar Scanner</strong>

+  element.</p>

+</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="/tomcat-7.0-doc/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/config/jar-scanner.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/listeners.html b/webapps/docs/config/listeners.html
new file mode 100644
index 0000000..bf35a7c
--- /dev/null
+++ b/webapps/docs/config/listeners.html
@@ -0,0 +1,459 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The LifeCycle Listener Component</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The LifeCycle Listener Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Standard_Implementations">Standard Implementations</a><ol><li><a href="#APR_Lifecycle_Listener_-_org.apache.catalina.core.AprLifecycleListener">APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener</a></li><li><a href="#Jasper_Listener_-_org.apache.catalina.core.JasperListener">Jasper Listener - org.apache.catalina.core.JasperListener</a></li><li><a href="#Global_Resources_Lifecycle_Listener_-_org.apache.catalina.mbeans.GlobalResourcesLifecycleListener">Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener</a></li><li><a href="#JRE_Memory_Leak_Prevention_Listener_-_org.apache.catalina.core.JreMemoryLeakPreventionListener">JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener</a></li><li><a href="#Security_Lifecycle_Listener_-_org.apache.catalina.security.SecurityListener">Security Lifecycle Listener - org.apache.catalina.security.SecurityListener</a></li><li><a href="#ThreadLocal_Leak_Prevention_Listener_-_org.apache.catalina.core.ThreadLocalLeakPreventionListener">ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener</a></li><li><a href="#UserConfig_-_org.apache.catalina.startup.UserConfig">UserConfig - org.apache.catalina.startup.UserConfig</a></li></ol></li><li><a href="#Additional_Implementations">Additional Implementations</a><ol><li><a href="#JMX_Remote_Lifecycle_Listener_-_org.apache.catalina.mbeans.JmxRemoteLifecycleListener">JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <strong>Listener</strong> element defines a component that performs

+  actions when specific events occur, usually Tomcat starting or Tomcat

+  stopping.</p>

+

+  <p>Listeners may be nested inside a <a href="server.html">Server</a>,

+  <a href="engine.html">Engine</a>, <a href="host.html">Host</a> or

+  <a href="context.html">Context</a>. Some Listeners are only intended to be

+  nested inside specific elements. These constraints are noted in the

+  documentation below.</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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Listener</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use. This class must

+        implement the <code>org.apache.catalina.LifecycleListener</code>

+        interface.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>No element may be nested inside a <strong>Listener</strong>.</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="Standard Implementations"><!--()--></a><a name="Standard_Implementations"><strong>Standard Implementations</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Unlike most Catalina components, there are several standard

+  <strong>Listener</strong> implementations available.  As a result,

+  the <code>className</code> attribute MUST be used to select the

+  implementation you wish to use.</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener"><!--()--></a><a name="APR_Lifecycle_Listener_-_org.apache.catalina.core.AprLifecycleListener"><strong>APR Lifecycle Listener - org.apache.catalina.core.AprLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>APR Lifecycle Listener</strong> checks for the presence of

+    the APR/native library and loads the library if it is present. For more

+    information see the <a href="../apr.html">APR/native guide</a>.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>The following additional attributes are supported by the <strong>APR

+    Lifecycle Listener</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">SSLEngine</code></td><td align="left" valign="center">

+        <p>Name of the SSLEngine to use. <code>off</code>: do not use SSL,

+        <code>on</code>: use SSL but no specific ENGINE.</p>

+        <p>The default value is <b>on</b>. This initializes the

+        native SSL engine, which must be enabled in the APR/native connector by

+        the use of the <code>SSLEnabled</code> attribute.</p>

+        <p>See the <a href="http://www.openssl.org/">Official OpenSSL website</a>

+        for more details on supported SSL hardware engines and manufacturers.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">SSLRandomSeed</code></td><td align="left" valign="center">

+        <p>Entropy source used to seed the SSLEngine's PRNG. The default value

+        is <code>builtin</code>. On development systems, you may want to set

+        this to <code>/dev/urandom</code> to allow quicker start times.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">FIPSMode</code></td><td align="left" valign="center">

+        <p>Set to <code>on</code> to instruct OpenSSL to go into FIPS mode.

+        FIPS mode <em>requires you to have a FIPS-capable OpenSSL library which

+        you must build yourself</em>.

+        FIPS mode also requires Tomcat native library version 1.1.23 or later,

+        which <em>must be built against the FIPS-compatible OpenSSL</em> library.

+        If this attribute is "on", <b>SSLEngine</b> must be enabled as well.

+        The default value is <code>off</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Jasper Listener - org.apache.catalina.core.JasperListener"><!--()--></a><a name="Jasper_Listener_-_org.apache.catalina.core.JasperListener"><strong>Jasper Listener - org.apache.catalina.core.JasperListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Jasper Listener</strong> initializes the Jasper 2 JSP engine

+    before any web applications that may use it are loaded. For more

+    information on the Jasper 2 JSP engine see the

+    <a href="../jasper-howto.html">Jasper How To</a>.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>No additional attributes are supported by the <strong>Jasper Listener

+    </strong>.</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="Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"><!--()--></a><a name="Global_Resources_Lifecycle_Listener_-_org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"><strong>Global Resources Lifecycle Listener - org.apache.catalina.mbeans.GlobalResourcesLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Global Resources Lifecycle Listener</strong> initializes the

+    Global JNDI resources defined in server.xml as part of the <a href="globalresources.html">Global Resources</a> element. Without this

+    listener, none of the Global Resources will be available.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>No additional attributes are supported by the <strong>Global Resources

+    Lifecycle Listener</strong>.</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="JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener"><!--()--></a><a name="JRE_Memory_Leak_Prevention_Listener_-_org.apache.catalina.core.JreMemoryLeakPreventionListener"><strong>JRE Memory Leak Prevention Listener - org.apache.catalina.core.JreMemoryLeakPreventionListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>JRE Memory Leak Prevention Listener</strong> provides

+    work-arounds for known places where the Java Runtime environment uses

+    the context class loader to load a singleton as this will cause a memory

+    leak if a web application class loader happens to be the context class

+    loader at the time. The work-around is to initialise these singletons when

+    this listener starts as Tomcat's common class loader is the context class

+    loader at that time. It also provides work-arounds for known issues that

+    can result in locked JAR files.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>The following additional attributes are supported by the <strong>JRE

+    Memory Leak Prevention Listener</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">appContextProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that calls to

+        <code>sun.awt.AppContext.getAppContext()</code> triggered by a web

+        application do not result in a memory leak. Note that a call to this

+        method will be triggered as part of the web application stop process

+        when running on Java 6 and earlier. It is therefore strongly recommended

+        that this protection is enabled when running on Java 6 and earlier. The

+        default is <code>true</code> for Java 6 and earlier versions. The

+        default is <code>false</code> for Java 7 and later versions.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">AWTThreadProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that calls to

+        <code>java.awt.Toolkit.getDefaultToolkit()</code> triggered by a web

+        application do not result in a memory leak.

+        Defaults to <code>false</code> because an AWT thread is launched.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">classesToInitialize</code></td><td align="left" valign="center">

+        <p>List of comma-separated fully qualified class names to load and initialize

+        during the startup of this Listener. This allows to pre-load classes that are

+        known to provoke classloader leaks if they are loaded during a request

+        processing. Non-JRE classes may be referenced, like

+        <code>oracle.jdbc.driver.OracleTimeoutThreadPerVM</code>.

+        The default value is empty, but specific JRE classes are loaded by other leak

+        protection features managed by other attributes of this Listener.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">driverManagerProtection</code></td><td align="left" valign="center">

+        <p>The first use of <code>java.sql.DriverManager</code> will trigger the

+        loading of JDBC Driver in the the current class loader. The web

+        application level memory leak protection can take care of this in most

+        cases but triggering the loading here has fewer side-effects. The

+        default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">gcDaemonProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that calls to

+        <code>sun.misc.GC.requestLatency(long)</code> triggered by a web

+        application do not result in a memory leak. Use of RMI is likely to

+        trigger a call to this method. A side effect of enabling this protection

+        is the creation of a thread named "GC Daemon". The protection uses

+        reflection to access internal Sun classes and may generate errors on

+        startup on non-Sun JVMs. The default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">java2DDisposerProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that loading the

+        <code>sun.java2d.Disposer</code> class by a web application does not

+        result in a memory leak.

+        Defaults to <code>false</code> because a thread is launched.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">ldapPoolProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that the PoolCleaner thread started by

+        <code>com.sun.jndi.ldap.LdapPoolManager</code> does not result in a

+        memory leak. The thread is started the first time the

+        <code>LdapPoolManager</code> class is used if the system property

+        <code>com.sun.jndi.ldap.connect.pool.timeout</code> is set to a value

+        greater than 0. Without this protection, if a web application uses this

+        class the PoolCleaner thread will be configured with the thread's

+        context class loader set to the web application class loader which in

+        turn will trigger a memory leak on reload. Defaults to

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securityLoginConfigurationProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that usage of the

+        <code>javax.security.auth.login.Configuration</code> class by a web

+        application does not provoke a memory leak. The first access of this

+        class will trigger the initializer that will retain a static reference

+        to the context class loader. The protection loads the class with the

+        system class loader to ensure that the static initializer is not

+        triggered by a web application. Defaults to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securityPolicyProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that usage of the deprecated

+        <code>javax.security.auth.Policy</code> class by a web application does not

+        result in a memory leak. The first access of this class will trigger the

+        static initializer that will retain a static reference to the context

+        class loader. The protection calls the <code>getPolicy()</code> method

+        of this class to ensure that the static initializer is not triggered by

+        a web application. Defaults to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">tokenPollerProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that any token poller thread initialized by

+        <code>sun.security.pkcs11.SunPKCS11.initToken()</code> does not

+        result in a memory leak. The thread is started depending on various

+        conditions as part of the initialization of the Java Cryptography

+        Architecture. Without the protection this can happen during Webapp

+        deployment when the MessageDigest for generating session IDs is

+        initialized. As a result the thread has the Webapp class loader as its

+        thread context class loader. Enabling the protection initializes JCA

+        early during Tomcat startup. Defaults to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">urlCacheProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that reading resources from JAR files using

+        <code>java.net.URLConnection</code>s does not result in the JAR file

+        being locked. Note that enabling this protection disables caching by

+        default for all resources obtained via

+        <code>java.net.URLConnection</code>s. Caching may be re-enabled on a

+        case by case basis as required. Defaults to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlParsingProtection</code></td><td align="left" valign="center">

+        <p>Enables protection so that parsing XML files within a web application

+        does not result in a memory leak. Note that memory profilers may not

+        display the GC root associated with this leak making it particularly

+        hard to diagnose. Defaults to <code>true</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Security Lifecycle Listener - org.apache.catalina.security.SecurityListener"><!--()--></a><a name="Security_Lifecycle_Listener_-_org.apache.catalina.security.SecurityListener"><strong>Security Lifecycle Listener - org.apache.catalina.security.SecurityListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Security Lifecycle Listener</strong> performs a number of

+    security checks when Tomcat starts and prevents Tomcat from starting if they

+    fail. The listener is not enabled by default. To enabled it uncomment the

+    listener in $CATALINA_BASE/conf/server.xml. If the operating system supports

+    umask then the line in $CATALINA_HOME/bin/catalina.sh that obtains the umask

+    also needs to be uncommented.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>The following additional attributes are supported by the <strong>Security

+    Lifecycle Listener</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">checkedOsUsers</code></td><td align="left" valign="center">

+        <p>A comma separated list of OS users that must not be used to start

+        Tomcat. If not specified, the default value of <b>root</b> is used. To

+        disable this check, set the attribute to the empty string. Usernames

+        are checked in a case-insensitive manner.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">minimumUmask</code></td><td align="left" valign="center">

+        <p>The least rectrictive umask that must be configured before Tomcat

+        will start. If not specified, the default value of <b>0007</b> is used.

+        To disable this check, set the attribute to the empty string. The check

+        is not performed on Windows platforms.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener"><!--()--></a><a name="ThreadLocal_Leak_Prevention_Listener_-_org.apache.catalina.core.ThreadLocalLeakPreventionListener"><strong>ThreadLocal Leak Prevention Listener - org.apache.catalina.core.ThreadLocalLeakPreventionListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>ThreadLocal Leak Prevention Listener</strong> triggers the

+    renewal of threads in Executor pools when a

+    <a href="context.html">Context</a> is being stopped to avoid thread-local

+    related memory leaks. Active threads will be renewed one by one when they

+    come back to the pool after executing their task.</p>

+

+    <p>This listener must only be nested within <a href="server.html">Server</a>

+    elements.</p>

+

+    <p>No additional attributes are supported by the <strong>ThreadLocal Leak

+    Prevention Listener</strong>.</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="UserConfig - org.apache.catalina.startup.UserConfig"><!--()--></a><a name="UserConfig_-_org.apache.catalina.startup.UserConfig"><strong>UserConfig - org.apache.catalina.startup.UserConfig</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>UserConfig</strong> provides feature of User Web Applications.

+    User Web Applications map a request URI starting with a tilde character ("~")

+    and a username to a directory (commonly named public_html) in that user's 

+    home directory on the server.</p>

+

+    <p>See the <a href="host.html#User_Web_Applications">User Web Applications</a>

+    special feature on the <strong>Host</strong> element for more information.</p>

+

+    <p>The following additional attributes are supported by the 

+    <strong>UserConfig</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">directoryName</code></td><td align="left" valign="center">

+        <p>The directory name to be searched for within each user home directory.

+        The default is <code>public_html</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userClass</code></td><td align="left" valign="center">

+        <p>The class name of the user database class.

+        There are currently two user database, the 

+        <code>org.apache.catalina.startup.PasswdUserDatabase</code> is used on a

+        Unix system that uses the /etc/passwd file to identify valid users.

+        The <code>org.apache.catalina.startup.HomesUserDatabase</code> is used on 

+        a server where /etc/passwd is not in use. HomesUserDatabase deploy all 

+        directories found in a specified base directory.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">homeBase</code></td><td align="left" valign="center">

+        <p>The base directory containing user home directories.This is effective 

+        only when <code>org.apache.catalina.startup.HomesUserDatabase</code> is 

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression defining user who deployment is allowed. If this 

+        attribute is specified, the user to deploy must match for this pattern.

+        If this attribute is not specified, all users will be deployed unless the

+        user matches a deny pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression defining user who deployment is denied. If this

+        attribute is specified, the user to deploy must not match for this

+        pattern. If this attribute is not specified, deployment of user will be

+        governed by a allow attribute.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+  

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Additional Implementations"><!--()--></a><a name="Additional_Implementations"><strong>Additional Implementations</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener"><!--()--></a><a name="JMX_Remote_Lifecycle_Listener_-_org.apache.catalina.mbeans.JmxRemoteLifecycleListener"><strong>JMX Remote Lifecycle Listener - org.apache.catalina.mbeans.JmxRemoteLifecycleListener</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This listener requires <code>catalina-jmx-remote.jar</code> to be placed

+    in <code>$CATALINA_HOME/lib</code>. This jar may be found in the extras

+    directory of the binary download area.</p>

+

+    <p>The <strong>JMX Remote Lifecycle Listener</strong> fixes the ports used by

+    the JMX/RMI Server making things much simpler if you need to connect

+    jconsole or a similar tool to a remote Tomcat instance that is running

+    behind a firewall. Only these ports are configured via the listener. The

+    remainder of the configuration is via the standard system properties for

+    configuring JMX. For further information on configuring JMX see

+    <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html">

+    Monitoring and Management Using JMX</a> included with the Java SDK

+    documentation.</p>

+

+    <p>This listener must only be nested within a <a href="server.html">Server</a>

+    element.</p>

+

+    <p>The following additional attributes are supported by the <strong>JMX Remote

+    Lifecycle Listener</strong>:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">rmiRegistryPortPlatform</code></strong></td><td align="left" valign="center">

+        <p>The port to be used by the JMX/RMI registry for the Platform MBeans.

+        This replaces the use of the

+        <code>com.sun.management.jmxremote.port</code> system property that

+        should not be set when using this valve.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">rmiServerPortPlatform</code></strong></td><td align="left" valign="center">

+        <p>The port to be used by the Platform JMX/RMI server.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rmiBindAddress</code></td><td align="left" valign="center">

+        <p>The address of the interface to be used by JMX/RMI server. Setting

+        this option to <code>true</code> is incompatible with setting the system

+        property <code>com.sun.management.jmxremote.ssl</code> to

+        <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useLocalPorts</code></td><td align="left" valign="center">

+        <p>Should any clients using these ports be forced to use local ports to

+        connect to the the JMX/RMI server. This is useful when tunnelling

+        connections over SSH or similar. Defaults to <code>false</code>.</p>

+      </td></tr></table>

+

+    <h3>Using file-based Authentication and Authorisation</h3>

+

+    <p>If this listener was configured in server.xml as:

+  <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>

+  &lt;Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"

+          rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" /&gt;

+  </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>

+    with the following system properties set (e.g. in setenv.sh):

+  <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>

+  -Dcom.sun.management.jmxremote.password.file=$CATALINA_BASE/conf/jmxremote.password

+  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access

+  -Dcom.sun.management.jmxremote.ssl=false

+  </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>

+    $CATALINA_BASE/conf/jmxremote.password containing:

+  <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>

+  admin letmein

+  </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>

+    $CATALINA_BASE/conf/jmxremote.access containing:

+  <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>

+  admin readwrite

+  </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>

+    then opening ports 10001 (RMI Registry) and 10002 (JMX/RMI Server) in your

+    firewall would enable jconsole to connect to a Tomcat instance running

+    behind a firewall using a connection string of the form:

+  <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+  service:jmx:rmi://&lt;hostname&gt;:10002/jndi/rmi://&lt;hostname&gt;:10001/jmxrmi

+  </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>

+    with a user name of <code>admin</code> and a password of

+    <code>letmein</code>.

+    </p>

+

+    <h3>Using JAAS</h3>

+

+    <p>If we use the following system properties instead:

+  <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>

+  -Dcom.sun.management.jmxremote.login.config=Tomcat

+  -Djava.security.auth.login.config=$CATALINA_BASE/conf/login.config

+  -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access

+  -Dcom.sun.management.jmxremote.ssl=false

+  </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>

+    $CATALINA_BASE/conf/login.config containing your choice of JAAS LoginModule implementation, for example:

+  <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>

+  Tomcat { /* should match to the com.sun.management.jmxremote.login.config property */

+

+    /* for illustration purposes only */

+    com.sun.security.auth.module.LdapLoginModule REQUIRED

+      userProvider="ldap://ldap-svr/ou=people,dc=example,dc=com"

+      userFilter="(&amp;(uid={USERNAME})(objectClass=inetOrgPerson))"

+      authzIdentity="admin"

+      debug=true;

+  };

+  </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>

+    $CATALINA_BASE/conf/jmxremote.access containing:

+  <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>

+  admin readwrite

+  </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>

+    then we would need to provide LDAP credentials instead.

+    </p>

+

+    <p><strong>Note that the examples above do not use SSL. JMX access should

+    be considered equivalent to administrative access and secured accordingly.

+    </strong></p>

+

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/listeners.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/loader.html b/webapps/docs/config/loader.html
new file mode 100644
index 0000000..30e658e
--- /dev/null
+++ b/webapps/docs/config/loader.html
@@ -0,0 +1,183 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Loader Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Loader Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li><li><a href="#VirtualWebappLoader_Implementation">VirtualWebappLoader Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Loader</strong> element represents the <em>web

+  application class loader</em> that will be used to load Java

+  classes and resources for your web application.  Such

+  a class loader must follow the requirements of the Servlet

+  Specification, and load classes from the following locations:</p>

+  <ul>

+  <li>From the <code>/WEB-INF/classes</code> directory inside your

+      web application.</li>

+  <li>From JAR files in the <code>/WEB-INF/lib</code> directory

+      inside your web application.</li>

+  <li>From resources made available by Catalina to all web

+      applications globally.</li>

+  </ul>

+

+  <p>A Loader element MAY be nested inside a <a href="context.html">Context</a>

+  component.  If it is not included, a default Loader configuration will be

+  created automatically, which is sufficient for most requirements.</p>

+

+  <p>For a more in-depth description of the class loader hierarchy

+  that is implemented by Catalina, see <a href="../class-loader-howto.html">the ClassLoader HowTo</a>.</p>

+

+    <blockquote><em>

+    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Loader</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.catalina.Loader</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">delegate</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want the class loader to follow

+        the standard Java2 delegation model, and attempt to load classes from

+        parent class loaders <strong>before</strong> looking inside the web

+        application.  Set to <code>false</code> (the default) to have the

+        class loader look inside the web application first, before asking

+        parent class loaders to find requested classes or resources.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">reloadable</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want Catalina to monitor classes in

+        <code>/WEB-INF/classes/</code> and <code>/WEB-INF/lib</code> for

+        changes, and automatically reload the web application if a change

+        is detected.  This feature is very useful during application

+        development, but it requires significant runtime overhead and is

+        not recommended for use on deployed production applications.  You

+        can use the <a href="../manager-howto.html">Manager</a> web

+        application, however, to trigger reloads of deployed applications

+        on demand.</p>

+

+        <p><strong>NOTE</strong> - The value for this property will be

+        inherited from the <code>reloadable</code> attribute you set on

+        the surrounding <a href="context.html">Context</a> component,

+        and any value you explicitly set here will be replaced.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The standard implementation of <strong>Loader</strong> is

+    <strong>org.apache.catalina.loader.WebappLoader</strong>.

+    It supports the following additional attributes (in addition to the

+    common attributes listed above):</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">loaderClass</code></td><td align="left" valign="center">

+        <p>Java class name of the <code>java.lang.ClassLoader</code>

+        implementation class to use.  If not specified, the default value is

+        <code>org.apache.catalina.loader.WebappClassLoader</code>. Custom

+        <strong>loaderClass</strong> implementations must extend

+        <code>org.apache.catalina.loader.WebappClassLoader</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">searchExternalFirst</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want repositories outside

+        of <code>WEB-INF/classes</code> and <code>WEB-INF/lib</code> to

+        be searched first. Default value is <code>false</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="VirtualWebappLoader Implementation"><!--()--></a><a name="VirtualWebappLoader_Implementation"><strong>VirtualWebappLoader Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This implementation of <strong>Loader</strong> is

+    <strong>org.apache.catalina.loader.VirtualWebappLoader</strong>.

+    It extends <code>WebappLoader</code> and supports the following

+    additional attributes</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">virtualClasspath</code></td><td align="left" valign="center">

+        <p>Additional repositories to search for resources.

+        Multiple values can be joined using <code>;</code>

+        as a separator.</p>

+        <p>Leading and trailing whitespaces in values are ignored.

+        If a value does not point to an existing directory or

+        <code>*.jar</code> file, it is silently skipped.

+        Diagnostic messages can be seen if you enable debug logging for

+        the VirtualWebappLoader class.

+        </p>

+        <p>Example: <code>virtualClasspath="${catalina.base}/myapp_config"</code></p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">searchVirtualFirst</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want the virtual

+        class path to be searched before

+        <code>WEB-INF/classes</code> and <code>WEB-INF/lib</code>.

+        Default value is <code>false</code>.</p>

+        <p>If searched before, resources located in the virtual

+        class path take precendence over resources with the same

+        name contained in the webapp.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>No components may be nested inside a <strong>Loader</strong> 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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>A loader is associated with the log category based on its classname.</p>

+

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/loader.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/manager.html b/webapps/docs/config/manager.html
new file mode 100644
index 0000000..6f4f6c5
--- /dev/null
+++ b/webapps/docs/config/manager.html
@@ -0,0 +1,413 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Manager Component</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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Manager Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Persistence_Across_Restarts">Persistence Across Restarts</a></li><li><a href="#Disable_Session_Persistence">Disable Session Persistence</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Manager</strong> element represents the <em>session

+  manager</em> that will be used to create and maintain HTTP sessions

+  as requested by the associated web application.</p>

+

+  <p>A Manager element MAY be nested inside a

+  <a href="context.html">Context</a> component.  If it is not included,

+  a default Manager configuration will be created automatically, which

+  is sufficient for most requirements, &mdash; see

+  <em>Standard Manager Implementation</em> below for the details

+  of this configuration.</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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Manager</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.catalina.Manager</code> interface.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">distributable</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to ask the session manager to enforce

+        the restrictions described in the Servlet Specification on

+        distributable applications (primarily, this would mean that all

+        session attributes must implement <code>java.io.Serializable</code>).

+        Set to <code>false</code> (the default) to not enforce these

+        restrictions.</p>

+

+        <p><strong>NOTE</strong> - The value for this property is inherited

+        automatically based on the presence or absence of the

+        <code>&lt;distributable&gt;</code> element in the web application

+        deployment descriptor (<code>/WEB-INF/web.xml</code>).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActiveSessions</code></td><td align="left" valign="center">

+        <p>The maximum number of active sessions that will be created by

+        this Manager, or <code>-1</code> (the default) for no limit.</p>

+

+        <p>When the limit is reached, any attempt to create a new session

+        (e.g. with <code>HttpServletRequest.getSession()</code> call)

+        will fail with an <code>IllegalStateException</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxInactiveInterval</code></td><td align="left" valign="center">

+        <p>The initial maximum time interval, in seconds,

+        between client requests before a session is invalidated. A negative value

+        will result in sessions never timing out. If the attribute is not provided,

+        a default of 1800 seconds (30 minutes) is used.</p>

+

+        <p>This attribute provides the initial value whenever a

+        new session is created, but the interval may be dynamically

+        varied by a servlet via the

+        <code>setMaxInactiveInterval</code> method of the <code>HttpSession</code> object.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionIdLength</code></td><td align="left" valign="center">

+       <p>The length of session ids created by this Manager, measured in bytes,

+        excluding subsequent conversion to a hexadecimal string and

+        excluding any JVM route information used for load balancing.

+        The default is 16.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat provides two standard implementations of <strong>Manager</strong>

+    for use &mdash; the default one stores active sessions, while the optional one

+    stores active sessions that have been swapped out (in addition to saving

+    sessions across a restart of Tomcat) in a storage location that is selected

+    via the use of an appropriate <strong>Store</strong> nested element.</p>

+

+    <h3>Standard Manager Implementation</h3>

+

+    <p>The standard implementation of <strong>Manager</strong> is

+    <strong>org.apache.catalina.session.StandardManager</strong>.

+    It supports the following additional attributes (in addition to the

+    common attributes listed above):</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">pathname</code></td><td align="left" valign="center">

+        <p>Absolute or relative (to the work directory for this Context)

+        pathname of the file in which session state will be preserved

+        across application restarts, if possible.  The default is

+        "SESSIONS.ser".<br>See

+        <a href="#Persistence_Across_Restarts">Persistence Across Restarts</a>

+        for more information. This persistence may be

+        disabled by setting this attribute to an empty string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processExpiresFrequency</code></td><td align="left" valign="center">

+        <p>Frequency of the session expiration, and related manager operations.

+        Manager operations will be done once for the specified amount of

+        backgroundProcess calls (i.e., the lower the amount, the more often the

+        checks will occur). The minimum value is 1, and the default value is 6.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate session IDs.

+        If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the Manager

+        will use the platform default provider and the default algorithm. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the Manager

+        will use the platform default provider and the default algorithm. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr></table>

+

+    <h3>Persistent Manager Implementation</h3>

+

+    <p><strong>NOTE:</strong> You must set either the

+    <code>org.apache.catalina.session.StandardSession.ACTIVITY_CHECK</code> or

+    <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>

+    <a href="systemprops.html">system properties</a> to <code>true</code> for

+    the persistent manager to work correctly.</p>

+

+    <p>The persistent implementation of <strong>Manager</strong> is

+    <strong>org.apache.catalina.session.PersistentManager</strong>.  In

+    addition to the usual operations of creating and deleting sessions, a

+    <code>PersistentManager</code> has the capability to swap active (but

+    idle) sessions out to a persistent storage mechanism, as well as to save

+    all sessions across a normal restart of Tomcat.  The actual persistent

+    storage mechanism used is selected by your choice of a

+    <strong>Store</strong> element nested inside the <strong>Manager</strong>

+    element - this is required for use of <code>PersistentManager</code>.</p>

+

+    <p>This implementation of Manager supports the following attributes in

+    addition to the <a href="#Common Attributes">Common Attributes</a>

+    described earlier.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>It has the same meaning as described in the

+        <a href="#Common Attributes">Common Attributes</a> above.

+        You <strong>must</strong> specify

+        <code>org.apache.catalina.session.PersistentManager</code> to use

+        this manager implementation.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdleBackup</code></td><td align="left" valign="center">

+        <p>The time interval (in seconds) since the last access to a session

+        before it is eligible for being persisted to the session store, or

+        <code>-1</code> to disable this feature.  By default, this feature is

+        disabled.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdleSwap</code></td><td align="left" valign="center">

+        <p>The time interval (in seconds) since the last access to a session

+        before it should be persisted to the session store, and

+        passivated out of the server's memory, or <code>-1</code> to disable

+        this feature.  If this feature is enabled, the time interval specified

+        here should be equal to or longer than the value specified for

+        <code>maxIdleBackup</code>.  By default, this feature is disabled.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">minIdleSwap</code></td><td align="left" valign="center">

+        <p>The time interval (in seconds) since the last access to a session

+        before it will be eligible to be persisted to the session store, and

+        passivated out of the server's memory, or <code>-1</code> for this

+        swapping to be available at any time.  If specified, this value should

+        be less than that specified by <code>maxIdleSwap</code>.  By default,

+        this value is set to <code>-1</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">processExpiresFrequency</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">saveOnRestart</code></td><td align="left" valign="center">

+        <p>Should all sessions be persisted and reloaded when Tomcat is shut

+        down and restarted (or when this application is reloaded)?  By default,

+        this attribute is set to <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>It is the same as described above for the

+        <code>org.apache.catalina.session.StandardManager</code> class.

+        </p>

+      </td></tr></table>

+

+    <p>In order to successfully use a PersistentManager, you must nest inside

+    it a <strong>&lt;Store&gt;</strong> element, as described below.</p>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <h3>Standard Manager Implementation</h3>

+

+  <p>If you are using the <em>Standard Manager Implementation</em>

+  as described above, no elements may be nested inside your

+  <strong>&lt;Manager&gt;</strong> element.</p>

+

+  <h3>Persistent Manager Implementation</h3>

+

+  <p>If you are using the <em>Persistent Manager Implementation</em>

+  as described above, you <strong>MUST</strong> nest a

+  <strong>&lt;Store&gt;</strong> element inside, which defines the

+  characteristics of the persistent data storage.  Two implementations

+  of the <code>&lt;Store&gt;</code> element are currently available,

+  with different characteristics, as described below.</p>

+

+  <h5>File Based Store</h5>

+

+  <p>The <em>File Based Store</em> implementation saves swapped out

+  sessions in individual files (named based on the session identifier)

+  in a configurable directory.  Therefore, you are likely to encounter

+  scalability problems as the number of active sessions increases, and

+  this should primarily be considered a means to easily experiment.</p>

+

+  <p>To configure this, add a <code>&lt;Store&gt;</code> nested inside

+  your <code>&lt;Manager&gt;</code> element with the following attributes:

+  </p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">checkInterval</code></td><td align="left" valign="center">

+      <p>The interval (in seconds) between checks for expired sessions

+      among those sessions that are currently swapped out.  By default,

+      this interval is set to 60 seconds (one minute).</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+      <p>Java class name of the implementation to use.  This class must

+      implement the <code>org.apache.catalina.Store</code> interface.  You

+      <strong>must</strong> specify

+      <code>org.apache.catalina.session.FileStore</code>

+      to use this implementation.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">directory</code></td><td align="left" valign="center">

+      <p>Absolute or relative (to the temporary work directory for this web

+      application) pathname of the directory into which individual session

+      files are written.  If not specified, the temporary work directory

+      assigned by the container is utilized.</p>

+    </td></tr></table>

+

+

+  <h5>JDBC Based Store</h5>

+

+  <p>The <em>JDBC Based Store</em> implementation saves swapped out

+  sessions in individual rows of a preconfigured table in a database

+  that is accessed via a JDBC driver.  With large numbers of swapped out

+  sessions, this implementation will exhibit improved performance over

+  the File Based Store described above.</p>

+

+  <p>To configure this, add a <code>&lt;Store&gt;</code> nested inside

+  your <code>&lt;Manager&gt;</code> element with the following attributes:

+  </p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">checkInterval</code></td><td align="left" valign="center">

+      <p>The interval (in seconds) between checks for expired sessions

+      among those sessions that are currently swapped out.  By default,

+      this interval is set to 60 seconds (one minute).</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+      <p>Java class name of the implementation to use.  This class must

+      implement the <code>org.apache.catalina.Store</code> interface.  You

+      <strong>must</strong> specify

+      <code>org.apache.catalina.session.JDBCStore</code>

+      to use this implementation.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionURL</code></strong></td><td align="left" valign="center">

+      <p>The connection URL that will be handed to the configured JDBC

+      driver to establish a connection to the database containing our

+      session table.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dataSourceName</code></td><td align="left" valign="center">

+      <p>Name of the JNDI resource for a JDBC DataSource-factory. If this option

+      is given and a valid JDBC resource can be found, it will be used and any

+      direct configuration of a JDBC connection via <code>connectionURL</code>

+      and <code>driverName</code> will be ignored. Since this code uses prepared

+      statements, you might want to configure pooled prepared statements as

+      shown in <a href="../jndi-resources-howto.html">the JNDI resources

+      HOW-TO</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">driverName</code></strong></td><td align="left" valign="center">

+      <p>Java class name of the JDBC driver to be used.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionAppCol</code></strong></td><td align="left" valign="center">

+      <p>Name of the database column, contained in the specified session

+      table, that contains the Engine, Host, and Web Application Context

+      name in the format <code>/Engine/Host/Context</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionDataCol</code></strong></td><td align="left" valign="center">

+      <p>Name of the database column, contained in the specified

+      session table, that contains the serialized form of all session

+      attributes for a swapped out session.  The column type must accept

+      a binary object (typically called a BLOB).</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionIdCol</code></strong></td><td align="left" valign="center">

+      <p>Name of the database column, contained in the specified

+      session table, that contains the session identifier of the

+      swapped out session.  The column type must accept character

+      string data of at least as many characters as are contained

+      in session identifiers created by Tomcat (typically 32).</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionLastAccessedCol</code></strong></td><td align="left" valign="center">

+      <p>Name of the database column, contained in the specified

+      session table, that contains the <code>lastAccessedTime</code>

+      property of this session.  The column type must accept a

+      Java <code>long</code> (64 bits).</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionMaxInactiveCol</code></strong></td><td align="left" valign="center">

+      <p>Name of the database column, contained in the specified

+      session table, that contains the <code>maxInactiveInterval</code>

+      property of this session.  The column type must accept a

+      Java <code>integer</code> (32 bits).</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionTable</code></strong></td><td align="left" valign="center">

+      <p>Name of the database table to be used for storing swapped out

+      sessions.  This table must contain (at least) the database columns

+      that are configured by the other attributes of this element.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">sessionValidCol</code></strong></td><td align="left" valign="center">

+      <p>Name of the database column, contained in the specified

+      session table, that contains a flag indicating whether this

+      swapped out session is still valid or not.  The column type

+      must accept a single character.</p>

+    </td></tr></table>

+

+  <p>Before attempting to use the JDBC Based Store for the first time,

+  you must create the table that will be used to store swapped out sessions.

+  Detailed SQL commands vary depending on the database you are using, but

+  a script like this will generally be required:</p>

+

+<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>

+create table tomcat_sessions (

+  session_id     varchar(100) not null primary key,

+  valid_session  char(1) not null,

+  max_inactive   int not null,

+  last_access    bigint not null,

+  app_name       varchar(255),

+  session_data   mediumblob,

+  KEY kapp_name(app_name)

+);

+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  <p>In order for the JDBC Based Store to successfully connect to your

+  database, the JDBC driver you configure must be visible to Tomcat's

+  internal class loader.  Generally, that means you must place the JAR

+  file containing this driver into the <code>$CATALINA_HOME/lib</code>

+  directory.</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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Persistence Across Restarts"><!--()--></a><a name="Persistence_Across_Restarts"><strong>Persistence Across Restarts</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Whenever Apache Tomcat is shut down normally and restarted, or when an

+    application reload is triggered, the standard Manager implementation

+    will attempt to serialize all currently active sessions to a disk

+    file located via the <code>pathname</code> attribute.  All such saved

+    sessions will then be deserialized and activated (assuming they have

+    not expired in the mean time) when the application reload is completed.</p>

+

+    <p>In order to successfully restore the state of session attributes,

+    all such attributes MUST implement the <code>java.io.Serializable</code>

+    interface.  You MAY cause the Manager to enforce this restriction by

+    including the <code>&lt;distributable&gt;</code> element in your web

+    application deployment descriptor (<code>/WEB-INF/web.xml</code>).</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Disable Session Persistence"><!--()--></a><a name="Disable_Session_Persistence"><strong>Disable Session Persistence</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>As documented above, every web application by default has

+    standard manager implementation configured, and it performs session

+    persistence across restarts. To disable this persistence feature, create

+    a <a href="context.html">Context</a> configuration file for your web

+    application and add the following element there:</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>&lt;Manager pathname="" /&gt;</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><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="/tomcat-7.0-doc/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/config/manager.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/realm.html b/webapps/docs/config/realm.html
new file mode 100644
index 0000000..645aeaf
--- /dev/null
+++ b/webapps/docs/config/realm.html
@@ -0,0 +1,844 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Realm Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Realm Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm">JDBC Database Realm - org.apache.catalina.realm.JDBCRealm</a></li><li><a href="#DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm">DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm</a></li><li><a href="#JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm">JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm</a></li><li><a href="#UserDatabase_Realm_-_org.apache.catalina.realm.UserDatabaseRealm">UserDatabase Realm - org.apache.catalina.realm.UserDatabaseRealm</a></li><li><a href="#Memory_Based_Realm_-_org.apache.catalina.realm.MemoryRealm">Memory Based Realm - org.apache.catalina.realm.MemoryRealm</a></li><li><a href="#JAAS_Realm_-_org.apache.catalina.realm.JAASRealm">JAAS Realm - org.apache.catalina.realm.JAASRealm</a></li><li><a href="#Combined_Realm_-_org.apache.catalina.realm.CombinedRealm">Combined Realm - org.apache.catalina.realm.CombinedRealm</a></li><li><a href="#LockOut_Realm_-_org.apache.catalina.realm.LockOutRealm">LockOut Realm - org.apache.catalina.realm.LockOutRealm</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <strong>Realm</strong> element represents a "database" of usernames,

+  passwords, and <em>roles</em> (similar to Unix <em>groups</em>) assigned

+  to those users.  Different implementations of Realm allow Catalina to be

+  integrated into environments where such authentication information is already

+  being created and maintained, and then utilize that information to implement

+  <em>Container Managed Security</em> as described in the Servlet

+  Specification.</p>

+

+  <p>You may nest a Realm inside any Catalina container

+  <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

+  <a href="context.html">Context</a>).  In addition, Realms associated with

+  an Engine or a Host are automatically inherited by lower-level

+  containers, unless explicitly overridden.</p>

+

+  <p>For more in-depth information about container managed security in web

+  applications, as well as more information on configuring and using the

+  standard realm component implementations, please see the

+  <a href="../realm-howto.html">Container-Managed Security Guide</a>.

+  </p>

+

+    <blockquote><em>

+    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></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="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Realm</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>org.apache.catalina.Realm</code> interface.</p>

+      </td></tr></table>

+

+    <p>Unlike most Catalina components, there are several standard

+    <strong>Realm</strong> implementations available.  As a result,

+    the <code>className</code> attribute MUST be used to select the

+    implementation you wish to use.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC Database Realm - org.apache.catalina.realm.JDBCRealm"><!--()--></a><a name="JDBC_Database_Realm_-_org.apache.catalina.realm.JDBCRealm"><strong>JDBC Database Realm - org.apache.catalina.realm.JDBCRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>JDBC Database Realm</strong> connects Tomcat to

+    a relational database, accessed through an appropriate JDBC driver,

+    to perform lookups of usernames, passwords, and their associated

+    roles.  Because the lookup is done each time that it is required,

+    changes to the database will be immediately reflected in the

+    information used to authenticate new logins.</p>

+

+    <p>A rich set of additional attributes lets you configure the required

+    connection to the underlying database, as well as the table and

+    column names used to retrieve the required information:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

+        <p>This attribute controls how the special role name <code>*</code> is

+        handled when processing authorization constraints in web.xml. By

+        default, the specification compliant value of <code>strict</code> is

+        used which means that the user must be assigned one of the roles defined

+        in web.xml. The alternative values are <code>authOnly</code> which means

+        that the user must be authenticated but no check is made for assigned

+        roles and <code>strictAuthOnly</code> which means that the user must be

+        authenticated and no check will be made for assigned roles unless roles

+        are defined in web.xml in which case the user must be assigned at least

+        one of those roles.</p>

+        <p>When this attribute has the value of <code>authOnly</code> or

+        <code>strictAuthOnly</code>, the <strong>roleNameCol</strong> and

+        <strong>userRoleTable</strong> attributes become optional. If those two

+        attributes are omitted, the user's roles will not be loaded by this

+        Realm.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionName</code></strong></td><td align="left" valign="center">

+        <p>The database username to use when establishing the JDBC

+        connection.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionPassword</code></strong></td><td align="left" valign="center">

+        <p>The database password to use when establishing the JDBC

+        connection.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionURL</code></strong></td><td align="left" valign="center">

+        <p>The connection URL to be passed to the JDBC driver when

+        establishing a database connection.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

+        <p>The name of the <code>MessageDigest</code> algorithm used

+        to encode user passwords stored in the database.  If not specified,

+        user passwords are assumed to be stored in clear-text.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digestEncoding</code></td><td align="left" valign="center">

+        <p>The charset for encoding digests.  If not specified, the platform

+        default will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">driverName</code></strong></td><td align="left" valign="center">

+        <p>Fully qualified Java class name of the JDBC driver to be

+        used to connect to the authentication database.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleNameCol</code></td><td align="left" valign="center">

+        <p>Name of the column, in the "user roles" table, which contains

+        a role name assigned to the corresponding user.</p>

+        <p>This attribute is <strong>required</strong> in majority of

+        configurations. See <strong>allRolesMode</strong> attribute for

+        a rare case when it can be omitted.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userCredCol</code></strong></td><td align="left" valign="center">

+        <p>Name of the column, in the "users" table, which contains

+        the user's credentials (i.e. password).  If a value for the

+        <code>digest</code> attribute is specified, this component

+        will assume that the passwords have been encoded with the

+        specified algorithm.  Otherwise, they will be assumed to be

+        in clear text.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userNameCol</code></strong></td><td align="left" valign="center">

+        <p>Name of the column, in the "users" and "user roles" table,

+        that contains the user's username.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleTable</code></td><td align="left" valign="center">

+        <p>Name of the "user roles" table, which must contain columns

+        named by the <code>userNameCol</code> and <code>roleNameCol</code>

+        attributes.</p>

+        <p>This attribute is <strong>required</strong> in majority of

+        configurations. See <strong>allRolesMode</strong> attribute for

+        a rare case when it can be omitted.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userTable</code></strong></td><td align="left" valign="center">

+        <p>Name of the "users" table, which must contain columns named

+        by the <code>userNameCol</code> and <code>userCredCol</code>

+        attributes.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+        <p>When using X509 client certificates, this specifies the class name

+        that will be used to retrieve the user name from the certificate.

+        The class must implement the

+        <code>org.apache.catalina.realm.X509UsernameRetriever</code>

+        interface. The default is to use the certificate's SubjectDN

+        as the username.</p>

+      </td></tr></table>

+

+    <p>See the <a href="../realm-howto.html">Container-Managed Security Guide</a> for more

+    information on setting up container managed security using the

+    JDBC Database Realm component.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm"><!--()--></a><a name="DataSource_Database_Realm_-_org.apache.catalina.realm.DataSourceRealm"><strong>DataSource Database Realm - org.apache.catalina.realm.DataSourceRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>DataSource Database Realm</strong> connects Tomcat to

+    a relational database, accessed through a JNDI named JDBC DataSource

+    to perform lookups of usernames, passwords, and their associated

+    roles.  Because the lookup is done each time that it is required,

+    changes to the database will be immediately reflected in the

+    information used to authenticate new logins.</p>

+

+    <p>The JDBC Realm uses a single db connection. This requires that

+    realm based authentication be synchronized, i.e. only one authentication

+    can be done at a time. This could be a bottleneck for applications

+    with high volumes of realm based authentications.</p>

+

+    <p>The DataSource Database Realm supports simultaneous realm based

+    authentications and allows the underlying JDBC DataSource to

+    handle optimizations like database connection pooling.</p>

+

+    <p>A rich set of additional attributes lets you configure the name

+    of the JNDI JDBC DataSource, as well as the table and

+    column names used to retrieve the required information:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

+        <p>This attribute controls how the special role name <code>*</code> is

+        handled when processing authorization constraints in web.xml. By

+        default, the specification compliant value of <code>strict</code> is

+        used which means that the user must be assigned one of the roles defined

+        in web.xml. The alternative values are <code>authOnly</code> which means

+        that the user must be authenticated but no check is made for assigned

+        roles and <code>strictAuthOnly</code> which means that the user must be

+        authenticated and no check will be made for assigned roles unless roles

+        are defined in web.xml in which case the user must be assigned at least

+        one of those roles.</p>

+        <p>When this attribute has the value of <code>authOnly</code> or

+        <code>strictAuthOnly</code>, the <strong>roleNameCol</strong> and

+        <strong>userRoleTable</strong> attributes become optional. If those two

+        attributes are omitted, the user's roles will not be loaded by this

+        Realm.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">dataSourceName</code></strong></td><td align="left" valign="center">

+        <p>The name of the JNDI JDBC DataSource for this Realm.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

+        <p>The name of the <code>MessageDigest</code> algorithm used

+        to encode user passwords stored in the database.  If not specified,

+        user passwords are assumed to be stored in clear-text.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">localDataSource</code></td><td align="left" valign="center">

+        <p>When the realm is nested inside a Context element, this allows the

+        realm to use a DataSource defined for the Context rather than a global

+        DataSource.  If not specified, the default is <code>false</code>: use a

+        global DataSource.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleNameCol</code></td><td align="left" valign="center">

+        <p>Name of the column, in the "user roles" table, which contains

+        a role name assigned to the corresponding user.</p>

+        <p>This attribute is <strong>required</strong> in majority of

+        configurations. See <strong>allRolesMode</strong> attribute for

+        a rare case when it can be omitted.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userCredCol</code></strong></td><td align="left" valign="center">

+        <p>Name of the column, in the "users" table, which contains

+        the user's credentials (i.e. password).  If a value for the

+        <code>digest</code> attribute is specified, this component

+        will assume that the passwords have been encoded with the

+        specified algorithm.  Otherwise, they will be assumed to be

+        in clear text.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userNameCol</code></strong></td><td align="left" valign="center">

+        <p>Name of the column, in the "users" and "user roles" table,

+        that contains the user's username.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleTable</code></td><td align="left" valign="center">

+        <p>Name of the "user roles" table, which must contain columns

+        named by the <code>userNameCol</code> and <code>roleNameCol</code>

+        attributes.</p>

+        <p>This attribute is <strong>required</strong> in majority of

+        configurations. See <strong>allRolesMode</strong> attribute for

+        a rare case when it can be omitted.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userTable</code></strong></td><td align="left" valign="center">

+        <p>Name of the "users" table, which must contain columns named

+        by the <code>userNameCol</code> and <code>userCredCol</code>

+        attributes.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+        <p>When using X509 client certificates, this specifies the class name

+        that will be used to retrieve the user name from the certificate.

+        The class must implement the

+        <code>org.apache.catalina.realm.X509UsernameRetriever</code>

+        interface. The default is to use the certificate's SubjectDN

+        as the username.</p>

+      </td></tr></table>

+

+    <p>See the <a href="../realm-howto.html#DataSourceRealm">

+    DataSource Realm HOW-TO</a> for more information on setting up container

+    managed security using the DataSource Database Realm component.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm"><!--()--></a><a name="JNDI_Directory_Realm_-_org.apache.catalina.realm.JNDIRealm"><strong>JNDI Directory Realm - org.apache.catalina.realm.JNDIRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>JNDI Directory Realm</strong> connects Tomcat to

+    an LDAP Directory, accessed through an appropriate JNDI driver,

+    that stores usernames, passwords, and their associated

+    roles. Changes to the directory are immediately reflected in the

+    information used to authenticate new logins.</p>

+

+

+    <p>The directory realm supports a variety of approaches to using

+    LDAP for authentication:</p>

+

+    <ul>

+    <li>The realm can either use a pattern to determine the

+    distinguished name (DN) of the user's directory entry, or search

+    the directory to locate that entry.

+    </li>

+

+    <li>The realm can authenticate the user either by binding to the

+    directory with the DN of the user's entry and the password

+    presented by the user, or by retrieving the password from the

+    user's entry and performing a comparison locally.

+    </li>

+

+    <li>Roles may be represented in the directory as explicit entries

+    found by a directory search (e.g. group entries of which the user

+    is a member), as the values of an attribute in the user's entry,

+    or both.

+    </li>

+    </ul>

+

+    <p> A rich set of additional attributes lets you configure the

+    required behaviour as well as the connection to the underlying

+    directory and the element and attribute names used to retrieve

+    information from the directory:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">adCompat</code></td><td align="left" valign="center">

+        <p>Microsoft Active Directory often returns referrals.

+        When iterating over NamingEnumerations these lead to

+        PartialResultExceptions. If you want us to ignore those exceptions,

+        set this attribute to "true". Unfortunately there's no stable way

+        to detect, if the Exceptions really come from an AD referral.

+        The default value is "false".</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

+        <p>This attribute controls how the special role name <code>*</code> is

+        handled when processing authorization constraints in web.xml. By

+        default, the specification compliant value of <code>strict</code> is

+        used which means that the user must be assigned one of the roles defined

+        in web.xml. The alternative values are <code>authOnly</code> which means

+        that the user must be authenticated but no check is made for assigned

+        roles and <code>strictAuthOnly</code> which means that the user must be

+        authenticated and no check will be made for assigned roles unless roles

+        are defined in web.xml in which case the user must be assigned at least

+        one of those roles.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">alternateURL</code></td><td align="left" valign="center">

+        <p>If a socket connection can not be made to the provider at

+        the <code>connectionURL</code> an attempt will be made to use the

+        <code>alternateURL</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">authentication</code></td><td align="left" valign="center">

+        <p>A string specifying the type of authentication to use.

+        "none", "simple", "strong" or a provider specific definition

+        can be used. If no value is given the providers default is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">commonRole</code></td><td align="left" valign="center">

+        <p>A role name assigned to each successfully authenticated user in

+        addition to the roles retrieved from LDAP. If not specified, only

+        the roles retrieved via LDAP are used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionName</code></td><td align="left" valign="center">

+        <p>The directory username to use when establishing a

+        connection to the directory for LDAP search operations. If not

+        specified an anonymous connection is made, which is often

+        sufficient unless you specify the <code>userPassword</code>

+        property.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionPassword</code></td><td align="left" valign="center">

+        <p>The directory password to use when establishing a

+        connection to the directory for LDAP search operations. If not

+        specified an anonymous connection is made, which is often

+        sufficient unless you specify the <code>userPassword</code>

+        property.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionTimeout</code></td><td align="left" valign="center">

+        <p>The timeout in milliseconds to use when establishing the connection

+        to the LDAP directory. If not specified, a value of 5000 (5 seconds) is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">connectionURL</code></strong></td><td align="left" valign="center">

+        <p>The connection URL to be passed to the JNDI driver when

+        establishing a connection to the directory.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">contextFactory</code></td><td align="left" valign="center">

+        <p>Fully qualified Java class name of the factory class used

+        to acquire our JNDI <code>InitialContext</code>.  By default,

+        assumes that the standard JNDI LDAP provider will be utilized.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">derefAliases</code></td><td align="left" valign="center">

+        <p>A string specifying how aliases are to be dereferenced during

+        search operations. The allowed values are "always", "never",

+        "finding" and "searching". If not specified, "always" is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

+        <p>The digest algorithm to apply to the plaintext password offered

+        by the user before comparing it with the value retrieved from the

+        directory.  Valid values are those accepted for the algorithm name

+        by the <code>java.security.MessageDigest</code> class. If not

+        specified the plaintext password is assumed to be retrieved. Not

+        required unless <code>userPassword</code> is specified</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocol</code></td><td align="left" valign="center">

+         <p>A string specifying the security protocol to use. If not given

+         the providers default is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">referrals</code></td><td align="left" valign="center">

+        <p>How do we handle JNDI referrals? Allowed values are

+        "ignore", "follow", or "throw"  (see javax.naming.Context.REFERRAL

+        for more information).

+        Microsoft Active Directory often returns referrals.

+        If you need to follow them set referrals to "follow".

+        Caution: if your DNS is not part of AD, the LDAP client lib might try

+        to resolve your domain name in DNS to find another LDAP server.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleBase</code></td><td align="left" valign="center">

+        <p>The base directory entry for performing role searches. If not

+        specified the top-level element in the directory context will be used.

+        If specified it may optionally include pattern replacements

+        "{0}".."{n}" corresponding to the name parts of the

+        user's distinguished name (as returned by

+        <code>javax.naming.Name.get()</code>).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleName</code></td><td align="left" valign="center">

+        <p>The name of the attribute that contains role names in the

+        directory entries found by a role search. In addition you can

+        use the <code>userRoleName</code> property to specify the name

+        of an attribute, in the user's entry, containing additional

+        role names.</p>

+        <p>If <code>roleName</code> is not specified a role

+        search does not take place, and roles are taken only from the

+        user's entry.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleNested</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want to nest roles into roles.

+        When a role search is performed and the value of this property is

+        <code>true</code>, the search will be repeated recursively to find

+        all the roles that belong to the user either directly or indirectly.

+        If not specified, the default value of <code>false</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleSearch</code></td><td align="left" valign="center">

+        <p>The LDAP filter expression used for performing role

+        searches.</p>

+

+        <p>Use <code>{0}</code> to substitute the distinguished name (DN)

+        of the user, and/or <code>{1}</code> to substitute the username,

+        and/or <code>{2}</code> for the value of an attribute from the

+        user's directory entry, of the authenticated user.

+        The name of the attribute that provides the value for <code>{2}</code>

+        is configured by the <code>userRoleAttribute</code> property.</p>

+

+        <p>When <code>roleNested</code> property is <code>true</code>,

+        this filter expression will be also used to recursively search for

+        other roles, which indirectly belong to this user. To find the

+        roles that match the newly found role, the following values

+        are used:

+        <code>{0}</code> is substituted by the distinguished name of the newly

+        found role, and both <code>{1}</code> and <code>{2}</code> are

+        substituted by the name of the role (see the <code>roleName</code>

+        property). The <code>userRoleAttribute</code> property is not

+        applicable to this search.</p>

+

+        <p>If this property is not specified, a role search does not take

+        place and roles are taken only from the attribute in the user's entry

+        specified by the <code>userRoleName</code> property.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleSearchAsUser</code></td><td align="left" valign="center">

+        <p> When searching for user roles, should the search be performed as the

+        user currently being authenticated? If false,

+        <code>connectionName</code> and <code>connectionPassword</code> will be

+        used if specified, else an anonymous. If not specified, the default

+        value of <code>false</code> is used. Note that when accessing the

+        directory using delegated credentials, this attribute is always ignored

+        and the search is performed using the delegated credentials.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleSubtree</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want to search the entire

+        subtree of the element specified by the <code>roleBase</code>

+        property for role entries associated with the user. The

+        default value of <code>false</code> causes only the top level

+        to be searched.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sizeLimit</code></td><td align="left" valign="center">

+        <p>Specifies the maximum number of records to return when using the

+        <code>userSearch</code> attribute. If not specified, the default of

+        <code>0</code> is used which indicates no limit.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeLimit</code></td><td align="left" valign="center">

+        <p>Specifies the time (in milliseconds) to wait for records to be

+        returned when using the <code>userSearch</code> attribute. If not

+        specified, the default of <code>0</code> is used which indicates no

+        limit.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useDelegatedCredential</code></td><td align="left" valign="center">

+        <p>When the JNIRealm is used with the SPNEGO authenticator, delegated

+        credentials for the user may be available. If such credentials are

+        present, this attribute controls whether are not they are used to

+        connect to the directory. If not specified, the default value of

+        <code>true</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userBase</code></td><td align="left" valign="center">

+        <p>The base element for user searches performed using the

+        <code>userSearch</code> expression.  Not used if you are using

+        the <code>userPattern</code> expression.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userPassword</code></td><td align="left" valign="center">

+        <p>Name of the attribute in the user's entry containing the

+        user's password.  If you specify this value, JNDIRealm will

+        bind to the directory using the values specified by

+        <code>connectionName</code> and

+        <code>connectionPassword</code> properties, and retrieve the

+        corresponding attribute for comparison to the value specified

+        by the user being authenticated.  If you do

+        <strong>not</strong> specify this value, JNDIRealm will

+        attempt a simple bind to the directory using the DN of the

+        user's entry and the password presented by the user, with a

+        successful bind being interpreted as an authenticated

+        user.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userPattern</code></td><td align="left" valign="center">

+        <p>Pattern for the distinguished name (DN) of the user's

+        directory entry, with <code>{0}</code> marking where the

+        actual username should be inserted. You can use this property

+        instead of <code>userSearch</code>, <code>userSubtree</code>

+        and <code>userBase</code> when the distinguished name contains

+        the username and is otherwise the same for all users. Note that

+        when accessing the directory using delegated credentials, this

+        attribute is always ignored and <code>userSearch</code>,

+        <code>userSubtree</code> and <code>userBase</code> are always

+        used instead.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleName</code></td><td align="left" valign="center">

+        <p>The name of an attribute in the user's directory entry

+        containing zero or more values for the names of roles assigned

+        to this user.  In addition you can use the

+        <code>roleName</code> property to specify the name of an

+        attribute to be retrieved from individual role entries found

+        by searching the directory. If <code>userRoleName</code> is

+        not specified all the roles for a user derive from the role

+        search.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userRoleAttribute</code></td><td align="left" valign="center">

+        <p>The name of an attribute in the user's directory entry

+        containing the value that you wish to use when you search for

+        roles. This is especially useful for RFC 2307 where

+        the role memberUid can be the <code>uid</code> or the

+        <code>uidNumber</code> of the user. This value will be

+        marked as <code>{2}</code> in your role search filter expression.

+        This value will NOT be available for nested role searches.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userSearch</code></td><td align="left" valign="center">

+        <p>The LDAP filter expression to use when searching for a

+        user's directory entry, with <code>{0}</code> marking where

+        the actual username should be inserted.  Use this property

+        (along with the <code>userBase</code> and

+        <code>userSubtree</code> properties) instead of

+        <code>userPattern</code> to search the directory for the

+        user's entry.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">userSubtree</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> if you want to search the entire

+        subtree of the element specified by the <code>userBase</code>

+        property for the user's entry. The default value of

+        <code>false</code> causes only the top level to be searched.

+        Not used if you are using the <code>userPattern</code>

+        expression.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+        <p>When using X509 client certificates, this specifies the class name

+        that will be used to retrieve the user name from the certificate.

+        The class must implement the

+        <code>org.apache.catalina.realm.X509UsernameRetriever</code>

+        interface. The default is to use the certificate's SubjectDN

+        as the username.</p>

+      </td></tr></table>

+

+    <p>See the <a href="../realm-howto.html">Container-Managed Security Guide</a> for more

+    information on setting up container managed security using the

+    JNDI Directory Realm component.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="UserDatabase Realm - org.apache.catalina.realm.UserDatabaseRealm"><!--()--></a><a name="UserDatabase_Realm_-_org.apache.catalina.realm.UserDatabaseRealm"><strong>UserDatabase Realm - org.apache.catalina.realm.UserDatabaseRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>UserDatabase Realm</strong> is a Realm implementation

+    that is based on a UserDatabase resource made available through the global

+    JNDI resources configured for this Tomcat instance.</p>

+

+    <p>The UserDatabase Realm implementation supports the following

+    additional attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

+        <p>This attribute controls how the special role name <code>*</code> is

+        handled when processing authorization constraints in web.xml. By

+        default, the specification compliant value of <code>strict</code> is

+        used which means that the user must be assigned one of the roles defined

+        in web.xml. The alternative values are <code>authOnly</code> which means

+        that the user must be authenticated but no check is made for assigned

+        roles and <code>strictAuthOnly</code> which means that the user must be

+        authenticated and no check will be made for assigned roles unless roles

+        are defined in web.xml in which case the user must be assigned at least

+        one of those roles.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">resourceName</code></strong></td><td align="left" valign="center">

+        <p>The name of the global <code>UserDatabase</code> resource

+        that this realm will use for user, password and role information.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+        <p>When using X509 client certificates, this specifies the class name

+        that will be used to retrieve the user name from the certificate.

+        The class must implement the

+        <code>org.apache.catalina.realm.X509UsernameRetriever</code>

+        interface. The default is to use the certificate's SubjectDN

+        as the username.</p>

+      </td></tr></table>

+

+    <p>See the

+    <a href="../realm-howto.html">Container-Managed Security Guide</a> for more

+    information on setting up container managed security using the UserDatabase

+    Realm component and the

+    <a href="../jndi-resources-howto.html">JNDI resources how-to</a> for more

+    information on how to configure a UserDatabase resource.</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="Memory Based Realm - org.apache.catalina.realm.MemoryRealm"><!--()--></a><a name="Memory_Based_Realm_-_org.apache.catalina.realm.MemoryRealm"><strong>Memory Based Realm - org.apache.catalina.realm.MemoryRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Memory Based Realm</strong> is a simple Realm implementation

+    that reads user information from an XML format, and represents it as a

+    collection of Java objects in memory.  This implementation is intended

+    solely to get up and running with container managed security - it is NOT

+    intended for production use.  As such, there are no mechanisms for

+    updating the in-memory collection of users when the content of the

+    underlying data file is changed.</p>

+

+    <p>The Memory Based Realm implementation supports the following

+    additional attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

+        <p>This attribute controls how the special role name <code>*</code> is

+        handled when processing authorization constraints in web.xml. By

+        default, the specification compliant value of <code>strict</code> is

+        used which means that the user must be assigned one of the roles defined

+        in web.xml. The alternative values are <code>authOnly</code> which means

+        that the user must be authenticated but no check is made for assigned

+        roles and <code>strictAuthOnly</code> which means that the user must be

+        authenticated and no check will be made for assigned roles unless roles

+        are defined in web.xml in which case the user must be assigned at least

+        one of those roles.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">digest</code></td><td align="left" valign="center">

+        <p>The digest algorithm used to store passwords in non-plaintext

+        formats. Valid values are those accepted for the algorithm name by the

+        <code>java.security.MessageDigest</code> class. If not specified,

+        passwords are stored in clear text.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pathname</code></td><td align="left" valign="center">

+        <p>Absolute or relative (to $CATALINA_BASE) pathname to the XML file

+        containing our user information.  See below for details on the

+        XML element format required.  If no pathname is specified, the

+        default value is <code>conf/tomcat-users.xml</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+        <p>When using X509 client certificates, this specifies the class name

+        that will be used to retrieve the user name from the certificate.

+        The class must implement the

+        <code>org.apache.catalina.realm.X509UsernameRetriever</code>

+        interface. The default is to use the certificate's SubjectDN

+        as the username.</p>

+      </td></tr></table>

+

+    <p>The XML document referenced by the <code>pathname</code> attribute must

+    conform to the following requirements:</p>

+    <ul>

+    <li>The root (outer) element must be <code>&lt;tomcat-users&gt;</code>.

+        </li>

+    <li>Each authorized user must be represented by a single XML element

+        <code>&lt;user&gt;</code>, nested inside the root element.</li>

+    <li>Each <code>&lt;user&gt;</code> element must have the following

+        attributes:

+        <ul>

+        <li><strong>name</strong> - Username of this user (must be unique

+            within this file).</li>

+        <li><strong>password</strong> - Password of this user (in

+            clear text).</li>

+        <li><strong>roles</strong> - Comma-delimited list of the role names

+            assigned to this user.</li>

+        </ul></li>

+    </ul>

+

+    <p>See the <a href="../realm-howto.html">Container-Managed Security Guide</a> for more

+    information on setting up container managed security using the

+    Memory Based Realm component.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JAAS Realm - org.apache.catalina.realm.JAASRealm"><!--()--></a><a name="JAAS_Realm_-_org.apache.catalina.realm.JAASRealm"><strong>JAAS Realm - org.apache.catalina.realm.JAASRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p><strong>JAASRealm</strong> is an implementation of the Tomcat

+    <code>Realm</code> interface that authenticates users through the Java

+    Authentication &amp; Authorization Service (JAAS) framework which is now

+    provided as part of the standard J2SE API.</p>

+

+    <p>Using JAASRealm gives the developer the ability to combine practically

+    any conceivable security realm with Tomcat's CMA.</p>

+

+    <p>JAASRealm is prototype for Tomcat of the JAAS-based J2EE authentication

+    framework for J2EE v1.4, based on the <a href="http://www.jcp.org/en/jsr/detail?id=196">JCP Specification Request

+    196</a> to enhance container-managed security and promote 'pluggable'

+    authentication mechanisms whose implementations would be

+    container-independent.</p>

+

+    <p>Based on the JAAS login module and principal

+    (see <code>javax.security.auth.spi.LoginModule</code> and

+    <code>javax.security.Principal</code>), you can develop your own security

+    mechanism or wrap another third-party mechanism for integration with the CMA

+    as implemented by Tomcat.</p>

+

+    <p>The JAAS Realm implementation supports the following additional

+    attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allRolesMode</code></td><td align="left" valign="center">

+        <p>This attribute controls how the special role name <code>*</code> is

+        handled when processing authorization constraints in web.xml. By

+        default, the specification compliant value of <code>strict</code> is

+        used which means that the user must be assigned one of the roles defined

+        in web.xml. The alternative values are <code>authOnly</code> which means

+        that the user must be authenticated but no check is made for assigned

+        roles and <code>strictAuthOnly</code> which means that the user must be

+        authenticated and no check will be made for assigned roles unless roles

+        are defined in web.xml in which case the user must be assigned at least

+        one of those roles.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">appName</code></strong></td><td align="left" valign="center">

+       <p>The name of the application as configured in your login configuration

+       file

+       (<a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/tutorials/LoginConfigFile.html">JAAS LoginConfig</a>).</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">userClassNames</code></strong></td><td align="left" valign="center">

+        <p>A comma-separated list of the names of the classes that you have made

+        for your user <code>Principals</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">configFile</code></td><td align="left" valign="center">

+        <p>The name of a JAAS configuration file to use with this Realm. It will

+        be searched for using <code>ClassLoader#getResource(String)</code> so it

+        is possible for the configuration to be bundled within a web

+        application. If not specified, the default JVM global JAAS configuration

+        willbe used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">roleClassNames</code></td><td align="left" valign="center">

+        <p>A comma-separated list of the names of the classes that you have made

+        for your role <code>Principals</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">stripRealmForGss</code></td><td align="left" valign="center">

+        <p>When processing users authenticated via the GSS-API, this attribute

+        controls if any "@..." is removed from the end of the user

+        name. If not specified, the default is <code>true</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">useContextClassLoader</code></td><td align="left" valign="center">

+        <p>Instructs JAASRealm to use the context class loader for loading the

+        user-specified <code>LoginModule</code> class and associated

+        <code>Principal</code> classes. The default value is <code>true</code>,

+        which is backwards-compatible with the way Tomcat 5 works. To load

+        classes using the container's classloader, specify

+        <code>false</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">X509UsernameRetrieverClassName</code></td><td align="left" valign="center">

+        <p>When using X509 client certificates, this specifies the class name

+        that will be used to retrieve the user name from the certificate.

+        The class must implement the

+        <code>org.apache.catalina.realm.X509UsernameRetriever</code>

+        interface. The default is to use the certificate's SubjectDN

+        as the username.</p>

+      </td></tr></table>

+

+    <p>See the <a href="../realm-howto.html">Container-Managed Security

+    Guide</a> for more information on setting up container managed security

+    using the JAAS Realm component.</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="Combined Realm - org.apache.catalina.realm.CombinedRealm"><!--()--></a><a name="Combined_Realm_-_org.apache.catalina.realm.CombinedRealm"><strong>Combined Realm - org.apache.catalina.realm.CombinedRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p><strong>CombinedRealm</strong> is an implementation of the Tomcat

+    <code>Realm</code> interface that authenticates users through one or more

+    sub-Realms.</p>

+

+    <p>Using CombinedRealm gives the developer the ability to combine multiple

+    Realms of the same or different types. This can be used to authenticate

+    against different sources, provide fall back in case one Realm fails or for

+    any other purpose that requires multiple Realms.</p>

+

+    <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the

+    <code>Realm</code> element that defines the CombinedRealm. Authentication

+    will be attempted against each <code>Realm</code> in the order they are

+    listed. Authentication against any Realm will be sufficient to authenticate

+    the user.</p>

+

+    <p>The CombinedRealm implementation does not support any additional

+    attributes.</p>

+

+    <p>See the <a href="../realm-howto.html">Container-Managed Security

+    Guide</a> for more information on setting up container managed security

+    using the CombinedRealm component.</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="LockOut Realm - org.apache.catalina.realm.LockOutRealm"><!--()--></a><a name="LockOut_Realm_-_org.apache.catalina.realm.LockOutRealm"><strong>LockOut Realm - org.apache.catalina.realm.LockOutRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p><strong>LockOutRealm</strong> is an implementation of the Tomcat

+    <code>Realm</code> interface that extends the CombinedRealm to provide lock

+    out functionality to provide a user lock out mechanism if there are too many

+    failed authentication attempts in a given period of time.</p>

+

+    <p>To ensure correct operation, there is a reasonable degree of

+    synchronization in this Realm.</p>

+

+    <p>This Realm does not require modification to the underlying Realms or the

+    associated user storage mechanisms. It achieves this by recording all failed

+    logins, including those for users that do not exist. To prevent a DOS by

+    deliberating making requests with invalid users (and hence causing this

+    cache to grow) the size of the list of users that have failed authentication

+    is limited.</p>

+

+    <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the

+    <code>Realm</code> element that defines the LockOutRealm. Authentication

+    will be attempted against each <code>Realm</code> in the order they are

+    listed. Authentication against any Realm will be sufficient to authenticate

+    the user.</p>

+

+    <p>The LockOutRealm implementation supports the following additional

+    attributes.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">cacheRemovalWarningTime</code></td><td align="left" valign="center">

+       <p>If a failed user is removed from the cache because the cache is too

+       big before it has been in the cache for at least this period of time (in

+       seconds) a warning message will be logged. Defaults to 3600 (1 hour).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheSize</code></td><td align="left" valign="center">

+       <p>Number of users that have failed authentication to keep in cache. Over

+       time the cache will grow to this size and may not shrink. Defaults to

+       1000.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">failureCount</code></td><td align="left" valign="center">

+       <p>The number of times in a row a user has to fail authentication to be

+       locked out. Defaults to 5.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">lockOutTime</code></td><td align="left" valign="center">

+       <p>The time (in seconds) a user is locked out for after too many

+       authentication failures. Defaults to 300 (5 minutes).</p>

+      </td></tr></table>

+

+    <p>See the <a href="../realm-howto.html">Container-Managed Security

+    Guide</a> for more information on setting up container managed security

+    using the LockOutRealm component.</p>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <h3>CombinedRealm Implementation</h3>

+

+  <p>If you are using the <em>CombinedRealm Implementation</em> or a Realm

+  that extends the CombinedRealm, e.g. the LockOutRealm,

+  <strong>&lt;Realm&gt;</strong> elements may be nested inside it.</p>

+

+  <h3>Other Realm Implementations</h3>

+

+  <p>No other Realm implementation supports nested components.</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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>See <a href="host.html">Single Sign On</a> for information about

+  configuring Single Sign On support for a virtual host.</p>

+

+</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="/tomcat-7.0-doc/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/config/realm.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/resources.html b/webapps/docs/config/resources.html
new file mode 100644
index 0000000..3148201
--- /dev/null
+++ b/webapps/docs/config/resources.html
@@ -0,0 +1,133 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Resources Component</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Resources Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li><li><a href="#VirtualDirContext_implementation">VirtualDirContext implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>Resources</strong> element represents the <em>web

+  application static resources</em>, from which classes will be loaded,

+  HTML, JSP and the other static files will be served. This allows the webapp

+  to reside on various mediums other than the filesystem, like compressed

+  in a WAR file, in a JDBC database, or in a more advanced versioning

+  repository.</p>

+

+  <p>A unified caching engine is provided for all accesses to the webapp

+  resources made by the servlet container and web applications which use the

+  container provided mechanisms to access such resources, such as classloader

+  access, access through the <code>ServletContext</code> interface, or native

+  access through the <code>DirectoryContext</code> interface.</p>

+

+  <p><strong>Note: Running a webapp with non-filesystem based

+  Resources implementations is only possible when the webapp does not

+  rely on direct filesystem access to its own resources, and uses the methods

+  in the ServletContext interface to access them.</strong></p>

+

+  <p>A Resources element MAY be nested inside a

+  <a href="context.html">Context</a> component.  If it is not included,

+  a default filesystem based Resources will be created automatically,

+  which is sufficient for most requirements.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>All implementations of <strong>Resources</strong>

+    support the following attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This class must

+        implement the <code>javax.naming.directory.DirContext</code> interface.

+        It is recommended for optimal functionality and performance,

+        but not mandatory, that the class extend

+        <code>org.apache.naming.resources.BaseDirContext</code>, as well as

+        use the special object types provided in the

+        <code>org.apache.naming.resources</code> for returned objects.

+        If not specified, the standard value (defined below) will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The standard implementation of <strong>Resources</strong> is

+    <strong>org.apache.naming.resources.FileDirContext</strong>, and

+    is configured by its parent Context element.</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="VirtualDirContext implementation"><!--()--></a><a name="VirtualDirContext_implementation"><strong>VirtualDirContext implementation</strong></a></font></td></tr><tr><td><blockquote>

+    <p>This implementation of <strong>Resources</strong> is

+    <strong>org.apache.naming.resources.VirtualDirContext</strong> and is aimed to be used

+    during development to deploy a webapp without copying files to a webapp compliant

+    directory structure.

+    It extends <code>FileDirContext</code> and supports the following

+    additional attributes</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">extraResourcePaths</code></td><td align="left" valign="center">

+        <p>Allows to map a path of the filesystem to a path in the webapp. Multiple

+        filesystem paths can be mapped to the same path in the webapp. Filesystem

+        path and virtual path must be separated by an equal signe (=). Pairs of paths

+        must be separated by a column.</p>

+        Example: <code>/=/Users/jdoe/mywebapp/src/main/webapp,/=/Users/jdoe/mywebapp/src/main/webapp2,/pictures=/Users/jdoe/sharedpictures</code>

+        <p>The path to the docBase (as declared in the Context) must not be added here.</p>

+        <p>This attribute enhances the feature provided by the <code>aliases</code>

+        attribute of the <strong>StandardContext</strong>.</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>No components may be nested inside a <strong>Resources</strong> 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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>No special features are associated with a <strong>Resources</strong>

+  element.</p>

+

+</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="/tomcat-7.0-doc/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/config/resources.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/server.html b/webapps/docs/config/server.html
new file mode 100644
index 0000000..2c75a9c
--- /dev/null
+++ b/webapps/docs/config/server.html
@@ -0,0 +1,115 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Server Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Server Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <strong>Server</strong> element represents the entire Catalina

+  servlet container.  Therefore, it must be the single outermost element

+  in the <code>conf/server.xml</code> configuration file.  Its attributes

+  represent the characteristics of the servlet container as a whole.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>All implementations of <strong>Server</strong>

+  support the following attributes:</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+      <p>Java class name of the implementation to use.  This class must

+      implement the <code>org.apache.catalina.Server</code> interface.

+      If no class name is specified, the standard implementation will

+      be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">address</code></td><td align="left" valign="center">

+      <p>The TCP/IP address on which this server waits for a shutdown

+      command. If no address is specified, <code>localhost</code> is used.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">port</code></strong></td><td align="left" valign="center">

+      <p>The TCP/IP port number on which this server waits for a shutdown

+      command. Set to <code>-1</code> to disable the shutdown port.</p>

+      <p>Note: Disabling the shutdown port works well when Tomcat is started

+      using <a href="http://commons.apache.org/daemon/">Apache Commons Daemon</a>

+      (running as a service on Windows or with jsvc on un*xes). It cannot be

+      used when running Tomcat with the standard shell scripts though, as it

+      will prevent shutdown.bat|.sh and catalina.bat|.sh from stopping it

+      gracefully.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">shutdown</code></strong></td><td align="left" valign="center">

+      <p>The command string that must be received via a TCP/IP connection

+      to the specified port number, in order to shut down Tomcat.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The standard implementation of <strong>Server</strong> is

+  <strong>org.apache.catalina.core.StandardServer</strong>.

+  It supports the following additional attributes (in addition to the

+  common attributes listed above):</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The following components may be nested inside a <strong>Server</strong>

+  element:</p>

+  <ul>

+  <li><a href="service.html"><strong>Service</strong></a> -

+      One or more service element.</li>

+  <li><a href="globalresources.html"><strong>GlobalNamingResources</strong></a> -

+      Configure the JNDI global resources for the server.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>There are no special features associated with a <strong>Server</strong>.

+  </p>

+

+</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="/tomcat-7.0-doc/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/config/server.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/service.html b/webapps/docs/config/service.html
new file mode 100644
index 0000000..0587964
--- /dev/null
+++ b/webapps/docs/config/service.html
@@ -0,0 +1,102 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Service Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Service Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <strong>Service</strong> element represents the combination of one or

+  more <strong>Connector</strong> components that share a single

+  <a href="engine.html">Engine</a> component for processing incoming

+  requests.  One or more <strong>Service</strong> elements may be nested

+  inside a <a href="server.html">Server</a> element.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>All implementations of <strong>Service</strong>

+  support the following attributes:</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">

+      <p>Java class name of the implementation to use.  This class must

+      implement the <code>org.apache.catalina.Service</code> interface.

+      If no class name is specified, the standard implementation will

+      be used.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">

+      <p>The display name of this <strong>Service</strong>, which will

+      be included in log messages if you utilize standard Catalina

+      components.  The name of each <strong>Service</strong> that is

+      associated with a particular <a href="server.html">Server</a>

+      must be unique.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The standard implementation of <strong>Service</strong> is

+  <strong>org.apache.catalina.core.StandardService</strong>.

+  It supports the following additional attributes (in addition to the

+  common attributes listed above):</p>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The only components that may be nested inside a <strong>Service</strong>

+  element are one or more <strong>Connector</strong> elements,

+  followed by exactly one <a href="engine.html">Engine</a> element.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>There are no special features associated with a <strong>Service</strong>.

+  </p>

+

+</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="/tomcat-7.0-doc/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/config/service.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/systemprops.html b/webapps/docs/config/systemprops.html
new file mode 100644
index 0000000..4ae7306
--- /dev/null
+++ b/webapps/docs/config/systemprops.html
@@ -0,0 +1,492 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - System Properties</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>System Properties</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Property_replacements">Property replacements</a></li><li><a href="#Clustering">Clustering</a></li><li><a href="#Expression_Language">Expression Language</a></li><li><a href="#Jasper">Jasper</a></li><li><a href="#Security">Security</a></li><li><a href="#Specification">Specification</a></li><li><a href="#Sessions">Sessions</a></li><li><a href="#Logging">Logging</a></li><li><a href="#JAR_Scanning">JAR Scanning</a></li><li><a href="#Other">Other</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>The following sections list the system properties that may be set to modify

+  the default Tomcat behaviour.</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="Property replacements"><!--()--></a><a name="Property_replacements"><strong>Property replacements</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.digester. PROPERTY_SOURCE</code></td><td align="left" valign="center">

+      <p>Set this to a fully qualified name of a class that implements

+         <code>org.apache.tomcat.util.IntrospectionUtils.PropertySource</code>.

+         Required to have a public constructor with no arguments.</p>

+      <p>Use this to add a property source, that will be invoked when <code>${parameter}</code>

+         denoted parameters are found in the XML files that Tomcat parses.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Clustering"><strong>Clustering</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina. tribes.dns_lookups</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, the clustering module will attempt to use DNS to

+      resolve any host names provided in the cluster configuration.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expression Language"><!--()--></a><a name="Expression_Language"><strong>Expression Language</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.BeanELResolver. CACHE_SIZE</code></td><td align="left" valign="center">

+      <p>The number of javax.el.BeanELResolver.BeanProperties objects that will

+      be cached by the EL Parser.</p>

+      <p>If not specified, the default of <code>1000</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.ExpressionBuilder. CACHE_SIZE</code></td><td align="left" valign="center">

+      <p>The number of parsed EL expressions that will be cached by the EL

+      Parser.</p>

+      <p>If not specified, the default of <code>5000</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.parser. COERCE_TO_ZERO</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, when coercing expressions to numbers

+      <code>""</code> and <code>null</code> will be coerced to zero as required

+      by the specification.</p>

+      <p>If not specified, the default value of <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.el.parser. SKIP_IDENTIFIER_CHECK</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, when parsing expressions, identifiers will not be

+      checked to ensure that they conform to the Java Language Specification for

+      Java identifiers.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Jasper"><strong>Jasper</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.POOL_TAGS_WITH_EXTENDS</code></td><td align="left" valign="center">

+      <p>By default, JSPs that use their own base class via the extends

+      attribute of the page directive, will have Tag pooling disabled since

+      Jasper cannot guarantee that the necessary initialisation will have taken

+      place. This can have a negative impact on performance. Providing the

+      alternative base class calls _jspInit() from Servlet.init(), setting  this

+      property to <code>true</code> will enable pooling with an alternative base

+      class. If the alternative base class does not call _jspInit() and this

+      property is <code>true</code>, NPEs will occur when attempting to use

+      tags.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.STRICT_GET_PROPERTY</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, the requirement to have the object referenced in

+      <code>jsp:getProperty</code> action to be previously "introduced"

+      to the JSP processor, as specified in the chapter JSP.5.3 of JSP 2.0 and

+      later specifications, is enforced.</p>

+      <p>If not specified, the specification compliant default of

+      <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.VAR_EXPRESSIONFACTORY</code></td><td align="left" valign="center">

+      <p>The name of the variable to use for the expression language expression

+      factory.</p>

+      <p>If not specified, the default value of <code>_el_expressionfactory</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Generator.VAR_INSTANCEMANAGER</code></td><td align="left" valign="center">

+      <p>The name of the variable to use for the instance manager factory.</p>

+      <p>If not specified, the default value of <code>_jsp_instancemanager</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Parser.STRICT_QUOTE_ESCAPING</code></td><td align="left" valign="center">

+      <p>If <code>false</code> the requirements for escaping quotes in JSP

+      attributes will be relaxed so that an unescaped quote will not

+      cause an error.</p>

+      <p>If not specified, the specification compliant default of

+      <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.compiler. Parser.STRICT_WHITESPACE</code></td><td align="left" valign="center">

+      <p>If <code>false</code> the requirements for whitespace before an

+      attribute name will be relaxed so that the lack of whitespace will not

+      cause an error.</p>

+      <p>If not specified, the specification compliant default of

+      <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.runtime. BodyContentImpl.LIMIT_BUFFER</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, any tag buffer that expands beyond

+      <code>org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE</code> will be

+      destroyed and a new buffer created of the default size.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.runtime. JspFactoryImpl.USE_POOL</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, a ThreadLocal <code>PageContext</code> pool will

+      be used.</p>

+      <p>If not specified, the default value of <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.runtime. JspFactoryImpl.POOL_SIZE</code></td><td align="left" valign="center">

+      <p>The size of the ThreadLocal <code>PageContext</code>.</p>

+      <p>If not specified, the default value of <code>8</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. JSP_SERVLET_BASE</code></td><td align="left" valign="center">

+      <p>The base class of the Servlets generated from the JSPs.</p>

+      <p>If not specified, the default value of

+      <code>org.apache.jasper.runtime.HttpJspBase</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. SERVICE_METHOD_NAME</code></td><td align="left" valign="center">

+      <p>The name of the service method called by the base class.</p>

+      <p>If not specified, the default value of <code>_jspService</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. SERVLET_CLASSPATH</code></td><td align="left" valign="center">

+      <p>The name of the ServletContext attribute that provides the classpath

+      for the JSP.</p>

+      <p>If not specified, the default value of

+      <code>org.apache.catalina.jsp_classpath</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. JSP_FILE</code></td><td align="left" valign="center">

+      <p>The name of the request attribute for <code>&lt;jsp-file&gt;</code>

+      element of a servlet definition. If present on a request, this overrides

+      the value returned by <code>request.getServletPath()</code> to select the

+      JSP page to be executed.</p>

+      <p>If not specified, the default value of

+      <code>org.apache.catalina.jsp_file</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. PRECOMPILE</code></td><td align="left" valign="center">

+      <p>The name of the query parameter that causes the JSP engine to just

+      pregenerate the servlet but not invoke it.</p>

+      <p>If not specified, the default value of <code>jsp_precompile</code>

+      will be used, as defined by JSP specification (JSP.11.4.2).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. JSP_PACKAGE_NAME</code></td><td align="left" valign="center">

+      <p>The default package name for compiled jsp pages.</p>

+      <p>If not specified, the default value of <code>org.apache.jsp</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. TAG_FILE_PACKAGE_NAME</code></td><td align="left" valign="center">

+      <p>The default package name for tag handlers generated from tag files.</p>

+      <p>If not specified, the default value of <code>org.apache.jsp.tag</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. ALT_DD_ATTR</code></td><td align="left" valign="center">

+      <p>The servlet context attribute under which the alternate deployment

+      descriptor for this web application is stored.</p>

+      <p>If not specified, the default value of

+      <code>org.apache.catalina.deploy.alt_dd</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. TEMP_VARIABLE_NAME_PREFIX</code></td><td align="left" valign="center">

+      <p>Prefix to use for generated temporary variable names.</p>

+      <p>If not specified, the default value of <code>_jspx_temp</code>

+      will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.jasper.Constants. USE_INSTANCE_MANAGER_FOR_TAGS</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, the instance manager is used to obtain tag

+      handler instances.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Security"><strong>Security</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.connector. RECYCLE_FACADES</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> or if a security manager is in use a new

+      facade object will be created for each request.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.connector. CoyoteAdapter.ALLOW_BACKSLASH</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> the '\' character will be permitted as a

+      path delimiter.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.buf. UDecoder.ALLOW_ENCODED_SLASH</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> '%2F' and '%5C' will be permitted as path

+      delimiters.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Specification"><strong>Specification</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina. STRICT_SERVLET_COMPLIANCE</code></td><td align="left" valign="center">

+      <p>The default value of this system property is <code>false</code>.</p>

+      <p>If this is <code>true</code> the default values will be changed for:

+      <ul>

+      <li><code>org.apache.catalina.core.<br>ApplicationContext.GET_RESOURCE_REQUIRE_SLASH</code></li>

+      <li><code>org.apache.catalina.core.<br>ApplicationDispatcher.WRAP_SAME_OBJECT</code></li>

+      <li><code>org.apache.catalina.core.<br>StandardHostValve.ACCESS_SESSION</code></li>

+      <li><code>org.apache.catalina.session.<br>StandardSession.ACTIVITY_CHECK</code></li>

+      <li><code>org.apache.catalina.session.<br>StandardSession.LAST_ACCESS_AT_START</code></li>

+      <li><code>org.apache.tomcat.util.http.<br>ServerCookie.ALWAYS_ADD_EXPIRES</code></li>

+      <li><code>org.apache.tomcat.util.http.<br>ServerCookie.FWD_SLASH_IS_SEPARATOR</code></li>

+      <li><code>org.apache.tomcat.util.http.<br>ServerCookie.STRICT_NAMING</code></li>

+      <li>The <code>resourceOnlyServlets</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

+      <li>The <code>tldNamespaceAware</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

+      <li>The <code>tldValidation</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

+      <li>The <code>xmlNamespaceAware</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

+      <li>The <code>xmlValidation</code> attribute of any

+          <a href="context.html">Context</a> element.</li>

+      </ul>

+      </p>

+      <p>Note that changing a number of the above defaults is likely to break

+      the majority of systems as some browsers are unable to correctly handle

+      the cookie headers that result from a strict adherence to the

+      specifications. Defaults, regardless of whether or not they have been

+      changed by setting

+      <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> can always be

+      overridden by explicitly setting the appropriate system property or element

+      attribute.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.connector. Response.ENFORCE_ENCODING_IN_GET_WRITER</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> then

+      a call to <code>Response.getWriter()</code> if no character encoding

+      has been specified will result in subsequent calls to

+      <code>Response.getCharacterEncoding()</code> returning

+      <code>ISO-8859-1</code> and the <code>Content-Type</code> response header

+      will include a <code>charset=ISO-8859-1</code> component. (SRV.15.2.22.1)</p>

+      <p>If not specified, the default specification compliant value of

+      <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.core.ApplicationContext .GET_RESOURCE_REQUIRE_SLASH</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> then the path passed to

+      <code>ServletContext.getResource()</code> or

+      <code>ServletContext.getResourceAsStream()</code> must start with

+      "/". If <code>false</code>, code like

+      <code>getResource("myfolder/myresource.txt")</code> will work.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.core. ApplicationDispatcher.WRAP_SAME_OBJECT</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> then any wrapped request or response

+      object passed to an application dispatcher will be checked to ensure that

+      it has wrapped the original request or response.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALLOW_EQUALS_IN_VALUE</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> Tomcat will allow '<code>=</code>'

+      characters when parsing unquoted cookie values. If <code>false</code>,

+      cookie values containing '<code>=</code>' will be terminated when the

+      '<code>=</code>' is encountered and the remainder of the cookie value will

+      be dropped.</p>

+      <p>If not specified, the default value specification compliant value of

+      <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> Tomcat will allow HTTP separators in

+      cookie names and values.</p>

+      <p>If not specified, the default specification compliant value of

+      <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALWAYS_ADD_EXPIRES</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code> Tomcat will always add an expires

+      parameter to a SetCookie header even for cookies with version greater than

+      zero. This is to work around a known IE6 and IE7 bug that causes IE to

+      ignore the Max-Age parameter in a SetCookie header.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>false</code>,

+      else the default value will be <code>true</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.FWD_SLASH_IS_SEPARATOR</code></td><td align="left" valign="center">

+      <p> If this is true then the <code>/</code> (forward slash) character will

+      be treated as a separator. Note that this character is frequently used in

+      cookie path attributes and some browsers will fail to process a cookie if

+      the path attribute is quoted as is required by a strict adherence to the

+      specifications. This is highly likely to break session tracking using

+      cookies.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.STRICT_NAMING</code></td><td align="left" valign="center">

+      <p> If this is true then the requirements of the Servlet specification

+      that Cookie names must adhere to RFC2109 (no use of separators) will be

+      enforced.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util.http. ServerCookie.ALLOW_NAME_ONLY</code></td><td align="left" valign="center">

+      <p> If this is true then the requirements of the cookie specifications

+      that cookies must have values will be enforced and cookies consisting only

+      of a name but no value will be ignored.</p>

+      <p>If not specified, the default specification compliant value of

+      <code>false</code> will be used.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Sessions"><strong>Sessions</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.authenticator.                     Constants.SSO_SESSION_COOKIE_NAME</code></td><td align="left" valign="center">

+      <p>An alternative name for the single sign on session cookie. Defaults to

+      <code>JSESSIONIDSSO</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.core. StandardHostValve.ACCESS_SESSION</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code>, every request that is associated with a

+      session will cause the session's last accessed time to be updated

+      regardless of whether or not the request explicitly accesses the session.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.session. StandardSession.ACTIVITY_CHECK</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code>, Tomcat will track the number of active

+      requests for each session. When determining if a session is valid, any

+      session with at least one active request will always be considered valid.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.session. StandardSession.LAST_ACCESS_AT_START</code></td><td align="left" valign="center">

+      <p>If this is <code>true</code>, the last accessed time for sessions will

+      be calculated from the beginning of the previous request. If

+      <code>false</code>, the last accessed time for sessions will be calculated

+      from the end of the previous request. This also affects how the idle time

+      is calculated.</p>

+      <p>If <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> is set to

+      <code>true</code>, the default of this setting will be <code>true</code>,

+      else the default value will be <code>false</code>.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli.formatter</code></td><td align="left" valign="center">

+      <p>If no logging configuration file is specified and no logging configuration class is specified

+         using the <code>java.util.logging.config.class</code> and <code>java.util.logging.config.file</code>

+         properties the default logging framework <code>org.apache.juli</code> will use the default

+         <code>java.util.logging.SimpleFormatter</code> for all console output.

+         To simply override the console output formatter, one can use the described property. Example:

+         <code>-Dorg.apache.juli.formatter=org.apache.juli.OneLineFormatter</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli. AsyncOverflowDropType</code></td><td align="left" valign="center">

+      <p>When the memory limit of records has been reached the system needs to determine what action to take.

+         Currently there are three actions that can be taken:

+      </p>

+         <ul>

+           <li><code>int OVERFLOW_DROP_LAST = 1</code> - the record that caused the overflow will be dropped and not logged</li>

+           <li><code>int OVERFLOW_DROP_FIRST = 2</code> - the record that is next in line to be logged will be dropped to make room for the latest record on the queue</li>

+           <li><code>int OVERFLOW_DROP_FLUSH = 3</code> - suspend the thread while the queue empties out and flushes the entries to the write buffer</li>

+           <li><code>int OVERFLOW_DROP_CURRENT = 4</code> - drop the current log entry</li>

+         </ul>

+      <p>The default value is <code>1</code> (OVERFLOW_DROP_LAST).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli. AsyncMaxRecordCount</code></td><td align="left" valign="center">

+      <p>The max number of log records that the async logger will keep in memory. When this limit is reached and a new record is being logged by the

+         JULI framework the system will take an action based on the <code>org.apache.juli.AsyncOverflowDropType</code> setting.</p>

+      <p>The default value is <code>10000</code> records.

+         This number represents the global number of records, not on a per handler basis.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli. AsyncLoggerPollInterval</code></td><td align="left" valign="center">

+      <p>The poll interval in milliseconds for the asynchronous logger thread in milliseconds.

+         If the log queue is empty, the async thread will issue a poll(poll interval)

+         in order to not wake up too often.</p>

+      <p>The default value is <code>1000</code> milliseconds.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli.logging. UserDataHelper.CONFIG</code></td><td align="left" valign="center">

+      <p>The type of logging to use for errors generated by invalid input data.

+         The options are: <code>DEBUG_ALL</code>, <code>INFO_THEN_DEBUG</code>,

+         <code>INFO_ALL</code> and <code>NONE</code>. When

+         <code>INFO_THEN_DEBUG</code> is used, the period for which errors are

+         logged at DEBUG rather than INFO is controlled by the system property

+         <code>org.apache.juli.logging.UserDataHelper.SUPPRESSION_TIME</code>.

+         </p>

+      <p>The default value is <code>INFO_THEN_DEBUG</code>.</p>

+      <p>The errors currently logged using this system are:

+         <ul>

+         <li>invalid cookies;</li>

+         <li>invalid parameters;</li>

+         <li>too many headers, too many parameters (hitting

+           <code>maxHeaderCount</code> or <code>maxParameterCount</code> limits

+           of a <a href="http.html">connector</a>).</li>

+         </ul>

+         Other errors triggered by invalid input data may be added to this

+         system in later versions.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.juli.logging. UserDataHelper.SUPPRESSION_TIME</code></td><td align="left" valign="center">

+      <p>When using <code>INFO_THEN_DEBUG</code> for

+         <code>org.apache.juli.logging.UserDataHelper.CONFIG</code> this system

+         property controls how long messages are logged at DEBUG after a message

+         has been logged at INFO. Once this period has elapsed, the next message

+         will be logged at INFO followed by a new suppression period where

+         messages are logged at DEBUG and so on. The value is measured

+         in seconds.</p>

+      <p>A value of <code>0</code> is equivalent to using <code>INFO_ALL</code>

+         for <code>org.apache.juli.logging.UserDataHelper.CONFIG</code>.</p>

+      <p>A negative value means an infinite suppression period.</p>

+      <p>The default value is <code>86400</code> (24 hours).</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JAR Scanning"><!--()--></a><a name="JAR_Scanning"><strong>JAR Scanning</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.scan. DefaultJarScanner.jarsToSkip</code></td><td align="left" valign="center">

+      <p>The comma-separated list of filenames of JARs that Tomcat will not scan

+         for configuration information when using the

+         <a href="jar-scanner.html">JarScanner</a> functionality. Note that

+         there are additional system properties that enable JARs to be excluded

+         from specific scans rather than all scans.</p>

+      <p>The coded default is that no JARs are skipped however the system

+         property is set in a default Tomcat installation via the

+         <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. ContextConfig.jarsToSkip</code></td><td align="left" valign="center">

+      <p>The comma-separated list of additional filenames of JARs that Tomcat

+         will not scan for Servlet 3.0 pluggability features.</p>

+      <p>The coded default is that no JARs are skipped however the system

+         property is set in a default Tomcat installation via the

+         <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. TldConfig.jarsToSkip</code></td><td align="left" valign="center">

+      <p>The comma-separated list of additional filenames of JARs that Tomcat

+         will not scan for TLDs.</p>

+      <p>The coded default is that no JARs are skipped however the system

+         property is set in a default Tomcat installation via the

+         <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p>

+    </td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Other"><strong>Other</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Property</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.coyote. USE_CUSTOM_STATUS_MSG_IN_HEADER</code></td><td align="left" valign="center"><p>If this is

+      <code>true</code>, custom HTTP status messages will be used within HTTP

+      headers. If a custom message is specified that is not valid for use in an

+      HTTP header (as defined by RFC2616) then the custom message will be

+      ignored and the default message used.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">catalina.useNaming</code></td><td align="left" valign="center">

+      <p>If this is <code>false</code> it will override the

+      <code>useNaming</code> attribute for all <a href="context.html">

+      Context</a> elements.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">javax.sql.DataSource.Factory</code></td><td align="left" valign="center">

+      <p>The class name of the factory to use to create resources of type

+      <code>javax.sql.DataSource</code>. If not specified the default of

+      <code>org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory</code> is used

+      which is a package renamed (to avoid conflictions) copy of

+      <a href="http://commons.apache.org/dbcp">Apache Commons DBCP</a>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">javax.mail.Session.Factory</code></td><td align="left" valign="center">

+      <p>The class name of the factory to use to create resources of type

+      <code>javax.mail.Session</code>. If not specified the default of

+      <code>org.apache.naming.factory.MailSessionFactory</code> is used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">jvmRoute</code></td><td align="left" valign="center">

+      <p>Provides a default value for the <code>jvmRoute</code> attribute of the

+      <a href="engine.html">Engine</a> element. It does not override the value

+      configured on the <a href="engine.html">Engine</a> element.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">catalina.config</code></td><td align="left" valign="center">

+      <p>The URL for the catalina.properties configuration file.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.byte.enabled</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, the String cache is enabled for

+      <code>ByteChunk</code>.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.char.enabled</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, the String cache is enabled for

+      <code>CharChunk</code>.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.trainThreshold</code></td><td align="left" valign="center">

+      <p>The number of times <code>toString()</code> must be called before the

+      cache is activated.</p>

+      <p>If not specified, the default value of <code>20000</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.cacheSize</code></td><td align="left" valign="center">

+      <p>The size of the String cache.</p>

+      <p>If not specified, the default value of <code>200</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">tomcat.util.buf.StringCache.maxStringSize</code></td><td align="left" valign="center">

+      <p>The maximum length of String that will be cached.</p>

+      <p>If not specified, the default value of <code>128</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util. http.FastHttpDateFormat.CACHE_SIZE</code></td><td align="left" valign="center">

+      <p>The size of the cache to use parsed and formatted date value.</p>

+      <p>If not specified, the default value of <code>1000</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.tomcat.util. net.NioSelectorShared</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, use a shared selector for servlet write/read.</p>

+      <p>If not specified, the default value of <code>true</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. EXIT_ON_INIT_FAILURE</code></td><td align="left" valign="center">

+      <p>If <code>true</code>, the server will exit if an exception happens

+         during the server initialization phase.</p>

+      <p>If not specified, the default value of <code>false</code> will be used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="propertyName">org.apache.catalina.startup. RealmRuleSet.MAX_NESTED_REALM_LEVELS</code></td><td align="left" valign="center">

+      <p>The CombinedRealm allows nested Realms. This property controls the

+      maximum permitted number of levels of nesting.</p>

+      <p>If not specified, the default value of <code>3</code> will be used.</p>

+    </td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/systemprops.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/valve.html b/webapps/docs/config/valve.html
new file mode 100644
index 0000000..b6a8b02
--- /dev/null
+++ b/webapps/docs/config/valve.html
@@ -0,0 +1,1207 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - The Valve Component</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+    The Apache Tomcat Servlet/JSP Container

+  " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executor</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/Membership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Valve Component</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Access_Log_Valve">Access Log Valve</a><ol><li><a href="#Access_Log_Valve/Introduction">Introduction</a></li><li><a href="#Access_Log_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Extended_Access_Log_Valve">Extended Access Log Valve</a><ol><li><a href="#Extended_Access_Log_Valve/Introduction">Introduction</a></li><li><a href="#Extended_Access_Log_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Remote_Address_Filter">Remote Address Filter</a><ol><li><a href="#Remote_Address_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Address_Filter/Attributes">Attributes</a></li><li><a href="#Example">Example</a></li></ol></li><li><a href="#Remote_Host_Filter">Remote Host Filter</a><ol><li><a href="#Remote_Host_Filter/Introduction">Introduction</a></li><li><a href="#Remote_Host_Filter/Attributes">Attributes</a></li></ol></li><li><a href="#Single_Sign_On_Valve">Single Sign On Valve</a><ol><li><a href="#Single_Sign_On_Valve/Introduction">Introduction</a></li><li><a href="#Single_Sign_On_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Basic_Authenticator_Valve">Basic Authenticator Valve</a><ol><li><a href="#Basic_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Basic_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Digest_Authenticator_Valve">Digest Authenticator Valve</a><ol><li><a href="#Digest_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Digest_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Form_Authenticator_Valve">Form Authenticator Valve</a><ol><li><a href="#Form_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#Form_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#SSL_Authenticator_Valve">SSL Authenticator Valve</a><ol><li><a href="#SSL_Authenticator_Valve/Introduction">Introduction</a></li><li><a href="#SSL_Authenticator_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#SPNEGO_Valve">SPNEGO Valve</a><ol><li><a href="#SPNEGO_Valve/Introduction">Introduction</a></li><li><a href="#SPNEGO_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Remote_IP_Valve">Remote IP Valve</a><ol><li><a href="#Remote_IP_Valve/Introduction">Introduction</a></li><li><a href="#Remote_IP_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Crawler_Session_Manager_Valve">Crawler Session Manager Valve</a><ol><li><a href="#Crawler_Session_Manager_Valve/Introduction">Introduction</a></li><li><a href="#Crawler_Session_Manager_Valve/Attributes">Attributes</a></li></ol></li><li><a href="#Stuck_Thread_Detection_Valve">Stuck Thread Detection Valve</a><ol><li><a href="#Stuck_Thread_Detection_Valve/Introduction">Introduction</a></li><li><a href="#Stuck_Thread_Detection_Valve/Attributes">Attributes</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <strong>Valve</strong> element represents a component that will be

+  inserted into the request processing pipeline for the associated

+  Catalina container (<a href="engine.html">Engine</a>,

+  <a href="host.html">Host</a>, or <a href="context.html">Context</a>).

+  Individual Valves have distinct processing capabilities, and are

+  described individually below.</p>

+

+    <blockquote><em>

+    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></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="Access Log Valve"><!--()--></a><a name="Access_Log_Valve"><strong>Access Log Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Log Valve/Introduction"><!--()--></a><a name="Access_Log_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Access Log Valve</strong> creates log files in the same

+    format as those created by standard web servers.  These logs can later

+    be analyzed by standard log analysis tools to track page hit counts,

+    user session activity, and so on.  The files produces by this <code>Valve</code>

+    are rolled over nightly at midnight.  This <code>Valve</code>

+    may be associated with any Catalina container (<code>Context</code>,

+    <code>Host</code>, or <code>Engine</code>), and

+    will record ALL requests processed by that container.</p>

+

+    <p>Some requests may be handled by Tomcat before they are passed to a

+    container. These include redirects from /foo to /foo/ and the rejection of

+    invalid requests. Where Tomcat can identify the <code>Context</code> that

+    would have handled the request, the request/response will be logged in the

+    <code>AccessLog</code>(s) associated <code>Context</code>, <code>Host</code>

+    and <code>Engine</code>. Where Tomcat cannot identify the

+    <code>Context</code> that would have handled the request, e.g. in cases

+    where the URL is invalid, Tomcat will look first in the <code>Engine</code>,

+    then the default <code>Host</code> for the <code>Engine</code> and finally

+    the ROOT (or default) <code>Context</code> for the default <code>Host</code>

+    for an <code>AccessLog</code> implementation. Tomcat will use the first

+    <code>AccessLog</code> implementation found to log those requests that are

+    rejected before they are passed to a container.</p>

+

+    <p>The output file will be placed in the directory given by the

+    <code>directory</code> attribute. The name of the file is composed

+    by concatenation of the configured <code>prefix</code>, timestamp and

+    <code>suffix</code>. The format of the timestamp in the file name can be

+    set using the <code>fileDateFormat</code> attribute. This timestamp will

+    be omitted if the file rotation is switched off by setting

+    <code>rotatable</code> to <code>false</code>.</p>

+

+    <p><strong>Warning:</strong> If multiple AccessLogValve instances

+    are used, they should be configured to use different output files.</p>

+

+    <p>If sendfile is used, the response bytes will be written asynchronously

+    in a separate thread and the access log valve will not know how many bytes

+    were actually written. In this case, the number of bytes that was passed to

+    the sendfile thread for writing will be recorded in the access log valve.

+    </p>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Log Valve/Attributes"><!--()--></a><a name="Access_Log_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Access Log Valve</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.AccessLogValve</strong> to use the

+        default access log valve.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">directory</code></td><td align="left" valign="center">

+        <p>Absolute or relative pathname of a directory in which log files

+        created by this valve will be placed.  If a relative path is

+        specified, it is interpreted as relative to $CATALINA_BASE.  If

+        no directory attribute is specified, the default value is "logs"

+        (relative to $CATALINA_BASE).</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">prefix</code></td><td align="left" valign="center">

+        <p>The prefix added to the start of each log file's name.  If not

+        specified, the default value is "access_log.".</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">suffix</code></td><td align="left" valign="center">

+        <p>The suffix added to the end of each log file's name.  If not

+        specified, the default value is "" (a zero-length string),

+        meaning that no suffix will be added.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">fileDateFormat</code></td><td align="left" valign="center">

+        <p>Allows a customized timestamp in the access log file name.

+           The file is rotated whenever the formatted timestamp changes.

+           The default value is <code>yyyy-MM-dd</code>.

+           If you wish to rotate every hour, then set this value

+           to <code>yyyy-MM-dd.HH</code>.

+           The date format will always be localized

+           using the locale <code>en_US</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">rotatable</code></td><td align="left" valign="center">

+        <p>Flag to determine if log rotation should occur.

+           If set to <code>false</code>, then this file is never rotated and

+           <code>fileDateFormat</code> is ignored.

+           Default value: <code>true</code>

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">renameOnRotate</code></td><td align="left" valign="center">

+        <p>By default for a rotatable log the active access log file name

+           will contain the current timestamp in <code>fileDateFormat</code>.

+           During rotation the file is closed and a new file with the next

+           timestamp in the name is created and used. When setting

+           <code>renameOnRotate</code> to <code>true</code>, the timestamp

+           is no longer part of the active log file name. Only during rotation

+           the file is closed and then renamed to include the timestamp.

+           This is similar to the behavior of most log frameworks when

+           doing time based rotation.

+           Default value: <code>false</code>

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pattern</code></td><td align="left" valign="center">

+        <p>A formatting layout identifying the various information fields

+        from the request and response to be logged, or the word

+        <code>common</code> or <code>combined</code> to select a

+        standard format.  See below for more information on configuring

+        this attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">encoding</code></td><td align="left" valign="center">

+        <p>Character set used to write the log file. An empty string means

+        to use the system default character set. Default value: use the

+        system default character set.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">locale</code></td><td align="left" valign="center">

+        <p>The locale used to format timestamps in the access log

+           lines. Any timestamps configured using an

+           explicit SimpleDateFormat pattern (<code>%{xxx}t</code>)

+           are formatted in this locale. By default the

+           default locale of the Java process is used. Switching the

+           locale after the AccessLogValve is initialized is not supported.

+           Any timestamps using the common log format

+           (<code>CLF</code>) are always formatted in the locale

+           <code>en_US</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requestAttributesEnabled</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to check for the existence of request

+        attributes (typically set by the RemoteIpValve and similar) that should

+        be used to override the values returned by the request for remote

+        address, remote host, server port and protocol. If the attributes are

+        not set, or this attribute is set to <code>false</code> then the values

+        from the request will be used. If not set, the default value of

+        <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">conditionIf</code></td><td align="left" valign="center">

+        <p>Turns on conditional logging. If set, requests will be

+           logged only if <code>ServletRequest.getAttribute()</code> is

+           not null. For example, if this value is set to

+           <code>important</code>, then a particular request will only be logged

+           if <code>ServletRequest.getAttribute("important") != null</code>.

+           The use of Filters is an easy way to set/unset the attribute

+           in the ServletRequest on many different requests.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">conditionUnless</code></td><td align="left" valign="center">

+        <p>Turns on conditional logging. If set, requests will be

+           logged only if <code>ServletRequest.getAttribute()</code> is

+           null. For example, if this value is set to

+           <code>junk</code>, then a particular request will only be logged

+           if <code>ServletRequest.getAttribute("junk") == null</code>.

+           The use of Filters is an easy way to set/unset the attribute

+           in the ServletRequest on many different requests.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">condition</code></td><td align="left" valign="center">

+        <p>The same as <code>conditionUnless</code>. This attribute is

+           provided for backwards compatibility.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">buffered</code></td><td align="left" valign="center">

+        <p>Flag to determine if logging will be buffered.

+           If set to <code>false</code>, then access logging will be written after each

+           request. Default value: <code>true</code>

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">resolveHosts</code></td><td align="left" valign="center">

+        <p>This attribute is no longer supported. Use the connector

+        attribute <code>enableLookups</code> instead.</p>

+        <p>If you have <code>enableLookups</code> on the connector set to

+        <code>true</code> and want to ignore it, use <b>%a</b> instead of

+        <b>%h</b> in the value of <code>pattern</code>.</p>

+      </td></tr></table>

+

+    <p>Values for the <code>pattern</code> attribute are made up of literal

+    text strings, combined with pattern identifiers prefixed by the "%"

+    character to cause replacement by the corresponding variable value from

+    the current request and response.  The following pattern codes are

+    supported:</p>

+    <ul>

+    <li><b>%a</b> - Remote IP address</li>

+    <li><b>%A</b> - Local IP address</li>

+    <li><b>%b</b> - Bytes sent, excluding HTTP headers, or '-' if zero</li>

+    <li><b>%B</b> - Bytes sent, excluding HTTP headers</li>

+    <li><b>%h</b> - Remote host name (or IP address if

+        <code>enableLookups</code> for the connector is false)</li>

+    <li><b>%H</b> - Request protocol</li>

+    <li><b>%l</b> - Remote logical username from identd (always returns

+        '-')</li>

+    <li><b>%m</b> - Request method (GET, POST, etc.)</li>

+    <li><b>%p</b> - Local port on which this request was received</li>

+    <li><b>%q</b> - Query string (prepended with a '?' if it exists)</li>

+    <li><b>%r</b> - First line of the request (method and request URI)</li>

+    <li><b>%s</b> - HTTP status code of the response</li>

+    <li><b>%S</b> - User session ID</li>

+    <li><b>%t</b> - Date and time, in Common Log Format</li>

+    <li><b>%u</b> - Remote user that was authenticated (if any), else '-'</li>

+    <li><b>%U</b> - Requested URL path</li>

+    <li><b>%v</b> - Local server name</li>

+    <li><b>%D</b> - Time taken to process the request, in millis</li>

+    <li><b>%T</b> - Time taken to process the request, in seconds</li>

+    <li><b>%F</b> - Time taken to commit the response, in millis</li>

+    <li><b>%I</b> - Current request thread name (can compare later with stacktraces)</li>

+    </ul>

+

+    <p>

+    There is also support to write information incoming or outgoing

+    headers, cookies, session or request attributes and special

+    timestamp formats.

+    It is modeled after the

+    <a href="http://httpd.apache.org/">Apache HTTP Server</a> log configuration

+    syntax:

+    <ul>

+    <li><b><code>%{xxx}i</code></b> for incoming headers</li>

+    <li><b><code>%{xxx}o</code></b> for outgoing response headers</li>

+    <li><b><code>%{xxx}c</code></b> for a specific cookie</li>

+    <li><b><code>%{xxx}r</code></b> xxx is an attribute in the ServletRequest</li>

+    <li><b><code>%{xxx}s</code></b> xxx is an attribute in the HttpSession</li>

+    <li><b><code>%{xxx}t</code></b> xxx is an enhanced SimpleDateFormat pattern</li>

+    </ul>

+    </p>

+

+    <p>All formats supported by SimpleDateFormat are allowed in <code>%{xxx}t</code>.

+    In addition the following extensions have been added:</p>

+    <ul>

+    <li><b><code>sec</code></b> - number of seconds since the epoch</li>

+    <li><b><code>msec</code></b> - number of milliseconds since the epoch</li>

+    <li><b><code>msec_frac</code></b> - millisecond fraction</li>

+    </ul>

+    <p>These formats can not be mixed with SimpleDateFormat formats in the same format

+    token.</p>

+

+    <p>Furthermore one can define whether to log the timestamp for the request start

+    time or the response finish time:</p>

+    <ul>

+    <li><b><code>begin</code></b> or prefix <b><code>begin:</code></b> chooses

+    the request start time</li>

+    <li><b><code>end</code></b> or prefix <b><code>end:</code></b> chooses

+    the response finish time</li>

+    </ul>

+    <p>By adding multiple <code>%{xxx}t</code> tokens to the pattern, one can

+    also log both timestamps.</p>

+

+    <p>The shorthand pattern <code>pattern="common"</code>

+    corresponds to the Common Log Format defined by

+    <strong>'%h %l %u %t "%r" %s %b'</strong>.</p>

+

+    <p>The shorthand pattern <code>pattern="combined"</code>

+    appends the values of the <code>Referer</code> and <code>User-Agent</code>

+    headers, each in double quotes, to the <code>common</code> pattern.</p>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extended Access Log Valve"><!--()--></a><a name="Extended_Access_Log_Valve"><strong>Extended Access Log Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Extended Access Log Valve/Introduction"><!--()--></a><a name="Extended_Access_Log_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Extended Access Log Valve</strong> is a variant of

+    the Access Log Valve. It is not a real extension of the standard

+    Access Log valve, instead it supports the so-called

+    <a href="http://www.w3.org/TR/WD-logfile.html">Extended Log File Format</a>

+    defined by the W3C. The main difference to the standard

+    <code>AccessLogValve</code> are the supported pattern values.</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="Extended Access Log Valve/Attributes"><!--()--></a><a name="Extended_Access_Log_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Extended Access Log Valve</strong> supports all

+    configuration attributes of the standard

+    <a href="#Access_Log_Valve">Access Log Valve.</a> Only the

+    values used for <code>className</code> and <code>pattern</code> differ.</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.ExtendedAccessLogValve</strong> to

+        use the extended access log valve.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">pattern</code></td><td align="left" valign="center">

+        <p>A formatting layout identifying the various information fields

+        from the request and response to be logged.

+        See below for more information on configuring this attribute.</p>

+      </td></tr></table>

+

+    <p>Values for the <code>pattern</code> attribute are made up of

+    format tokens. Some of the tokens need an additional prefix. Possible

+    prefixes are <code>c</code> for "client", <code>s</code> for "server",

+    <code>cs</code> for "client to server", <code>sc</code> for

+    "server to client" or <code>x</code> for "application specific".

+    Furthermore some tokens are completed by an additional selector.

+    See the <a href="http://www.w3.org/TR/WD-logfile.html">W3C specification</a>

+    for more information about the format.</p>

+

+    <p>The following format tokens are supported:</p>

+    <ul>

+    <li><b>bytes</b> - Bytes sent, excluding HTTP headers, or '-' if zero</li>

+    <li><b>c-dns</b> - Remote host name (or IP address if

+        <code>enableLookups</code> for the connector is false)</li>

+    <li><b>c-ip</b> - Remote IP address</li>

+    <li><b>cs-method</b> - Request method (GET, POST, etc.)</li>

+    <li><b>cs-uri</b> - Request URI</li>

+    <li><b>cs-uri-query</b> - Query string (prepended with a '?' if it exists)</li>

+    <li><b>cs-uri-stem</b> - Requested URL path</li>

+    <li><b>date</b> - The date in yyyy-mm-dd format for GMT</li>

+    <li><b>s-dns</b> - Local host name</li>

+    <li><b>s-ip</b> - Local IP address</li>

+    <li><b>sc-status</b> - HTTP status code of the response</li>

+    <li><b>time</b> - Time the request was served in HH:mm:ss format for GMT</li>

+    <li><b>time-taken</b> - Time (in seconds as floating point) taken to serve the request</li>

+    <li><b>x-threadname</b> - Current request thread name (can compare later with stacktraces)</li>

+    </ul>

+

+    <p>For any of the <code>x-H(XXX)</code> the following method will be called from the

+    HttpServletRequest object:</p>

+    <ul>

+    <li><b><code>x-H(authType)</code></b>: getAuthType </li>

+    <li><b><code>x-H(characterEncoding)</code></b>: getCharacterEncoding </li>

+    <li><b><code>x-H(contentLength)</code></b>: getContentLength </li>

+    <li><b><code>x-H(locale)</code></b>:  getLocale</li>

+    <li><b><code>x-H(protocol)</code></b>: getProtocol </li>

+    <li><b><code>x-H(remoteUser)</code></b>:  getRemoteUser</li>

+    <li><b><code>x-H(requestedSessionId)</code></b>: getRequestedSessionId</li>

+    <li><b><code>x-H(requestedSessionIdFromCookie)</code></b>:

+                     isRequestedSessionIdFromCookie </li>

+    <li><b><code>x-H(requestedSessionIdValid)</code></b>:

+                     isRequestedSessionIdValid</li>

+    <li><b><code>x-H(scheme)</code></b>:  getScheme</li>

+    <li><b><code>x-H(secure)</code></b>:  isSecure</li>

+    </ul>

+

+    <p>

+    There is also support to write information about headers

+    cookies, context, request or session attributes and request

+    parameters.

+    </p>

+    <ul>

+    <li><b><code>cs(XXX)</code></b> for incoming request headers with name XXX</li>

+    <li><b><code>sc(XXX)</code></b> for outgoing response headers with name XXX</li>

+    <li><b><code>x-A(XXX)</code></b> for the servlet context attribute with name XXX</li>

+    <li><b><code>x-C(XXX)</code></b> for the first cookie with name XXX</li>

+    <li><b><code>x-O(XXX)</code></b> for a concatenation of all outgoing response headers with name XXX</li>

+    <li><b><code>x-P(XXX)</code></b> for the URL encoded (using UTF-8) request parameter with name XXX</li>

+    <li><b><code>x-R(XXX)</code></b> for the request attribute with name XXX</li>

+    <li><b><code>x-S(XXX)</code></b> for the session attribute with name XXX</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter"><!--()--></a><a name="Remote_Address_Filter"><strong>Remote Address Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Address Filter/Introduction"><!--()--></a><a name="Remote_Address_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Address Filter</strong> allows you to compare the

+    IP address of the client that submitted this request against one or more

+    <em>regular expressions</em>, and either allow the request to continue

+    or refuse to process the request from this client.  A Remote Address

+    Filter can be associated with any Catalina container

+    (<a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

+    <a href="context.html">Context</a>), and must accept any request

+    presented to this container for processing before it will be passed on.</p>

+

+    <p>The syntax for <em>regular expressions</em> is different than that for

+    'standard' wildcard matching. Tomcat uses the <code>java.util.regex</code>

+    package. Please consult the Java documentation for details of the

+    expressions supported.</p>

+

+    <p><strong>Note:</strong> There is a caveat when using this valve with

+    IPv6 addresses. Format of the IP address that this valve is processing

+    depends on the API that was used to obtain it. If the address was obtained

+    from Java socket using Inet6Address class, its format will be

+    <code>x:x:x:x:x:x:x:x</code>. That is, the IP address for localhost

+    will be <code>0:0:0:0:0:0:0:1</code> instead of the more widely used

+    <code>::1</code>. Consult your access logs for the actual value.</p>

+

+    <p>See also: <a href="#Remote_Host_Filter">Remote Host Filter</a>,

+    <a href="#Remote_IP_Valve">Remote IP Valve</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="Remote Address Filter/Attributes"><!--()--></a><a name="Remote_Address_Filter/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Address Filter</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.RemoteAddrValve</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

+        is specified, the remote address MUST match for this request to be

+        accepted.  If this attribute is not specified, all requests will be

+        accepted UNLESS the remote address matches a <code>deny</code>

+        pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's IP address is compared to.  If this attribute

+        is specified, the remote address MUST NOT match for this request to be

+        accepted.  If this attribute is not specified, request acceptance is

+        governed solely by the <code>accept</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>. For example,

+        it can be set to the value <code>404</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Example"><strong>Example</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To allow access only for the clients connecting from localhost:</p>

+<pre>

+    &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+       allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/&gt;

+</pre>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter"><!--()--></a><a name="Remote_Host_Filter"><strong>Remote Host Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote Host Filter/Introduction"><!--()--></a><a name="Remote_Host_Filter/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Host Filter</strong> allows you to compare the

+    hostname of the client that submitted this request against one or more

+    <em>regular expressions</em>, and either allow the request to continue

+    or refuse to process the request from this client.  A Remote Host

+    Filter can be associated with any Catalina container

+    (<a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or

+    <a href="context.html">Context</a>), and must accept any request

+    presented to this container for processing before it will be passed on.</p>

+

+    <p>The syntax for <em>regular expressions</em> is different than that for

+    'standard' wildcard matching. Tomcat uses the <code>java.util.regex</code>

+    package. Please consult the Java documentation for details of the

+    expressions supported.</p>

+

+    <p><strong>Note:</strong> This filter processes the value returned by

+    method <code>ServletRequest.getRemoteHost()</code>. To allow the method

+    to return proper host names, you have to enable "DNS lookups" feature on

+    a <strong>Connector</strong>.</p>

+

+    <p>See also: <a href="#Remote_Address_Filter">Remote Address Filter</a>,

+    <a href="http.html">HTTP Connector</a> configuration.</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="Remote Host Filter/Attributes"><!--()--></a><a name="Remote_Host_Filter/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote Host Filter</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.RemoteHostValve</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">allow</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

+        is specified, the remote hostname MUST match for this request to be

+        accepted.  If this attribute is not specified, all requests will be

+        accepted UNLESS the remote hostname matches a <code>deny</code>

+        pattern.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">deny</code></td><td align="left" valign="center">

+        <p>A regular expression (using <code>java.util.regex</code>) that the

+        remote client's hostname is compared to.  If this attribute

+        is specified, the remote hostname MUST NOT match for this request to be

+        accepted.  If this attribute is not specified, request acceptance is

+        governed solely by the <code>accept</code> attribute.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">denyStatus</code></td><td align="left" valign="center">

+        <p>HTTP response status code that is used when rejecting denied

+        request. The default value is <code>403</code>. For example,

+        it can be set to the value <code>404</code>.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Single Sign On Valve"><!--()--></a><a name="Single_Sign_On_Valve"><strong>Single Sign On Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Single Sign On Valve/Introduction"><!--()--></a><a name="Single_Sign_On_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <em>Single Sign On Valve</em> is utilized when you wish to give users

+    the ability to sign on to any one of the web applications associated with

+    your virtual host, and then have their identity recognized by all other

+    web applications on the same virtual host.</p>

+

+    <p>See the <a href="host.html#Single Sign On">Single Sign On</a> special

+    feature on the <strong>Host</strong> element for more information.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Single Sign On Valve/Attributes"><!--()--></a><a name="Single_Sign_On_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Single Sign On</strong> Valve supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.SingleSignOn</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requireReauthentication</code></td><td align="left" valign="center">

+        <p>Default false. Flag to determine whether each request needs to be

+        reauthenticated to the security <strong>Realm</strong>. If "true", this

+        Valve uses cached security credentials (username and password) to

+        reauthenticate to the <strong>Realm</strong> each request associated

+        with an SSO session.  If "false", the Valve can itself authenticate

+        requests based on the presence of a valid SSO cookie, without

+        rechecking with the <strong>Realm</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cookieDomain</code></td><td align="left" valign="center">

+        <p>Sets the host domain to be used for sso cookies.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic Authenticator Valve"><!--()--></a><a name="Basic_Authenticator_Valve"><strong>Basic Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic Authenticator Valve/Introduction"><!--()--></a><a name="Basic_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Basic Authenticator Valve</strong> is automatically added to

+    any <a href="context.html">Context</a> that is configured to use BASIC

+    authentication.</p>

+

+    <p>If any non-default settings are required, the valve may be configured

+    within <a href="context.html">Context</a> element with the required

+    values.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Basic Authenticator Valve/Attributes"><!--()--></a><a name="Basic_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Basic Authenticator Valve</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysUseSession</code></td><td align="left" valign="center">

+        <p>Should a session always be used once a user is authenticated? This

+        may offer some performance benefits since the session can then be used

+        to cache the authenticated Principal, hence removing the need to

+        authenticate the user via the Realm on every request. This may be of

+        help for combinations such as BASIC authentication used with the

+        JNDIRealm or DataSourceRealms. However there will also be the

+        performance cost of creating and GC'ing the session. If not set, the

+        default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

+        <p>Should we cache authenticated Principals if the request is part of an

+        HTTP session? If not specified, the default value of <code>true</code>

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+        <p>Controls if the session ID is changed if a session exists at the

+        point where users are authenticated. This is to prevent session fixation

+        attacks. If not set, the default value of <code>true</code> will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.BasicAuthenticator</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers but will also cause secured pages to be

+        cached by proxies which will almost certainly be a security issue.

+        <code>securePagesWithPragma</code> offers an alternative, secure,

+        workaround for browser caching issues. If not set, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers by using

+        <code>Cache-Control: private</code> rather than the default of

+        <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Digest Authenticator Valve"><!--()--></a><a name="Digest_Authenticator_Valve"><strong>Digest Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Digest Authenticator Valve/Introduction"><!--()--></a><a name="Digest_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Digest Authenticator Valve</strong> is automatically added to

+    any <a href="context.html">Context</a> that is configured to use DIGEST

+    authentication.</p>

+

+    <p>If any non-default settings are required, the valve may be configured

+    within <a href="context.html">Context</a> element with the required

+    values.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Digest Authenticator Valve/Attributes"><!--()--></a><a name="Digest_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Digest Authenticator Valve</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysUseSession</code></td><td align="left" valign="center">

+        <p>Should a session always be used once a user is authenticated? This

+        may offer some performance benefits since the session can then be used

+        to cache the authenticated Principal, hence removing the need to

+        authenticate the user via the Realm on every request. This may be of

+        help for combinations such as BASIC authentication used with the

+        JNDIRealm or DataSourceRealms. However there will also be the

+        performance cost of creating and GC'ing the session. If not set, the

+        default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

+        <p>Should we cache authenticated Principals if the request is part of an

+        HTTP session? If not specified, the default value of <code>false</code>

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+        <p>Controls if the session ID is changed if a session exists at the

+        point where users are authenticated. This is to prevent session fixation

+        attacks. If not set, the default value of <code>true</code> will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.DigestAuthenticator</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers but will also cause secured pages to be

+        cached by proxies which will almost certainly be a security issue.

+        <code>securePagesWithPragma</code> offers an alternative, secure,

+        workaround for browser caching issues. If not set, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">key</code></td><td align="left" valign="center">

+        <p>The secret key used by digest authentication. If not set, a secure

+        random value is generated. This should normally only be set when it is

+        necessary to keep key values constant either across server restarts

+        and/or across a cluster.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceCacheSize</code></td><td align="left" valign="center">

+        <p>To protect against replay attacks, the DIGEST authenticator tracks

+        server nonce and nonce count values. This attribute controls the size

+        of that cache. If not specified, the default value of 1000 is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceCountWindowSize</code></td><td align="left" valign="center">

+        <p>Client requests may be processed out of order which in turn means

+        that the nonce count values may be processed out of order. To prevent

+        authentication failures when nonce counts are presented out of order

+        the authenticator tracks a window of nonce count values. This attribute

+        controls how big that window is. If not specified, the default value of

+        100 is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">nonceValidity</code></td><td align="left" valign="center">

+        <p>The time, in milliseconds, that a server generated nonce will be

+        considered valid for use in authentication. If not specified, the

+        default value of 300000 (5 minutes) will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">opaque</code></td><td align="left" valign="center">

+        <p>The opaque server string used by digest authentication. If not set, a

+        random value is generated. This should normally only be set when it is

+        necessary to keep opaque values constant either across server restarts

+        and/or across a cluster.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers by using

+        <code>Cache-Control: private</code> rather than the default of

+        <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">validateUri</code></td><td align="left" valign="center">

+        <p>Should the URI be validated as required by RFC2617? If not specified,

+        the default value of <code>true</code> will be used. This should

+        normally only be set when Tomcat is located behind a reverse proxy and

+        the proxy is modifying the URI passed to Tomcat such that DIGEST

+        authentication always fails.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Form Authenticator Valve"><!--()--></a><a name="Form_Authenticator_Valve"><strong>Form Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Form Authenticator Valve/Introduction"><!--()--></a><a name="Form_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Form Authenticator Valve</strong> is automatically added to

+    any <a href="context.html">Context</a> that is configured to use FORM

+    authentication.</p>

+

+    <p>If any non-default settings are required, the valve may be configured

+    within <a href="context.html">Context</a> element with the required

+    values.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Form Authenticator Valve/Attributes"><!--()--></a><a name="Form_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Form Authenticator Valve</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+        <p>Controls if the session ID is changed if a session exists at the

+        point where users are authenticated. This is to prevent session fixation

+        attacks. If not set, the default value of <code>true</code> will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">characterEncoding</code></td><td align="left" valign="center">

+        <p>Character encoding to use to read the username and password parameters

+        from the request. If not set, the encoding of the request body will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.FormAuthenticator</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers but will also cause secured pages to be

+        cached by proxies which will almost certainly be a security issue.

+        <code>securePagesWithPragma</code> offers an alternative, secure,

+        workaround for browser caching issues. If not set, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">landingPage</code></td><td align="left" valign="center">

+        <p>Controls the behavior of the FORM authentication process if the

+        process is misused, for example by directly requesting the login page

+        or delaying logging in for so long that the session expires. If this

+        attribute is set, rather than returning an error response code, Tomcat

+        will redirect the user to the specified landing page if the login form

+        is submitted with valid credentials. For the login to be processed, the

+        landing page must be a protected resource (i.e. one that requires

+        authentication). If the landing page does not require authentication

+        then the user will not be logged in and will be prompted for their

+        credentials again when they access a protected page.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers by using

+        <code>Cache-Control: private</code> rather than the default of

+        <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Authenticator Valve"><!--()--></a><a name="SSL_Authenticator_Valve"><strong>SSL Authenticator Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Authenticator Valve/Introduction"><!--()--></a><a name="SSL_Authenticator_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>SSL Authenticator Valve</strong> is automatically added to

+    any <a href="context.html">Context</a> that is configured to use SSL

+    authentication.</p>

+

+    <p>If any non-default settings are required, the valve may be configured

+    within <a href="context.html">Context</a> element with the required

+    values.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL Authenticator Valve/Attributes"><!--()--></a><a name="SSL_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>SSL Authenticator Valve</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

+        <p>Should we cache authenticated Principals if the request is part of an

+        HTTP session? If not specified, the default value of <code>true</code>

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.SSLAuthenticator</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+        <p>Controls if the session ID is changed if a session exists at the

+        point where users are authenticated. This is to prevent session fixation

+        attacks. If not set, the default value of <code>true</code> will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers but will also cause secured pages to be

+        cached by proxies which will almost certainly be a security issue.

+        <code>securePagesWithPragma</code> offers an alternative, secure,

+        workaround for browser caching issues. If not set, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers by using

+        <code>Cache-Control: private</code> rather than the default of

+        <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO Valve"><!--()--></a><a name="SPNEGO_Valve"><strong>SPNEGO Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO Valve/Introduction"><!--()--></a><a name="SPNEGO_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>SPNEGO Authenticator Valve</strong> is automatically added to

+    any <a href="context.html">Context</a> that is configured to use SPNEGO

+    authentication.</p>

+

+    <p>If any non-default settings are required, the valve may be configured

+    within <a href="context.html">Context</a> element with the required

+    values.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO Valve/Attributes"><!--()--></a><a name="SPNEGO_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>SPNEGO Authenticator Valve</strong> supports the following

+    configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">alwaysUseSession</code></td><td align="left" valign="center">

+        <p>Should a session always be used once a user is authenticated? This

+        may offer some performance benefits since the session can then be used

+        to cache the authenticated Principal, hence removing the need to

+        authenticate the user on every request. This will also help with clients

+        that assume that the server will cache the authenticated user. However

+        there will also be the performance cost of creating and GC'ing the

+        session. For an alternative solution see

+        <code>noKeepAliveUserAgents</code>. If not set, the default value of

+        <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">cache</code></td><td align="left" valign="center">

+        <p>Should we cache authenticated Principals if the request is part of an

+        HTTP session? If not specified, the default value of <code>true</code>

+        will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.authenticator.SpnegoAuthenticator</strong>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeSessionIdOnAuthentication</code></td><td align="left" valign="center">

+        <p>Controls if the session ID is changed if a session exists at the

+        point where users are authenticated. This is to prevent session fixation

+        attacks. If not set, the default value of <code>true</code> will be

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">disableProxyCaching</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers but will also cause secured pages to be

+        cached by proxies which will almost certainly be a security issue.

+        <code>securePagesWithPragma</code> offers an alternative, secure,

+        workaround for browser caching issues. If not set, the default value of

+        <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">loginConfigName</code></td><td align="left" valign="center">

+        <p>The name of the JAAS login configuration to be used to login as the

+        service. If not specified, the default of

+        <code>com.sun.security.jgss.krb5.accept</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">noKeepAliveUserAgents</code></td><td align="left" valign="center">

+        <p>Some clients (not most browsers) expect the server to cache the

+        authenticated user information for a connection and do not resend the

+        credentials with every request. Tomcat will not do this unless an HTTP

+        session is available. A session will be availble if either the

+        application creates one or if <code>alwaysUseSession</code> is enabled

+        for this Authenticator.</p>

+        <p>As an alternative to creating a session, this attribute may be used

+        to define the user agents for which HTTP keep-alive is disabled. This

+        means that a connection will only used for a single request and hence

+        there is no ability to cache authenticated user information per

+        connection. There will be a performance cost in disabling HTTP

+        keep-alive.</p>

+        <p>The attribute should be a regular expression that matches the entire

+        user-agent string, e.g. <code>.*Chrome.*</code>. If not specified, no

+        regular expression will be defined and no user agents will have HTTP

+        keep-alive disabled.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">securePagesWithPragma</code></td><td align="left" valign="center">

+        <p>Controls the caching of pages that are protected by security

+        constraints. Setting this to <code>false</code> may help work around

+        caching issues in some browsers by using

+        <code>Cache-Control: private</code> rather than the default of

+        <code>Pragma: No-cache</code> and <code>Cache-control: No-cache</code>.

+        If not set, the default value of <code>false</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomAlgorithm</code></td><td align="left" valign="center">

+        <p>Name of the algorithm to use to create the

+        <code>java.security.SecureRandom</code> instances that generate session

+        IDs. If an invalid algorithm and/or provider is specified, the platform

+        default provider and the default algorithm will be used. If not

+        specified, the default algorithm of SHA1PRNG will be used. If the

+        default algorithm is not supported, the platform default will be used.

+        To specify that the platform default should be used, do not set the

+        secureRandomProvider attribute and set this attribute to the empty

+        string.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomClass</code></td><td align="left" valign="center">

+        <p>Name of the Java class that extends

+        <code>java.security.SecureRandom</code> to use to generate SSO session

+        IDs. If not specified, the default value is

+        <code>java.security.SecureRandom</code>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">secureRandomProvider</code></td><td align="left" valign="center">

+        <p>Name of the provider to use to create the

+        <code>java.security.SecureRandom</code> instances that generate SSO

+        session IDs. If an invalid algorithm and/or provider is specified, the

+        platform default provider and the default algorithm will be used. If not

+        specified, the platform default provider will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">storeDelegatedCredential</code></td><td align="left" valign="center">

+        <p>Controls if the user' delegated credential will be stored in

+        the user Principal. If available, the delegated credential will be

+        available to applications (e.g. for onward authentication to external

+        services) via the <code>org.apache.catalina.realm.GSS_CREDENTIAL</code>

+        request attribute. If not set, the default value of <code>true</code>

+        will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve"><!--()--></a><a name="Remote_IP_Valve"><strong>Remote IP Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve/Introduction"><!--()--></a><a name="Remote_IP_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat port of

+    <a href="http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html">mod_remoteip</a>,

+    this valve replaces the apparent client remote IP address and hostname for

+    the request with the IP address list presented by a proxy or a load balancer

+    via a request headers (e.g. "X-Forwarded-For").</p>

+

+    <p>Another feature of this valve is to replace the apparent scheme

+    (http/https), server port and <code>request.secure</code> with the scheme presented

+    by a proxy or a load balancer via a request header

+    (e.g. "X-Forwarded-Proto").</p>

+

+    <p>This Valve may be used at the <code>Engine</code>, <code>Host</code> or

+    <code>Context</code> level as required. Normally, this Valve would be used

+    at the <code>Engine</code> level.</p>

+

+    <p>If used in conjunction with Remote Address/Host valves then this valve

+    should be defined first to ensure that the correct client IP address is

+    presented to the Remote Address/Host valves.</p>

+

+    <p><strong>Note:</strong> By default this valve has no effect on the

+    values that are written into access log. The original values are restored

+    when request processing leaves the valve and that always happens earlier

+    than access logging. To pass the remote address, remote host, server port

+    and protocol values set by this valve to the access log,

+    they are put into request attributes. Publishing these values here

+    is enabled by default, but <code>AccessLogValve</code> should be explicitly

+    configured to use them. See documentation for

+    <code>requestAttributesEnabled</code> attribute of

+    <code>AccessLogValve</code>.</p>

+

+    <p>The names of request attributes that are set by this valve

+    and can be used by access logging are the following:</p>

+

+    <ul>

+      <li><code>org.apache.catalina.AccessLog.RemoteAddr</code></li>

+      <li><code>org.apache.catalina.AccessLog.RemoteHost</code></li>

+      <li><code>org.apache.catalina.AccessLog.Protocol</code></li>

+      <li><code>org.apache.catalina.AccessLog.ServerPort</code></li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Remote IP Valve/Attributes"><!--()--></a><a name="Remote_IP_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Remote IP Valve</strong> supports the

+    following configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.RemoteIpValve</strong>.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">remoteIpHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the list of

+        traversed IP addresses starting from the requesting client. If not

+        specified, the default of <code>x-forwarded-for</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">internalProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an internal proxy.

+        Internal proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will not appear in the <strong>proxiesHeader</strong>

+        value. If not specified the default value of <code>

+        10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}

+        </code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">proxiesHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP header created by this valve to hold the list of

+        proxies that have been processed in the incoming

+        <strong>remoteIpHeader</strong>. If not specified, the default of

+        <code>x-forwarded-by</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">requestAttributesEnabled</code></td><td align="left" valign="center">

+        <p>Set to <code>true</code> to set the request attributes used by

+        AccessLog implementations to override the values returned by the

+        request for remote address, remote host, server port and protocol.

+        If not set, the default value of <code>true</code> will be used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">trustedProxies</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that a

+        proxy's IP address must match to be considered an trusted proxy.

+        Trusted proxies that appear in the <strong>remoteIpHeader</strong> will

+        be trusted and will appear in the <strong>proxiesHeader</strong> value.

+        If not specified, no proxies will be trusted.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the protocol

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">portHeader</code></td><td align="left" valign="center">

+        <p>Name of the HTTP Header read by this valve that holds the port

+        used by the client to connect to the proxy. If not specified, the

+        default of <code>null</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">protocolHeaderHttpsValue</code></td><td align="left" valign="center">

+        <p>Value of the <strong>protocolHeader</strong> to indicate that it is

+        an HTTPS request. If not specified, the default of <code>https</code> is

+        used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpServerPort</code></td><td align="left" valign="center">

+         <p>Value returned by <code>ServletRequest.getServerPort()</code>

+         when the <strong>protocolHeader</strong> indicates <code>http</code>

+         protocol and no <strong>portHeader</strong> is present. If not

+         specified, the default of <code>80</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">httpsServerPort</code></td><td align="left" valign="center">

+         <p>Value returned by <code>ServletRequest.getServerPort()</code>

+         when the <strong>protocolHeader</strong> indicates <code>https</code>

+         protocol and no <strong>portHeader</strong> is present. If not

+         specified, the default of <code>443</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">changeLocalPort</code></td><td align="left" valign="center">

+        <p>If <code>true</code>, the value returned by

+        <code>ServletRequest.getLocalPort()</code> and

+        <code>ServletRequest.getServerPort()</code> is modified by the this

+        valve. If not specified, the default of <code>false</code> is used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Crawler Session Manager Valve"><!--()--></a><a name="Crawler_Session_Manager_Valve"><strong>Crawler Session Manager Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Crawler Session Manager Valve/Introduction"><!--()--></a><a name="Crawler_Session_Manager_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Web crawlers can trigger the creation of many thousands of sessions as

+    they crawl a site which may result in significant memory consumption. This

+    Valve ensures that crawlers are associated with a single session - just like

+    normal users - regardless of whether or not they provide a session token

+    with their requests.</p>

+

+    <p>This Valve may be used at the <code>Engine</code>, <code>Host</code> or

+    <code>Context</code> level as required. Normally, this Valve would be used

+    at the <code>Engine</code> level.</p>

+

+    <p>If used in conjunction with Remote IP valve then the Remote IP valve

+    should be defined before this valve to ensure that the correct client IP

+    address is presented to this valve.</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="Crawler Session Manager Valve/Attributes"><!--()--></a><a name="Crawler_Session_Manager_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Crawler Session Manager Valve</strong> supports the

+    following configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.CrawlerSessionManagerValve</strong>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">crawlerUserAgents</code></td><td align="left" valign="center">

+        <p>Regular expression (using <code>java.util.regex</code>) that the user

+        agent HTTP request header is matched against to determine if a request

+        is from a web crawler. If not set, the default of

+        <code>.*[bB]ot.*|.*Yahoo! Slurp.*|.*Feedfetcher-Google.*</code> is used.</p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionInactiveInterval</code></td><td align="left" valign="center">

+        <p>The minimum time in seconds that the Crawler Session Manager Valve

+        should keep the mapping of client IP to session ID in memory without any

+        activity from the client. The client IP / session cache will be

+        periodically purged of mappings that have been inactive for longer than

+        this interval. If not specified the default value of <code>60</code>

+        will be used.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stuck Thread Detection Valve"><!--()--></a><a name="Stuck_Thread_Detection_Valve"><strong>Stuck Thread Detection Valve</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stuck Thread Detection Valve/Introduction"><!--()--></a><a name="Stuck_Thread_Detection_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This valve allows to detect requests that take a long time to process, which might

+    indicate that the thread that is processing it is stuck.</p>

+    <p>When such a request is detected, the current stack trace of its thread is written

+    to Tomcat log with a WARN level.</p>

+    <p>The IDs and names of the stuck threads are available through JMX in the

+    <code>stuckThreadIds</code> and <code>stuckThreadNames</code> attributes.

+    The IDs can be used with the standard Threading JVM MBean

+    (<code>java.lang:type=Threading</code>) to retrieve other information

+    about each stuck thread.</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="Stuck Thread Detection Valve/Attributes"><!--()--></a><a name="Stuck_Thread_Detection_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The <strong>Stuck Thread Detection Valve</strong> supports the

+    following configuration attributes:</p>

+

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">className</code></strong></td><td align="left" valign="center">

+        <p>Java class name of the implementation to use.  This MUST be set to

+        <strong>org.apache.catalina.valves.StuckThreadDetectionValve</strong>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">threshold</code></td><td align="left" valign="center">

+        <p>Minimum duration in seconds after which a thread is considered stuck.

+        Default is 600 seconds. If set to 0, the detection is disabled.</p>

+        <p>Note: since the detection is done in the background thread of the Container

+        (Engine, Host or Context) declaring this Valve, the threshold should be higher

+        than the <code>backgroundProcessorDelay</code> of this Container.</p>

+      </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/config/valve.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/connectors.html b/webapps/docs/connectors.html
new file mode 100644
index 0000000..649f618
--- /dev/null
+++ b/webapps/docs/connectors.html
@@ -0,0 +1,87 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Connectors How To</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Connectors How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#HTTP">HTTP</a></li><li><a href="#AJP">AJP</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Choosing a connector to use with Tomcat can be difficult. This page will

+list the connectors which are supported with this Tomcat release, and will

+hopefully help you make the right choice according to your needs.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTTP"><strong>HTTP</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The HTTP connector is setup by default with Tomcat, and is ready to use. This

+connector features the lowest latency and best overall performance.</p>

+

+<p>For clustering, a HTTP load balancer <b>with support for web sessions stickiness</b>

+must be installed to direct the traffic to the Tomcat servers. Tomcat supports mod_proxy

+(on Apache HTTP Server 2.x, and included by default in Apache HTTP Server 2.2) as the load balancer.

+It should be noted that the performance of HTTP proxying is usually lower than the

+performance of AJP, so AJP clustering is often preferable.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="AJP"><strong>AJP</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>When using a single server, the performance when using a native webserver in

+front of the Tomcat instance is most of the time significantly worse than a

+standalone Tomcat with its default HTTP connector, even if a large part of the web

+application is made of static files. If integration with the native webserver is

+needed for any reason, an AJP connector will provide faster performance than

+proxied HTTP. AJP clustering is the most efficient from the Tomcat perspective.

+It is otherwise functionally equivalent to HTTP clustering.</p>

+

+<p>The native connectors supported with this Tomcat release are:

+<ul>

+<li>JK 1.2.x with any of the supported servers</li>

+<li>mod_proxy on Apache HTTP Server 2.x (included by default in Apache HTTP Server 2.2),

+with AJP enabled</li>

+</ul>

+</p>

+

+<p><b>Other native connectors supporting AJP may work, but are no longer supported.</b></p>

+

+</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="/tomcat-7.0-doc/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/connectors.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/default-servlet.html b/webapps/docs/default-servlet.html
new file mode 100644
index 0000000..e6465a5
--- /dev/null
+++ b/webapps/docs/default-servlet.html
@@ -0,0 +1,322 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Default Servlet Reference</title><meta name="author" content="Tim Funk"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Default Servlet Reference</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="#what">What is the DefaultServlet</a></li><li><a href="#where">Where is it declared?</a></li><li><a href="#change">What can I change?</a></li><li><a href="#dir">How do I customize directory listings?</a></li><li><a href="#secure">How do I secure directory listings?</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="what"><strong>What is the DefaultServlet</strong></a></font></td></tr><tr><td><blockquote>

+The default servlet is the servlet which serves static resources as well

+as serves the directory listings (if directory listings are enabled).

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="where"><strong>Where is it declared?</strong></a></font></td></tr><tr><td><blockquote>

+It is declared globally in <i>$CATALINA_BASE/conf/web.xml</i>.

+By default here is it's declaration:

+<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>

+    &lt;servlet&gt;

+        &lt;servlet-name&gt;default&lt;/servlet-name&gt;

+        &lt;servlet-class&gt;

+          org.apache.catalina.servlets.DefaultServlet

+        &lt;/servlet-class&gt;

+        &lt;init-param&gt;

+            &lt;param-name&gt;debug&lt;/param-name&gt;

+            &lt;param-value&gt;0&lt;/param-value&gt;

+        &lt;/init-param&gt;

+        &lt;init-param&gt;

+            &lt;param-name&gt;listings&lt;/param-name&gt;

+            &lt;param-value&gt;false&lt;/param-value&gt;

+        &lt;/init-param&gt;

+        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;

+    &lt;/servlet&gt;

+

+...

+

+    &lt;servlet-mapping&gt;

+        &lt;servlet-name&gt;default&lt;/servlet-name&gt;

+        &lt;url-pattern&gt;/&lt;/url-pattern&gt;

+    &lt;/servlet-mapping&gt;

+

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+So by default, the default servlet is loaded at webapp startup and

+directory listings are disabled and debugging is turned off.

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="change"><strong>What can I change?</strong></a></font></td></tr><tr><td><blockquote>

+The DefaultServlet allows the following initParamters:

+

+<table border="1">

+  <tr>

+    <th valign="top">debug</th>

+    <td valign="top">

+        Debugging level. It is not very useful unless you are a tomcat

+        developer. As

+        of this writing, useful values are 0, 1, 11, 1000. [0]

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">listings</th>

+    <td valign="top">

+        If no welcome file is present, can a directory listing be

+        shown?

+        value may be <b>true</b> or <b>false</b> [false]

+        <br>

+        Welcome files are part of the servlet api.

+        <br>

+        <b>WARNING:</b> Listings of directories containing many entries are

+        expensive. Multiple requests for large directory listings can consume

+        significant proportions of server resources.

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">readmeFile</th>

+    <td valign="top">

+        If a directory listing is presented, a readme file may also

+        be presented with the listing. This file is inserted as is

+        so it may contain HTML.

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">globalXsltFile</th>

+    <td valign="top">

+        If you wish to customize your directory listing, you

+        can use an XSL transformation. This value is an absolute

+        file name which be used for all directory listings.

+        This can be overridden per context and/or per directory. See

+        <strong>contextXsltFile</strong> and <strong>localXsltFile</strong>

+        below. The format of the xml is shown below.

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">contextXsltFile</th>

+    <td valign="top">

+        You may also customize your directory listing by context by

+        configuring <code>contextXsltFile</code>. This should be a context

+        relative path (e.g.: <code>/path/to/context.xslt</code>). This

+        overrides <code>globalXsltFile</code>. If this value is present but a

+        file does not exist, then <code>globalXsltFile</code> will be used. If

+        <code>globalXsltFile</code> does not exist, then the default

+        directory listing will be shown.

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">localXsltFile</th>

+    <td valign="top">

+        You may also customize your directory listing by directory by

+        configuring <code>localXsltFile</code>. This should be a relative

+        file name in the directory where the listing will take place.

+        This overrides <code>globalXsltFile</code> and

+        <code>contextXsltFile</code>. If this value is present but a file

+        does not exist, then <code>contextXsltFile</code> will be used. If

+        <code>contextXsltFile</code> does not exist, then

+        <code>globalXsltFile</code> will be used. If

+        <code>globalXsltFile</code> does not exist, then the default

+        directory listing will be shown.

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">input</th>

+    <td valign="top">

+        Input buffer size (in bytes) when reading

+        resources to be served.  [2048]

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">output</th>

+    <td valign="top">

+        Output buffer size (in bytes) when writing

+        resources to be served.  [2048]

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">readonly</th>

+    <td valign="top">

+        Is this context "read only", so HTTP commands like PUT and

+        DELETE are rejected?  [true]

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">fileEncoding</th>

+    <td valign="top">

+        File encoding to be used when reading static resources.

+        [platform default]

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">sendfileSize</th>

+    <td valign="top">

+        If the connector used supports sendfile, this represents the minimal

+        file size in KB for which sendfile will be used. Use a negative value

+        to always disable sendfile. [48]

+    </td>

+  </tr>

+  <tr>

+    <th valign="top">useAcceptRanges</th>

+    <td valign="top">

+        If true, the Accept-Ranges header will be set when appropriate for the

+        response. [true]

+    </td>

+  </tr>

+

+</table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="dir"><strong>How do I customize directory listings?</strong></a></font></td></tr><tr><td><blockquote>

+<p>You can override DefaultServlet with you own implementation and use that

+in your web.xml declaration. If you

+can understand what was just said, we will assume you can read the code

+to DefaultServlet servlet and make the appropriate adjustments. (If not,

+then that method isn't for you)

+</p>

+<p>

+You can use either  <code>localXsltFile</code> or

+<code>globalXsltFile</code> and DefaultServlet will create

+an xml document and run it through an xsl transformation based

+on the values provided in <code>localXsltFile</code> and

+<code>globalXsltFile</code>. <code>localXsltFile</code> is first

+checked, followed by <code>globalXsltFile</code>, then default

+behaviors takes place.

+</p>

+

+<p>

+Format:

+<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>

+    &lt;listing&gt;

+     &lt;entries&gt;

+      &lt;entry type='file|dir' urlPath='aPath' size='###' date='gmt date'&gt;

+        fileName1

+      &lt;/entry&gt;

+      &lt;entry type='file|dir' urlPath='aPath' size='###' date='gmt date'&gt;

+        fileName2

+      &lt;/entry&gt;

+      ...

+     &lt;/entries&gt;

+     &lt;readme&gt;&lt;/readme&gt;

+    &lt;/listing&gt;

+</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>

+<ul>

+  <li>size will be missing if <code>type='dir'</code></li>

+  <li>Readme is a CDATA entry</li>

+</ul>

+</p>

+The following is a sample xsl file which mimics the default tomcat behavior:

+<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>

+&lt;?xml version="1.0"?&gt;

+

+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

+  version="1.0"&gt;

+

+  &lt;xsl:output method="xhtml" encoding="iso-8859-1" indent="no"/&gt;

+

+  &lt;xsl:template match="listing"&gt;

+   &lt;html&gt;

+    &lt;head&gt;

+      &lt;title&gt;

+        Sample Directory Listing For

+        &lt;xsl:value-of select="@directory"/&gt;

+      &lt;/title&gt;

+      &lt;style&gt;

+        h1{color : white;background-color : #0086b2;}

+        h3{color : white;background-color : #0086b2;}

+        body{font-family : sans-serif,Arial,Tahoma;

+             color : black;background-color : white;}

+        b{color : white;background-color : #0086b2;}

+        a{color : black;} HR{color : #0086b2;}

+      &lt;/style&gt;

+    &lt;/head&gt;

+    &lt;body&gt;

+      &lt;h1&gt;Sample Directory Listing For

+            &lt;xsl:value-of select="@directory"/&gt;

+      &lt;/h1&gt;

+      &lt;hr size="1" /&gt;

+      &lt;table cellspacing="0"

+                  width="100%"

+            cellpadding="5"

+                  align="center"&gt;

+        &lt;tr&gt;

+          &lt;th align="left"&gt;Filename&lt;/th&gt;

+          &lt;th align="center"&gt;Size&lt;/th&gt;

+          &lt;th align="right"&gt;Last Modified&lt;/th&gt;

+        &lt;/tr&gt;

+        &lt;xsl:apply-templates select="entries"/&gt;

+        &lt;/table&gt;

+      &lt;xsl:apply-templates select="readme"/&gt;

+      &lt;hr size="1" /&gt;

+      &lt;h3&gt;Apache Tomcat/7.0&lt;/h3&gt;

+    &lt;/body&gt;

+   &lt;/html&gt;

+  &lt;/xsl:template&gt;

+

+

+  &lt;xsl:template match="entries"&gt;

+    &lt;xsl:apply-templates select="entry"/&gt;

+  &lt;/xsl:template&gt;

+

+  &lt;xsl:template match="readme"&gt;

+    &lt;hr size="1" /&gt;

+    &lt;pre&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;

+  &lt;/xsl:template&gt;

+

+  &lt;xsl:template match="entry"&gt;

+    &lt;tr&gt;

+      &lt;td align="left"&gt;

+        &lt;xsl:variable name="urlPath" select="@urlPath"/&gt;

+        &lt;a href="{$urlPath}"&gt;

+          &lt;tt&gt;&lt;xsl:apply-templates/&gt;&lt;/tt&gt;

+        &lt;/a&gt;

+      &lt;/td&gt;

+      &lt;td align="right"&gt;

+        &lt;tt&gt;&lt;xsl:value-of select="@size"/&gt;&lt;/tt&gt;

+      &lt;/td&gt;

+      &lt;td align="right"&gt;

+        &lt;tt&gt;&lt;xsl:value-of select="@date"/&gt;&lt;/tt&gt;

+      &lt;/td&gt;

+    &lt;/tr&gt;

+  &lt;/xsl:template&gt;

+

+&lt;/xsl:stylesheet&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="secure"><strong>How do I secure directory listings?</strong></a></font></td></tr><tr><td><blockquote>

+Use web.xml in each individual webapp. See the security section of the

+Servlet specification.

+

+</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="/tomcat-7.0-doc/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/default-servlet.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/deployer-howto.html b/webapps/docs/deployer-howto.html
new file mode 100644
index 0000000..f94c8e7
--- /dev/null
+++ b/webapps/docs/deployer-howto.html
@@ -0,0 +1,348 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Tomcat Web Application Deployment</title><meta name="author" content="Allistair Crossley"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Web Application 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="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#A_word_on_Contexts">A word on Contexts</a></li><li><a href="#Deployment_on_Tomcat_startup">Deployment on Tomcat startup</a></li><li><a href="#Deploying_on_a_running_Tomcat_server">Deploying on a running Tomcat server</a></li><li><a href="#Deploying_using_the_Tomcat_Manager">Deploying using the Tomcat Manager</a></li><li><a href="#Deploying_using_the_Client_Deployer_Package">Deploying using the Client Deployer Package</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+        <p>

+            Deployment is the term used for the process of installing a web

+            application (either a 3rd party WAR or your own custom web application)

+            into the Tomcat server.

+        </p>

+        <p>

+            Web application deployment may be accomplished in a number of ways

+            within the Tomcat server.</p>

+        <ul>

+                <li>Statically; the web application is setup before Tomcat is started</li>

+                <li>

+                    Dynamically; by directly manipulating already deployed web

+                    applications (relying on <em>auto-deployment</em>

+                    feature) or remotely by using the Tomcat Manager web

+                    application

+                </li>

+        </ul>

+        <p>

+            The <a href="manager-howto.html">Tomcat Manager</a> is a web

+            application that can be used interactively (via HTML GUI) or

+            programmatically (via URL-based API) to deploy and manage web

+            applications.

+        </p>

+        <p>

+            There are a number of ways to perform deployment that rely on

+            the Manager web application. Apache Tomcat provides tasks

+            for Apache Ant build tool.

+            <a href="http://tomcat.apache.org/maven-plugin.html">Apache Tomcat Maven Plugin</a>

+            project provides integration with Apache Maven.

+            There is also a tool called the Client Deployer, which can be

+            used from a command line and provides additional functionality

+            such as compiling and validating web applications as well as

+            packaging web application into web application resource (WAR)

+            files.

+        </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="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>

+        <p>

+            There is no installation required for static deployment of web

+            applications as this is provided out of the box by Tomcat. Nor is any

+            installation required for deployment functions with the Tomcat Manager,

+            although some configuration is required as detailed in the

+            <a href="manager-howto.html">Tomcat Manager manual</a>.

+            An installation is however required if you wish

+            to use the Tomcat Client Deployer (TCD).

+        </p>

+        <p>

+            The TCD is not packaged with the Tomcat core

+            distribution, and must therefore be downloaded separately from

+            the Downloads area. The download is usually labelled

+            <i>apache-tomcat-7.0.x-deployer</i>.

+        </p>

+        <p>

+            TCD has prerequisites of Apache Ant 1.6.2+ and a Java installation.

+            Your environment should define an ANT_HOME environment value pointing to

+            the root of your Ant installation, and a JAVA_HOME value pointing to

+            your Java installation. Additionally, you should ensure Ant's ant

+            command, and the Java javac compiler command run from the command shell

+            that your operating system provides.

+        </p>

+        <ol>

+            <li>Download the TCD distribution</li>

+            <li>

+                The TCD package need not be extracted into any existing Tomcat

+                installation, it can be extracted to any location.

+            </li>

+            <li>Read Using the <a href="#Deploying_using_the_Client_Deployer_Package">

+            Tomcat Client Deployer</a></li>

+        </ol>

+    </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="A word on Contexts"><!--()--></a><a name="A_word_on_Contexts"><strong>A word on Contexts</strong></a></font></td></tr><tr><td><blockquote>

+        <p>

+            In talking about deployment of web applications, the concept of a

+            <i>Context</i> is required to be understood. A Context is what Tomcat

+            calls a web application.

+        </p>

+        <p>

+            In order to configure a Context within Tomcat a <i>Context Descriptor</i>

+            is required. A Context Descriptor is simply an XML file that contains

+            Tomcat related configuration for a Context, e.g naming resources or

+            session manager configuration. In earlier versions of

+            Tomcat the content of a Context Descriptor configuration was often stored within

+            Tomcat's primary configuration file <i>server.xml</i> but this is now

+            discouraged (although it currently still works).

+        </p>

+        <p>

+            Context Descriptors not only help Tomcat to know how to configure

+            Contexts but other tools such as the Tomcat Manager and TCD often use

+            these Context Descriptors to perform their roles properly.

+        </p>

+        <p>

+            The locations for Context Descriptors are:

+        </p>

+        <ol>

+                <li>$CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml</li>

+                <li>$CATALINA_BASE/webapps/[webappname]/META-INF/context.xml</li>

+        </ol>

+        <p>

+            Files in (1) are named [webappname].xml but files in (2) are named

+            context.xml. If a Context Descriptor is not provided for a Context,

+            Tomcat configures the Context using default values.

+        </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 on Tomcat startup"><!--()--></a><a name="Deployment_on_Tomcat_startup"><strong>Deployment on Tomcat startup</strong></a></font></td></tr><tr><td><blockquote>

+        <p>

+            If you are not interested in using the Tomcat Manager, or TCD,

+            then you'll need to deploy your web applications

+            statically to Tomcat, followed by a Tomcat startup. The location you

+            deploy web applications to for this type of deployment is called the

+            <code>appBase</code> which is specified per Host. You either copy a

+            so-called <i>exploded web application</i>, i.e non-compressed, to this

+            location, or a compressed web application resource .WAR file.

+        </p>

+        <p>

+            The web applications present in the location specified by the Host's

+            (default Host is "localhost") <code>appBase</code> attribute (default

+            appBase is "$CATALINA_BASE/webapps") will be deployed on Tomcat startup

+            only if the Host's <code>deployOnStartup</code> attribute is "true".

+        </p>

+        <p>

+            The following deployment sequence will occur on Tomcat startup in that

+            case:

+        </p>

+        <ol>

+            <li>Any Context Descriptors will be deployed first.</li>

+            <li>

+                Exploded web applications not referenced by any Context

+                Descriptor will then be deployed. If they have an associated

+                .WAR file in the appBase and it is newer than the exploded web application,

+                the exploded directory will be removed and the webapp will be

+                redeployed from the .WAR

+            </li>

+            <li>.WAR files will be deployed</li>

+        </ol>

+    </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploying on a running Tomcat server"><!--()--></a><a name="Deploying_on_a_running_Tomcat_server"><strong>Deploying on a running Tomcat server</strong></a></font></td></tr><tr><td><blockquote>

+        <p>

+            It is possible to deploy web applications to a running Tomcat server.

+        </p>

+        <p>

+            If the Host <code>autoDeploy</code> attribute is "true", the Host will

+            attempt to deploy and update web applications dynamically, as needed,

+            for example if a new .WAR is dropped into the <code>appBase</code>.

+            For this to work, the Host needs to have background processing

+            enabled which is the default configuration.

+        </p>

+

+        <p>

+            <code>autoDeploy</code> set to "true" and a running Tomcat allows for:

+        </p>

+        <ul>

+            <li>Deployment of .WAR files copied into the Host <code>appBase</code>.</li>

+            <li>

+                Deployment of exploded web applications which are

+                copied into the Host <code>appBase</code>.

+            </li>

+            <li>

+                Re-deployment of a web application which has already been deployed from

+                a .WAR when the new .WAR is provided. In this case the exploded

+                web application is removed, and the .WAR is expanded again.

+                Note that the explosion will not occur if the Host is configured

+                so that .WARs are not exploded with a <code>unpackWARs</code>

+                attribute set to "false", in which case the web application

+                will be simply redeployed as a compressed archive.

+            </li>

+            <li>

+                Re-loading of a web application if the /WEB-INF/web.xml file (or

+                any other resource defined as a WatchedResource) is updated.

+            </li>

+            <li>

+                Re-deployment of a web application if the Context Descriptor

+                file from which the web application has been deployed is

+                updated.

+            </li>

+            <li>

+                Re-deployment of dependent web applications if the global or

+                per-host Context Descriptor file used by the web application is

+                updated.

+            </li>

+            <li>

+                Re-deployment of a web application if a Context Descriptor file (with a

+                filename corresponding to the Context path of the previously deployed

+                web application) is added to the

+                <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code>

+                directory.

+            </li>

+            <li>

+                Undeployment of a web application if its document base (docBase)

+                is deleted. Note that on Windows, this assumes that anti-locking

+                features (see Context configuration) are enabled, otherwise it is not

+                possible to delete the resources of a running web application.

+            </li>

+        </ul>

+        <p>

+            Note that web application reloading can also be configured in the loader, in which

+            case loaded classes will be tracked for changes.

+        </p>

+    </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploying using the Tomcat Manager"><!--()--></a><a name="Deploying_using_the_Tomcat_Manager"><strong>Deploying using the Tomcat Manager</strong></a></font></td></tr><tr><td><blockquote>

+        <p>

+            The Tomcat Manager is covered in its <a href="manager-howto.html">own manual page</a>.

+        </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="Deploying using the Client Deployer Package"><!--()--></a><a name="Deploying_using_the_Client_Deployer_Package"><strong>Deploying using the Client Deployer Package</strong></a></font></td></tr><tr><td><blockquote>

+        <p>

+            Finally, deployment of web application may be achieved using the

+            Tomcat Client Deployer. This is a package which can be used to

+            validate, compile, compress to .WAR, and deploy web applications to

+            production or development Tomcat servers. It should be noted that this feature

+            uses the Tomcat Manager and as such the target Tomcat server should be

+            running.

+        </p>

+

+        <p>

+            It is assumed the user will be familiar with Apache Ant for using the TCD.

+            Apache Ant is a scripted build tool. The TCD comes pre-packaged with a

+            build script to use. Only a modest understanding of Apache Ant is

+            required (installation as listed earlier in this page, and familiarity

+            with using the operating system command shell and configuring

+            environment variables).

+        </p>

+

+        <p>

+            The TCD includes Ant tasks, the Jasper page compiler for JSP compilation

+            before deployment, as well as a task which

+            validates the web application Context Descriptor. The validator task (class

+            <code>org.apache.catalina.ant.ValidatorTask</code>) allows only one parameter:

+            the base path of an exploded web application.

+        </p>

+

+        <p>

+            The TCD uses an exploded web application as input (see the list of the

+            properties used below). A web application that is programmatically

+            deployed with the deployer may include a Context Descriptor in

+            <code>/META-INF/context.xml</code>.

+        </p>

+

+        <p>

+            The TCD includes a ready-to-use Ant script, with the following targets:

+        </p>

+        <ul>

+            <li>

+                <code>compile</code> (default): Compile and validate the web

+                application. This can be used standalone, and does not need a running

+                Tomcat server. The compiled application will only run on the associated

+                <em>Tomcat&nbsp;X.Y.Z</em> server release, and is not guaranteed to work

+                on another Tomcat release, as the code generated by Jasper depends on its runtime

+                component. It should also be noted that this target will also compile

+                automatically any Java source file located in the

+                <code>/WEB-INF/classes</code> folder of the web application.</li>

+            <li>

+                <code>deploy</code>: Deploy a web application (compiled or not) to

+                a Tomcat server.

+            </li>

+            <li><code>undeploy</code>: Undeploy a web application</li>

+            <li><code>start</code>: Start web application</li>

+            <li><code>reload</code>: Reload web application</li>

+            <li><code>stop</code>: Stop web application</li>

+        </ul>

+

+        <p>

+            In order for the deployment to be configured, create a file

+            called <code>deployer.properties</code> in the TCD installation

+            directory root. In this file, add the following name=value pairs per

+            line:

+        </p>

+

+        <p>

+            Additionally, you will need to ensure that a user has been

+            setup for the target Tomcat Manager (which TCD uses) otherwise the TCD

+            will not authenticate with the Tomcat Manager and the deployment will

+            fail. To do this, see the Tomcat Manager page.

+        </p>

+

+        <ul>

+            <li>

+                <code>build</code>: The build folder used will be, by default,

+                <code>${build}/webapp/${path}</code>. After the end of the execution

+                of the <code>compile</code> target, the web application .WAR will be

+                located at <code>${build}/webapp/${path}.war</code>.

+            </li>

+            <li>

+                <code>webapp</code>: The directory containing the exploded web application

+                which will be compiled and validated. By default, the folder is

+                <code>myapp</code>.

+            </li>

+            <li>

+                <code>path</code>: Deployed context path of the web application,

+                by default <code>/myapp</code>.

+            </li>

+            <li>

+                <code>url</code>: Absolute URL to the Tomcat Manager web application of a

+                running Tomcat server, which will be used to deploy and undeploy the

+                web application. By default, the deployer will attempt to access

+                a Tomcat instance running on localhost, at

+                <code>http://localhost:8080/manager/text</code>.

+            </li>

+            <li>

+                <code>username</code>: Tomcat Manager username (user should have a role of

+                manager-script)

+            </li>

+            <li><code>password</code>: Tomcat Manager password.</li>

+        </ul>

+    </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="/tomcat-7.0-doc/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/deployer-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/developers.html b/webapps/docs/developers.html
new file mode 100644
index 0000000..94f9574
--- /dev/null
+++ b/webapps/docs/developers.html
@@ -0,0 +1,89 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Tomcat Developers</title><meta name="author" content="Remy Maucherat"><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Developers</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Active Developers"><!--()--></a><a name="Active_Developers"><strong>Active Developers</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      The list indicates the developers' main areas of interest. Feel free to

+      add to the list :) The developers email addresses are

+      <code>[login]@apache.org</code>. Please <strong>do not</strong> contact

+      developers directly for any support issues (please post to the

+      tomcat-users mailing list instead, or one of the other support

+      resources; some organizations and individual consultants also offer

+      for pay Tomcat support, as listed on the

+      <a href="http://wiki.apache.org/tomcat/SupportAndTraining">support and

+      training</a> page on the Tomcat Wiki).

+    </p>

+

+    <ul>

+      <li>Bill Barker (billbarker): Connectors</li>

+      <li>Costin Manolache (costin): Catalina, Connectors</li>

+      <li>Filip Hanik (fhanik): Clustering, Release Manager</li>

+      <li>Jean-Frederic Clere (jfclere): Connectors</li>

+      <li>Jim Jagielski (jim): Connectors</li>

+      <li>Konstantin Kolinko (kkolinko): Catalina</li>

+      <li>Mark Thomas (markt): CGI, SSI, WebDAV, bug fixing</li>

+      <li>Mladen Turk (mturk): Connectors</li>

+      <li>Peter Rossbach (pero): Catalina, Clustering, JMX</li>

+      <li>Rainer Jung (rjung): Catalina, Clustering, Connectors</li>

+      <li>Remy Maucherat (remm): Catalina, Connectors, Docs</li>

+      <li>Tim Funk (funkman): Catalina, Docs</li>

+      <li>Tim Whittington (timw): Connectors</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="Retired Developers"><!--()--></a><a name="Retired_Developers"><strong>Retired Developers</strong></a></font></td></tr><tr><td><blockquote>

+

+    <ul>

+      <li>Amy Roh (amyroh): Catalina</li>

+      <li>Glenn Nielsen (glenn): Catalina, Connectors</li>

+      <li>Henri Gomez (hgomez): Connectors</li>

+      <li>Jan Luehe (luehe): Jasper</li>

+      <li>Jean-Francois Arcand (jfarcand): Catalina</li>

+      <li>Kin-Man Chung (kinman): Jasper</li>

+      <li>Yoav Shapira (yoavs): Docs, JMX, Catalina, balancer</li>

+    </ul>

+  </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="/tomcat-7.0-doc/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/developers.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/elapi/index.html b/webapps/docs/elapi/index.html
new file mode 100644
index 0000000..19c5985
--- /dev/null
+++ b/webapps/docs/elapi/index.html
@@ -0,0 +1,34 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">

+<html>

+    <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>API docs</title>

+</head>

+

+<body>

+

+The EL Javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

+

+</body>

+</html>

diff --git a/webapps/docs/extras.html b/webapps/docs/extras.html
new file mode 100644
index 0000000..66f4931
--- /dev/null
+++ b/webapps/docs/extras.html
@@ -0,0 +1,127 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Additional Components</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Additional Components</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Downloading">Downloading</a></li><li><a href="#Building">Building</a></li><li><a href="#Components_list">Components list</a><ol><li><a href="#Full_commons-logging_implementation">Full commons-logging implementation</a></li><li><a href="#Web_Services_support_(JSR_109)">Web Services support (JSR 109)</a></li><li><a href="#JMX_Remote_Lifecycle_Listener">JMX Remote Lifecycle Listener</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    A number of additional components may be used with Apache Tomcat. These

+    components may be built by users should they need them or they can be

+    downloaded from one of the mirrors.

+  </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="Downloading"><strong>Downloading</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    To download the extras components open the Tomcat download page and

+    select "browse" from the Quick Navigation Links. The extras components can be

+    found in bin/extras.

+  </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="Building"><strong>Building</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      The additional components are built using the <code>extras</code> target

+      of the standard Tomcat Ant script which is present in the source bundle of

+      Tomcat.

+    </p>

+

+    <p>The build process is the following:</p>

+

+    <ul>

+    <li>Follow the <a href="building.html">build instructions</a> to build a

+        Tomcat binary from the source bundle (note: it will be used by the build

+        process of the additional components, but does not need to be actually

+        used later on)</li>

+    <li>Execute the command <code>ant extras</code> to run the build

+        script</li>

+    <li>The additional components JARs will be placed in the

+        <code>output/extras</code> folder</li>

+    <li>Refer to the documentation below about the usage of these JARs</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="Components list"><!--()--></a><a name="Components_list"><strong>Components list</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Full commons-logging implementation"><!--()--></a><a name="Full_commons-logging_implementation"><strong>Full commons-logging implementation</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    Tomcat uses a package renamed commons-logging API implementation which is

+    hardcoded to use the java.util.logging API. The commons-logging additional

+    component builds a full fledged package renamed commons-logging

+    implementation which can be used to replace the implementation provided with

+    Tomcat. See the <a href="logging.html">logging</a> page for usage

+    instructions.

+  </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="Web Services support (JSR 109)"><!--()--></a><a name="Web_Services_support_(JSR_109)"><strong>Web Services support (JSR 109)</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    Tomcat provides factories for JSR 109 which may be used to resolve web

+    services references. Place the generated catalina-ws.jar as well as

+    jaxrpc.jar and wsdl4j.jar (or another implementation of JSR 109) in the

+    Tomcat lib folder.

+  </p>

+

+  <p>

+    Users should be aware that wsdl4j.jar is licensed under CPL 1.0 and not the

+    Apache License version 2.0.

+  </p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Remote Lifecycle Listener"><!--()--></a><a name="JMX_Remote_Lifecycle_Listener"><strong>JMX Remote Lifecycle Listener</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    The JMX protocol requires the JMX server (Tomcat in this instance) to listen

+    on two network ports. One of these ports can be fixed via configuration but

+    the second is selected randomly. This makes it difficult to use JMX through

+    a firewall. The JMX Remote Lifecycle Listener allows both ports to be fixed,

+    simplifying the process of connecting to JMX through a firewall. See the <a href="config/listeners.html">listeners</a> page for usage instructions.

+  </p>

+

+  </blockquote></td></tr></table>

+  </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="/tomcat-7.0-doc/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/extras.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-admin-apps.html b/webapps/docs/funcspecs/fs-admin-apps.html
new file mode 100644
index 0000000..dee8a00
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-admin-apps.html
@@ -0,0 +1,299 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - Administrative Apps - Overall Requirements</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Administrative Apps - Overall Requirements</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="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li><li><a href="#External_Technologies">External Technologies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Properties_of_Administered_Objects">Properties of Administered Objects</a></li><li><a href="#Supported_Administrative_Operations">Supported Administrative Operations</a></li><li><a href="#Access_Method_Specific_Requirements">Access Method Specific Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The purpose of this specification is to define high level requirements

+    for administrative applications that can be used to manage the operation

+    of a running Tomcat container.  A variety of <em>Access Methods</em>

+    to the supported administrative functionality shall be supported, to

+    meet varying requirements:</p>

+    <ul>

+    <li><em>As A Scriptable Web Application</em> - The existing

+        <code>Manager</code> web application provides a simple HTTP-based

+        interface for managing Tomcat through commands that are expressed

+        entirely through a request URI.  This is useful in environments

+        where you wish to script administrative commands with tools that

+        can generate HTTP transactions.</li>

+    <li><em>As An HTML-Based Web Application</em> - Use an HTML presentation

+        to provide a GUI-like user interface for humans to interact with the

+        administrative capabilities.</li>

+    <li><em>As SOAP-Based Web Services</em> - The operational commands to

+        administer Tomcat are made available as web services that utilize

+        SOAP message formats.</li>

+    <li><em>As Java Management Extensions (JMX) Commands</em> - The operational

+        commands to administer Tomcat are made available through JMX APIs,

+        for integration into management consoles that utilize them.</li>

+    <li><em>Other Remote Access APIs</em> - Other remote access APIs, such

+        as JINI, RMI, and CORBA can also be utilized to access administrative

+        capabilities.</li>

+    </ul>

+

+    <p>Underlying all of the access methods described above, it is assumed

+    that the actual operations are performed either directly on the

+    corresponding Catalina components (such as calling the

+    <code>Deployer.deploy()</code> method to deploy a new web application),

+    or through a "business logic" layer that can be shared across all of the

+    access methods.  This approach minimizes the cost of adding new

+    administrative capabilities later -- it is only necessary to add the

+    corresponding business logic function, and then write adapters to it for

+    all desired access methods.</p>

+

+    <p>The current status of this functional specification is

+    <strong>PROPOSED</strong>.  It has not yet been discussed and

+    agreed to on the TOMCAT-DEV mailing list.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality depends on the following

+    external specifications:</p>

+    <ul>

+    <li><a href="http://java.sun.com/products/jdk/idl/index.html">Java

+        IDL</a> (for CORBA, included in the JDK)</li>

+    <li><a href="http://java.sun.com/products/JavaManagement/index.html">

+        Java Management Extensions</a></li>

+    <li><a href="http://java.sun.com/products/rmi/index.html">Remote

+        Method Invocation</a> (Included in the JDK)</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality shall conform to the

+    following requirements:</p>

+    <ul>

+    <li>To the maximum extent feasible, all administrative functions,

+        and the access methods that support them, shall run portably

+        on all platforms where Tomcat itself runs.</li>

+    <li>In a default Tomcat distribution, all administrative capabilities

+        shall be disabled.  It shall be necessary for a system

+        administrator to specifically enable the desired access methods

+        (such as by adding a username/password with a specific role to

+        the Tomcat user's database.</li>

+    <li>Administrative functions shall be realized as direct calls to

+        corresponding Catalina APIs, or through a business logic layer

+        that is independent of the access method used to initiate it.</li>

+    <li>The common business logic components shall be implemented in

+        package <code>org.apache.catalina.admin</code>.</li>

+    <li>The common business logic components shall be built as part of the

+        standard Catalina build process, and made visible in the

+        Catalina class loader.</li>

+    <li>The Java components required for each access method shall be

+        implemented in subpackages of <code>org.apache.catalina.admin</code>.

+        </li>

+    <li>The build scripts should treat each access method as optional,

+        so that it will be built only if the corresponding required

+        APIs are present at build time.</li>

+    <li>It shall be possible to save the configured state of the running

+        Tomcat container such that this state can be reproduced when the

+        container is shut down and restarted.</li>

+    <li>Administrative commands to start up and shut down the overall

+        Tomcat container are <strong>out of scope</strong> for the

+        purposes of these applications.  It is assumed that other

+        (usually platform-specific) mechanisms will be used for container

+        startup and shutdown.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following environmental dependencies must be met in order for

+    administrative applications to operate correctly:</p>

+    <ul>

+    <li>For access methods that require creation of server sockets, the

+        appropriate ports must be configured and available.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Correct operation of administrative applications depends on the

+       following specific features of the surrounding container:</p>

+    <ul>

+    <li>To the maximum extent feasible, Catalina components that offer

+        direct administrative APIs and property setters shall support

+        "live" changes to their operation, without requiring a container

+        restart.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Technologies"><!--()--></a><a name="External_Technologies"><strong>External Technologies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The availability of the following technologies can be assumed

+    for the implementation and operation of the various access methods

+    and the corresponding administrative business logic:<br>

+    <strong>FIXME</strong> - This list below is totally outdated, but nobody

+    cares about the administrative app anymore. It is removed and unsupported

+    since Tomcat 6.0.</p>

+    <ul>

+    <li><a href="http://java.sun.com/j2se/">Java 2 Standard Edition</a>

+        (Version 1.2 or later)</li>

+    <li><a href="http://www.jcp.org/jsr/detail/154.jsp">Servlet 2.4</a>

+        (supported natively by Tomcat 5)</li>

+    <li><a href="http://www.jcp.org/jsr/detail/152.jsp">JavaServer Pages 2.0</a>

+        (supported natively by Tomcat 5)</li>

+    <li><a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">JavaServer Pages Standard Tag Library 1.0 (Jakarta Taglibs-Standard 1.0.3)</a></li>

+    <li><a href="http://struts.apache.org/">Struts Framework</a>

+        (Version 1.0) - MVC Framework for Web Applications</li>

+    <li><strong>TO BE DETERMINED</strong> - Application for hosting SOAP

+        based web services</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Properties of Administered Objects"><!--()--></a><a name="Properties_of_Administered_Objects"><strong>Properties of Administered Objects</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Functional requirements for administrative applications are specified

+  in terms of <em>Administered Objects</em>, whose definitions and detailed

+  properties are listed <a href="fs-admin-objects.html">here</a>.  In general,

+  Administered Objects correspond to components in the Catalina architecture,

+  but these objects are defined separately here for the following reasons:</p>

+  <ul>

+  <li>It is possible that the administrative applications do not expose

+      every possible configurable facet of the underlying components.</li>

+  <li>In some cases, an Administered Object (from the perspective of an

+      administrative operation) is realized by more than one Catalina

+      component, at a finer-grained level of detail.</li>

+  <li>It is necessary to represent the configuration information for a

+      component separately from the component itself (for instance, in

+      order to store that configuration information for later use).</li>

+  <li>It is necessary to represent configuration information (such as

+      a Default Context) when there is no corresponding component instance.

+      </li>

+  <li>Administered Objects, when realized as Java classes, will include

+      methods for administrative operations that have no correspondence

+      to operations performed by the corresponding actual components.</li>

+  </ul>

+

+  <p>It is assumed that the reader is familiar with the overall component

+  architecture of Catalina.  For further information, see the corresponding

+  Developer Documentation.  To distinguish names that are used as both

+  <em>Administered Objects</em> and <code>Components</code>, different

+  font presentations are utilized.  Default values for many properties

+  are listed in [square brackets].</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Supported Administrative Operations"><!--()--></a><a name="Supported_Administrative_Operations"><strong>Supported Administrative Operations</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The administrative operations that are available are described in terms

+  of the corresponding Administered Objects (as defined above), in a manner

+  that is independent of the access method by which these operations are

+  requested.  In general, such operations are relevant only in the context

+  of a particular Administered Object (and will most likely be realized as

+  method calls on the corresponding Administered Object classes), so they

+  are organized based on the currently "focused" administered object.

+  The available Supported Operations are documented

+  <a href="fs-admin-opers.html">here</a>.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Method Specific Requirements"><!--()--></a><a name="Access_Method_Specific_Requirements"><strong>Access Method Specific Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+  <h5>Scriptable Web Application</h5>

+

+  <p>An appropriate subset of the administrative operations described above

+  shall be implemented as commands that can be performed by the "Manager"

+  web application.  <strong>FIXME</strong> - Enumerate them.</p>

+

+  <p>In addition, this web application shall conform to the following

+  requirements:</p>

+  <ul>

+  <li>All request URIs shall be protected by security constraints that

+      require a security role to be assigned for processing.</li>

+  <li>The default user database shall <strong>not</strong> contain any

+      user that has been assigned a security role.</li>

+  </ul>

+

+  <h5>HTML-Based Web Application</h5>

+

+  <p>The entire suite of administrative operations described above shall be

+  made available through a web application designed for human interaction.

+  In addition, this web application shall conform to the following

+  requirements:</p>

+  <ul>

+  <li>Must be implemented using servlet, JSP, and MVC framework technologies

+      described under "External Technologies", above.</li>

+  <li>Prompts and error messages must be internationalizable to multiple

+      languages.</li>

+  <li>Rendered HTML must be compatible with Netscape Navigator (version 4.7

+      or later) and Internet Explorer (version 5.0 or later).</li>

+  </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p><strong>FIXME</strong> - Complete this section.</p>

+

+</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="/tomcat-7.0-doc/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/funcspecs/fs-admin-apps.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-admin-objects.html b/webapps/docs/funcspecs/fs-admin-objects.html
new file mode 100644
index 0000000..5e4de05
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-admin-objects.html
@@ -0,0 +1,464 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - Administrative Apps - Administered Objects</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Administrative Apps - Administered Objects</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="#Administered_Objects_Overview">Administered Objects Overview</a></li><li><a href="#Access_Logger">Access Logger</a></li><li><a href="#Connector">Connector</a></li><li><a href="#Context">Context</a></li><li><a href="#Default_Context">Default Context</a></li><li><a href="#Default_Deployment_Descriptor">Default Deployment Descriptor</a></li><li><a href="#Engine">Engine</a></li><li><a href="#Environment_Entry">Environment Entry</a></li><li><a href="#Host">Host</a></li><li><a href="#JDBC_Resource">JDBC Resource</a></li><li><a href="#Loader">Loader</a></li><li><a href="#Manager">Manager</a></li><li><a href="#Realm">Realm</a></li><li><a href="#Request_Filter">Request Filter</a></li><li><a href="#Server">Server</a></li><li><a href="#Service">Service</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Administered Objects Overview"><!--()--></a><a name="Administered_Objects_Overview"><strong>Administered Objects Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>This document defines the <em>Administered Objects</em> that represent

+the internal architectural components of the Catalina servlet container.

+Associated with each is a set of <a href="fs-admin-opers.html">Supported

+Operations</a> that can be performed when the administrative application is

+"focused" on a particular configurable object.</p>

+

+<p>The following Administered Objects are defined:</p>

+<ul>

+<li><a href="#Access Logger">Access Logger</a></li>

+<li><a href="#Connector">Connector</a></li>

+<li><a href="#Context">Context</a></li>

+<li><a href="#Default Context">Default Context</a></li>

+<li><a href="#Default Deployment Descriptor">Default Deployment Descriptor</a></li>

+<li><a href="#Engine">Engine</a></li>

+<li><a href="#Environment Entry">Environment Entry</a></li>

+<li><a href="#Host">Host</a></li>

+<li><a href="#JDBC Resource">JDBC Resource</a></li>

+<li><a href="#Loader">Loader</a></li>

+<li><a href="#Manager">Manager</a></li>

+<li><a href="#Realm">Realm</a></li>

+<li><a href="#Request Filter">Request Filter</a></li>

+<li><a href="#Server">Server</a></li>

+<li><a href="#Service">Service</a></li>

+</ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Logger"><!--()--></a><a name="Access_Logger"><strong>Access Logger</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>An <em>Access Logger</em> is an optional <code>Valve</code> that can

+  create request access logs in the same formats as those provided by

+  web servers.  Such access logs are useful input to hit count and user

+  access tracking analysis programs.  An Access Logger can be attached to

+  an <em>Engine</em>, a <em>Host</em>, a <em>Context</em>, or a <em>Default

+  Context</em>.</p>

+

+  <p>The standard component implementing an <em>Access Logger</em> is

+  <code>org.apache.catalina.valves.AccessLogValve</code>.  It supports the

+  following configurable properties:</p>

+  <ul>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>directory</code> - Absolute or relative (to $CATALINA_BASE) path

+      of the directory into which access log files are created.

+      [logs].</li>

+  <li><code>pattern</code> - Pattern string defining the fields to be

+      included in the access log output, or "common" for the standard

+      access log pattern.  See

+      <code>org.apache.catalina.valves.AccessLogValve</code> for more

+      information.  [common]</li>

+  <li><code>prefix</code> - Prefix added to the beginning of each log file

+      name created by this access logger.</li>

+  <li><code>resolveHosts</code> - Should IP addresses be resolved to host

+      names in the log?  [false]</li>

+  <li><code>suffix</code> - Suffix added to the end of each log file name

+      created by this access logger.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>Connector</em> is the representation of a communications endpoint

+  by which requests are received from (and responses returned to) a Tomcat

+  client.  The administrative applications shall support those connectors

+  that are commonly utilized in Tomcat installations, as described in detail

+  below.</p>

+

+  <p>For standalone use, the standard connector supporting the HTTP/1.1

+  protocol is <code>org.apache.catalina.connectors.http.HttpConnector</code>.

+  It supports the following configurable properties:</p>

+  <ul>

+  <li><code>acceptCount</code> - The maximum queue length of incoming

+      connections that have not yet been accepted.  [10]</li>

+  <li><code>address</code> - For servers with more than one IP address, the

+      address upon which this connector should listen.  [All Addresses]</li>

+  <li><code>bufferSize</code> - Default input buffer size (in bytes) for

+      requests created by this Connector.  [2048]</li>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>enableLookups</code> - Should we perform DNS lookups on remote

+      IP addresses when <code>request.getRemoteHost()</code> is called?

+      [false]</li>

+  <li><code>maxProcessors</code> - The maximum number of processor threads

+      supported by this connector.  [20]</li>

+  <li><code>minProcessors</code> - The minimum number of processor threads

+      to be created at container startup.  [5]</li>

+  <li><code>port</code> - TCP/IP port number on which this Connector should

+      listen for incoming requests. [8080]</li>

+  <li><code>proxyName</code> - Host name to be returned when an application

+      calls <code>request.getServerName()</code>.  [Value of Host: header]</li>

+  <li><code>proxyPort</code> - Port number to be returned when an application

+      calls <code>request.getServerPort()</code>.  [Same as <code>port</code>]

+      </li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>Context</em> is the representation of an individual web application,

+  which is associated with a corresponding <em>Host</em>.  Note that the

+  administrable properties of a <em>Context</em> do <strong>not</strong>

+  include any settings from inside the web application deployment descriptor

+  for that application.</p>

+

+  <p>The standard component implementing a <em>Context</em> is

+  <code>org.apache.catalina.core.StandardContext</code>.  It supports the

+  following configurable properties:</p>

+  <ul>

+  <li><code>cookies</code> - Should be use cookies for session identifier

+      communication?  [true]</li>

+  <li><code>crossContext</code> - Should calls to

+      <code>ServletContext.getServletContext()</code> return the actual

+      context responsible for the specified path?  [false]</li>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>docBase</code> - The absolute or relative (to the

+      <code>appBase</code> of our owning <em>Host</em>) pathname of a

+      directory containing an unpacked web application, or of a web

+      application archive (WAR) file.</li>

+  <li><code>override</code> - Should settings in this <em>Context</em>

+      override corresponding settings in the <em>Default Context</em>?

+      [false]</li>

+  <li><code>path</code> - Context path for this web application, or an empty

+      string for the root application of a <em>Host</em>.  [Inferred from

+      directory or WAR file name]</li>

+  <li><code>reloadable</code> - Should Tomcat monitor classes in the

+      <code>/WEB-INF/classes</code> directory for changes, and reload the

+      application if they occur?  [false]</li>

+  <li><code>useNaming</code> - Should Tomcat provide a JNDI naming context,

+      containing preconfigured entries and resources, corresponding to the

+      requirements of the Java2 Enterprise Edition specification?  [true]</li>

+  <li><code>workDir</code> - Absolute pathname of a scratch directory that is

+      provided to this web application.  [Automatically assigned relative to

+      $CATALINA_BASE/work]</li>

+  </ul>

+

+  <p>Each <em>Context</em> is owned by a parent <em>Host</em>, and is

+  associated with:</p>

+  <ul>

+  <li>An optional <em>Access Logger</em> that logs all requests processed

+      by this web application.</li>

+  <li>Zero or more <em>Environment Entries</em> representing environment

+      entries for the JNDI naming context associated with a web

+      application.</li>

+  <li>Zero or more <em>JDBC Resources</em> representing database connection

+      pools associated with a web application.</li>

+  <li>A <em>Loader</em> representing the web application class loader used

+      by this web application.</li>

+  <li>A <em>Manager</em> representing the session manager used by this

+      web application.</li>

+  <li>An optional <em>Realm</em> used to provide authentication and access

+      control information for this web application.</li>

+  <li>Zero or more <em>Request Filters</em> used to limit access to this

+      web application based on remote host name or IP address.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Default Context"><!--()--></a><a name="Default_Context"><strong>Default Context</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>Default Context</em> represents a subset of the configurable

+  properties of a <em>Context</em>, and is used to set defaults for those

+  properties when web applications are automatically deployed.  A <em>Default

+  Context</em> object can be associated with an <em>Engine</em> or a

+  <em>Host</em>.  The following configurable properties are supported:</p>

+  <ul>

+  <li><code>cookies</code> - Should be use cookies for session identifier

+      communication?  [true]</li>

+  <li><code>crossContext</code> - Should calls to

+      <code>ServletContext.getServletContext()</code> return the actual

+      context responsible for the specified path?  [false]</li>

+  <li><code>reloadable</code> - Should Tomcat monitor classes in the

+      <code>/WEB-INF/classes</code> directory for changes, and reload the

+      application if they occur?  [false]</li>

+  <li><code>useNaming</code> - Should Tomcat provide a JNDI naming context,

+      containing preconfigured entries and resources, corresponding to the

+      requirements of the Java2 Enterprise Edition specification?  [true]</li>

+  </ul>

+

+  <p>Each <em>Default Context</em> is owned by a parent <em>Engine</em> or

+  <em>Host</em>, and is associated with:</p>

+  <ul>

+  <li>Zero or more <em>Environment Entries</em> representing environment

+      entries for the JNDI naming context associated with a web

+      application.</li>

+  <li>Zero or more <em>JDBC Resources</em> representing database connection

+      pools associated with a web application.</li>

+  <li>An optional <em>Loader</em> representing default configuration

+      properties for the Loader component of deployed web applications.</li>

+  <li>An optional <em>Manager</em> representing default configuration

+      properties for the Manager component of deployed web applications.</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="Default Deployment Descriptor"><!--()--></a><a name="Default_Deployment_Descriptor"><strong>Default Deployment Descriptor</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Default web application characteristics are configured in a special

+  deployment descriptor named <code>$CATALINA_BASE/conf/web.xml</code>.  This

+  section describes the configurable components that may be stored there.</p>

+

+  <p><strong>FIXME</strong> - Complete the description of default servlets,

+  default mappings, default MIME types, and so on.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>An <em>Engine</em> is the representation of the entire Catalina

+  servlet container, and processes all requests for all of the associated

+  virtual hosts and web applications.</p>

+

+  <p>The standard component implementing an <em>Engine</em> is

+  <code>org.apache.catalina.core.StandardEngine</code>.  It supports the

+  following configurable properties:</p>

+  <ul>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>defaultHost</code> - Name of the <em>Host</em> to which requests

+      will be directed if the requested host is unknown.  [localhost]</li>

+  <li><code>name</code> - Logical name of this engine. [Tomcat Stand-Alone]

+      </li>

+  </ul>

+

+  <p>Each <em>Engine</em> is owned by a parent <em>Service</em>, and is

+  associated with:</p>

+  <ul>

+  <li>An optional <em>Access Logger</em> that logs all requests processed

+      by the entire container.</li>

+  <li>A <em>Default Context</em>, representing default properties of a

+      <em>Context</em> for automatically deployed applications for all

+      associated <em>Hosts</em> (unless overridden by a subordinate

+      component).</li>

+  <li>One or more <em>Hosts</em> representing individual virtual hosts

+      supported by this container.</li>

+  <li>A <em>Realm</em> used to provide authentication and access control

+      information for all virtual hosts and web applications (unless

+      overridden by a subordinate component).</li>

+  <li>Zero or more <em>Request Filters</em> used to limit access to the

+      entire container based on remote host name or IP address.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environment Entry"><!--()--></a><a name="Environment_Entry"><strong>Environment Entry</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>An <em>Environment Entry</em> is the representation of a

+  <code>&lt;env-entry&gt;</code> element from a web application deployment

+  descriptor.  It will cause the creation of a corresponding entry in the

+  JNDI naming context provided to the corresponding <em>Context</em>.  The

+  following configurable properties are supported:</p>

+  <ul>

+  <li><code>description</code> - Description of this environment entry.</li>

+  <li><code>name</code> - Environment entry name (relative to the

+      <code>java:comp/env</code> context)</li>

+  <li><code>type</code> - Environment entry type (must be one of the fully

+      qualified Java classes listed in the servlet spec).</li>

+  <li><code>value</code> - Environment entry value (must be convertible from

+      String to the specified <code>type</code>.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>Host</em> is the representation of an individual virtual host,

+  which has a unique set of associated web applications.</p>

+

+  <p>The standard component implementing a <em>Host</em> is

+  <code>org.apache.catalina.core.StandardHost</code>.  It supports the

+  following configurable properties:</p>

+  <ul>

+  <li><code>aliases</code> - Zero or more DNS names that are also associated

+      with this host (for example, a particular host might be named

+      <code>www.mycompany.com</code> with an alias <code>company.com</code>).

+      </li>

+  <li><code>appBase</code> - Absolute or relative (to $CATALINA_BASE) path

+      to a directory from which web applications will be automatically

+      deployed.</li>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>name</code> - DNS Name of the virtual host represented by this

+      object.</li>

+  <li><code>unpackWARs</code> - Should web application archive files

+      deployed by this virtual host be unpacked first?  [true]</li>

+  </ul>

+

+  <p>Each <em>Host</em> is owned by a parent <em>Engine</em>, and is

+  associated with:</p>

+  <ul>

+  <li>An optional <em>Access Logger</em> that logs all requests processed

+      by this virtual host.</li>

+  <li>One or more <em>Contexts</em> representing the web applications

+      operating on this <em>Host</em>.</li>

+  <li>A <em>Default Context</em> representing default <em>Context</em>

+      properties for web applications that are automatically deployed

+      by this <em>Host</em>.</li>

+  <li>A optional <em>Realm</em> used to provide authentication and access

+      control information for all web applications associated with this

+      virtual host (unless overridden by a subordinate component).</li>

+  </ul>

+

+  <p><strong>FIXME</strong> - Should we support configuration of the

+  User Web Applications functionality?</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC Resource"><!--()--></a><a name="JDBC_Resource"><strong>JDBC Resource</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>JDBC Resources</em> represents a database connection pool (i.e.

+  an implementation of <code>javax.sql.DataSource</code> that will be

+  configured and made available in the JNDI naming context associated with

+  a web application.</p>

+

+  <p><strong>FIXME</strong> - properties of this administered object</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Loader"><strong>Loader</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>Loader</em> represents a web application class loader that will

+  be utilized to provide class loading services for a particular

+  <em>Context</em>.</p>

+

+  <p>The standard component implementing a <em>Loader</em> is

+  <code>org.apache.catalina.loader.StandardLoader</code>.  It supports

+  the following configurable properties:</p>

+  <ul>

+  <li><code>checkInterval</code> - Number of seconds between checks for

+      modified classes, if automatic reloading is enabled.  [15]</li>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>reloadable</code> - Should this class loader check for modified

+      classes and initiate automatic reloads?  [Set automatically from the

+      <code>reloadable</code> property of the corresponding <em>Context</em>]

+      </li>

+  </ul>

+

+  <p>Each <em>Loader</em> is owned by a parent <em>Context</em>.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>Manager</em> represents a session manager that will be associated

+  with a particular web application.  <strong>FIXME</strong> - Add support

+  for advanced session managers and their associated Stores.</p>

+

+  <p>The standard component implementing a <em>Manager</em> is

+  <code>org.apache.catalina.session.StandardManager</code>.  It supports

+  the following configurable properties:</p>

+  <ul>

+  <li><code>checkInterval</code> - Number of seconds between checks for

+      expired sessions.  [60]</li>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>entropy</code> - String initialization parameter used to increase

+      the entropy (initial randomness) of the random number generator used to

+      create session identifiers.  [Inferred from engine, host, and context]

+      </li>

+  <li><code>maxActiveSessions</code> - The maximum number of active sessions

+      that are allowed, or -1 for no limit.  [-1]</li>

+  </ul>

+

+  <p>Each <em>Manager</em> is owned by a parent <em>Context</em>.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Realm"><strong>Realm</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>A <em>Realm</em> represents a "database" of information about authorized

+  users, their passwords, and the security roles assigned to them.  This will

+  be used by the container in the implementation of container-managed security

+  in accordance with the Servlet Specification.  Several alternative

+  implementations are supported.</p>

+

+  <p><code>org.apache.catalina.realm.MemoryRealm</code> initializes its user

+  information from a simple XML file at startup time.  If changes are made

+  to the information in this file, the corresponding web applications using

+  it must be restarted for the changes to take effect.  It supports the

+  following configurable properties:</p>

+  <ul>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>pathname</code> - Absolute or relative (to $CATALINA_BASE) path to

+      the XML file containing our user information.  [conf/tomcat-users.xml]

+      </li>

+  </ul>

+

+  <p><code>org.apache.catalina.realm.JDBCRealm</code> uses a relational

+  database (accessed via JDBC APIs) to contain the user information.  Changes

+  in the contents of this database take effect immediately; however, the roles

+  assigned to a particular user are calculated only when the user initially

+  logs on (and not per request).  The following configurable properties

+  are supported:</p>

+  <ul>

+  <li><code>connectionName</code> - Database username to use when establishing

+      a JDBC connection.</li>

+  <li><code>connectionPassword</code> - Database password to use when

+      establishing a JDBC connection.</li>

+  <li><code>connectionURL</code> - Connection URL to use when establishing

+      a JDBC connection.</li>

+  <li><code>debug</code> - Debugging detail level.  [0]</li>

+  <li><code>digest</code> - Name of the <code>MessageDigest</code> algorithm

+      used to encode passwords in the database, or a zero-length string for

+      no encoding.  [Zero-length String]</li>

+  <li><code>driverName</code> - Fully qualified Java class name of the JDBC

+      driver to be utilized.</li>

+  <li><code>roleNameCol</code> - Name of the column, in the User Roles table,

+      which contains the role name.</li>

+  <li><code>userCredCol</code> - Name of the column, in the Users table,

+      which contains the password (encrypted or unencrypted).</li>

+  <li><code>userNameCol</code> - Name of the column, in both the Users and

+      User Roles tables, that contains the username.</li>

+  <li><code>userRoleTable</code> - Name of the User Roles table, which contains

+      one row per security role assigned to a particular user.  This table must

+      contain the columns specified by the <code>userNameCol</code> and

+      <code>roleNameCol</code> properties.</li>

+  <li><code>userTable</code> - Name of the Users table, which contains one row

+      per authorized user.  This table must contain the columns specified by

+      the <code>userNameCol</code> and <code>userCredCol</code> properties.

+      </li>

+  </ul>

+

+  <p><strong>FIXME</strong> - Should we provide mechanisms to edit the contents

+  of a "tomcat-users.xml" file through the admin applications?</p>

+

+  <p>Each <em>Realm</em> is owned by a parent <em>Engine</em>, <em>Host</em>,

+  or <em>Context</em>.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Filter"><!--()--></a><a name="Request_Filter"><strong>Request Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p><strong>FIXME</strong> - complete this entry</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="Server"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p><strong>FIXME</strong> - complete this entry</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="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p><strong>FIXME</strong> - complete this entry</p>

+

+</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="/tomcat-7.0-doc/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/funcspecs/fs-admin-objects.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-admin-opers.html b/webapps/docs/funcspecs/fs-admin-opers.html
new file mode 100644
index 0000000..b75ccd0
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-admin-opers.html
@@ -0,0 +1,309 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - Administrative Apps - Supported Operations</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Administrative Apps - Supported Operations</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="#Supported_Operations_Overview">Supported Operations Overview</a></li><li><a href="#Access_Logger">Access Logger</a></li><li><a href="#Connector">Connector</a></li><li><a href="#Context">Context</a></li><li><a href="#Default_Context">Default Context</a></li><li><a href="#Engine">Engine</a></li><li><a href="#Environment_Entry">Environment Entry</a></li><li><a href="#Host">Host</a></li><li><a href="#JDBC_Resource">JDBC Resource</a></li><li><a href="#Loader">Loader</a></li><li><a href="#Manager">Manager</a></li><li><a href="#Realm">Realm</a></li><li><a href="#Request_Filter">Request Filter</a></li><li><a href="#Server">Server</a></li><li><a href="#Service">Service</a></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Supported Operations Overview"><!--()--></a><a name="Supported_Operations_Overview"><strong>Supported Operations Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>This document defines the <em>Supported Operations</em> that may

+be performed against the <a href="fs-admin-objects.html">Administered

+Objects</a> that are supported by Tomcat administrative applications.

+Not all operations are required to be available through every administrative

+application that is implemented.  However, if a given operation is available,

+it should operate consistently with the descriptions found here.</p>

+

+<p>Supported Operations are described for the following Administered

+Objects:</p>

+<ul>

+<li><a href="#Access Logger">Access Logger</a></li>

+<li><a href="#Connector">Connector</a></li>

+<li><a href="#Context">Context</a></li>

+<li><a href="#Default Context">Default Context</a></li>

+<li><a href="#Engine">Engine</a></li>

+<li><a href="#Environment Entry">Environment Entry</a></li>

+<li><a href="#Host">Host</a></li>

+<li><a href="#JDBC Resource">JDBC Resource</a></li>

+<li><a href="#Loader">Loader</a></li>

+<li><a href="#Manager">Manager</a></li>

+<li><a href="#Realm">Realm</a></li>

+<li><a href="#Request Filter">Request Filter</a></li>

+<li><a href="#Server">Server</a></li>

+<li><a href="#Service">Service</a></li>

+</ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Logger"><!--()--></a><a name="Access_Logger"><strong>Access Logger</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Access Logger</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Engine</em>, <em>Host</em>, or

+      <em>Context</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Connector"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Connector</em>, it shall be

+  possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Service</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Context</em>, it shall be

+  possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Host</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  <li>Create and configure a new <em>Access Logger</em> associated

+      with this object.</li>

+  <li>Edit the configurable properties of the associated <em>Access

+      Logger</em>.</li>

+  <li>Remove the associated <em>Access Logger</em>.</li>

+  <li>Create and configure a new <em>Environment Entry</em> associated

+      with this object.</li>

+  <li>Select and edit the configurable properties of an associated

+      <em>Environment Entry</em>.</li>

+  <li>Remove an associated <em>Environment Entry</em>.</li>

+  <li>Create and configure a new <em>JDBC Resource</em> associated

+      with this object.</li>

+  <li>Select and edit the configurable properties of an associated

+      <em>JDBC Resource</em>.</li>

+  <li>Remove an associated <em>JDBC Resource</em>.</li>

+  <li>Create and configure a new <em>Loader</em> associated with

+      this object.</li>

+  <li>Edit the configurable properties of the associated <em>Loader</em>.</li>

+  <li>Remove the associated <em>Loader</em>.</li>

+  <li>Create and configure a new <em>Manager</em> associated with

+      this object.</li>

+  <li>Edit the configurable properties of the associated <em>Manager</em>.</li>

+  <li>Remove the associated <em>Manager</em>.</li>

+  <li>Create and configure a new <em>Realm</em> associated with

+      this object.</li>

+  <li>Edit the configurable properties of the associated <em>Realm</em>.</li>

+  <li>Remove the associated <em>Realm</em>.</li>

+  <li>Create and configure a new <em>Request Filter</em> associated with

+      this object.</li>

+  <li>Select and edit the configurable properties of an

+      associated <em>Request Filter</em></li>

+  <li>Remove an associated <em>Request Filter</em>.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Default Context"><!--()--></a><a name="Default_Context"><strong>Default Context</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Default Context</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Engine</em> or <em>Host</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  <li>Create and configure a new <em>Environment Entry</em> associated

+      with this object.</li>

+  <li>Select and edit the configurable properties of an associated

+      <em>Environment Entry</em>.</li>

+  <li>Remove an associated <em>Environment Entry</em>.</li>

+  <li>Create and configure a new <em>JDBC Resource</em> associated

+      with this object.</li>

+  <li>Select and edit the configurable properties of an associated

+      <em>JDBC Resource</em>.</li>

+  <li>Remove an associated <em>JDBC Resource</em>.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Engine</em>, it shall be

+  possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Service</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  <li>Create and configure a new <em>Access Logger</em> associated

+      with this object.</li>

+  <li>Edit the configurable properties of the associated <em>Access

+      Logger</em>.</li>

+  <li>Remove the associated <em>Access Logger</em>.</li>

+  <li>Create and configure a new <em>Default Context</em> associated

+      with this object.</li>

+  <li>Edit the configurable properties of the associated <em>Default

+      Context</em>.</li>

+  <li>Remove the associated <em>Default Context</em>.</li>

+  <li>Create and configure a new <em>Host</em> associated with

+      this object.</li>

+  <li>Select and edit the configurable properties of an

+      associated <em>Host</em>.</li>

+  <li>Remove an associated <em>Host</em>.</li>

+  <li>Create and configure a new <em>Realm</em> associated with

+      this object.</li>

+  <li>Edit the configurable properties of the associated <em>Realm</em>.</li>

+  <li>Remove the associated <em>Realm</em>.</li>

+  <li>Create and configure a new <em>Request Filter</em> associated with

+      this object.</li>

+  <li>Select and edit the configurable properties of an

+      associated <em>Request Filter</em></li>

+  <li>Remove an associated <em>Request Filter</em>.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environment Entry"><!--()--></a><a name="Environment_Entry"><strong>Environment Entry</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Environment Entry</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Context</em> or <em>Default Context</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Host</em>, it shall be

+  possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Engine</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  <li>Create and configure a new <em>Access Logger</em> associated

+      with this object.</li>

+  <li>Edit the configurable properties of the associated <em>Access

+      Logger</em>.</li>

+  <li>Remove the associated <em>Access Logger</em>.</li>

+  <li>Create and configure a new <em>Context</em> associated with

+      this object.</li>

+  <li>Select and edit the configurable properties of an associated

+      <em>Context</em>.</li>

+  <li>Remove an associated <em>Context</em>.</li>

+  <li>Create and configure a new <em>Default Context</em> associated

+      with this object.</li>

+  <li>Edit the configurable properties of the associated <em>Default

+      Context</em>.</li>

+  <li>Remove the associated <em>Default Context</em>.</li>

+  <li>Create and configure a new <em>Realm</em> associated with

+      this object.</li>

+  <li>Edit the configurable properties of the associated <em>Realm</em>.</li>

+  <li>Remove the associated <em>Realm</em>.</li>

+  <li>Create and configure a new <em>Request Filter</em> associated with

+      this object.</li>

+  <li>Select and edit the configurable properties of an

+      associated <em>Request Filter</em></li>

+  <li>Remove an associated <em>Request Filter</em>.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC Resource"><!--()--></a><a name="JDBC_Resource"><strong>JDBC Resource</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>JDBC Resource</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Context</em> or <em>Default Context</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Loader"><strong>Loader</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Loader</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Context</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Manager</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Context</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Realm"><strong>Realm</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Realm</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Engine</em>, <em>Host</em>, or

+      <em>Context</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Filter"><!--()--></a><a name="Request_Filter"><strong>Request Filter</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Request Filter</em>, it shall

+  be possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Engine</em>, <em>Host</em>, or

+      <em>Context</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of the overall <em>Server</em>, it shall be

+  possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Edit the configurable properties of this object.</li>

+  <li>Create and configure a new <em>Service</em> associated with

+      this object.</li>

+  <li>Select and edit the configurable properties of an associated

+      <em>Service</em>.</li>

+  </ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>From the perspective of a particular <em>Service</em>, it shall be

+  possible to perform the following administrative operations:</p>

+  <ul>

+  <li>Navigate to the owning <em>Server</em>.</li>

+  <li>Edit the configurable properties of this object.</li>

+  <li>Create and configure a new <em>Connector</em> associated with

+      this object.</li>

+  <li>Select and edit the configurable properties of an associated

+      <em>Connector</em>.</li>

+  <li>Remove an associated <em>Connector</em>.</li>

+  <li>Create and configure a new <em>Engine</em> associated with

+      this object.</li>

+  <li>Edit the configurable properties of the associated <em>Engine</em>.</li>

+  <li>Remove the associated <em>Engine</em>.</li>

+  </ul>

+

+</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="/tomcat-7.0-doc/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/funcspecs/fs-admin-opers.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-default.html b/webapps/docs/funcspecs/fs-default.html
new file mode 100644
index 0000000..b37b391
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-default.html
@@ -0,0 +1,270 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - Default Servlet</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Default Servlet</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="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Initialization_Functionality">Initialization Functionality</a></li><li><a href="#Per-Request_Functionality">Per-Request Functionality</a></li><li><a href="#Finalization_Functionality">Finalization Functionality</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The purpose of the <strong>Default Servlet</strong> is to serve

+    static resources of a web application in response to client requests.

+    As the name implies, it is generally configured as the "default"

+    servlet for a web application, by being mapped to a URL pattern "/".</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following external specifications have provisions which

+    partially define the correct behavior of the default servlet:</p>

+    <ul>

+    <li><a href="http://java.sun.com/products/servlet/download.html">

+        Servlet Specification</a> (Version 2.3 PFD2)</li>

+    <li><a href="http://www.rfc-editor.org/rfc/rfc2046.txt">Multipurpose

+        Internet Mail Extensions (MIME) Part Two: Media Types</a></li>

+    <li><a href="http://www.rfc-editor.org/rfc/rfc2616.txt">Hypertext

+        Transfer Protocol -- HTTP/1.1</a></li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality shall conform to the

+    following requirements:</p>

+    <ul>

+    <li>Must be implemented as a servlet.</li>

+    <li>Must support configurable parameters for debugging detail level,

+        input buffer size, output buffer size, whether or not to produce

+        directory listings when no welcome file is present, and whether or not

+        modifications are supported via DELETE and PUT.</li>

+    <li>Log debugging and operational messages (suitably internationalized)

+        via the <code>getServletContext().log()</code> method.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following environmental dependencies must be met in order for

+    the default servlet to operate correctly:</p>

+    <ul>

+    <li>The default servlet must be registered in the application deployment

+        descriptor (or the default deployment descriptor in file

+        <code>$CATALINA_BASE/conf/web.xml</code>) using a "default servlet"

+        servlet mapping, signified by URL pattern "/".</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Correct operation of the default servlet depends on the following

+    specific features of the surrounding container:</p>

+    <ul>

+    <li>The container shall provide a servlet context attribute that

+        lists the welcome file names that have been defined for this

+        web application.</li>

+    <li>The container shall provide a servlet context attribute that

+        contains a <code>javax.naming.directory.DirContext</code>

+        implementation representing the static resources of this

+        web application.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Initialization Functionality"><!--()--></a><a name="Initialization_Functionality"><strong>Initialization Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following processing must be performed when the <code>init()</code>

+    method of the default servlet is called:</p>

+    <ul>

+    <li>Process and sanity check configuration parameters.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Per-Request Functionality"><!--()--></a><a name="Per-Request_Functionality"><strong>Per-Request Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+

+    <p>For all HTTP request methods, the resource path is determined from

+    the path information provided to this request, either as request attribute

+    <code>javax.servlet.include.path_info</code> (for a request dispatcher

+    access to a static resource) or by calling

+    <code>request.getPathInfo()</code> directly.</p>

+

+    <p>On each HTTP DELETE request processed by this servlet, the following

+    processing shall be performed:</p>

+    <ul>

+    <li>If modifications to the static resources are not allowed (set by a

+        configuration parameter), return HTTP status 403 (forbidden).</li>

+    <li>If an attempt is made to delete a resource from <code>/META-INF</code>

+        or <code>/WEB-INF</code>, return HTTP status 403 (forbidden).</li>

+    <li>If the requested resource does not exist, return HTTP status 404

+        (not found)</li>

+    <li>Unbind the resource from the directory context containing the

+        static resources for this web application.  If successful, return

+        HTTP status 204 (no content).  Otherwise, return HTTP status 405

+        (method not allowed).</li>

+    </ul>

+

+

+    <p>On each HTTP GET request processed by this servlet, the following

+    processing shall be performed:</p>

+    <ul>

+    <li>If the request is for a resource under <code>/META-INF</code> or

+        <code>/WEB-INF</code>, return HTTP status 404 (not found).</li>

+    <li>If the requested resource does not exist, return HTTP status 404

+        (not found).</li>

+    <li>If the requested resource is not a directory, but the resource

+        path ends in "/" or "\", return HTTP status 404 (not found).</li>

+    <li>If the requested resource is a directory:

+        <ul>

+        <li>If the request path does not end with "/", redirect to a

+            corresponding path with "/" appended so that relative references

+            in welcome files are resolved correctly.</li>

+        <li>If one of the specified welcome files exists, redirect to the

+            path for that welcome file so that it will be served explicitly.

+            </li>

+        </ul></li>

+    <li>If the request being processed contains an <code>If-Range</code>

+        header, perform the processing described in the HTTP/1.1 specification

+        to determine whether the client's information is up to date.</li>

+    <li>Determine the content type of the response, by looking up the

+        corresponding MIME type in our servlet context.</li>

+    <li>If the requested resource is a directory:

+        <ul>

+        <li>If directory listings are suppressed, return HTTP status 404

+            (not found).</li>

+        <li>Set the content type to <code>text/html</code>.</li>

+        </ul></li>

+    <li>Determine the range(s) to be returned, based on the existence of

+        any <code>If-Range</code> and <code>Range</code> headers.</li>

+    <li>If the requested resource is a directory, include an <code>ETag</code>

+        header in the response, with the value calculated based on the content

+        of the directory.</li>

+    <li>Include a <code>Last-Modified</code> header in the response documenting

+        the date/time that the resource was last modified.</li>

+    <li>Unless we are processing a HEAD request, include the appropriate

+        content (or content ranges) in the response.</li>

+    </ul>

+

+    <p>On each HTTP HEAD request processed by this servlet, the following

+    processing shall be performed:</p>

+    <ul>

+    <li>Processed identically to an HTTP GET request, except that the data

+        content is not transmitted after the headers.</li>

+    </ul>

+

+    <p>On each HTTP POST request processed by this servlet, the following

+    processing shall be performed:</p>

+    <ul>

+    <li>Processed identically to an HTTP GET request.</li>

+    </ul>

+

+

+    <p>On each HTTP PUT request processed by this servlet, the following

+    processing shall be performed:</p>

+    <ul>

+    <li>If modifications to the static resources are not allowed (set by a

+        configuration parameter), return HTTP status 403 (forbidden).</li>

+    <li>If an attempt is made to delete a resource from <code>/META-INF</code>

+        or <code>/WEB-INF</code>, return HTTP status 403 (forbidden).</li>

+    <li>Create a new resource from the body of this request.</li>

+    <li>Bind or rebind the specified path to the new resource (depending on

+        whether it currently exists or not).  Return HTTP status as follows:

+        <ul>

+        <li>If binding was unsuccessful, return HTTP status 409 (conflict).

+            </li>

+        <li>If binding was successful and the resource did not previously

+            exist, return HTTP status 201 (created).</li>

+        <li>If binding was successful and the resource previously existed,

+            return HTTP status 204 (no content).</li>

+        </ul></li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Finalization Functionality"><!--()--></a><a name="Finalization_Functionality"><strong>Finalization Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>No specific processing is required when the <code>destroy()</code>

+    method is called:</p>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>In addition the the assertions implied by the functionality requirements

+  listed above, the following additional assertions shall be tested to

+  validate the behavior of the default servlet:</p>

+  <ul>

+  <li>Requests for resources that do not exist in the web application must

+      return HTTP status 404 (not found).</li>

+  <li>The default servlet must operate identically for web applications that

+      are run out of a WAR file directly, or from an unpacked directory

+      structure.</li>

+  <li>If the web application is running out of an unpacked directory

+      structure, the default servlet must recognize cases where the resource

+      has been updated through external means.</li>

+  </ul>

+

+</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="/tomcat-7.0-doc/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/funcspecs/fs-default.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-jdbc-realm.html b/webapps/docs/funcspecs/fs-jdbc-realm.html
new file mode 100644
index 0000000..5c31788
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-jdbc-realm.html
@@ -0,0 +1,266 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - JDBCRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JDBCRealm</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="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Overview_of_Operation">Overview of Operation</a></li><li><a href="#Detailed_Functional_Requirements">Detailed Functional Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The purpose of the <strong>JDBCRealm</strong> implementation is to

+    provide a mechanism by which Tomcat can acquire information needed

+    to authenticate web application users, and define their security roles,

+    from a relational database accessed via JDBC APIs.  For integration

+    with Catalina, the resulting class(es) must implement the

+    <code>org.apache.catalina.Realm</code> interface.</p>

+

+    <p>This specification reflects a combination of functionality that is

+    already present in the <code>org.apache.catalina.realm.JDBCRealm</code>

+    class, as well as requirements for enhancements that have been

+    discussed.  Where appropriate, requirements statements are marked

+    <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p>

+

+    <p>The current status of this functional specification is

+    <strong>PROPOSED</strong>.  It has not yet been discussed and

+    agreed to on the TOMCAT-DEV mailing list.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality depends on the following

+    external specifications:</p>

+    <ul>

+    <li><a href="http://java.sun.com/products/jdbc/">Java Database

+        Connectivity</a> (version 2.0 or later)</li>

+    <li><a href="http://java.sun.com/products/jdbc/">Java Database

+        Connectivity Optional Package</a> (version 2.0 or later)</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality shall conform to the

+    following requirements:</p>

+    <ul>

+    <li>Be realized in one or more implementation classes.</li>

+    <li>Implement the <code>org.apache.catalina.Realm</code> interface.

+        [Current]</li>

+    <li>Implement the <code>org.apache.catalina.Lifecycle</code>

+        interface.  [Current]</li>

+    <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code>

+        base class.</li>

+    <li>Live in the <code>org.apache.catalina.realm</code> package.

+        [Current]</li>

+    <li>Support a configurable debugging detail level. [Current]</li>

+    <li>Log debugging and operational messages (suitably internationalized)

+        via the <code>getContainer().log()</code> method. [Current]</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following environmental dependencies must be met in order for

+    JDBCRealm to operate correctly:</p>

+    <ul>

+    <li>The desire to utilize JDBCRealm must be registered in

+        <code>$CATALINA_BASE/conf/server.xml</code>, in a

+        <code>&lt;Realm&gt;</code> element that is nested inside a

+        corresponding <code>&lt;Engine&gt;</code>, <code>&lt;Host&gt;</code>,

+        or <code>&lt;Context&gt;</code> element.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Correct operation of JDBCRealm depends on the following

+    specific features of the surrounding container:</p>

+    <ul>

+    <li>Interactions with <code>JDBCRealm</code> will be initiated by

+        the appropriate <code>Authenticator</code> implementation, based

+        on the login method that is selected.</li>

+    <li><code>JDBCRealm</code> must have the JDBC standard API classes

+        available to it.  For a JDK 1.2 or later container, these APIs

+        are included in the standard platform.</li>

+    <li>When connection pooling is implemented, <code>JDBCRealm</code>

+        must have the JDBC Optional Package (version 2.0 or later) APIs

+        available to it.  This library is available as a separate

+        download (and will be included in Tomcat binary distributions).</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview of Operation"><!--()--></a><a name="Overview_of_Operation"><strong>Overview of Operation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The main purpose of <code>JDBCRealm</code> is to allow Catalina to

+    authenticate users, and look up the corresponding security roles, from

+    the information found in a relational database accessed via JDBC APIs.

+    For maximum flexibility, the details of how this is done (for example,

+    the names of the required tables and columns) should be configurable.</p>

+

+    <p>Each time that Catalina needs to authenticate a user, it will call

+    the <code>authenticate()</code> method of this Realm implementation,

+    passing the username and password that were specified by the user.  If

+    we find the user in the database (and match on the password), we accumulate

+    all of the security roles that are defined for this user, and create a

+    new <code>GenericPrincipal</code> object to be returned.  If the user

+    is not authenticated, we return <code>null</code> instead.  The

+    <code>GenericUser</code> object caches the set of security roles that

+    were owned by this user at the time of authentication, so that calls to

+    <code>isUserInRole()</code> can be answered without going back to the

+    database every time.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Detailed Functional Requirements"><!--()--></a><a name="Detailed_Functional_Requirements"><strong>Detailed Functional Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+

+    <h3>Configurable Properties</h3>

+

+    <p>The implementation shall support the following properties

+    that can be configured with JavaBeans property setters:</p>

+    <ul>

+    <li>Configuration parameters defining the JDBC driver to use, the

+        database connection URL to be accessed, and the username/password

+        to use for logging in. [Current]</li>

+    <li>Configuration parameters describing the connection pool to be

+        created to support simultaneous authentications. [Requested]</li>

+    <li>Name of the tables to be searched for users and roles. [Current]</li>

+    <li>Name of the columns to be used for usernames, passwords, and

+        role names.  [Current]</li>

+    </ul>

+

+    <h3>Lifecycle Functionality</h3>

+

+    <p>The following processing must be performed when the <code>start()</code>

+    method is called:</p>

+    <ul>

+    <li>Establish a connection to the configured database, using the

+        configured username and password.  [Current]</li>

+    <li>Configure and establish a connection pool of connections to the

+        database.  [Requested]</li>

+    </ul>

+

+    <p>The following processing must be performed when the <code>stop()</code>

+    method is called:</p>

+    <ul>

+    <li>Close any opened connections to the database.</li>

+    </ul>

+

+

+    <h3>Method authenticate() Functionality</h3>

+

+    <p>When <code>authenticate()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>Acquire the one and only connection [Current] or acquire a connection

+        from the connection pool [Requested].</li>

+    <li>Select the one and only row from the user's table for this user,

+        and retrieve the corresponding password column.  If zero rows (or

+        more than one row) are found, return <code>null</code>.</li>

+    <li>Authenticate the user by comparing the (possibly encrypted) password

+        value that was received against the password presented by the user.

+        If there is no match, return <code>null</code>.</li>

+    <li>Acquire a <code>List</code> of the security roles assigned to the

+        authenticated user by selecting from the roles table.</li>

+    <li>Construct a new instance of class

+        <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as

+        constructor arguments:  this realm instance, the authenticated

+        username, and a <code>List</code> of the security roles associated

+        with this user.</li>

+    <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous

+        <code>GenericPrincipal</code> objects for a particular user, because

+        the information in the directory server might have changed since the

+        last time this user was authenticated.</li>

+    <li>Return the newly constructed <code>GenericPrincipal</code>.</li>

+    </ul>

+

+

+    <h3>Method hasRole() Functionality</h3>

+

+    <p>When <code>hasRole()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>The <code>principal</code> that is passed as an argument SHOULD

+        be one that we returned (instanceof class

+        <code>org.apache.catalina.realm.GenericPrincipal</code>, with a

+        <code>realm</code> property that is equal to our instance.</li>

+    <li>If the passed <code>principal</code> meets these criteria, check

+        the specified role against the list returned by

+        <code>getRoles()</code>, and return <code>true</code> if the

+        specified role is included; otherwise, return <code>false</code>.</li>

+    <li>If the passed <code>principal</code> does not meet these criteria,

+        return <code>false</code>.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>In addition the the assertions implied by the functionality requirements

+  listed above, the following additional assertions shall be tested to

+  validate the behavior of <code>JDBCRealm</code>:</p>

+  <ul>

+  </ul>

+

+</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="/tomcat-7.0-doc/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/funcspecs/fs-jdbc-realm.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-jndi-realm.html b/webapps/docs/funcspecs/fs-jndi-realm.html
new file mode 100644
index 0000000..a41c61d
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-jndi-realm.html
@@ -0,0 +1,417 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - JNDIRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JNDIRealm</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="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Operational_Modes">Operational Modes</a></li><li><a href="#Administrator_Login_Mode_Functionality">Administrator Login Mode Functionality</a></li><li><a href="#Username_Login_Mode_Functionality">Username Login Mode Functionality</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The purpose of the <strong>JNDIRealm</strong> implementation is to

+    provide a mechanism by which Tomcat can acquire information needed

+    to authenticate web application users, and define their security roles,

+    from a directory server or other service accessed via JNDI APIs.  For

+    integration with Catalina, this class must implement the

+    <code>org.apache.catalina.Realm</code> interface.</p>

+

+    <p>This specification reflects a combination of functionality that is

+    already present in the <code>org.apache.catalina.realm.JNDIRealm</code>

+    class, as well as requirements for enhancements that have been

+    discussed.  Where appropriate, requirements statements are marked

+    <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p>

+

+    <p>The current status of this functional specification is

+    <strong>PROPOSED</strong>.  It has not yet been discussed and

+    agreed to on the TOMCAT-DEV mailing list.</p>

+

+    <p>The code in the current version of <code>JNDIRealm</code>, and the

+    ideas expressed in this functional specification, are the results of

+    contributions from many individuals, including (alphabetically):</p>

+    <ul>

+    <li>Holman, John &lt;j.g.holman@qmw.ac.uk&gt;</li>

+    <li>Lockhart, Ellen &lt;elockhart@home.com&gt;</li>

+    <li>McClanahan, Craig &lt;craigmcc@apache.org&gt;</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality depends on the following

+    external specifications:</p>

+    <ul>

+    <li><a href="http://java.sun.com/products/jndi/">Java Naming and

+        Directory Interface</a> (version 1.2.1 or later)</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality shall conform to the

+    following requirements:</p>

+    <ul>

+    <li>Be realized in one or more implementation classes.</li>

+    <li>Implement the <code>org.apache.catalina.Realm</code> interface.

+        [Current]</li>

+    <li>Implement the <code>org.apache.catalina.Lifecycle</code>

+        interface.  [Current]</li>

+    <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code>

+        base class.</li>

+    <li>Live in the <code>org.apache.catalina.realm</code> package.

+        [Current]</li>

+    <li>Support a configurable debugging detail level. [Current]</li>

+    <li>Log debugging and operational messages (suitably internationalized)

+        via the <code>getContainer().log()</code> method. [Current]</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following environmental dependencies must be met in order for

+    JNDIRealm to operate correctly:</p>

+    <ul>

+    <li>The desire to utilize JNDIRealm must be registered in

+        <code>$CATALINA_BASE/conf/server.xml</code>, in a

+        <code>&lt;Realm&gt;</code> element that is nested inside a

+        corresponding <code>&lt;Engine&gt;</code>, <code>&lt;Host&gt;</code>,

+        or <code>&lt;Context&gt;</code> element.</li>

+    <li>If the <em>Administrator Login</em> operational mode is selected,

+        the configured administrator username and password must be configured

+        in the corresponding directory server.</li>

+    <li>If the <em>Username Login</em> operational mode is selected,

+        the corresponding directory server must be configured to accept

+        logins with the username and password that will be passed to

+        <code>JNDIRealm</code> by the appropriate <code>Authenticator</code>.

+        </li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Correct operation of JNDIRealm depends on the following

+    specific features of the surrounding container:</p>

+    <ul>

+    <li>Interactions with <code>JNDIRealm</code> will be initiated by

+        the appropriate <code>Authenticator</code> implementation, based

+        on the login method that is selected.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Operational Modes"><!--()--></a><a name="Operational_Modes"><strong>Operational Modes</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The completed <code>JNDIRealm</code> must support two major operational

+    modes in order to support all of the required use cases.  For the purposes

+    of this document, the modes are called <em>administrator login</em> and

+    <em>Username Login</em>.  They are described further in the following

+    paragraphs.</p>

+

+    <p>For <em>Administrator Login</em> mode, <code>JNDIRealm</code> will be

+    configured to establish one or more connections (using a connection pool)

+    to an appropriate directory server, using JNDI APIs, under a "system

+    administrator" username and password.  This is similar to the approach

+    normally used to configure <code>JDBCRealm</code> to access authentication

+    and access control information in a database.  It is assumed that the

+    system administrator username and password that are configured provide

+    sufficient privileges within the directory server to read (but not modify)

+    the username, password, and assigned roles for each valid user of the

+    web application associated with this <code>Realm</code>.  The password

+    can be stored in cleartext, or in one of the digested modes supported by

+    the <code>org.apache.catalina.realm.RealmBase</code> base class.</p>

+

+    <p>For <em>Username Login</em> mode, <code>JNDIRealm</code> does not

+    normally remain connected to the directory server.  Instead, whenever a

+    user is to be authenticated, a connection to the directory server

+    (using the username and password received from the authenticator) is

+    attempted.  If this connection is successful, the user is assumed to be

+    successfully authenticated.  This connection is then utilized to read

+    the corresponding security roles associated with this user, and the

+    connection is then broken.</p>

+

+    <p><strong>NOTE</strong> - <em>Username Login</em> mode cannot be used

+    if you have selected login method <code>DIGEST</code> in your web

+    application deployment descriptor (<code>web.xml</code>) file.  This

+    restriction exists because the cleartext password is never available

+    to the container, so it is not possible to bind to the directory server

+    using the user's username and password.</p>

+

+    <p>Because these operational modes work so differently, the functionality

+    for each mode will be described separately.  Whether or not both modes

+    are actually supported by a single class (versus a class per mode) is

+    an implementation detail left to the designer.</p>

+

+    <p><strong>NOTE</strong> - The current implementation only implements

+    part of the <em>Administrator Lookup</em> mode requirements.  It does

+    not support the <em>Username Lookup</em> mode at all, at this point.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Administrator Login Mode Functionality"><!--()--></a><a name="Administrator_Login_Mode_Functionality"><strong>Administrator Login Mode Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+

+    <h3>Configurable Properties</h3>

+

+    <p>The implementation shall support the following properties

+    that can be configured with JavaBeans property setters:</p>

+    <ul>

+    <li><code>connectionURL</code> - URL of the directory server we will

+        be contacting.</li>

+    <li><code>contextFactory</code> - Fully qualified class name of the JNDI

+        context factory used to retrieve our InitialContext.

+        [com.sun.jndi.ldap.LdapCtxFactory]</li>

+    <li>Additional configuration properties required to establish the

+        appropriate connection.  [Requested]</li>

+    <li>Connection pool configuration properties.  [Requested]</li>

+    <li>Configuration properties defining how a particular user is

+        authenticated.  The following capabilities should be supported:

+        <ul>

+        <li>Substitute the specified username into a string.  [Requested]</li>

+        <li>Retrieve the distinguished name (DN) of an authorized user via an

+            LDAP search string with a replacement placeholder for the

+            username, and comparison of the password to a configurable

+            attribute retrieved from the search result.  [Current]</li>

+        </ul></li>

+    <li>Configuration properties defining how the roles associated with a

+        particular authenticated user can be retrieved.  The following

+        approaches should be supported:

+        <ul>

+        <li>Retrieve a specified attribute (possibly multi-valued)

+            from an LDAP search expression,

+            with a replacement placeholder for the DN of the user.

+            [Current]</li>

+        <li>Retrieve a set of role names that are defined implicitly (by

+            selecting principals that match a search pattern) rather than

+            explicitly (by finding a particular attribute value).

+            [Requested]</li>

+        </ul></li>

+    </ul>

+

+    <h3>Lifecycle Functionality</h3>

+

+    <p>The following processing must be performed when the <code>start()</code>

+    method is called:</p>

+    <ul>

+    <li>Establish a connection to the configured directory server, using the

+        configured system administrator username and password.  [Current]</li>

+    <li>Configure and establish a connection pool of connections to the

+        directory server.  [Requested]</li>

+    </ul>

+

+    <p>The following processing must be performed when the <code>stop()</code>

+    method is called:</p>

+    <ul>

+    <li>Close any opened connections to the directory server.</li>

+    </ul>

+

+

+    <h3>Method authenticate() Functionality</h3>

+

+    <p>When <code>authenticate()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>Acquire the one and only connection [Current] or acquire a connection

+        from the connection pool [Requested].</li>

+    <li>Authenticate the user by retrieving the user's Distinguished Name,

+        based on the specified username and password.</li>

+    <li>If the user was not authenticated, release the allocated connection

+        and return <code>null</code>.</li>

+    <li>Acquire a <code>List</code> of the security roles assigned to the

+        authenticated user.</li>

+    <li>Construct a new instance of class

+        <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as

+        constructor arguments:  this realm instance, the authenticated

+        username, and a <code>List</code> of the security roles associated

+        with this user.</li>

+    <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous

+        <code>GenericPrincipal</code> objects for a particular user, because

+        the information in the directory server might have changed since the

+        last time this user was authenticated.</li>

+    <li>Return the newly constructed <code>GenericPrincipal</code>.</li>

+    </ul>

+

+

+    <h3>Method hasRole() Functionality</h3>

+

+    <p>When <code>hasRole()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>The <code>principal</code> that is passed as an argument SHOULD

+        be one that we returned (instanceof class

+        <code>org.apache.catalina.realm.GenericPrincipal</code>, with a

+        <code>realm</code> property that is equal to our instance.</li>

+    <li>If the passed <code>principal</code> meets these criteria, check

+        the specified role against the list returned by

+        <code>getRoles()</code>, and return <code>true</code> if the

+        specified role is included; otherwise, return <code>false</code>.</li>

+    <li>If the passed <code>principal</code> does not meet these criteria,

+        return <code>false</code>.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Username Login Mode Functionality"><!--()--></a><a name="Username_Login_Mode_Functionality"><strong>Username Login Mode Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+    <h3>Configurable Properties</h3>

+

+    <p>The implementation shall support the following properties

+    that can be configured with JavaBeans property setters:</p>

+    <ul>

+    <li><code>connectionURL</code> - URL of the directory server we will

+        be contacting.</li>

+    <li><code>contextFactory</code> - Fully qualified class name of the JNDI

+        context factory used to retrieve our InitialContext.

+        [com.sun.jndi.ldap.LdapCtxFactory]</li>

+    <li>Additional configuration properties required to establish the

+        appropriate connection.  [Requested]</li>

+    <li>Connection pool configuration properties.  [Requested]</li>

+    <li>Configuration properties defining if and how a user might be looked

+        up before binding to the directory server.  The following approaches

+        should be supported:

+        <ul>

+        <li>No previous lookup is required - username specified by the user

+            is the same as that used to authenticate to the directory

+            server.</li>

+        <li>Substitute the specified username into a string.</li>

+        <li>Search the directory server based on configured criteria to

+            retrieve the distinguished name of the user, then attempt to

+            bind with that distinguished name.</li>

+        </ul></li>

+    <li>Configuration properties defining how the roles associated with a

+        particular authenticated user can be retrieved.  The following

+        approaches should be supported:

+        <ul>

+        <li>Retrieve a specified attribute (possibly multi-valued)

+            from an LDAP search expression,

+            with a replacement placeholder for the DN of the user.

+            [Current]</li>

+        </ul></li>

+    </ul>

+

+    <h3>Lifecycle Functionality</h3>

+

+    <p>The following processing must be performed when the <code>start()</code>

+    method is called:</p>

+    <ul>

+    <li>None required.</li>

+    </ul>

+

+    <p>The following processing must be performed when the <code>stop()</code>

+    method is called:</p>

+    <ul>

+    <li>None required.</li>

+    </ul>

+

+

+    <h3>Method authenticate() Functionality</h3>

+

+    <p>When <code>authenticate()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>Attempt to bind to the directory server, using the username and

+        password provided by the user.</li>

+    <li>If the user was not authenticated, release the allocated connection

+        and return <code>null</code>.</li>

+    <li>Acquire a <code>List</code> of the security roles assigned to the

+        authenticated user.</li>

+    <li>Construct a new instance of class

+        <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as

+        constructor arguments:  this realm instance, the authenticated

+        username, and a <code>List</code> of the security roles associated

+        with this user.</li>

+    <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous

+        <code>GenericPrincipal</code> objects for a particular user, because

+        the information in the directory server might have changed since the

+        last time this user was authenticated.</li>

+    <li>Return the newly constructed <code>GenericPrincipal</code>.</li>

+    </ul>

+

+

+    <h3>Method hasRole() Functionality</h3>

+

+    <p>When <code>hasRole()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>The <code>principal</code> that is passed as an argument SHOULD

+        be one that we returned (instanceof class

+        <code>org.apache.catalina.realm.GenericPrincipal</code>, with a

+        <code>realm</code> property that is equal to our instance.</li>

+    <li>If the passed <code>principal</code> meets these criteria, check

+        the specified role against the list returned by

+        <code>getRoles()</code>, and return <code>true</code> if the

+        specified role is included; otherwise, return <code>false</code>.</li>

+    <li>If the passed <code>principal</code> does not meet these criteria,

+        return <code>false</code>.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>In addition the the assertions implied by the functionality requirements

+  listed above, the following additional assertions shall be tested to

+  validate the behavior of <code>JNDIRealm</code>:</p>

+  <ul>

+  </ul>

+

+</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="/tomcat-7.0-doc/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/funcspecs/fs-jndi-realm.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-memory-realm.html b/webapps/docs/funcspecs/fs-memory-realm.html
new file mode 100644
index 0000000..9d9b7bb
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-memory-realm.html
@@ -0,0 +1,253 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - MemoryRealm</title><meta name="author" content="Craig McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>MemoryRealm</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="#Overview">Overview</a><ol><li><a href="#Introduction">Introduction</a></li><li><a href="#External_Specifications">External Specifications</a></li><li><a href="#Implementation_Requirements">Implementation Requirements</a></li></ol></li><li><a href="#Dependencies">Dependencies</a><ol><li><a href="#Environmental_Dependencies">Environmental Dependencies</a></li><li><a href="#Container_Dependencies">Container Dependencies</a></li></ol></li><li><a href="#Functionality">Functionality</a><ol><li><a href="#Overview_of_Operation">Overview of Operation</a></li><li><a href="#Detailed_Functional_Requirements">Detailed Functional Requirements</a></li></ol></li><li><a href="#Testable_Assertions">Testable Assertions</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The purpose of the <strong>MemoryRealm</strong> implementation is to

+    provide a mechanism by which Tomcat can acquire information needed

+    to authenticate web application users, and define their security roles,

+    from a simple text-based configuration file in XML format.  This is

+    intended to simplify the initial installation and operation of Tomcat,

+    without the complexity of configuring a database or directory server

+    based Realm.  It is not intended for production use.</p>

+

+    <p>This specification reflects a combination of functionality that is

+    already present in the <code>org.apache.catalina.realm.MemoryRealm</code>

+    class, as well as requirements for enhancements that have been

+    discussed.  Where appropriate, requirements statements are marked

+    <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p>

+

+    <p>The current status of this functional specification is

+    <strong>PROPOSED</strong>.  It has not yet been discussed and

+    agreed to on the TOMCAT-DEV mailing list.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality depends on the following

+    external specifications:</p>

+    <ul>

+    <li>None</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Implementation Requirements"><!--()--></a><a name="Implementation_Requirements"><strong>Implementation Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The implementation of this functionality shall conform to the

+    following requirements:</p>

+    <ul>

+    <li>Be realized in one or more implementation classes.</li>

+    <li>Implement the <code>org.apache.catalina.Realm</code> interface.

+        [Current]</li>

+    <li>Implement the <code>org.apache.catalina.Lifecycle</code>

+        interface.  [Current]</li>

+    <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code>

+        base class.</li>

+    <li>Live in the <code>org.apache.catalina.realm</code> package.

+        [Current]</li>

+    <li>Support a configurable debugging detail level. [Current]</li>

+    <li>Log debugging and operational messages (suitably internationalized)

+        via the <code>getContainer().log()</code> method. [Current]</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Dependencies"><strong>Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environmental Dependencies"><!--()--></a><a name="Environmental_Dependencies"><strong>Environmental Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The following environmental dependencies must be met in order for

+    MemoryRealm to operate correctly:</p>

+    <ul>

+    <li>The desire to utilize MemoryRealm must be registered in

+        <code>$CATALINA_BASE/conf/server.xml</code>, in a

+        <code>&lt;Realm&gt;</code> element that is nested inside a

+        corresponding <code>&lt;Engine&gt;</code>, <code>&lt;Host&gt;</code>,

+        or <code>&lt;Context&gt;</code> element.  (This is already

+        included in the default <code>server.xml</code> file.)</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Correct operation of MemoryRealm depends on the following

+    specific features of the surrounding container:</p>

+    <ul>

+    <li>Interactions with <code>MemoryRealm</code> will be initiated by

+        the appropriate <code>Authenticator</code> implementation, based

+        on the login method that is selected.</li>

+    <li><code>MemoryRealm</code> must have an XML parser compatible with

+        the JAXP/1.1 APIs available to it.  This is normally accomplished

+        by placing the corresponding JAR files in directory

+        <code>$CATALINA_HOME/lib</code>.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Functionality"><strong>Functionality</strong></a></font></td></tr><tr><td><blockquote>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview of Operation"><!--()--></a><a name="Overview_of_Operation"><strong>Overview of Operation</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>The main purpose of <code>MemoryRealm</code> is to allow Catalina to

+    authenticate users, and look up the corresponding security roles, from

+    the information found in an XML-format configuration file.  The format

+    of this file is described below.  When a <code>MemoryRealm</code>

+    instance is started, it will read the contents of this XML file and create

+    an "in memory database" of all the valid users and their associated

+    security roles.</p>

+

+    <p>Each time that Catalina needs to authenticate a user, it will call

+    the <code>authenticate()</code> method of this Realm implementation,

+    passing the username and password that were specified by the user.  If

+    we find the user in the database (and match on the password), we accumulate

+    all of the security roles that are defined for this user, and create a

+    new <code>GenericPrincipal</code> object to be returned.  If the user

+    is not authenticated, we return <code>null</code> instead.  The

+    <code>GenericUser</code> object caches the set of security roles that

+    were owned by this user at the time of authentication, so that calls to

+    <code>isUserInRole()</code> can be answered without going back to the

+    database every time.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Detailed Functional Requirements"><!--()--></a><a name="Detailed_Functional_Requirements"><strong>Detailed Functional Requirements</strong></a></font></td></tr><tr><td><blockquote>

+

+

+    <h3>Configurable Properties</h3>

+

+    <p>The implementation shall support the following properties

+    that can be configured with JavaBeans property setters:</p>

+    <ul>

+    <li>Configurable debugging detail level.</li>

+    <li>Configurable file pathname (absolute or relative to

+        <code>$CATALINA_BASE</code> of the XML file containing our

+        defined users.  [<code>conf/tomcat-users.xml</code>].</li>

+    </ul>

+

+    <h3>Lifecycle Functionality</h3>

+

+    <p>The following processing must be performed when the <code>start()</code>

+    method is called:</p>

+    <ul>

+    <li>Open and parse the specified XML file.</li>

+    <li>Create an in-memory database representation of the XML file

+        contents.</li>

+    <li><strong>NOTE</strong> - There is no requirement to recognize

+        subsequent changes to the contents of the XML file.</li>

+    </ul>

+

+    <p>The following processing must be performed when the <code>stop()</code>

+    method is called:</p>

+    <ul>

+    <li>Release object references to the in-memory database representation.</li>

+    </ul>

+

+

+    <h3>Method authenticate() Functionality</h3>

+

+    <p>When <code>authenticate()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>Select the one and only "user" instance from the in-memory database,

+        based on matching the specified username.  If there is no such

+        instance, return <code>null</code>.</li>

+    <li>Authenticate the user by comparing the (possibly encrypted) password

+        value that was received against the password presented by the user.

+        If there is no match, return <code>null</code>.</li>

+    <li>Construct a new instance of class

+        <code>org.apache.catalina.realm.GenericPrincipal</code> (if not

+        already using this as the internal database representation) that

+        contains the authenticated username and a <code>List</code> of the

+        security roles associated with this user.</li>

+    <li>Return the newly constructed <code>GenericPrincipal</code>.</li>

+    </ul>

+

+

+    <h3>Method hasRole() Functionality</h3>

+

+    <p>When <code>hasRole()</code> is called, the following processing

+    is required:</p>

+    <ul>

+    <li>The <code>principal</code> that is passed as an argument SHOULD

+        be one that we returned (instanceof class

+        <code>org.apache.catalina.realm.GenericPrincipal</code>, with a

+        <code>realm</code> property that is equal to our instance.</li>

+    <li>If the passed <code>principal</code> meets these criteria, check

+        the specified role against the list returned by

+        <code>getRoles()</code>, and return <code>true</code> if the

+        specified role is included; otherwise, return <code>false</code>.</li>

+    <li>If the passed <code>principal</code> does not meet these criteria,

+        return <code>false</code>.</li>

+    </ul>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>In addition the the assertions implied by the functionality requirements

+  listed above, the following additional assertions shall be tested to

+  validate the behavior of <code>MemoryRealm</code>:</p>

+  <ul>

+  </ul>

+

+</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="/tomcat-7.0-doc/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/funcspecs/fs-memory-realm.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/index.html b/webapps/docs/funcspecs/index.html
new file mode 100644
index 0000000..90469c3
--- /dev/null
+++ b/webapps/docs/funcspecs/index.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</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="Catalina Functional Specifications"><!--()--></a><a name="Catalina_Functional_Specifications"><strong>Catalina Functional Specifications</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>This documentation area includes <em>functional specifications</em> for

+many features supported by the <strong>Catalina</strong> servlet container

+portion of Tomcat.  In most cases, these features are not documented in the

+underlying Servlet or JSP specifications, so a definition of the expected

+correct behavior is important both to implementors of those features, and to

+test writers trying to decide what to test.</p>

+

+<p>The functional specifications are divided into the following categories

+in the menu (to the left):</p>

+<ul>

+<li><em>Administrative Apps</em> - Overall requirements for supporting an

+    ability to configure and operate a Tomcat installation through tools,

+    as well as detailed requirements for the tools themselves.</li>

+<li><em>Internal Servlets</em> - Requirements for Catalina features that are

+    implemented as internal, container-managed, servlets.</li>

+<li><em>Realm Implementations</em> - Requirements for the implementations of

+    the <code>org.apache.catalina.Realm</code> interface (providing access to

+    collections of users, passwords and roles) that are included in the

+    standard Tomcat distribution.</li>

+</ul>

+

+<p><em>NOTE</em> - In some cases, the contents of these functional specs has

+been "reverse engineered" from existing implementations.  This exercise is

+still useful, because it provides an introduction to <strong>what</strong>

+Catalina does, without being as concerned with <strong>how</strong> this is

+accomplished.</p>

+

+<p><strong>TODO</strong> - Obviously, this area has a long ways to go before

+it is complete.  Contributions are welcome!</p>

+

+</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="/tomcat-7.0-doc/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/funcspecs/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/mbean-names.html b/webapps/docs/funcspecs/mbean-names.html
new file mode 100644
index 0000000..7c502e7
--- /dev/null
+++ b/webapps/docs/funcspecs/mbean-names.html
@@ -0,0 +1,756 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - Tomcat MBean Names</title><meta name="author" content="Craig McClanahan"><meta name="author" content="Amy Roh"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="

+      Catalina Functional Specifications

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Functional Specs</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>Administrative Apps</strong></p><ul><li><a href="fs-admin-apps.html">Overall Requirements</a></li><li><a href="mbean-names.html">Tomcat MBean Names</a></li><li><a href="fs-admin-objects.html">Administered Objects</a></li><li><a href="fs-admin-opers.html">Supported Operations</a></li></ul><p><strong>Internal Servlets</strong></p><ul><li><a href="fs-default.html">Default Servlet</a></li></ul><p><strong>Realm Implementations</strong></p><ul><li><a href="fs-jdbc-realm.html">JDBC Realm</a></li><li><a href="fs-jndi-realm.html">JNDI Realm</a></li><li><a href="fs-memory-realm.html">Memory Realm</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat MBean Names</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="#Catalina_Object_Hierarchy">Catalina Object Hierarchy</a></li><li><a href="#MBean_Groups_and_Names">MBean Groups and Names</a></li><li><a href="#JSR-77_Cross_Reference">JSR-77 Cross Reference</a></li><li><a href="#JSR-88_Cross_Reference">JSR-88 Cross Reference</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>We will be using <em>JMX MBeans</em> as the technology for

+    implementing manageability of Tomcat.</p>

+

+    <p>One of the key concepts of JMX (and JSR-77) is that each management

+    bean has a unique name in the MBeanServer's registry, and that

+    management applications can utilize these names to retrieve the MBean

+    of interest to them for a particular management operation.

+    This document proposes a naming convention for MBeans that allows easy

+    calculation of the name for a particular MBean.  For background

+    information on JMX MBean names, see the <em>Java Management Extensions

+    Instrumentation and Agent Specification</em>, version 1.0, section 6.

+    In particular, we will be discussing the String Representation of

+    <code>ObjectName</code> instances.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Catalina Object Hierarchy"><!--()--></a><a name="Catalina_Object_Hierarchy"><strong>Catalina Object Hierarchy</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Tomcat's servlet container implementation, called Catalina, can be

+represented as a hierarchy of objects that contain references to each other.

+The object hierarchy can be represented as a tree, or (isomorphically) based

+on the nesting of configuration elements in the <code>conf/server.xml</code>

+file that is traditionally used to configure Tomcat stand-alone.</p>

+

+<p>The valid component nestings for Catalina are depicted in the following

+table, with columns that contain the following values:</p>

+<ul>

+<li><em>Pattern</em> - Nesting pattern of XML elements (in the

+    <code>conf/server.xml</code> file) used to configure this component.</li>

+<li><em>Cardinality</em> - Minimum and maximum number of occurrences of

+    this element at this nesting position, which also corresponds to the

+    minimum and maximum number of Catalina components.</li>

+<li><em>Identifier</em> - Name of the JavaBeans property of this component

+    that represents the unique identifier (within the nested hierarchy),

+    if any.</li>

+<li><em>MBean ObjectName</em> - The portion of the MBean object name that

+    appears <strong>after</strong> the domain name.  For now, it should be

+    assumed that all of these MBeans appear in the default JMX domain.</li>

+</ul>

+

+<p>In the <em>MBean ObjectName</em> descriptions, several types of symbolic

+expressions are utilized to define variable text that is replaced by

+corresponding values:</p>

+<ul>

+<li><em>${GROUP}</em> - One of the standard MBean names of the specified

+    "group" category.  For example, the expression <code>${REALM}</code>

+    represents the values like <code>JDBCRealm</code> and <code>JAASRealm</code>

+    that identify the various MBeans for possible <code>Realm</code> components.</li>

+<li><em>${name}</em> - Replaced by the value of property <code>name</code>

+    from the current component.</li>

+<li><em>${parent.name}</em> - Replaced by the value of property

+    <code>name</code> from a parent of the current component, with the

+    parent's type identified by <em>parent</em>.</li>

+<li><em>${###}</em> - An arbitrary numeric identifier that preserves

+    order but has no other particular meaning.  In general, the server will

+    assign numeric values to existing instances with large gaps into which

+    new items can be configured if desired.</li>

+</ul>

+

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Pattern</th>

+    <th align="center" bgcolor="aqua">Cardinality</th>

+    <th align="center" bgcolor="aqua">Identifier</th>

+    <th align="center" bgcolor="aqua">MBean ObjectName</th>

+  </tr>

+

+  <tr>

+    <td>Server</td>

+    <td align="center">1..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${SERVER}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Listener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${LISTENER}, sequence=${###}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service</td>

+    <td align="center">1..n</td>

+    <td align="center"><code>name</code></td>

+    <td><code>type=${SERVICE}, name=${name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Connector</td>

+    <td align="center">1..n</td>

+    <td align="center"><code>address, port</code></td>

+    <td><code>type=${CONNECTOR}, service=${service}, port=${port},

+        address=${address}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Connector / Factory</td>

+    <td align="center">0..1</td>

+    <td align="center">(none)</td>

+    <td>(Only defined explicitly for an SSL connector, but can be treated

+        as part of the connector component)</td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Connector / Listener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${LISTENER}, sequence=${###}, service=${service},

+        port=${connector.port}, address=${connector.address}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine</td>

+    <td align="center">1..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${ENGINE}, service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host</td>

+    <td align="center">1..n</td>

+    <td align="center"><code>name</code></td>

+    <td><code>type=${HOST}, host=${name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context</td>

+    <td align="center">1..n</td>

+    <td align="center"><code>path</code></td>

+    <td><code>type=${CONTEXT}, context=${name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / InstanceListener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${INSTANCE-LISTENER}, sequence=${###},

+        context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / Listener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${LISTENER}, sequence=${###}, context=${context.name},

+        host=${host.name}, service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / Loader</td>

+    <td align="center">0..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${LOADER}, context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / Manager</td>

+    <td align="center">0..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${MANAGER}, context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / Realm</td>

+    <td align="center">0..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${REALM}, context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / Resources</td>

+    <td align="center">0..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${RESOURCES}, context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / Valve</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${VALVE}, sequence=${###}, context=${context.name},

+        host=${host.name}, service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / Wrapper</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>j2eeType=Servlet,name=${name},

+        WebModule=//${host.name}/${context.name},

+        J2EEApplication=${context.J2EEApplication},

+        J2EEServer=${context.J2EEServer}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / WrapperLifecycle</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${WRAPPER-LIFECYCLE}, sequence=${###},

+        context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Context / WrapperListener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${WRAPPER-LISTENER}, sequence=${###},

+        context=${context.name}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Listener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${LISTENER}, sequence=${###}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Realm</td>

+    <td align="center">0..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${REALM}, host=${host.name},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Host / Valve</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${VALVE}, sequence=${###},

+        host=${host.name}, service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Listener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${LISTENER}, sequence=${###}</code>

+        (<strong>FIXME</strong> - disambiguate from Server / Service /

+        Listener)</td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Realm</td>

+    <td align="center">0..1</td>

+    <td align="center">(none)</td>

+    <td><code>type=${REALM}, service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Engine / Valve</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${VALVE}, sequence=${###},

+        service=${service.name}</code></td>

+  </tr>

+

+  <tr>

+    <td>Server / Service / Listener</td>

+    <td align="center">0..n</td>

+    <td align="center">(none)</td>

+    <td><code>type=${LISTENER}, sequence=${###}</code>

+        (<strong>FIXME</strong> - disambiguate from Server / Service /

+        Engine / Listener)</td>

+  </tr>

+

+</table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="MBean Groups and Names"><!--()--></a><a name="MBean_Groups_and_Names"><strong>MBean Groups and Names</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The following MBean names shall be defined in the resource file

+<code>/org/apache/catalina/mbeans/mbeans-descriptors.xml</code> (and

+therefore available for use within the Administration/Configuration

+web application for Tomcat):</p>

+

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">MBean Name</th>

+    <th align="center" bgcolor="aqua">Group Name</th>

+    <th align="center" bgcolor="aqua">Catalina Interface</th>

+    <th align="center" bgcolor="aqua">Implementation Class</th>

+  </tr>

+

+  <tr>

+    <td><code>AccessLogValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.AccessLogValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>BasicAuthenticator</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.authenticator.BasicAuthenticator</code></td>

+  </tr>

+

+  <tr>

+    <td><code>CertificatesValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.CertificatesValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>ContextConfig</code></td>

+    <td align="center"><code>LISTENER</code></td>

+    <td><code>org.apache.catalina.LifecycleListener</code></td>

+    <td><code>org.apache.catalina.startup.ContextConfig</code></td>

+  </tr>

+

+  <tr>

+    <td><code>ContextEnvironment</code></td>

+    <td align="center"><code>RESOURCES</code></td>

+    <td><code>org.apache.catalina.deploy.ContextEnvironment</code></td>

+    <td><code>org.apache.catalina.deploy.ContextEnvironment</code></td>

+  </tr>

+

+  <tr>

+    <td><code>ContextResource</code></td>

+    <td align="center"><code>RESOURCES</code></td>

+    <td><code>org.apache.catalina.deploy.ContextResource</code></td>

+    <td><code>org.apache.catalina.deploy.ContextResource</code></td>

+  </tr>

+

+  <tr>

+    <td><code>ContextResourceLink</code></td>

+    <td align="center"><code>RESOURCES</code></td>

+    <td><code>org.apache.catalina.deploy.ContextResourceLink</code></td>

+    <td><code>org.apache.catalina.deploy.ContextResourceLink</code></td>

+  </tr>

+

+  <tr>

+    <td><code>CoyoteConnector</code></td>

+    <td align="center"><code>CONNECTOR</code></td>

+    <td><code>org.apache.catalina.Connector</code></td>

+    <td><code>org.apache.coyote.tomcat4.CoyoteConnector</code></td>

+  </tr>

+

+  <tr>

+    <td><code>DigestAuthenticator</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.authenticator.DigestAuthenticator</code></td>

+  </tr>

+

+  <tr>

+    <td><code>EngineConfig</code></td>

+    <td align="center"><code>LISTENER</code></td>

+    <td><code>org.apache.catalina.LifecycleListener</code></td>

+    <td><code>org.apache.catalina.startup.EngineConfig</code></td>

+  </tr>

+

+  <tr>

+    <td><code>ErrorReportValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.ErrorReportValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>ErrorDispatcherValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.ErrorDispatcherValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>FormAuthenticator</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.authenticator.FormAuthenticator</code></td>

+  </tr>

+

+  <tr>

+    <td><code>Group</code></td>

+    <td align="center"><code>GROUP</code></td>

+    <td><code>org.apache.catalina.Group</code></td>

+    <td><code>org.apache.catalina.Group</code></td>

+  </tr>

+

+  <tr>

+    <td><code>HostConfig</code></td>

+    <td align="center"><code>LISTENER</code></td>

+    <td><code>org.apache.catalina.LifecycleListener</code></td>

+    <td><code>org.apache.catalina.startup.HostConfig</code></td>

+  </tr>

+

+  <tr>

+    <td><code>HttpConnector10</code></td>

+    <td align="center"><code>CONNECTOR</code></td>

+    <td><code>org.apache.catalina.Connector</code></td>

+    <td><code>org.apache.catalina.connector.http10.HttpConnector</code></td>

+  </tr>

+

+  <tr>

+    <td><code>HttpConnector11</code></td>

+    <td align="center"><code>CONNECTOR</code></td>

+    <td><code>org.apache.catalina.Connector</code></td>

+    <td><code>org.apache.catalina.connector.http.HttpConnector</code></td>

+  </tr>

+

+  <tr>

+    <td><code>JAASRealm</code></td>

+    <td align="center"><code>REALM</code></td>

+    <td><code>org.apache.catalina.Realm</code></td>

+    <td><code>org.apache.catalina.realm.JAASRealm</code></td>

+  </tr>

+

+  <tr>

+    <td><code>JDBCRealm</code></td>

+    <td align="center"><code>REALM</code></td>

+    <td><code>org.apache.catalina.Realm</code></td>

+    <td><code>org.apache.catalina.realm.JDBCRealm</code></td>

+  </tr>

+

+  <tr>

+    <td><code>JDBCUserDatabase</code></td>

+    <td align="center"><code>USERDATABASE</code></td>

+    <td><code>org.apache.catalina.users.JDBCUserDatabase</code></td>

+    <td><code>org.apache.catalina.users.JDBCUserDatabase</code></td>

+  </tr>

+

+  <tr>

+    <td><code>JNDIRealm</code></td>

+    <td align="center"><code>REALM</code></td>

+    <td><code>org.apache.catalina.Realm</code></td>

+    <td><code>org.apache.catalina.realm.JNDIRealm</code></td>

+  </tr>

+

+  <tr>

+    <td><code>MBeanFactory</code></td>

+    <td align="center"><code></code></td>

+    <td><code></code></td>

+    <td><code>org.apache.catalina.mbeans.MBeanFactory</code></td>

+  </tr>

+

+  <tr>

+    <td><code>MemoryRealm</code></td>

+    <td align="center"><code>REALM</code></td>

+    <td><code>org.apache.catalina.Realm</code></td>

+    <td><code>org.apache.catalina.realm.MemoryRealm</code></td>

+  </tr>

+

+  <tr>

+    <td><code>MemoryUserDatabase</code></td>

+    <td align="center"><code>USERDATABASE</code></td>

+    <td><code>org.apache.catalina.users.MemoryUserDatabase</code></td>

+    <td><code>org.apache.catalina.users.MemoryUserDatabase</code></td>

+  </tr>

+

+  <tr>

+    <td><code>NamingContextListener</code></td>

+    <td align="center"><code>LISTENER</code></td>

+    <td><code>org.apache.catalina.LifecycleListener</code></td>

+    <td><code>org.apache.catalina.core.NamingContextListener</code></td>

+  </tr>

+

+  <tr>

+    <td><code>NamingResources</code></td>

+    <td align="center"><code>RESOURCES</code></td>

+    <td><code>org.apache.catalina.deploy.NamingResources</code></td>

+    <td><code>org.apache.catalina.deploy.NamingResources</code></td>

+  </tr>

+

+  <tr>

+    <td><code>NonLoginAuthenticator</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.authenticator.NonLoginAuthenticator</code></td>

+  </tr>

+

+  <tr>

+    <td><code>PersistentManager</code></td>

+    <td align="center"><code>MANAGER</code></td>

+    <td><code>org.apache.catalina.Manager</code></td>

+    <td><code>org.apache.catalina.session.PersistentManager</code></td>

+  </tr>

+

+  <tr>

+    <td><code>RemoteAddrValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.RemoteAddrValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>RemoteHostValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.RemoteHostValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>RequestDumperValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.RequestDumperValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>Role</code></td>

+    <td align="center"><code>ROLE</code></td>

+    <td><code>org.apache.catalina.Role</code></td>

+    <td><code>org.apache.catalina.Role</code></td>

+  </tr>

+

+  <tr>

+    <td><code>SingleSignOn</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.valves.SingleSignOn</code></td>

+  </tr>

+

+  <tr>

+    <td><code>SSLAuthenticator</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.authenticator.SSLAuthenticator</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardContext</code></td>

+    <td align="center"><code>CONTEXT</code></td>

+    <td><code>org.apache.catalina.Context</code></td>

+    <td><code>org.apache.catalina.core.StandardContext</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardContextValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.core.StandardContextValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardEngine</code></td>

+    <td align="center"><code>ENGINE</code></td>

+    <td><code>org.apache.catalina.Engine</code></td>

+    <td><code>org.apache.catalina.core.StandardEngine</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardEngineValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.core.StandardEngineValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardHost</code></td>

+    <td align="center"><code>HOST</code></td>

+    <td><code>org.apache.catalina.Host</code></td>

+    <td><code>org.apache.catalina.core.StandardHost</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardHostValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.core.StandardHostValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardManager</code></td>

+    <td align="center"><code>MANAGER</code></td>

+    <td><code>org.apache.catalina.Manager</code></td>

+    <td><code>org.apache.catalina.session.StandardManager</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardServer</code></td>

+    <td align="center"><code>SERVER</code></td>

+    <td><code>org.apache.catalina.Server</code></td>

+    <td><code>org.apache.catalina.core.StandardServer</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardService</code></td>

+    <td align="center"><code>SERVICE</code></td>

+    <td><code>org.apache.catalina.Service</code></td>

+    <td><code>org.apache.catalina.core.StandardService</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardWrapper</code></td>

+    <td align="center"><code>WRAPPER</code></td>

+    <td><code>org.apache.catalina.Wrapper</code></td>

+    <td><code>org.apache.catalina.core.StandardWrapper</code></td>

+  </tr>

+

+  <tr>

+    <td><code>StandardWrapperValve</code></td>

+    <td align="center"><code>VALVE</code></td>

+    <td><code>org.apache.catalina.Valve</code></td>

+    <td><code>org.apache.catalina.core.StandardWrapperValve</code></td>

+  </tr>

+

+  <tr>

+    <td><code>User</code></td>

+    <td align="center"><code>USER</code></td>

+    <td><code>org.apache.catalina.User</code></td>

+    <td><code>org.apache.catalina.User</code></td>

+  </tr>

+

+  <tr>

+    <td><code>UserDatabaseRealm</code></td>

+    <td align="center"><code>REALM</code></td>

+    <td><code>org.apache.catalina.Realm</code></td>

+    <td><code>org.apache.catalina.realm.UserDatabaseRealm</code></td>

+  </tr>

+

+  <tr>

+    <td><code>WebappLoader</code></td>

+    <td align="center"><code>LOADER</code></td>

+    <td><code>org.apache.catalina.Loader</code></td>

+    <td><code>org.apache.catalina.loader.WebappLoader</code></td>

+  </tr>

+

+</table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JSR-77 Cross Reference"><!--()--></a><a name="JSR-77_Cross_Reference"><strong>JSR-77 Cross Reference</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The managed objects in the JSR-77 object hierarchy correspond

+to the specified MBean names or groups as follows:</p>

+

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">JSR-77 Managed Object</th>

+    <th align="center" bgcolor="aqua">MBean Name or Group</th>

+    <th align="center" bgcolor="aqua">Comments</th>

+  </tr>

+

+  <tr>

+    <td><code>J2EEServer</code></td>

+    <td><code>${SERVICE}</code></td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td><code>Node</code></td>

+    <td><code>${SERVICE}</code></td>

+    <td>Tomcat supports a single node only.</td>

+  </tr>

+

+  <tr>

+    <td><code>Port</code></td>

+    <td><code>${CONNECTOR}</code></td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td><code>Servlet</code></td>

+    <td><code>${WRAPPER}</code></td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td><code>WebModule</code></td>

+    <td><code>${CONTEXT}</code></td>

+    <td></td>

+  </tr>

+

+</table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JSR-88 Cross Reference"><!--()--></a><a name="JSR-88_Cross_Reference"><strong>JSR-88 Cross Reference</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The deployment objects in the JSR-88 API object hierarchy correspond

+to the specified MBean names or groups as follows:</p>

+

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">JSR-88 API Object</th>

+    <th align="center" bgcolor="aqua">MBean Name or Group</th>

+    <th align="center" bgcolor="aqua">Comments</th>

+  </tr>

+

+  <tr>

+    <td><code>DeployableObject</code></td>

+    <td><code>${CONTEXT}</code></td>

+    <td>Context deployment info plus the corresponding WAR file</td>

+  </tr>

+

+  <tr>

+    <td><code>Target</code></td>

+    <td><code>${HOST}</code></td>

+    <td></td>

+  </tr>

+

+</table>

+

+</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="/tomcat-7.0-doc/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/funcspecs/mbean-names.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/html-manager-howto.html b/webapps/docs/html-manager-howto.html
new file mode 100644
index 0000000..eac6a8c
--- /dev/null
+++ b/webapps/docs/html-manager-howto.html
@@ -0,0 +1,577 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Tomcat Web Application Manager How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Web Application Manager How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Message">Message</a></li><li><a href="#Manager">Manager</a></li><li><a href="#Applications">Applications</a><ol><li><a href="#Start">Start</a></li><li><a href="#Stop">Stop</a></li><li><a href="#Reload">Reload</a></li><li><a href="#Undeploy">Undeploy</a></li></ol></li><li><a href="#Deploy">Deploy</a><ol><li><a href="#Deploy_directory_or_WAR_file_located_on_server">Deploy directory or WAR file located on server</a></li><li><a href="#Upload_a_WAR_file_to_install">Upload a WAR file to install</a></li><li><a href="#Deployment_Notes">Deployment Notes</a></li><li><a href="#Deploy_Message">Deploy Message</a></li></ol></li><li><a href="#Diagnostics">Diagnostics</a><ol><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li></ol></li><li><a href="#Server_Information">Server Information</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>In many production environments it is very useful to have the capability

+to manage your web applications without having to shut down and restart

+Tomcat.  This document is for the HTML web interface to the web application

+<a href="manager-howto.html">manager</a>.</p>

+

+<p>The interface is divided into six sections:</p>

+<ul>

+  <li><strong>Message</strong> - Displays success and failure messages.</li>

+  <li><strong>Manager</strong> - General manager operations like list and

+      help.</li>

+  <li><strong>Applications</strong> - List of web applications and

+      commands.</li>

+  <li><strong>Deploy</strong> - Deploying web applications.</li>

+  <li><strong>Diagnostics</strong> - Identifying potential problems.</li>

+  <li><strong>Server Information</strong> - Information about the Tomcat

+      server.</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="Message"><strong>Message</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+Displays information about the success or failure of the last web application

+manager command you performed. If it succeeded <strong>OK</strong> is displayed

+and may be followed by a success message. If it failed <strong>FAIL</strong>

+is displayed followed by an error message. Common failure messages are

+documented below for each command.  The complete list of failure messages for

+each command can be found in the <a href="manager-howto.html">manager</a> web

+application documentation.

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The Manager section has three links:</p>

+<ul>

+  <li><strong>List Applications</strong> - Redisplay a list of web

+      applications.</li>

+  <li><strong>HTML Manager Help</strong> - A link to this document.</li>

+  <li><strong>Manager Help</strong> - A link to the comprehensive Manager

+      App HOW TO.</li>

+</ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Applications"><strong>Applications</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The Applications section lists information about all the installed web

+applications and provides links for managing them. For each web application

+the following is displayed:</p>

+<ul>

+  <li><strong>Path</strong> - The web application context path.</li>

+  <li><strong>Display Name</strong> - The display name for the web application

+      if it has one configured in its "web.xml" file.</li>

+  <li><strong>Running</strong> - Whether the web application is running and

+      available (true), or not running and unavailable (false).</li>

+  <li><strong>Sessions</strong> - The number of active sessions for remote

+      users of this web application.  The number of sessions is a link which

+      when submitted displays more details about session usage by the web

+      application in the Message box.</li>

+  <li><strong>Commands</strong> - Lists all commands which can be performed on

+      the web application. Only those commands which can be performed will be

+      listed as a link which can be submitted. No commands can be performed on

+      the manager web application itself. The following commands can be

+      performed:

+      <ul>

+        <li><strong>Start</strong> - Start a web application which had been

+            stopped.</li>

+        <li><strong>Stop</strong> - Stop a web application which is currently

+            running and make it unavailable.</li>

+        <li><strong>Reload</strong> - Reload the web application so that new

+            ".jar" files in <code>/WEB-INF/lib/</code> or new classes in

+            <code>/WEB-INF/classes/</code> can be used.</li>

+        <li><strong>Undeploy</strong> - Stop and then remove this web

+             application from the server.</li>

+      </ul>

+  </li>

+</ul>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Start"><strong>Start</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Signal a stopped application to restart, and make itself available again.

+Stopping and starting is useful, for example, if the database required by

+your application becomes temporarily unavailable.  It is usually better to

+stop the web application that relies on this database rather than letting

+users continuously encounter database exceptions.</p>

+

+<p>If this command succeeds, you will see a Message like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Started application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the Message will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to start the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character, unless you are

+    referencing the ROOT web application -- in which case the context path

+    must be a zero-length string.</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stop"><strong>Stop</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Signal an existing application to make itself unavailable, but leave it

+deployed.  Any request that comes in while an application is

+stopped will see an HTTP error 404, and this application will show as

+"stopped" on a list applications command.</p>

+

+<p>If this command succeeds, you will see a Message like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Stopped application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the Message will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to stop the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character, unless you are

+    referencing the ROOT web application -- in which case the context path

+    must be a zero-length string.</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reload"><strong>Reload</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Signal an existing application to shut itself down and reload.  This can

+be useful when the web application context is not reloadable and you have

+updated classes or property files in the <code>/WEB-INF/classes</code>

+directory or when you have added or updated jar files in the

+<code>/WEB-INF/lib</code> directory.

+</p>

+<p><strong>NOTE:</strong> The <code>/WEB-INF/web.xml</code>

+web application configuration file is not checked on a reload;

+the previous web.xml configuration is used.

+If you have made changes to your web.xml file you must stop

+then start the web application.

+</p>

+

+<p>If this command succeeds, you will see a Message like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Reloaded application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the Message will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to restart the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character, unless you are

+    referencing the ROOT web application -- in which case the context path

+    must be a zero-length string.</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+<li><em>Reload not supported on WAR deployed at path /foo</em>

+    <blockquote>

+    Currently, application reloading (to pick up changes to the classes or

+    <code>web.xml</code> file) is not supported when a web application is

+    installed directly from a WAR file, which happens when the host is

+    configured to not unpack WAR files. As it only works when the web

+    application is installed from an unpacked directory, if you are using

+    a WAR file, you should <code>undeploy</code> and then <code>deploy</code>

+    the application again to pick up your changes.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Undeploy"><strong>Undeploy</strong></a></font></td></tr><tr><td><blockquote>

+

+<p><strong><font color="red">WARNING</font> - This command will delete the

+contents of the web application directory and/or ".war" file if it exists within

+the <code>appBase</code> directory (typically "webapps") for this virtual host

+</strong>.  The web application temporary work directory is also deleted.  If

+you simply want to take an application out of service, you should use the

+<code>/stop</code> command instead.</p>

+

+<p>Signal an existing application to gracefully shut itself down, and then

+remove it from Tomcat (which also makes this context path available for

+reuse later).  This command is the logical opposite of the

+<code>/deploy</code> Ant command, and the related deploy features available

+in the HTML manager.</p>

+

+<p>If this command succeeds, you will see a Message like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Undeployed application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the Message will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to undeploy the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character, unless you are

+    referencing the ROOT web application -- in which case the context path

+    must be a zero-length string.</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy"><strong>Deploy</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Web applications can be deployed using files or directories located

+on the Tomcat server or you can upload a web application archive (WAR)

+file to the server.</p>

+

+<p>To install an application, fill in the appropriate fields for the type

+of install you want to do and then submit it using the <i>Install</i>

+button.</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy directory or WAR file located on server"><!--()--></a><a name="Deploy_directory_or_WAR_file_located_on_server"><strong>Deploy directory or WAR file located on server</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Deploy and start a new web application, attached to the specified <i>Context

+Path:</i> (which must not be in use by any other web application).

+This command is the logical opposite of the <em>Undeploy</em> command.</p>

+

+<p>There are a number of different ways the deploy command can be used.</p>

+

+<h3>Deploy a Directory or WAR by URL</h3>

+

+<p>Install a web application directory or ".war" file located on the Tomcat

+server. If no <i>Context Path</i> is specified, the directory name or the

+war file name without the ".war" extension is used as the path. The

+<i>WAR or Directory URL</i> specifies a URL (including the <code>file:</code>

+scheme) for either a directory or a web application archive (WAR) file. The

+supported syntax for a URL referring to a WAR file is described on the Javadocs

+page for the <code>java.net.JarURLConnection</code> class.  Use only URLs that

+refer to the entire WAR file.</p>

+

+<p>In this example the web application located in the directory

+<code>C:\path\to\foo</code> on the Tomcat server (running on Windows)

+is deployed as the web application context named <code>/footoo</code>.</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: /footoo

+WAR or Directory URL: file:C:/path/to/foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>In this example the ".war" file <code>/path/to/bar.war</code> on the

+Tomcat server (running on Unix) is deployed as the web application

+context named <code>/bar</code>. Notice that there is no <code>path</code>

+parameter so the context path defaults to the name of the web application

+archive file without the ".war" extension.</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>

+WAR or Directory URL: jar:file:/path/to/bar.war!/

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<h3>Deploy a Directory or War from the Host appBase</h3>

+

+<p>Install a web application directory or ".war" file located in your Host

+appBase directory. If no <i>Context Path</i> is specified the directory name

+or the war file name without the ".war" extension is used as the path.</p>

+

+<p>In this example the web application located in a subdirectory named

+<code>foo</code> in the Host appBase directory of the Tomcat server is

+deployed as the web application context named <code>/foo</code>. Notice

+that there is no <code>path</code> parameter so the context path defaults

+to the name of the web application directory.</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>

+WAR or Directory URL: foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>In this example the ".war" file <code>bar.war</code> located in your

+Host appBase directory on the Tomcat server is deployed as the web

+application context named <code>/bartoo</code>.</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: /bartoo

+WAR or Directory URL: bar.war

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<h3>Deploy using a Context configuration ".xml" file</h3>

+

+<p>If the Host deployXML flag is set to true, you can install a web

+application using a Context configuration ".xml" file and an optional

+".war" file or web application directory. The <i>Context Path</i>

+is not used when installing a web application using a context ".xml"

+configuration file.</p>

+

+<p>A Context configuration ".xml" file can contain valid XML for a

+web application Context just as if it were configured in your

+Tomcat <code>server.xml</code> configuration file. Here is an

+example for Tomcat running on Windows:</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>

+&lt;Context path="/foobar" docBase="C:\path\to\application\foobar"&gt;

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>Use of the <i>WAR or Directory URL</i> is optional. When used

+to select a web application ".war" file or directory it overrides any

+docBase configured in the context configuration ".xml" file.</p>

+

+<p>Here is an example of installing an application using a Context

+configuration ".xml" file for Tomcat running on Windows.</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>

+XML Configuration file URL: file:C:/path/to/context.xml

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>Here is an example of installing an application using a Context

+configuration ".xml" file and a web application ".war" file located

+on the server (Tomcat running on Unix).</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>

+XML Configuration file URL: file:/path/to/context.xml

+WAR or Directory URL: jar:file:/path/to/bar.war!/

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Upload a WAR file to install"><!--()--></a><a name="Upload_a_WAR_file_to_install"><strong>Upload a WAR file to install</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Upload a WAR file from your local system and install it into the

+appBase for your Host. The name of the WAR file without the ".war"

+extension is used as the context path name.</p>

+

+<p>Use the <i>Browse</i> button to select a WAR file to upload to the

+server from your local desktop system.</p>

+

+<p>The .WAR file may include Tomcat specific deployment configuration, by

+including a Context configuration XML file in

+<code>/META-INF/context.xml</code>.</p>

+

+<p>Upload of a WAR file could fail for the following reasons:</p>

+<ul>

+<li><em>File uploaded must be a .war</em>

+    <blockquote>

+    <p>The upload install will only accept files which have the filename

+    extension of ".war".</p>

+    </blockquote></li>

+<li><em>War file already exists on server</em>

+    <blockquote>

+    <p>If a war file of the same name already exists in your Host's

+    appBase the upload will fail. Either undeploy the existing war file

+    from your Host's appBase or upload the new war file using a different

+    name.</p>

+    </blockquote></li>

+<li><em>File upload failed, no file</em>

+    <blockquote>

+    <p>The file upload failed, no file was received by the server.</p>

+    </blockquote></li>

+<li><em>Install Upload Failed, Exception:</em>

+    <blockquote>

+    <p>The war file upload or install failed with a Java Exception.

+    The exception message will be listed.</p>

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment Notes"><!--()--></a><a name="Deployment_Notes"><strong>Deployment Notes</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>If the Host is configured with unpackWARs=true and you install a war

+file, the war will be unpacked into a directory in your Host appBase

+directory.</p>

+

+<p>If the application war or directory is deployed in your Host appBase

+directory and either the Host is configured with autoDeploy=true the Context

+path must match the directory name or war file name without the ".war"

+extension.</p>

+

+<p>For security when untrusted users can manage web applications, the

+Host deployXML flag can be set to false.  This prevents untrusted users

+from installing web applications using a configuration XML file and

+also prevents them from installing application directories or ".war"

+files located outside of their Host appBase.</p>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy Message"><!--()--></a><a name="Deploy_Message"><strong>Deploy Message</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>If deployment and startup is successful, you will receive a Message

+like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Deployed application at context path /foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the Message will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Application already exists at path /foo</em>

+    <blockquote>

+    <p>The context paths for all currently running web applications must be

+    unique.  Therefore, you must either undeploy the existing web

+    application using this context path, or choose a different context path

+    for the new one.</p>

+    </blockquote></li>

+<li><em>Document base does not exist or is not a readable directory</em>

+    <blockquote>

+    <p>The URL specified by the <i>WAR or Directory URL:</i> field must

+    identify a directory on this server that contains the "unpacked" version

+    of a web application, or the absolute URL of a web application archive

+    (WAR) file that contains this application.  Correct the value entered for

+    the <i>WAR or Directory URL:</i> field.</p>

+    </blockquote></li>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to start the new web application.

+    Check the Tomcat logs for the details, but likely explanations include

+    problems parsing your <code>/WEB-INF/web.xml</code> file, or missing

+    classes encountered when initializing application event listeners and

+    filters.</p>

+    </blockquote></li>

+<li><em>Invalid application URL was specified</em>

+    <blockquote>

+    <p>The URL for the <i>WAR or Directory URL:</i> field that you specified

+    was not valid.  Such URLs must start with <code>file:</code>, and URLs

+    for a WAR file must end in ".war".</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character, unless you are

+    referencing the ROOT web application -- in which case the context path

+    must be a "/" string.</p>

+    </blockquote></li>

+<li><em>Context path must match the directory or WAR file name:</em>

+    <blockquote>

+    If the application war or directory is deployed in your Host appBase

+    directory and either the Host is configured with autoDeploy=true the Context

+    path must match the directory name or war file name without the ".war"

+    extension.

+    </blockquote></li>

+<li><em>Only web applications in the Host web application directory can

+     be deployed</em>

+     <blockquote>

+     If the Host deployXML flag is set to false this error will happen

+     if an attempt is made to install a web application directory or

+      ".war" file outside of the Host appBase directory.

+     </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Diagnostics"><strong>Diagnostics</strong></a></font></td></tr><tr><td><blockquote>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Finding memory leaks"><!--()--></a><a name="Finding_memory_leaks"><strong>Finding memory leaks</strong></a></font></td></tr><tr><td><blockquote>

+

+<p><strong>The find leaks diagnostic triggers a full garbage collection. It

+should be used with extreme caution on production systems.</strong></p>

+

+<p>The find leaks diagnostic attempts to identify web applications that have

+caused memory leaks when they were stopped, reloaded or undeployed. Results

+should always be confirmed

+with a profiler. The diagnostic uses additional functionality provided by the

+StandardHost implementation. It will not work if a custom host is used that

+does not extend StandardHost.</p>

+

+<p>This diagnostic will list context paths for the web applications that were

+stopped, reloaded or undeployed, but which classes from the previous runs

+are still present in memory, thus being a memory leak. If an application

+has been reloaded several times, it may be listed several times.</p>

+

+<p>Explicitly triggering a full garbage collection from Java code is documented

+to be unreliable. Furthermore, depending on the JVM used, there are options to

+disable explicit GC triggering, like <code>-XX:+DisableExplicitGC</code>.

+If you want to make sure, that the diagnostics were successfully running a full GC,

+you will need to check using tools like GC logging, JConsole or similar.</p>

+

+</blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Information"><!--()--></a><a name="Server_Information"><strong>Server Information</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>This section displays information about Tomcat, the operating system of

+the server Tomcat is hosted on, and the Java Virtual Machine Tomcat is

+running in.</p>

+

+</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="/tomcat-7.0-doc/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/html-manager-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/images/add.gif b/webapps/docs/images/add.gif
new file mode 100644
index 0000000..0774d07
--- /dev/null
+++ b/webapps/docs/images/add.gif
Binary files differ
diff --git a/webapps/docs/images/asf-logo.gif b/webapps/docs/images/asf-logo.gif
new file mode 100644
index 0000000..22eb9d7
--- /dev/null
+++ b/webapps/docs/images/asf-logo.gif
Binary files differ
diff --git a/webapps/docs/images/code.gif b/webapps/docs/images/code.gif
new file mode 100644
index 0000000..d27307b
--- /dev/null
+++ b/webapps/docs/images/code.gif
Binary files differ
diff --git a/webapps/docs/images/cors-flowchart.png b/webapps/docs/images/cors-flowchart.png
new file mode 100644
index 0000000..9abb09d
--- /dev/null
+++ b/webapps/docs/images/cors-flowchart.png
Binary files differ
diff --git a/webapps/docs/images/design.gif b/webapps/docs/images/design.gif
new file mode 100644
index 0000000..f5db0a9
--- /dev/null
+++ b/webapps/docs/images/design.gif
Binary files differ
diff --git a/webapps/docs/images/docs.gif b/webapps/docs/images/docs.gif
new file mode 100644
index 0000000..d64a4a1
--- /dev/null
+++ b/webapps/docs/images/docs.gif
Binary files differ
diff --git a/webapps/docs/images/fix.gif b/webapps/docs/images/fix.gif
new file mode 100644
index 0000000..d59ad64
--- /dev/null
+++ b/webapps/docs/images/fix.gif
Binary files differ
diff --git a/webapps/docs/images/printer.gif b/webapps/docs/images/printer.gif
new file mode 100644
index 0000000..5021187
--- /dev/null
+++ b/webapps/docs/images/printer.gif
Binary files differ
diff --git a/webapps/docs/images/tomcat.gif b/webapps/docs/images/tomcat.gif
new file mode 100644
index 0000000..f2aa6f8
--- /dev/null
+++ b/webapps/docs/images/tomcat.gif
Binary files differ
diff --git a/webapps/docs/images/tomcat.svg b/webapps/docs/images/tomcat.svg
new file mode 100644
index 0000000..3636850
--- /dev/null
+++ b/webapps/docs/images/tomcat.svg
@@ -0,0 +1,967 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->

+<svg:svg

+   xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"

+   xmlns:xap="http://ns.adobe.com/xap/1.0/"

+   xmlns:ns0="http://ns.adobe.com/SaveForWeb/1.0/"

+   xmlns:ns="http://ns.adobe.com/Variables/1.0/"

+   xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"

+   xmlns:x="adobe:ns:meta/"

+   xmlns:dc="http://purl.org/dc/elements/1.1/"

+   xmlns:cc="http://creativecommons.org/ns#"

+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

+   xmlns:svg="http://www.w3.org/2000/svg"

+   xmlns:xlink="http://www.w3.org/1999/xlink"

+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"

+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"

+   i:viewOrigin="176.7139 486.707"

+   i:rulerOrigin="-156 -296"

+   i:pageBounds="156 496 456 296"

+   width="260.162"

+   height="184.413"

+   viewBox="0 0 260.162 184.413"

+   overflow="visible"

+   enable-background="new 0 0 260.162 184.413"

+   xml:space="preserve"

+   id="svg2"

+   sodipodi:version="0.32"

+   inkscape:version="0.46"

+   sodipodi:docname="tomcat.svg"

+   inkscape:output_extension="org.inkscape.output.svg.inkscape"><svg:defs

+   id="defs59"><inkscape:perspective

+     sodipodi:type="inkscape:persp3d"

+     inkscape:vp_x="0 : 92.206497 : 1"

+     inkscape:vp_y="0 : 1000 : 0"

+     inkscape:vp_z="260.16199 : 92.206497 : 1"

+     inkscape:persp3d-origin="130.08099 : 61.470998 : 1"

+     id="perspective63" /></svg:defs><sodipodi:namedview

+   inkscape:window-height="725"

+   inkscape:window-width="1051"

+   inkscape:pageshadow="2"

+   inkscape:pageopacity="0.0"

+   guidetolerance="10.0"

+   gridtolerance="10.0"

+   objecttolerance="10.0"

+   borderopacity="1.0"

+   bordercolor="#666666"

+   pagecolor="#ffffff"

+   id="base"

+   showgrid="false"

+   inkscape:zoom="2.1025362"

+   inkscape:cx="130.08099"

+   inkscape:cy="91.968689"

+   inkscape:window-x="35"

+   inkscape:window-y="192"

+   inkscape:current-layer="svg2" />

+    <svg:metadata

+   id="metadata4">

+        <ns:variableSets>

+            <ns:variableSet

+   varSetName="binding1"

+   locked="none">

+                <ns:variables />

+                <ns:sampleDataSets />

+            </ns:variableSet>

+        </ns:variableSets>

+        <ns0:sfw>

+            <ns0:slices />

+            <ns0:sliceSourceBounds

+   y="302.294"

+   x="176.714"

+   width="260.162"

+   height="184.413"

+   bottomLeftOrigin="true" />

+        </ns0:sfw>

+<xpacket /><x:xmpmeta

+   x:xmptk="XMP toolkit 3.0-29, framework 1.6">

+

+<svg:metadata

+   id="metadata61"><rdf:RDF>

+

+ <rdf:Description

+   rdf:about="">

+ </rdf:Description>

+

+ <rdf:Description

+   rdf:about="">

+ </rdf:Description>

+

+ <rdf:Description

+   rdf:about="">

+  <xap:CreateDate>2006-05-09T08:17:21Z</xap:CreateDate>

+  <xap:ModifyDate>2006-05-09T08:37:38Z</xap:ModifyDate>

+  <xap:CreatorTool>Illustrator</xap:CreatorTool>

+  <xap:Thumbnails>

+   <rdf:Alt>

+    <rdf:li

+   rdf:parseType="Resource">

+     <xapGImg:format>JPEG</xapGImg:format>

+     <xapGImg:width>256</xapGImg:width>

+     <xapGImg:height>184</xapGImg:height>

+     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA

+AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK

+DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f

+Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER

+AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA

+AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB

+UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE

+1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ

+qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy

+obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp

+0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo

++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7

+FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/

+85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS

+iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F

+CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz

+D+T3l+6uHMl1aRPYTsxqSbVzEhJ7kxKhxV6VirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd

+irsVfHn/ADlxdSa7+bvlvyvGx4RW0EVARtNfXJVqf7BY+uRlKgT3JAt5r/zkD5ZGgfmfqSRR+nZ6

+gsd9agdOMq0f/ksj5h9nZvEwgnmNi2Z4cMiw/wAqebPMHlTXLfW9BvHstQtjVZEPwstQWjkXo6NT

+4lOxzOan3v8Akl+cel/mX5a+tAJa69ZcU1fTlJojGvGWLluYpKbV6GqmtKlV6NirsVdirsVdirsV

+eWfnr+eGl/lroywwBLzzPfox02wJqqL0+sT03EanoOrnYdyFXwh5i8x655j1i41jW7yS+1K6blNc

+SmpPgABQKo6BVFB2xVnf5Q+SjrWh+d9Yli5w6XolylsadbqSNnTj8kiYf7IZg6zUeHKERzlIfL8U

+3YoWCe4Pff8AnCfVTN5D1zTCamz1P11HcLcQIAPlWE5nNL6KxV2KuxV2KuxV2KuxV2KuxV2KuxV2

+KuxV2KuxV2KuxV2KvjD8wm/Sv/OX8UTGsdrqGnCMNUU+rW0Mp6f5ammY2sNYZ/1T9zZi+oe9m/8A

+zkx+Xc/mPytFrunRepqehc3ljUVeS0cAyAU6mMqHA8OXfNB2PqhCfAeUvv8A2uZqcdix0fIedQ69

+m35OefrryN+YOla2kpjsjKttqqDo9nMwEoI78ftr/lKMVfaeqf8AOSH5KaaSs3meCZx0W1inuanf

+YNDG69vHFWM3v/OYn5QW5YQ/pK8ArQwWqitPD1pIuvviqVT/APObH5cKR6GjaxIP2i8dqhB9qTvi

+qmP+c2fIFd9C1Wnfa2/6q4qmFv8A85n/AJUSvxksdZtx/NJb25H/ACTuHOKp3bf85XfkpPBI7avN

+BIisywS2lwGcqCeIZUdKmm1WGKvijzz5x1bzl5q1HzFqjlrm+lLrHWqxRDaOFP8AJjSij7+uKpNb

+W1xdXMVtbRtNcTuscMKAszu54qqgbkkmgwE1uVfbHkL8uk8o/lTPoMiK+o3drPNqZHRrieIhlr4I

+tEB9q5yWo1fi6gS/hBFfN2UMfDAjqwT/AJwdvyt/5usC20sVlOq77em0yMR2/wB2Cudc619ZYq7F

+XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXxZKTJ/zmFc+oedNTmA5b/ZtG49fCgpmH2h/

+cS9zbh+sPqDrsc4t2r57/Nf/AJxkGo3c+teSTFb3ExMlxo0hEcTMdybd/spU/sN8PgQNs3+i7Xoc

+OX5/rcLLpusWIaF/zif56vFWTVr6y0pG6xgtczL81QLH90mZWTtnFH6bk1x0sjz2Z1pf/OIvlOIL

++lNbvrthSv1dYrZSe+zC4ND88wp9uTP0xA9+/wCptGkHUsms/wDnGf8AKS3AEunT3dOpmupxXam/

+pNFmPPtjOeRA+H67bBpoPDv+ch/yt03yXrdjeaFbG30HUouCQ8pJBFcQ0DqXkZ2+NSrCrfzeGbns

+vWHNAiX1BxdRi4TtySH8jfJdn5u/MOy07UIfrGl28ct3fw1IDRxrxUEqQaGV0By7X6g4sRkOfRhh

+hxSp9N3X/OO/5P3FSdBETGnxRXN0nT/JEvH8M50dq6gfxfYHOOnh3JDqP/OKn5a3NTazajYt+yIp

+0dfpEsbn/hsvj21lHMRP497A6SPmwzW/+cQr9A76H5himO/CG9haL5AyxGT/AIhmXj7cifqiR7t/

+1NUtIehZh+S3/OP8Xk+5GveYXivNfTkLSKIloLYGqlwzBecjL3p8P45i9odqeIOCH09fNtw6fh3P

+N7DfIz2VwijkzRuFA6klTmpxmpD3uRLk+bf+cJrrj+Yet2tT+90hpeP7J9O5hWp9/wB5tneunfZm

+KuxV2KuxV2KuxV2KuxVZLNFDG0srrHGu7O5CqB7k4qks3nzyNC5jm8xaZHIOqPeW6nf2L4qmFhrW

+j6iK6ff294KVrbypLt1r8BPjirAvzb/Pnyf+WrW9rqKS6hq90vqRaba8eaxVp6krMQEUkEL1JPbq

+cVYFof8Azmp5BupVj1fR9Q0wNsZo/SuY1/1qGN6fJDir2Xyf+Yfkrzjam48taxb6iqgGSKNisyA9

+PUhcLKn+yXFWRYq7FXYq7FXxRrBNj/zl/NVwC+rL8XtcWw+Hf/jJTMXXC8M/6pbMP1h9SZxLtnYq

+7FWG+afzg/LnyvdNZ6vrUSXqGj2sKvcSofB1hV+B/wBamZmHs/NkFxjt8mqWaMeZRPk78zvI/nF5

+ItA1RLm5hHKS1dXhmC1pyEcoRmXputRkdRosuLeQ2TDLGXJCfm/5JXzj5D1HSo05X8a/WtNPcXMI

+JUD/AFxVP9lk+z9R4WUE8jsWOaHFGnl3/OI/lpodN1zzFMlGuJUsLcsKELCPUlpXsWkQfNc2Xbmb

+eMPj+r9LRpI8y+hc0DmuxV2KuxV2Kvl//nClHP5oas4B4Lok6luwLXdqQPpoc9AdK+08VdirsVdi

+rsVdiqXeYPMOi+XtIudY1q7jsdNtF5z3EpooHQAd2ZjsqjcnYYq+VfPf/OV3nXzNqp0D8stPlto5

+mMcF0IfrGoT+8UIDrGD8mbvVcVSqz/5xn/Pjzs66h5t1RbUueX+5W7kurgA/yxx+sq/6pZaeGKsj

+h/5wanMYM3nNUk7qmml1/wCCN0n6sVQt7/zhDr8B56Z5stppEIMZntZLfcb1qkk9KHFXzr5mtdUs

+tfv9O1S5a7vtOuJbKaZndwWt3MZ4mSjcartUDFUsxVFabqeo6XfQ3+m3UtlfW7c4Lq3dopUbxV1I

+IxV9Sfkr/wA5aNcT2+gfmG6K8hWO18wqAi1OwF2q0Vf+Mi0H8w6tir6lVlZQykMrCqsNwQe4xVvF

+XYq+Kfzzro3/ADlLa6oxKJLdaReFiaApGsMLeG1ISMqzw4sco94LKBogvqPOEdw7FXkf55/mBrlj

+Jp3kbykX/wAVeYSFE0Zo8FuzFOSt+wzlW+P9lQx2NDm27N0sZXlyfRFxs+Qj0jmUd5B/IHyP5bsI

+31Oyh1zWnAa6vb1BMnqHciKKSqKAehI5e+Q1XamTIfSeGPlzTj08YjfcsJ/PDy5pXkHX/LH5geW7

+WPTGhvlt9Rt7RBFHKpBk+wgCjnGkiPQbg5m9m5jnhLFM3s1Z4iBEg+hOu4zn3NQOkaLpuj20ltp8

+IghlnnunRe8tzK0sh/4JzQdhtlmXLKZuXdXyYxiByR2VsnYqxjV/zO/L3SJWh1DzDYQzoaPD66PI

+p/ykQsw+kZlY9Dmnyifu+9qOWI6pvoOvaRr+kwato9yt3p1zz9C4UMob03MbbMFOzoR0ynLiljkY

+yFEM4yBFhV1WVYdLvJWJCxwSOxHWioTjhFzA8wsuRfPn/OEVoX83eZLzekOnxQnpSsswb/mVneOn

+fYOKuxV2KuxV2KqF9e2lhZT315KsFpaxtNcTuaKkcYLMzHwAFcVfFHnPzR50/wCchPzJi8veXlaH

+y7aO5sYnqsUUCkK97dU/bYdB2qFXcklV9U/lj+UnlH8u9IWz0a2WS+dQL7VpVBuLhh1q37KV+yg2

+Huakqs1xV2KuxV8v/nf/AM4patrnmG+80eSp4Xn1GR7m/wBIuW9ImdyWd4JSOH7xjUq9KGvxb0Cr

+5/1j8mPzX0iRkvfKepgL9qSC3e5jG9P7yASJ1PjiqRjyb5vMvpDQ9QMtePpi1m5culKca1xVPtG/

+JT82dYdUsvKepUf7MlxA1rGe395cekn44q+zf+cffKv5m+VvJ50bzvPbzRwFf0RFHK01xbxU+KCV

+6cCqmnDizU3FaUAVeo4q7FXx5/zmxpD2vnTy7rcdUN5YPbh12POzmL1qO4FyuKsl/Lz/AJyc8ra2

+sNj5mUaHqZAU3TGtnI3Qnn1ir1o/wj+bOY1XY8474/UO7r+1z8epB2Oz2iKWKaJJYnWSKQBkkQhl

+ZTuCCNiDmnIINFygVGXTNOmvYb6W1hkvbbkLe6eNWljDgq3ByOS1UkGhwjJIDhs0ei0LtE5FLxD/

+AJyycP5F0ezQcp59WjaNdt+NvMp/GQZuuxI/vJH+j+lxNWfSPe9rgiEMEcQNRGoQE9+IpmmlKyS5

+QCpgSsllihieWVxHFGpeR2NFVVFSST0AGEAk0EEvn2fVfOv5269e6foN9Jof5e6fIYbm9QMst2af

+ZIBUtyG4QkKqkFqmgzfiGLRQBkOLKfx+C4ZMspobRZzof/OOv5U6VCiyaUdSnUUa4vZZJGb5opSL

+7kzBydrZ5HY8PuDbHTQDP9G0XStE02HTNJtks9Pt+Xo20Qoi83LtQe7MTmBkyynLikbJboxAFBJv

+zO1Aaf8Al35lu60ZNNuljP8AlvEyJ/wzDL9FDizQH9IfYxymol59/wA4P6S0eg+adXI+G6ura0Vv

+e2jeRgP+kkZ2zqX01irsVdirsVdir50/5zJ/MGbSfK1j5PspOFxrrGa/KmhFpAwon/PWWn0KR3xV

+mf8Azjd+WEPkj8vrae5iA17XES91KQijorrWG333HpI24/mLYq9YxV2KuxV2KuxV2KuxV2KuxV2K

+obUdT03TbR7zUbuGytI/7y4uJFijX5u5VRir5U/5yz/MX8tfNfl7S7DQtZh1LW9NvS5W2V3iFvJG

+yyUnC+kfjVPsscVSv8i/yi/LTzn5Ij1XVLSafU4J5rW9C3EkaFlIdCFQrT926980XaOuy4cnDGqI

+vk5eDDGQsvdvKXkby35StXtdBgmtrZ6Vge6uZ4wf5ljmkkRCe5UCuaPPqp5Tc9/gHLhjEeSN8x3+

+o6foGoX2m2hv9QtoJJbWyFazSKpKxjjv8R22yOCEZTAkaBZTJAsPHv8AlcP53/8Altpv+BuP+ac3

+H8n6X/VPti4vjZP5rzz8wfPP5i+bfNvluw1Dyq1rqWjzG+g0ROZmuRVZDVGHPjxgbcDpXNhpdNiw

+wkYy9Mutj8dWnJOUiAQ9D/5XD+d//ltpv+BuP+ac1/8AJ+l/1T7Yt3jZP5rv+Vw/nf8A+W2m/wCB

+uP8AmnH+T9L/AKp9sV8bJ/NYp+ZX5v8A5qXnli40LVfKbaCutAWkdyxlWRwWXnHGrheRdfhI8DmV

+pNBgE+KMuLh9zXkzTIoirR/kbzf+bvlHy1Y+XtO/LedobYENM6zK0kjtyeRzxoOTH6BtkNTp9Plm

+ZyyfaEwnOIoRej+RPO35o6xr62fmPyf+hdNMTub71C1HWnFaV/azX6rS4IQuE+KXds348kyaIZ7q

+jaqthKdKSCS/pSBbp3jhr4uY1kbbwA38Rmux8PF6r4fJuldbPlv8+YvzstdPS483apafoO7nEEVh

+pcjJbl6NIA0bKkjgenWsnKhpnTdnHTH+7HqHfz+f6nAz8f8AFyfQ3/OLHl06N+TWkyOnCfVpJ9Rm

+Hj6r+nEfphiQ5t3GeuYq7FXYq7FXYq+MfzQhXzz/AM5YWmgz1lsLe7sbB4zvW3gRbi5TvSrNLir7

+OxV2KuxV2KuxV2KuxV2KuxV5j59/5yM/K7yb6kFxqQ1TU0qP0dpvG4cMO0kgIij36hn5e2KvAvMv

+/OWP5p+arl9P8laWukxtXiYIzfXvHpUuy+mg+UdR/NkJ5IwFyIA80xiSaDF/+VT/AJo+b7sah5w1

+h1kavx3sz3k617KgYoo9uYp4ZptR7QYIbRuZ8uXzP7XMx6GcuezJYf8AnH3yrBptwjXFxd6g8LrB

+NIwSNJSpCOEQA7NvRmOak+0eQzGwjCxfU11/FOT/ACfEDnZYH+S+sfmZZeajoHlC8htrq6ZnubC/

+K/VnMAPLkrAtyUdfT+Kg8BnSa7HhMOLINg6/CZA1F9k6KdbOmw/pxbZdTp/pH1IyNAW8U9UK9Pnn

+I5eDi9F8PnzdlG63R2VsmndUUu5CooJZiaAAdSTiBaHhP5N8/On5r+bPzEkBbT7dv0do7EGhWgUM

+tRswgjUsP+LM3vaH7nBDCOZ5/j3/AHOJh9UzJ7vmicx2KvEf+clQLS78i63cEjT9O1cC6O3H4mjl

+FR/qwPm77G3GSPUj9f63E1XQvbQQQCDUHoc0jlN4pSXzN5z8q+V7ZLjX9Tg0+OSvpLK37x+PXhGv

+J3pXfiMuw6bJlNQFsJ5BHmXzJ+dn5haf+Z/mby75e8qtLPbLN6EbyI0YluruRI0oh+KigChIHU50

+/ZmilhieL6i4GoyiZ2fbWh6Ra6Noun6PaClpp1tFaW4/4rgQRr+C5s3HR2KuxV2KuxV2KvjfymCP

++c0p/rdK/pTU+POlKfUp/S/4144q+yMVdirsVdirsVdirsVeQfmX/wA5Ofl55MaaxtZv0/rcdVNl

+ZMDEj+E1x8SL4ELyYdxir5W/Mf8A5yD/ADJ88GSC6vjpmjyVC6VYFoYmQ1FJXr6kte/I8fADFXme

+Kvpj8jdTtb3yJBFFGkdxYyyW9zwVU5MDzRzTqSjipPU1zhvaDHKOosk8Mht5d/6/i7rQSBh5h6Fm

+ic12Kvnvz6l35B/Nqz8z2CEQyzLqMSqeIY143UVf8upr7Pnedl5RqdLwS5gcJ/R9n2uj1MPDyWPe

++wdL1Ky1TTbXUrGQTWd5Ek9vKOjJIoZT9xznMkDCRieYc2JsWisgyYZ+b1p5vvfIGqWPlSFZ9Tu0

+9F1LiN/q77TelXYuV+EAkddt6A5vZ8sccoMzsPv6NOYSMdnzl+Wn5m/mVoKR+RtEtNLsrmGWSsOp

+q1vM87t8Su8ssS+p0UKaGgAGdDqtHhyfvJ2fd3fBwseWUfSHq36V/wCcqf8AqzaN/wAGn/ZRms4N

+B/OP2/qci83c79K/85U/9WbRv+DT/sox4NB/OP2/qW83c8o/Mj8z/wAy/MAm8i6zaaZfXU0sY9HT

+Ea4lSdGqqxvFLKvqbFSBXqQc2el0eHH+8jY2693xcfJllL0l9KflXb+bbXyJpVp5riWLV7aIQsqu

+JGMSbRGUio9ThQNQnx70znNccZyk4+R+9zsIkIi2W5iNqB1xdH/RF2+sxQy6XFE8t4tyiyRelGpZ

+i6uCpAAyzFxcQ4D6ixlVb8nzj/zjB5UtfNn5xal5tisltNE0Rpbu1tEUCOOa6ZktYgBt+7j5tt3U

+Z3UIkRAJt1BO77PySHYq7FXYq7FXYq+M/wAyX/wb/wA5b2WsP+7s7q90+7Zz8NILlEt7htqV3EmK

+vszFXYq7FXYq7FWGfmR+bnkn8vrD6xr16PrkilrXS4KPdTdacY6jitRTmxC++Kvjz80/+clPPvnk

+TWVq50Py45KfULRj6kqntcTjiz1H7K8V8QeuKsQ/KyLyvP5wtbTzFbC4trn91bc2IjW4JBj9QAjk

+G+zQ7VIrmB2mcowE4jUh93Vv0wiZgS5Po7zD5J8ta/pa6bf2UfoQrxtWiAjeDbb0io+Hp06eIzht

+N2jmwz4oyu+d7373dZNPCYoh8/effyj17yuZLu3B1DRgSRdRr8cS9f3yD7P+sPh+XTOz7P7Wxajb

+6Z936u90+fSyx78wnP8Azj5r4s/M11o8jUi1OHlED/v63qwA+cbP92YvtDp+PCJjnA/Ydv1NugyV

+Ou99C5xDuWDeefKvnzV9WiufL+v/AKKskt1jkt+Ui8pQ7sX+AEbqyj6M3XZ2t02LGRlhxyvnQO23

+e4eow5JSuJoe8sD81/lL+ZF9pj3Go65Hq7WKPLBbMZGc7VZY+S9WC9O+bnSdsaQTEYQ4OLyAHxou

+Jl0mWrJuvel/5Q/8rK80ySeXdA85S6P9Qh9W2spZ51RouXx+kEDD4CwqPfbvmz1pw4xxzhxX5Bxc

+XFLYGnv35Y+RfzR0DXri881+af03p0lq8MVp6s0nGZpI2WSkiqNkRh9OaLW6rBkgBjjwm+4D7nMx

+Y5g7m3p2axyGGfmF+U3k/wA82pGq23paii8bfVIAFuEpWgLU+NN/st9FDvmZpddkwnbePc1ZMMZ+

+95R/iv8AMz8lbm20/wAzMPMvk2Z/Ssr5XpcIBvxXmSwKr/ut6r2Vxm28HDrAZQ9OTr+P0uNxzxbH

+cNSeb/zJ/Om9uNM8pk+XPJ0Lelf6g7D13DD7L8DyJZf91oafzNTEYMOjAlP1ZOn7P1qZyymhsHrH

+5d/lN5R8i2gXS7f1tRdaXGqTgNcPXqAeiJ/kr9NTvmq1euyZjvtHucjHhEPezPMJuePedvy3/OXV

+fNF/qGg+c/0ZpM7KbWx9a4X0wI1VhxRSoqwJ2zc6fWaaMAJQuXuDizxZCbB2eNfm7F+Z3lQQaDr3

+nKXV21SJmm0+GedgIQwCmVXC7OwIUd6HNtopYcvrhDhrrQcbKJR2JeieSv8AnHD8+9H0SJtG83Q+

+XlvlS5udPinuonSR0Hwy+nHxLqPhO5zYtD2r8mvJH5m+V/0x/jjzN/iL659W/R/76eb0PS9X1f75

+Vpz5p08MVel4q7FXYq7FXYq+Xv8AnNjya81joXnG3Sv1Vm0y/YCp4SEy25PgquJB82GKva/yY87J

+5z/LXRNbaTneNALfUfEXVv8Au5SR25leY9mGKs2xV2KrZJI4o2kkYJGgLO7EBVUCpJJ6AYq+aPzm

+/wCctrTTWn0L8vmjvL1ax3GvOA9vEehFsh2lYH9tvg8A1cVeMfl95AvPzCvLrzP5l1SW6iNwUueT

+tJdTyqqsQ7tXgvFgPGmwp1zS9rdrflqjEXMj4OZpdL4m5Oz3O18seXrXSP0PDp0C6ZSjWhjVkb3c

+NXk3ud842etzSyeIZHi73bDDAR4a2eaeb/yBsLlmvPK9x9QuQeX1OYs0JPX4JN3j/EfLN9ovaIj0

+5hfmP0j9XycLNoBzh8noHku+1y50OKLXrV7XWLT9xeB6FZGUCkyOvwsHG549DUds03aOLHHJxYiD

+jluPLy8v1OXp5SMakPUE9IBBBFQdiDmCDTe841/8pLaHW7bzL5U42OqWkyzvYfZt5+JqyrT+6LrV

+f5fl1zoNL21xQOLPvGQri6j39/3+9wMujo8UOY6PSB06U9s54uewnzt5H8z69qsV5pXme60W3jgW

+F7WAyhWcO7GQ+nLGKkMB07Zt9BrsGGBjkxiZvnt5d7iZ8M5m4ypj/wDyqbz9/wBT/f8A/BXP/ZRm

+d/K+k/1CPyj+pp/K5f55+15z518keZ/y91G01W01SZ2nLiPVrYyW8qTMDzQurFgXQnfl8Qrm90Pa

+GLVxIrl/CXCz4JYiHv8A+Qeia/NDH5tufO155k0u+s3gGm3Tzt9XufUjZuQkmlUPHwZdh0NQaHfV

+9qTgP3YgIyB57bhv04PO7eyZp3KYZ+afm/zN5Z0KGby5okmtanezC1gVAXSF3UlXkRPjYbdqDxYd

+83Q6eGWR45cIG7TmmYjYMC8p/kVrGu6ovmj81b1tV1Njyi0YODBEOoWQp8FB/vuP4fEtXM7P2nGE

+eDAKHf8Aj7y1QwEm5orzX+Rd9pepP5n/ACuvm0HWlq0mlhqWc46lFBqqV/kYFP8AVyODtMSHBnHF

+Hv8Ax9/NM8BBuGxZB+VP5j+ZPMs9/ovmbQJ9J13R1Q3s3ErbPzNEoGPJWehIA5KQKhu2Ua7RwxgT

+hK4yZYcplsRuHo2a1yHh35u+SvN1nNrXnD/lYl/omiIFli0yB7gBSEVFiiC3EacpHGwAG5zd6HPi

+lw4/DEpd+3z5OJmhIXLi2eW/lJ+UXnn829Svtdl1ue0XTjGo127MtzM9ytDHHG5dXrGg5E8vh+Hx

+zo4QERQFBwSSeb2z/oXX86P/AC8Gq/8AI2+/7Kskh6L+UP5dedPJv6W/xN5wu/Nf1/6v9U+tvO/1

+f0fV9Th68s3956i1pT7OKvRcVdirsVdirsVY/wCf/J9l5x8nar5bvKLFqMDRpKRX05R8UUlP8iRV

+b6MVfLf/ADiz50vvJX5han+XXmGtsmoztDHE/SLU4Dw4jt++Qca9yEpir7ExVK/MnmbQvLOjXGs6

+5eR2Om2q8pZ5TT5KoG7M3RVUVJ6Yq+M/zS/PHzr+bWrnyv5Vt5rPy67fDZoaS3CqaerduDRU/wAi

+vEd+RplWbNDFEymaiGUIGRoc0Nc/846uugI1vqXPX1BaRGFLVtv7tTTmtP5z18BnOw9pInLRj+77

++vv/AB9rsD2eeHY+pV/Io6rofmDWPK2rwSWlzJEl3FBIKCsbem5UjZuYddxUHjke34xy4YZYGwDW

+3n/YuhJjMxL2rOSdq7FXYq7FXYq7FXYq7FUt8w6Bp2v6Pc6VqCc7a5XiSPtIw3V0J6Mp3GZGl1M8

+GQTjzH2+TXlxicaLxryB5w1r8nPPM+i63yl8v3rKbrgCVKE0ju4V8R0ZR13HUDO3ywx67CJw59P1

+H8ebpgZYZ0X1xZXlpfWkN5ZyrPa3CLLBNGQyOjiqspHUEZzE4mJo8w54N7q2RS7FXYq73xVTuLi3

+treS4uJFht4VMk00hCoiKKszMdgAOpwxiSaHNBNPlfzv5j8wfnh+Yll5O8qBhoVtKTFKwIQqvwzX

+047IgNEB33p9p6Z13Z2iGGNn6zz/AFOtz5eM+T7B8j+TdG8m+V7Hy7o8fCzso+Jc/blkO8ksh7s7

+bn7htTNi0J9irsVdirsVdirsVdirsVfLP/OXf5WXENxb/mXoKNHNCY4tbMNVdWQhbe7BG9RtGx/1

+PfFWefl3/wA5I+VdQ/KqTzN5mu0ttV0YLbavarT1Z7gqfSaCPbl9YCkgdFIb9la4q+cvNPm3z/8A

+nr5uCUNnolo1YLRSxtrOIkgSSdPUmYd+p7cV6Yms1mPTw4pn3DqW3FhlkNB695O8l6J5U00Wemx/

+vHAN1duB6szDux8B2XoM4LXdoZNTK5cug7vx3u7w4I4xQT/MFvUJbGzluYbqSFGubfl6ExA5oHFG

+AbrQjqMsjmkImIPplzDEwBIPUNahew2Nhc3s54wWsTzSt4JGpZj9wxw4zOYiP4iB81nLhBPc8w/J

+Tzn5v8y3mqHV7oXFlaIhjHpojLJKxIAZQtQFQ9a50XbujwYYRMI8MifsH4DgaLNOZNmwHq+cy7F2

+KuxV2KuxV2KuxVjXnzyLpnm/SDZ3P7m7hq9leAVaJyO/ijftL/EDNj2d2jLTTsbxPMfjq4+o04yD

+zeb/AJZ/mj5g/KrXZPKnmyKSTQS9QFq5t+Z/v7c/txP1ZR8x8VQet1Gmx6vGMmM+r8bF1UJyxS4Z

+PqrTNT0/VLCDUNOuI7qyuVDwXETBkZT3BGczkxygeGQohzgQRYRWRZOxVSurq2tLaW6upUgtoVLz

+TSMEREUVLMxoABhjEyNDcoJp8v8A5n/mrr/5n65D5E8hQTTadcy+kxQcZL1lNeTV+xbpTl8VNvia

+nTOp7O7OGL1S+v7v2uvz5+LYcn0j+SX5N6V+Wvlv6uCl1r96FfV9RUGjMKlYoq7iKOu38x+I+A2z

+jPR8VdirsVdirsVdirsVdirsVSDz3rvlfQ/KWp6h5oaMaGsDx3kUgDCZJFK+iqEjm0leIXvir81d

+SfTpdTupdPhkt9MedzawyMJJI4WYmNGeihmCbV74q+q/y8tfLEHlOyPlsV06VefqGnqvJ0czH/fl

+RQ+HQbUzzrtWeY5z4v1D5V5eTv8ATCAgOFkma5yHYq7FWIfm3qBsfy81mRftSxLbge08ixN/wrHN

+r2Jj4tVHys/Z+txdZKsZSD/nH3TRb+S5rwj4767kYH/IjVYwP+CDZm+0mQnNGPQR+/8AAauz4+gn

+zenZzrnuxV2KuxV2KuxV2KuxVjnnbyLovm3Tfqt+np3MYJtL1APUiY+Feqn9pe/zocz9B2jk00rj

+vHqPx1aM+njkG/N4/ovmf8xfyX1w2rr9b0W4fkbVyxtLgDq8T0Jikp12r4gimdkPA12PiHP7R7/x

+7nUETwyovpX8vvzc8m+eLZf0ZdCDUgKzaVcEJcKR1KitJF/ykr70O2aHVaDJhO4uPf8Ajk5ePNGX

+vTXzl578seTtMOoa9eLboa+hAPimmYfsxRjdj+A7kZVp9LPMaiP1Mp5BEbvmXzJ54/Mb87vMcflj

+y1ZyQ6SzhksENFCKf96L2YbcV60+yDQAM1Cep0eghgF85d/6nX5cxn7n1H+S35IaB+Wmkkxlb3zD

+eIo1LVGHyJhgrukQbfxbqewGe0vSsVdirsVdirsVdirsVdirsVQup6np+l6fc6jqNwlrY2kbTXNx

+KeKJGgqzMfYYq+HfzQ/MTzL+dvnmHSNFR4PLtm7fo+2eoUIKh7y5pX42BoB+yPhG5JajU6mGGBnM

+7BnjxmZoPQ4Pyv8AK8fk1vK5i5W8g5yXVAJjcU2nr/MO3am3TOGl2xmOfxfs6V3ft73dDSQ4OH7X

+kehaz5g/KfzbLpWqK0+jXLB5VQfDJGaqlxDU7MKfEv0HsR0uowYu0MAlA+ocvI9x/HmHXY5ywTo8

+n0Fp2o2OpWMN9YzLcWlwoeGZDUEH/Pcds4jNhljkYyFSDuYTEhY5KzTQoaPIqnwJAOCOOR3AKmQH

+VyzQueKyKx8AQTiccgLIKiQPV5t/zkDctD5FijHS5voYm37BJJP1x5vPZwf4Qf6h+8OH2h/dj3p3

++UNt9X/LnRkoQXjklNRQ/vJnf9TbZjdtyvVT+H3Bs0Y/dBmOalynYq7FXYq7FXYq7FXYq7FUHq+j

+6ZrFhLYanbJdWkwo8Tjb2II3Vh2I3GXYNRPFLigaLCeMSFF4R50/JTXdCnOq+VpJby1ib1FjjJF5

+ARuCvGhenYr8Xt3zstB25jzenJ6Z/Yf1fF1OfRShvHcJFJ5F/M7zRY3PmTUI7m8eKMFHvZHa6mRe

+0SvV2CjcdK/s1OZsu0NNimMVgHy5D39zQMGSQ4qfTP8AziV518hXnlX/AA3p1lBpPmi0XnqUIr6l

+6F2+sq7lnfr8SV+A9AFIzYtD6BxV2KuxV2KuxV2KuxV2KuxV2KvjX/nI7847/wA+eYk/L/ye7XGj

+QTiO4kgNRfXSnswNDBEeh6Egt0CnIZMkYRMpGgExiSaDJvy88h2PlDRRbJxl1G4o9/dAfbcDZVPX

+gn7P3988/wC0+0Zamd8oDkP0+93um04xx82vOP5meVvKoMV7OZ7+lVsLejy+3PcKg/1j8q4dF2Tm

+1G4HDDvP6O9c2qhj25l47r/mfzt+ak6aXovlxrmO3f1I47SF7meOuxLzAURT32UZ1/Z/ZcNNdEkn

+n3fJ1OfUnJzDFvNXl7z35Lu/8P8AmCG60uQoLhbNpaxMsg+2nps0TVpQkHqKHcZseEXdbtFsbySH

+Yqu9ST0/T5H068uFTx5UpWnjir2HyZ+T/wCfGr+U9O1/yreSS6VdKzWkEOo+iQI5HRlMcjxoPjjI

+pXKMmmxT+qMT7wGcckhyJCOudA/5yq0IfvtM1G4VDuscNvqFadqwidj07HMXJ2Tpp84D4bfc2x1W

+QdUvl/Oj8y9CmEPmHQ0iPQpc209pKT1/aNP+FzCyezunly4o/H9bbHX5Bzop1pv/ADkboslBqWkX

+FsfG3dJx8/j9HNfl9mZfwTB94r9bkR7RHUMv0r82/wAvtSoserx28ndLoNb0/wBlIFT7mzWZuxdT

+D+HiHlv9nP7HIhrMcutMst7i3uIlmt5Umib7MkbBlPyIqM1s8coGpAg+bkxkDuFTIJdirsVdirsV

+dirH/PXm608q+XZ9Umo8391ZwH/dk7A8V+Qpyb2GZ/Z2iOoyiP8AD19zRqMwxxvq+cfL9n+Yf19/

+Omi29ytzYytfnU41CgPyLOyhqCTqeSqDt1FM7+WoxYyIGQBOwDoxjlIE0+1/yK/O7S/zJ0IpP6dp

+5nsVA1LT1OzrsPrEAO5jYncdVOx/ZJyGt6jirsVdirsVdirsVdirsVfO/wDzlT+dh8vaa/kfQJ6a

+7qUf+5S4jPxWtrINoxTpJMD8wm/7SnFWA/k3+W48v6eNZ1OL/c1ep8EbDe3hbfhQ9Hbq3h08a8V2

+52n4svCgfRHn5n9Q/HR3Gi03COI8yl/5qfm5LYTt5d8sP6mqM3pXd3GOZiY7elFStZa9T+z0+10v

+7I7G4gMmUbdI/pP6mGr1demPzZX+UH/OJcl6I/MP5lNKZJj6sehB2EjV35XkoPKp68FNfFuq51wF

+OqfT2j6Jo+i2Een6RZQafYxf3dtbRrFGPfigAqe5xVj35mflh5Y/MLy++k61CBKgLWGoIB69tKf2

+o2PY0HJejD6CFXwV+Z35WeaPy715tL1qHlbyFmsNRjB9C4jBoGU/st/Mh3X5UJVYdirsVfb3/OHX

+mKPUfyrfSS9Z9EvpovTrUiK4/wBIRvYM7yD6MVe7YqsmhhniaKaNZYnFHjcBlI8CDtirDde/JX8q

+Ne5HUvK1g0j15zQRC1lJPcyW/pOT9OKvMfMn/OF/5eXwZ9D1K+0aY/ZRit3AP9g/CT/krirzTVv+

+cTvzh8tSPdeVNVh1EDoLS4exuWp4rIVj/wCSpyGTHGYqQBHmmMiNwxq58/fnT5ImW382aVMYgeIO

+oWzRch0pHcRhUfp1+LNVn7C02TcDhPl+rk5UNbkj1tlGgf8AOQHlS94x6rBNpUx6uR68P/BIOf8A

+wmaPUezmWO+MiX2H9X2uZj7QifqFPRNK1vR9Wg9fTL2G9iHVoHV6V7NQ7H2OaTPpsmI1OJi5sMkZ

+cjaNyhm7FXYqlGq+VNC1fULe91S2F69opW2hn+OFCxqzekfhLGg3avTbMzDrsuKBhA8N8yOfz/U0

+zwRlKzumyqqqFUAKBQKNgAO2YhJJttp84edta0nyl+Y0Gu+Qr/0NQtH9W4WAfuI5wfiRSDxdJBUO

+lOPUd6D0PsqWc4R4w36d5Hm6HUiAn6H2P+TH5xaN+ZXlwXcIW11u0ATVdM5VMbnpJHXcxP8Asnt0

+PTNk470PFXYq7FXYq7FXYqwf84fzP078uvJtxrU/GXUJawaTZMf765YbVA34IPic+G3UjFXyR+U/

+lPUvNnmK589+ZXa65XDzRPKB/pF2Wq0h7cIz0AFK7D7NM5/tztLwo+HA+uXPyH6z+OjnaLT8R4jy

+DOPzf89t5Y8v+hZScdX1HlHbEdY0A/eS/MVovufbNJ2J2f4+TikPRD7T3fr/AGubrM/BGhzKf/8A

+OK/5HQWtjb/mF5ltxLqV3+90K2mBPoxHpdMD1kk6x+C/F1O3dukfTGKuxV2KpL5v8neXfN+hz6J5

+gs0vLCffi2zxuPsyROPiR17EfqxV8N/nR/zj/wCZfy5umvYeep+VpXpb6mq/FFyPwx3Kj7Ddg32W

+7UO2KvKcVeu/84z/AJoQeRvPwi1KX0tC11Vs7+RjRIpA1YJ29kZipJ6KxPbFX3sCCKjcHocVbxV2

+KuxV2Kqc9vBcQvBcRrNDIOMkUihlYHsVNQcVeX+cP+cZ/wAovM3OQ6QNIvH/AOPrSmFsQf8AjDRo

+D/yLrirw/wA0f84fef8AQZ21DyRrKal6dTHEWNhejwVH5GJvmXT5ZGURIURYSCRyYf8A8rL/ADW8

+jXo03zjpUslK8Y7+JreVlXasU6rxdf8AKo3zzT6rsHBk3j6D5cvl+qnLx62cee7P/LX5zeSdbKxS

+XJ0y7bb0byiKT/kygmP5VIPtnO6rsLPi3iOOPlz+X6rc/HrYS57FnSsrKGUhlIqCNwRmmIINFywW

+8CWLebfLnmTzCG0+PVV0jRm2n+rK0lzOpG6s7FFjXtRa17nembXRavBp/VwmeTz2A93P5uLmxTnt

+dRSjR/yO8g6cVea2l1GVTUPdyEiv+pH6aEfMHL83tBqJ/TUfcP12whocY57sS80+XfMH5YeaLfz3

+5JdorSKStxbAExxBz8UUigjlbydP8n58Tm97H7WGccE/7wf7L9vf8/dhavS8BsfT9z6x/Kf81NB/

+MbyzHq2nEQXsVI9U0xmDSW03genJHpVHpuPAggb1wmbYq7FXYq7FVK6ure0tprq5lWG2gRpZ5nIV

+ERByZmJ2AAFTir4W89eZtV/PD81xHas8Xlyw5RWXb0bJGHqTsDt6s7U/4Vei1zE12rjp8Rmfh5lt

+w4jOVB7Zp2n2enWMFjZxiG1tkWKGMdAqig655xmyyyTM5G5F6CEREUOTxPS9Gb81/wA/YNJlLNo1

+tMUuKbUsrEky0I6es9QD25jPQ+zNL4OCMevM+8/inQ6nJxzJfdcUUUUSRRIscUahY41AVVVRQAAb

+AAZntC/FXYq7FXYqo3dnaXtrLaXkKXFrOpjnglUOjowoVZWqCD74q+T/AM7f+cTri0a48wfl7E09

+pvJdeX6lpY+5NqTu6/8AFZ+Ifs16BV8xyRyRSNHIpSRCVdGBDBgaEEHoRiqLv9b1nUEjS/v7m7SF

+VjhWeV5QiIOKqocmgUbADFU/8k/mp588l38N1oOrzwxREcrCR2ktJFH7MkDHgRTaoow7EYq/Qb8v

+POFv5y8laR5mt4/RXUoBI8NeXpyqxjlQNtULIjCuKsixV2KuxV2KuxVB6rpGlavZSWGq2cF/ZS7S

+W1zGssbfNHBGKvD/AD5/zh75B1r1Lny1PL5cvmqREtbizY/8YnYOlT/K9B/LirxDWPy7/Pr8pmea

+GKW90OI8nuLOt5ZcQakvERzhHixVfnmJqdDhzj1xvz6/Ntx5pw5FNvKv/OQWi3fCDzDbNp0/Q3UI

+aWAmnUqKyJv2+L55zWr9nJDfEeLyPP58vudhi7QB2kKepWGo6fqNst1YXMd1bP8AZmhcOp+lSc57

+LhnjPDMGJ83YRmJCwbROVMlk0MU8LwzIJIZVKSRsKqysKEEHqCMlCZiQRsQggEUXiepWHmf8m/OM

+PnDyiS+jSH07i3erxhHYFrafuY2oOD9QadwCe77J7UGojwy2yD7fN0mq0xxmx9L7C/Lr8wvL/n3y

+zBr+iyExSfBc2z/3tvOAC8Ug8RXY9CNxm5cRk+KuxV2Kvm7/AJzA/NOTTNHg8haVKRf6ugn1ZkJ5

+JacqJDt3mdTyH8op0bFUg/KjyOvlfy2n1iMDVr8LNfsaVXb4Ia/8Vg7/AOVXOB7Z1/j5aH0R5fpL

+vNJg4I2eZZRr1/8Ao/Q9Rv8A/lktZp/+RUZf+Ga7SwE8sInkZAfa35ZVEnyYp/zg/o0Ump+atccV

+mghtbKJu/Gd3ll/GBM9PecfWeKuxV2KuxV2KuxV2KvOfPf5Aflj521UatrGmtHqRFJ7m0kMDTdKG

+Xjs7CmzUr+GKsb/6FD/Jv/lmvv8ApLb+mKu/6FD/ACb/AOWa+/6S2/pir0/yZ5Q0byf5as/LmirI

+mmWPqfV1lcyOPWleZ6sevxyHFU7xV2KuxV2KuxV2KuxV2KvMfzC/5x1/LLzr6lzcaf8AovVn3/Se

+ncYJGbrWSOhikr3LLy9xir5080f846/nH+XVzJqnlK6k1nT1NTLpwYXHFenrWR58/kvMZTmwQyx4

+ZgSDKEzE2DSH8r/85ABZRZea7IwSoeD3lup+FgaH1YT8Qp34/wDA5zes9nBzwn4H9B/X83Y4u0Ok

+w9b0nWdK1e0W80y7iu7ZukkTBgD4Hup9jvnM59PkxS4ZgxLsYZIyFg2q31jaX9pNZ3kKz2s6lJoX

+FVZT2ORxZZY5CUTUgmURIUeTxy2svzN/KLzbcaj5Eil1DS9RRkNuIZLqMqDVUnij35Rk/A+3z3YZ

+3Wg7YxZYXOQhMc7NfK/wHS59JKMthYZVB/zlL+eWlMZNc8owTWiEmRzaXlsaClaS83jp/sTmxx6r

+FM1GUZe4guPLHIcwQ9C8jf8AOYH5ea7NFaa9bzeW7uUhRLMwns+RNADOgVl+bxhR3OXsHulvcW9z

+BHcW0qTW8yh4Zo2Do6MKqysKggjoRir849U/MZtX/M6688azZnUTNdNcxWTSekFVPhtk5cZPhhVV

+FKb0yjU4pZMZjE8JPVnjkIyBItnP/Qyn/fuf9Pv/AF4zm/8AQx/tn+x/487D+Uv6P2/sQWuf85A/

+pXRNQ0z9A+j9etprb1vrfLh60ZTlx9Fa05VpXLcHs74eSM+O+Eg/T3f5zGev4okcPPz/AGPU/wDn

+B7UUbTvNmmkgPFNaXCjuRIsqH7vTH350zrn1DirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV

+dirsVdirsVdirBPzB/JP8uvPivJremKmpFaJqtofQul2oKuopJTsJFYYq+afOP8AzjN+afkK7fWP

+JF7LrNjGeX+iVjvVUb0ktqlZh/qcq/yjK8uKGSPDIAjzZRkYmwl/lf8AP1opf0f5vsmgnjb05LyB

+CCrA0PqwH4lI78f+BzmtZ7OA74T8D+g/r+bsMPaHSfzet6TrOlavZreaZdR3ds3SSJgwB8D3B9jv

+nMZ9PkxS4ZgxLsoZIyFg2jMpZsJ87flR5Z8zxSTLCthqxBKX0Kgcm/4uQUEg9/te+bjQds5cBAke

+KHcf0H8BxM+kjPlsWPfkJ+aPmL8t/PS+QfNEjHQbycWyo7FktbiZh6U8LH/dMpYcxsN+WxBr3OHN

+HLATibiXSzgYmjzfWP8AyrzyB/1LOlf9INt/zRlrF3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+

+kG2/5oxVHaV5Z8uaRJJJpOlWenySgLK9rbxQMyg1AYxqtRiqZYq7FXYq7FXYq7FXYq7FXYq7FXYq

+7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT8xvyU/L/AM/xFtbsBHqQXjFq1pSG6XsKuARIB2EisB2x

+V856t/ziZ+bHl/VpT5M1qO4sZhtcpcPYT0B2SVFJBp4hj8hleTFCYqQEh5i2UZGPI0of9C+f85Nf

+9XeT/uLS/wDNWUfkNP8A6nD/AEo/Uz8ef84/N3/Qvn/OTX/V3k/7i0v/ADVj+Q0/+pw/0o/Uvjz/

+AJx+aX3n/OK/576ldpcalLBdTgKguLi/MzqoNQAzVagqTTMjHijAVECI8tmEpEmybf/Z</xapGImg:image>

+    </rdf:li>

+   </rdf:Alt>

+  </xap:Thumbnails>

+ </rdf:Description>

+

+ <rdf:Description

+   rdf:about="">

+  <dc:format>image/svg+xml</dc:format>

+ </rdf:Description>

+

+<cc:Work

+   rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type

+     rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></svg:metadata></x:xmpmeta>

+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <xpacket />

+            </svg:metadata>

+        <svg:switch

+   id="switch6">

+            <svg:foreignObject

+   requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"

+   x="0"

+   y="0"

+   width="1"

+   height="1"

+   id="foreignObject8">

+                <i:pgfRef

+   xlink:href="#adobe_illustrator_pgf">

+                </i:pgfRef>

+            </svg:foreignObject>

+            <svg:g

+   i:extraneous="self"

+   id="g10">

+                <svg:g

+   id="colors"

+   i:layer="yes"

+   i:dimmedPercent="3"

+   i:rgbTrio="#4F00FFFF4F00">

+                    <svg:path

+   i:knockout="Off"

+   fill="#F8DC75"

+   d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4                         c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3                         c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399                         c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421                         c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083                         c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"

+   id="path13" />

+                    <svg:path

+   i:knockout="Off"

+   fill="#D2A41F"

+   d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191                         c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861                         l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292                         c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668                         c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"

+   id="path15" />

+                </svg:g>

+                <svg:g

+   id="tomcat"

+   i:layer="yes"

+   i:dimmedPercent="3"

+   i:rgbTrio="#4F00FFFF4F00">

+                    <svg:path

+   i:knockout="Off"

+   d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588                         c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279                         c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12                         C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064                         C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141                         C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48                         c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57                         c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"

+   id="path18" />

+                    <svg:g

+   id="g20">

+                        <svg:rect

+   x="133.209"

+   y="90.51"

+   i:knockout="Off"

+   width="26.245"

+   height="3.239"

+   id="rect22" />

+                        <svg:rect

+   x="133.209"

+   y="82.732"

+   i:knockout="Off"

+   width="26.245"

+   height="3.24"

+   id="rect24" />

+                        <svg:rect

+   x="213.35"

+   y="90.51"

+   i:knockout="Off"

+   width="26.244"

+   height="3.239"

+   id="rect26" />

+                        <svg:rect

+   x="213.35"

+   y="82.732"

+   i:knockout="Off"

+   width="26.244"

+   height="3.24"

+   id="rect28" />

+                        <svg:g

+   id="g30">

+                            <svg:path

+   i:knockout="Off"

+   d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125                                 c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024                                 c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0                                 c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"

+   id="path32" />

+                            <svg:path

+   i:knockout="Off"

+   d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015                                 c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021                                 c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382                                 l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733                                 l-12.317-7.755l24.071,0.006L187.156,86.733z"

+   id="path34" />

+                        </svg:g>

+                    </svg:g>

+                    <svg:polygon

+   i:knockout="Off"

+   points="114.745,73.635 122.087,95.391 99.788,80.434 "

+   id="polygon36" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="93.261,83.153 101.147,96.75 84.559,88.32 "

+   id="polygon38" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="75.313,93.759 79.12,107.356 67.699,99.47 "

+   id="polygon40" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="196.871,130.199 189.801,141.077 202.31,135.366 "

+   id="polygon42" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="208.021,142.709 196.6,151.411 212.372,147.332 "

+   id="polygon44" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="180.282,24.686 188.713,43.178 194.151,24.414 "

+   id="polygon46" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="137.588,51.608 150.913,58.678 138.947,59.494 "

+   id="polygon48" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="140.851,66.021 149.009,69.284 142.211,71.188 "

+   id="polygon50" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="236.031,56.775 225.153,61.398 234.127,62.757 "

+   id="polygon52" />

+                    <svg:polygon

+   i:knockout="Off"

+   points="231.68,70.1 223.25,72.548 230.048,74.995 "

+   id="polygon54" />

+                    <svg:path

+   i:knockout="Off"

+   d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861                         l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075                         c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177                         c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077                         c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396                         c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899                         C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049                         c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455                         c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198                         c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668                         c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109                         h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347                         c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z                          M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76                         c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"

+   id="path56" />

+                </svg:g>

+            </svg:g>

+        </svg:switch>

+        <i:pgf

+   id="adobe_illustrator_pgf">

+

+            eJzdffle8sqy6H0B3gFUFGQwEyEBB2YHUEFwwJlJRJlkWGuv88d59lvVSUgICWmQ75x1716/7aed

+Tnd1dXXN1fF6iuVQsjmot0J8mHG7vN70qFWbDEYxN2l1n3e70/FkhE2+G7+bZcMMdEqeS29qx7vW

+aNwZ9GPkEXmYw7d951e565vTrN/t80NbpTPptqB1Mug1apPw+K+2X5sLXs7UJvAwciAfMKKbZWJ8

+1J28hOepwbTf7PTbqcF/YPyo6OYZzi3AU0GKwuOzzk1rbO4TjrK8jB3DnAy/CLwYluBNQYInDL6V

+GTSmvVZ/UhwNGq3xOD3oDkbjmDv9T63vvqy14UnNXW11u4O/3alurfHtgtVG3nKdbgsW1qtN3FFc

+ZfKcfyOv3o7hHXgdf8fm6Nt5D1rKrckEoIKBESXpy2reOB9Aqv7ne7pptTsEw4CIF78ycqXVG3YB

+KWRRPCCFl0XtX7UHwEOehqJsmJdlGfAmhiMy9BMlPiwwjAC/RMgj5Q193a2/Oq2/Y+6rQb+lLC45

+mpQ7/9XCqRg3xzBK68202xrd9jsTWASHTbKy4stBs9VVm8i7uW6NLJT8x+o/lQ6V2qjdmsBODbrT

+CaEUSZvhator1P5pjfQJroetfmVwR+ALiUJYFMWIWxQY5Rc2HHFLouyOMoA6ScEgC8tUp2TJtKwy

+No6E42gTRHHvi7Az16NOu9OPsYLoDnHYint2Ouo09S2Lcm5J+UHWEZYM/5e1/ysAw9onk1Zf2eZs

+v5ke9BDJY6Re2Ng+7Hp30FaezX4nT2C66VCBlfz9BvtRHHX6CIPrijyR3ordKTw6HQ2mw/P+x8Dl

+U05lEScd9a/78MunOzWajj/dlcGgC6dtroP6SBkFH44mxt5L54C+9uPrA601drrW7Xbao9rws9Ow

+Gt7i+Wweu3eXTgjbNGrpY5A/Z/8ufbPcIKi0gnL+0WxwizeWz/BPrz7odsY9fWBDi/67E0XARnVb

+/eZ4Nozypw5YofOX1rh8sEzrA1idYWtJa7b/V6s7GBrQOGup9Zvu+9poaDcsQvfR6TcBK+VpZ9LS

+N3rQGyIDd5c/a0NsXuipnBA4PcbzEQotPzgrvyArT5ARTv7ptsaug3x/8Hef/OGOuXxPgJLatDt5

+8bsPrmq9ljvoOih3gEm3tC6M+9rFqDzwG367cWn8MO/SuCLjfvgH/riAX76g6W+34L50P70w7ia0

+Pty4kIE9NF0HxRoA54673AcwLfxLAIQV6eA5rrFY6wI7axEginWXnbhBkMauhdZiY/bGt+XTYmoG

+gjbTKvgtwHBGpC6skHRYZyNZRnmkHBsc5v+ozTCQqdFmcBVWTV6CclJzed8OtL9hr/GvTgOxURv9

+o/z9cFm4ArlI/vBtN9W+QC3lCQzedvv+0+v2oUMIf/SBgvxAQt436+d/1bpTtYPsPjiHOeceT/4Z

+qk8PkqNRzQqCXmtSawLgvweAXQ+Av2qjTq3eRT1o/G8A4n8dhv9JLMT1Po3PTrc5avXVPiayNXQE

+mTXq1KcTBDRIHgUX1xIb15Dn4ZH4H95Y6iXNQ4zvOIPp2+2P3xpg5wx6cZvOBpi5/9lt0NawuB3k

+QewvuuUBHY7/rYvDNQRpyHFNKoC1A7leEYQ44areIeYk++9DlXEVi8TQHTS+W03n9fXB6vv3rU2D

+/k9SwQq84N98WCiRNL/28cff/2sScNztNP6/EH9kIeXBdNRoEa/Tv3JN8yD/4wjizFN2cNOqdf81

+pP6PpcBzXM3MAfjvWs1/rFbzd6c5+XRcEScyYVbk2H/ZilTgF1f12eq0P53VbVYSwgLL/9uWpUG/

+uK76YALqYaH1MVEciM4rdB+kBoN/z9IWF/AvEbYgm/4fl7WbEzgbAt7ggMAWRsVd8pxl3TM/BnFA

+uwu1fntaa7fcxcFwOjSRLnmhOGqNW6O/Wu5K6z8Td7bZmdTqnW5norJoMRLhI7MJZHdtNKkPaqOm

+u4HBAjfrHmmKnWPP9qilrdexb31GGRFO4CT7rpwOgGNPAwCOfesLQnyx2zzp4vPJqNYfD2uwr41/

+YLpO0z3u/Fdrtk0a2mX3sDZsjeBhb9olfjdNWjMax8RO19PJcDpx39TGk9ao81+ko1sPtajgRebe

+uWyNPx3eYOb2X6Mldwd61SYtWHmL2EhLO3/3QaUfAHBtdAOrx/3pstXsTHuGCV8MJ9+KPNX4CqCC

+kOHEbbB/TEdCIxfAvIr4qIb55rATNkFb63bGpqZebfytolnUMDasNXWzJHnuTk4ngxn2tP1nDAeM

+cX/MQB6RfqG/Wo0JkEy91q31G4t7PfcKYKzb6bfcEzhrdD3Hk9HgWzv7rE3nRrczBJJE581/4Dy0

+AW0Obwy1Uz/4qzUaooN0xl4ANY3BqNlqLm6D++BqMJl7vCrvcRhOp5YDne8djJqjcVhx4JgV74Vu

+tX5/MJmtXdnlhU4aHsbjeQ662HHabzh0AXkHJ6ZJdQSML/9nGNYlpdXo0GEwbE4dOoydRmgM5tmY

+qQOSzvIOgz6QyEShw6VzqT112iasyaonMOJ5lsQzNj1H5p7RiHXHueNnufNDZd+X7zp0AjY038/A

+lc1dP2vN1qi1fLwuiyezNlnaCXA3Ia6bpX16eGzHRkZu1a/fagPj/2v5YPUOnsF5CWYGvPVXq2s/

+yEd/Eh5P6+MlC8Muze5w9DGY8RcrKlO69UDbUbUDS3S3e9/hXm30PR58fIQVdZe6+0jX+yl6TwZD

+6r5d0LhnCLDpDPyh1TRDTdHdADVF7xnUFH3noF7ce+xLNJx6bbSMuLHfyBA9dOg6BGHQ6X8MnGYe

+GVZi3YUsRO0T5iK2C262PlCKGsxZa2ZMOn8N6hNMZHLsqIiij0532RHDjmMMdjr0mZMfVr0ao2Z4

+Ahq5ppFZnSDsM240+ssOo9Jn2G38Y9BrFvGmdKt1W+G/KPt9LiE77DUYtbWxlvZRx7Fi8NhlOBh3

+lhMZ9oL9Hn4ORv+lcraoXb/BqIO5YA4DdkfhmYJUx3Sx5X01WTkcTJYcG+ypMztrOgNadFAPsEe9

+M+nVhmYRadebrKI2Vl6i6DpYTuGzfnXVW7qsY7M17rT7TugeDkdhYkItoxbs9AlMbNxaxhtJt7/p

+uhndQksGc2Qi0Enfs2iUDwuWjAm6dTCJcE4cROSIU3eDOGClsLVsmnWeSQNWdOqqC4OozNl1NeJI

+ZG27GZBkxaewS1NJC1nCFqGTs7Y/nnTVXsNh035G7KbOOOtnPyB0wZPZtfLxL/RF2m+N5lyCS6dX

++muGgiHlyGoGEL/dFjGVdJM4PnPZYAJRUuvsRpuKyryyO504WW3icNZHoA6Oxi0cbWS/YOw5/u4M

+gVv2v504HCoEcNzbluu7GNQxvcywOt0TA52yxbL72mS8zvlP1D4FtKIxexGz2IiPa6kHRX3rdFRr

+ooAgbyk+FTtDZPaO4jc4uFP8ASk7f4AKumrfV3RrybZP2c4HoHRLo/WfVq3/G6P1T+ORwRGWuGFY

+o9eqP9D9Be5On7gcUCpbuWwWqc/3ZEg3d69B/1Z2Cq6hmMm9pYmN1TG6Lq3IU+uueT0NEKHrE8BI

+14aKA7TTWmKyaOOcItbg6FQ+p716v9bpLpGD2juYtwz/5pZKV61zDojqvlXHd5yhIQncmcHffSWR

+J9/pNw0kTvuamdI5zkols3mZpMcn64O/dFtu+atp3arV4V2+0/NvlaY1fc+5iOOEmFtf1r17yzZ3

+VPtndWzOv7UaMuffXQWX+ObKqDS9tAIm8U16RF4O+oPG52jQa1mh09r5s+xdM1KFpRuCI9gjVaCa

+2xK1y4+i8gJIHudDXhl1epfoUXDuCvydsich9tRSA37GDQEl50sNc51vEiUGQajMwnN2Jrh5efct

+BzeM9sI1UdtzgHhA39+D0XdhpqKu9l7KyU1k++bNuqBWlrphtNdS6MAoLPcdzfW9cTBR5jqvAIMR

+Q8voWQG4019iAWtds716q3meThdHxILUpOjSU16e1hGNg/7kBo1EZ3hmqh+FCFW0m4ohNkelHi0Z

+C54rmtKVIdNmKbLNL17W/rNED6UaodO31Ulp3lf01JTJb079OmqdqtKp6JyrD6Hqt2WH0ILD6xVj

+LM1R4Us2RoN6baLUjc3MDuihrmqmdppNDtkc3hrW+pp7XJOx5btTJGGFmCcLHjv1cWHQqC3OAA/J

+wVGsCJWm9GcAXqOju/4NM2b7jYEerxX0B6TUQufSM00eHpHyHKRdOBANi+daheLik2L7Y7HxoWZO

+LcDpu53GDKz4ojmgF77M12Lgjik1Griz2jMX2UljC5oYyXL6/FyKZGDcJlbteAPHYmgnMfY/bGXy

+F42PnL/EJRM/qVefcHL9fhy955lmvBXz9smf8fPx4CP3Xpju5TyBJ8bUFji5qx8wXHcSSd5UcpVE

+bPgii49i79HlPQy95wZkMJgvPk6Wp7e+ZL/eHqvvHP/0kvn77PZodFzrn3bvvuqp98tSMhnssy/x

+E/ZOymw3p9lM+uz5hQwVOD4aeoUxv1MKnHxOeAKIy0sBygqAHNWTweHVRSIvj4+ls8P7cG7wKNy5

+vNnR8yOTecxVK7mj5FHDCp7jof9wCBOchdLcztF7JjxN3Cajz29VsTpki7nd0kNXna+R3M18DP1s

+snIxmeptLq/Smn/wT2Cci2kmfP15OBoJmQ7DiVvDxN1eeUfpzjLFWs4/2a1lgy9XBykxyG2p47wP

+EqNRfFwBeIPnDBv6iunIiqdu0i2XdyzlJnfc6+B7Vyy19gMRT9p/LRyWYpXA0Y34OXphxodhviBz

+geNTz64w5saXAM2dFD4YS6eC9BP/gj/9fqa5W83MT/o8erl8LpFJgcbmp4V3o6+R2Plr2HLS152r

+gu2kYid/6rWa1OUdjQ49vtGY9Y6s1jqWiuyzsMXF9q0mHe8FL0M2k0Y+fbW9apZM6vIurFXwPwcO

+uXbJctKt3KuwfTvsFqwmZXKpfMJqUpcXphW3d/oj/5E1goXqK5P7uCpbT3rqOdxlL94qlpOennEV

+Mime/UUEc4/HlXcyKbufrGfnd/V+9Dw9LuCk8cU99VX5py7rh0lDQX1SmEUhpQKTUtda3NszTRqJ

+9N6GdpO+jV4++xWbSRM1MZrbYV1e07QqKZ2839hNerbD++LP1pMeel7G25+tG9OkwGGUaUtp//HP

+Tq9gNWkg3o0d20wa+dw/eUxcW08qVKtMTmaugMas1rqVa0d3bnrctdWkTO7lJWczqbjt/e5fpk2T

+wizatDXmNPh+Zz3pKZPca/miVUv0TraDJ+qk1ZDPhN6TK+Ho2aWcVTb7/J2bW+vjIVOIhlic9HBh

+0rPWQLyphTiYlAmZV1p4eqyZJiWzqGuNfjdzr3aTZpjL/RfZetLzn1jia3R1YzlpOb7Hw6m0Xqu4

+nW+VecZm0qcQU37zb1lPmj9rXT09+n36pC6vYdq7vX7bdtLyZ+m9bjfpKXOXHx5aTw==

+

+

+            WuC9Lu9tLnF4ZLnWu+HFlu2kd2+nWxO7Sa+Z+5N8Rp8U1mKY9vI4+/ZaenmxnPTl+vvcdtKvaqSZ

+s5n0Gbgl8zLuhqzXevU17F3LEm856dt5qG876chbDnj0SVGKGc/qLZPt9C4sJ5WuQluexEsoC5Py

+YfOhmb5F39RJ67zfdGhcXv9jobZPpuX2jn1n82stMO/7sSROemyaFIb9+tGYvnhgnnQ82D1SJ52c

+BGBf5tfqea49+ZVJU1X2fJ4VBkfj22MPTppY5EnnIW2lh6xpUsBY/GxLVKY9YfMhEysMDoUrRdLw

+O7F0fn7SndGoVu/jpCnzSkfJ1kCj3hTQmFmUR75iqqQ5iZXCJgRvDVrvFUWmtmpv4jxIZ7e7r4OY

+1VMikSNn1RLbu7N7+5M5e/dObZ8C683s2jyFHdgNpL0qt2RaX62o6bkosW8a3ONvyfy0/7n1YPs0

+WjyPPetPF3Zf4vZv3m3flj5rr3u2T5Pc7mPD6qmqwxQC/RPO9u1C/fojbvv0eqtRP7N5Kp3tnh3e

+jjWMfez9yKa3bwMdTT39YLdi5qf1i3Lf9uldJvA90p8uYOzeWz/w2L59/5yJHdk+ffe+RnesnqoY

++5oUh2e2b3/fcamS7dPed+741e4poKoUj8wwtvj8ghOOH2yfNvr1csHu6a5n9/x53x5ju9nkZb1l

++/YFd7LF2j1Nergdf8wWY5EzJnu0r6065oubznSgUhqfqE/T4UPT08r76X7S+FQI3iBDKSnGXDq0

+nwbdcjJ8fUm3Pyvo1EseHctnO0hZ9z7VWj5pxGzMvvFD4u7jtpysVLz3hEUlK5dNIVsbPXkDqcH4

+Sm8Du7I2etwjfC7GSp4rwsw8+/k46wlmbu49wbvXsif41qx4fE/+Kf5WBBL8TntC+bfIolFYbSdL

+fFkCqNMBsE4H3+JOVP5AS3yf82h25YuUe5s81xLxIbuVuQhsR7Sl7faSg8wrkOm2vMXtHRWPM639

+rJecOzRnnjQsWvdzKT3R2pKX9yT9jmPpp6pjPzDD6js333o/l9e257730DNwHFHcpl0L2GLRG/8L

+xYg7fT7+RtHPe925rFGsRdxGod6gGHHvvB5ua/22e7n0x4V0cHnRisKf+9vJ6GOXV2xkPwjHj0OF

+Tpgx101Wkv0ccxER9hWyQfcHWMsRThe84lZVuMw+Nn4+DjpHdb/4KBbOVLs5ujuaCeB0cvBz60cO

+s7glft/JU3c5eGhLv9AAt5WrhY1eBVvwmFz+sGgCz3I3hKvMuxVwhFvq4FXfqMA73RFpgDstbT8a

+dH478KSzOWKxxV31ZjlwQGPK1l7l72jAy2ZvczPcZZLl4PcODFCqHnS2Y8G5CQKHZhqLGUBh9yKv

+mY9KhkeQBVzaob5SNnjLhvRJR1M+zVBMCjr//LREO15z0kBsMMnipEOCFoabJj7Tn8Kbui+gah4P

+M9lGsSJqbsX2NNuoth6UNo2P5zPnzSPQlHLTbjReui6ib5GbPb3B38AI/5bPAergdy59EiuTbTdY

+FuPA8XF2D6At7yOMYbLq46GvOVZdNfMORmWlbW83ebt9hFoBs5Usdz2jXFa6OVAHvWr8BI6LuwOY

+BYWZOPGxp+qLO82MojYDZKmDz1bGq/wAOriHwYqiam3BfLMtIcvIoJMhN7+MjMGrQJbhNfzAmWPv

+P8WYQbTOgfezEnDkVC4Fr86fWYFnAdy+LXC4FhW8MQ14hEIJVaojXkh2y53q42m7b7tg+HGjLFfx

+3VgsF4yrwvLlulbZjb2tNUlF5ckLu3Fa7CERt/EgbStcR7wgauyddCyf3hbBctr1kh/c3glzjoCc

+z4YqaZyvKELnpwzsCxhId5T7S0F8A3Y/9ZVjWDnyleATj6jB7fpmvosK04Rd9Xq1H8K+eiCJy2Au

+AhF7H43rsE3xEC0CXXSn7fT55zcI1LVxFYWoJz/++oDoCORSj/IF+i3nULgSAi042o0VR5udympw

+aMYyM3xNr8fRsgjNqY4RVSJb4+Q0v4sz31jufvb5emLaq8jwQC6a9oqwd5fXlsHPjXjnoRhR/VF7

+yCCCzmx3/zXL78Tzhbm92t6z3KtWMbyr7osFxk5ipcvNYCwToNzJXZfKD615w2sWHQX3Jvm6Okgu

+LwIVpgXKASSwWatWIFnISic8MU4gDQJHugpBWIFyXi6WgJcOPy3F2K6uihhPL3FeamC6vBbnt7xE

+I6lzCyLf+fSSfbE8vzkrxcpi43Xd6omMqAbW5sZzeZURT3zZPBUpGYTMpWzNI2G5CmOenTqiw5jO

+nU+yVv3mUG2giNrWJbcci3he5mhCXzq8PTmdLX2ojy1VdvcuTyvPX02GTT23M+Gb26Ae7iczw1C3

+I50nqbLSSiYtV2PnRnwYL5dxLu8cITrrWd/SZHW9zeVdOuJ0M5rgTIp9yx6qEY/q+/o5sKJa7HyK

+3v0LM082SXYa82JuXz63N70v8s6m90Wmsm5W2RdppMhSJ5UGjVCCVFXtOrXhtM1TXWt1eZeqXTRM

+St3u07uB7eYAT17nGN4tCJmlqHR5nY/hiK3t7J39BpUmHQaQSafBroLK+hilmKOWvbJhfmsSgzN7

+n2BnckxlXNKpsWe6GutAY7pqb6lscKmHT7PSaYUMl8HosN79yQmVNbn0aJowdkLFPuiM5zPdeP4t

+xqpbu5vB2PGYjvXMrKlFDV3RYYAcTsv9lSxHW5BWtpGtzQYEqTpcCSQlwmsNFBVfoQDpbUR19uct

+bDulun1moVQv8Y/NLOxyfD70dKMNe+hLRl89Ye5lXE+lP6Nnw0w+/5PSgjVk0q9zprlXyxJkuLz0

+RjjJFrIg55dx34EBuLwWODmzwcnX+Yp7pQHnMqd5auBNHNSSleSey8u9TLzUJGBlZpuWu2hk0/iU

+bHdjEtijBc5FsxuYg3C7qgfIaN3M8eQTX2ZixSDWJ75PbhZ7XUUu2nD58+UuNKOmREvOq7vQiAZr

+YyAiAokT7TcIJAxu5k9WtY97eyP8hL1YMGcoXWiWnt4LkxNtTe8LvxPz7ZC9Aj7m7ESjON0wYtgs

+m/XxFnbf8XT3LlZ3odlgbN6JtjbG5B9m8bys46/qXVC40Fy0QPG/caGpUR4FKDsn2sp4iphAAilG

+QfNzvpI5igezgcI561qmOqgpJ9eGIOJJrDixCyLmkc6zlB5FZ/89UOD2SttkoOR52hnmTT4um2NB

+ZTKTUwkjvkxTeZqDhj+WSxX+5DbmM+0V6JbWrnT/LuECdhjzbwpjFnJ4HcI+ufXyixHedRgAgPSx

+9/NgC9JcJNERKPNpowXJZO8jUAvi1tYba61Pz+2fxypiZUtZ1j5vC1MfyWc7btLQdT72ULY9uusE

+3k6LPTb7Mj416fxrBHPSALdg1o+s+RitzEXCPqDWLubtdEtZiTAe0YTWHE4voo0/uatc0u2+E9r8

+PmcPPM25I7Sx4M2jXd+8hwRWuPwQ0x5h3ES/brj9msb8C4FxC4pw0UpfMiJtlM48noHGLGIfrz9L

+Ylen5T6toHN5KUQd7n7lN+GmmY08B+MqLNPrwDJxPDgvjrFCpxEtnBqob/p1Xcflndd20sARYpTH

+giJ95OGWGCmEJ//2bIy/HRjcjJJpIyPAAFZXeHAtNioPwugQIaTkTrd4XjZhqyBIgUX/prpIrLBb

+gaVgrk1w9fXNPIomwlj0TK4lX+4GxFzZEI0FFnmN0S9AMiHnA8eOfBPR5hjlmQsbu+hNF8SibeAY

+xZL9hilnf6WIRxoenI9W2jU7fzLAvWn75eFuo1kEAKHJ8WCVRUB3crLPz2YHqi3aXN5l5A7bvREj

+BuULUMeiH3HN9Vkn8Gj1lSvwvjsr7+HaNLZW7p21WCYV3DiiTbThN7EGZGEBIpZdXqtMZmAuBUqc

+0IhlktO7Ce8hws3ScRh6sfz8s5JYdjl4IhBG4ddiWeEw9xsSywBSyEos28Qslh++2tblatlzth4S

+WN+mxPLzD3KYTfgRCbJsxbKuw6wqlq3yuezEMkpkLcePTiy/jZaI5ZiPnlvSiGUA7snJWG9Nbg8s

+rSS7wOrDg0Vm/9JsRf1sl+O2PPlttHG5/7BZuf82WkHu2/mr5rdb3KgljnlDNLa9YTw7Xx9usrMj

+ZEY7NA4/Jb7vfPZpMl2tvH5c6qGaJF4/l3cxMv9Q3azXD/OUdL+fDcGumEqKKoSZ9VhERqhSSY1k

+kXr43lq+k2pkhNqtCIDSOpUNbkXAmE1oGGGcmAP/zoqMJYtSzn6VXiLTkG59bFKvl2baL0tRQtwd

+OKrXKuXMPL3OZz/18OboZFhMTCdYnJf7qtjSdYpUrPMafEiWgw+D5E2/nk+FpMH1Ap5md2iZb8vi

+xm1PqF96c3mxejrrCSX5V0/oQs6qhdMXctUT/Pyq4I8wtuWw1DpN6q3xBonDZPm795Ft3J80cC1Z

+rMisZmrl40LOPzpD9+rOXi7zHdrCKmpB1ZSUAuviWaWYDYz5XV3Sikdf9fNsPZRYLLa9OrnR92pJ

+v+IBM1f3at+zFCtS9BtN38Mhq34u72LPGEsz81bu1XLExX7NA7q1bOW+KGce8lRrwQuyIlQjnoZk

+Qz+7StnROBYYG+4hsS/kFR4+C7P7CewKeQ+3fLaFvBizMGwJG6YAL3AY7904Aidub/+I02c98m5f

+Z/xEV6PdcyggV28GY3KDSoUCvN1C67PpXATdMgEH1qtlfftV6YECd0z26umUYmNd3rnCf3vwSmsX

+Ru8fHRhojLoeG6ux4ytN6vIa1o/3Da0zqeAvKpOqroXCQyKW89ZUGJRYktgflhOHnckDjn2bDew3

+w8lr9uQe2qZbJhVrSTgmNx052vu6OWCvwVsZTcXdnl0aRkbX6hwyh/cpyygX6hnnbT9DJNEYMLWv

+Gl1wp9AAZ2clFXcXsOxcqGILHHKYhYKt3yTwZywMroy5sn4Fk6u4R12XQ1fDu6gTrkYq8xHe4u6A

+LkccmB5dyXJghXxLGuKjrUyZVwjtq74tAtoOCCT5lsuqvqkSkp0QiLOoKFyIBv7igJgSy5ZU2C1B

+oBVHqwb7dhwtq9wISmGp0nG0atCSMa/ugX/Nru6gUSq57OLtMOJGEsu03c8+Vx3sXCofZTVkmYq3

+DsZWj8lYZ9pjIIXWs+NYCQ1HeANRUQSJMvJOA5RTloS9V8geY/YRiOX2sNXpVXZfO791bmB3fnO/

+Ob0WOSR1jio9nDqMUue3qHMUKUq3csSvZ3Xq1PtgLTyFzj7mWo62It5lsXTHCh7QtxM2FTzNU72C

+Z3nNCH3NqWNRhjqUGk2gKpSkUist9TbLvL5Tytt6qEs5qXXL+XNgX1tsWcA4x5NpzIu5fVmUPr/e

+F+dLgFbdFzqVdaV9obsJaJVqZXPYCj0kv7mcCauVnSuZXKsdQ0rl1YzK2W3zVoeG7k4gClSqOgwi

+0zH6uCoq9Zqm5TWJKxvmk+MfKzGo172aBeH6hvnk2CwG7Whsptpb00H7bCWTY3anyg==

+

+

+            wu6fUTK4oKJdvHOv77ZHU8OYhfm8tvE8OTGL+bUxRjK1N4IxOtaj62N2xDDGU7kop5dYjvYgrWwj

+2wK1GBCkAsngUZwBRcVXKEDSbbblZ3/ewrYJUGKQaSFlxto/ZrKwna65GX7YX3PzMm6bkxhcXmcj

+fEkRNOU2uSjLZH/MVudKwJki71/ny1NNV1U/YTxUc2jvhXOq3+JeJj77GxbsfUpLarRXYS5OudZY

+tLyOB8jCulF48vlyBrH6ck1aiOXtQBZycUnJMoU8cy0e8SUIdDjitgi01GDPraozV0TgnO7h8qrV

+mezF2M4Iv/i1C22+sp7NL5gf69X1Utw/ttLphhGdXWgu+urMnRhrvuJgreonwJhDSRZ9JTR93oVT

+2TF1FcbyGw6xEnoThV0uLwL1+xxUFSQbF9oKt50Y9+9iungVwpJct1m2rVOe1oN9EBFLQilreaj8

+9/k1k5mNGRFaES1Lk51EfRXCyW10b+Gum5XuEzVV5tpehbBaLU9+zTxmK4x5Hd2vlJXQs6sQDBHe

+Ncuzac6ai648+5cpzKq9j0DRJIFSpoDmrSNWK2bSWSYuF3u2GjreBV17o6rGpzu4WFMaNitda90S

+gHCvFLYy1FjZlomWf51XvFApvJHbgBFtiSnt7juhjTZ25aIqX/5tPZGijZNiY+p7ih0rvReM7LVp

+bKWbEVzOhb44In2Zr6U0V2ZZLPT9avlsv4zANHePaOr4dEE3k/u2NxB8tRwvTHYMNyla3wxGjr7e

+XB/Rtn4dxjugvrfHdkSr+vWRla4zu90US1QXfFhWx4IqfQTFpCFErHGY9eqMaS9ypo6MYLVrYbqm

+wmNTKbwYa1mzuJffzK1NpHh5wb9pnWlPU77sfAWU7fpUzq+XLzuWKlBXeoc3R2M2gWNT2NgQ5XHO

+08eqb6c6TMtUApRijiUmoK8cH9sEjkmBqpPPwbVCxOO0Olxz18z+5PRK30Ogqv/Y++E2mUWQts3d

+mcsioDo51eGiR3Gte+HSK30UwbF4+W5Aa/E5rW9Td0Mpld4L3sO1acz5ywj0lgwZj13re0mOYnkS

+WHYXNGiFmxTLYCjSaxfLqeieQizPqjgpxXJt640yZ84olpdVCm9GLAPaIpu5S40ULy8Ry6abJ53K

+l9cUywseElK+vCGxXNu63NDNkwRZTmIZ7f3VKj8BbSuLZWqPYnFZPhcpZF0ill1GK4pKLL+NVq/7

+tF7LfC3watmKVnWfCzwZetZpvlpEL/djPmGjch8g/N6hlfsUt35jzfcKdZ8UlvjbiD6J16buU/X1

+kfp+2spP6rrPvaM71vnsr5DpOuf1q49NXr85ywJLWTfo9eNSD82p453DK6aSYuG3zXUFhsiI/YUF

+NmRRH9O6Falvn6tu+va5+pjarUhzXUE6HF3h7NOVLK9834X9Jq96XQHF2Qfq/+11BarcV8SWzhuO

+xRKfvBkkaqluNN87DDCZV4tjMftQ9eInqX03O1GsmC5jxXTB5fWEpNCb5Yeq9ytJcc0PVZs+U+3y

+/pEPVZs+U004/+Y/VG3q5/L+kQ9Vmz5TvXwta3+o2nYtG/1Qtekz1XgTxR/4ULXVl743/6FqE3Au

+7x/5UHVg/jPVsJY/8aFqE3DEB7v5D1WbPlOt1b5t+EPVps9UY5baH/hQtWlS/Dr2H/hQNcJg+Ez1

+zKuw2Q9Vz0sfowd+kx+qXjVz2KGM0uZD1RaRRINm88sPVdsBZ7aSaD9UTVtAPqar4V3vQ9Wm8Rbv

+6nQ0uWg+VL1SDS/dh6qdSUVZC/WHqqlLluc/U22fb0lLfJYfqnbOt/zth6otEGj7pe8Vk8eXIxDv

+7KK6LJP2gAysvrFjVWFHjcAF14nTLQEOZu+y8uwNR3lsyrMp/HYLX5Te4P15enE27dcZnDJLlxdn

+r+KDtSnPXgdjm7ky11Sc/ZuoqFqevYGsG4rybAqQyL78rjybojjbDmNrOq1sirO1L0pv8nKFxeJs

+my8ZrVKeTZ2j+KvybAqPmm2Uh748m6I4Wz+Va5dnU3A527XQl2dTf7X8V+XZFptoLs6212FWGNGx

+dtFKiq1Ynm2gWrvi7CX7QluevcK+/KI82xKL87GGjeyLo/a74l2dVuXZv/8CO015NoWyoX+Vae3y

+bIribGM04beV7vbF2evdaj5Xnk2BSrv85BXKsymKs1eOii6WZ1OUGlvl9a1Ynk1RnO1wLxxNeTZF

+cfZ81s1a5dlrY2zFCkrH4myn80JRdkwhpV2UQK1YfWkCaZZtu3559iJIFnnjvy7Ppqys/2V5tnNx

+tjHXGtfaMicOUq/U6uad2bezre7oNn49m75Wfdm3s6m+J05dNm7HmEw1VrTgrfjtbKdM+818O1uX

+yNZfz157N+a+nU19k96vvp1tpcEuq6OmUmkWlmv7bfRPuotcHAvRSRU1sffX8Out9u1sy7s6qRFI

+p8jQ36vwuVAZR319CahDBj9//s9VjNvc1LrhinEKL9wGKsYXa0X/RMW4PcY2WTG+gRsOKSrGaW84

+/F3FuDHn6s9VjNN80eD3FeMuh4SjzVSML2YQ/YmK8VmFnWWx8aYqxvVK4SjlQVunYnzdb9itVjG+

+HGObqhjH/OT1a6doK8bNsdc/UzFuWVm/8Ypx+rsIflMxPl+V9qcqxpfljm6uYnyluwfXrhi3/VrW

+RivGN1OX5FQxvkJd0i8qxhdy4P9IxfgGaIyiYtxFL31/UTE+R2N/rGJ8lW/Wr18xbvPN+g1XjJMb

+QTna6Oq6FeMu7+I3zzdfMb6hGiuHinEDJdOXpq1cMa74+uxUnk1VjCvaBb8ptNmUpq1e97pOxbi1

+72LTFeObo7HFWPbi3YMrlqatWDHuWsl0Wbdi3Hxn15+pGLe/qXWTFeOz6qc96vvX1qgY/81dN/QV

+4y6KD17/XtnQvlpOUdLyi4pxu+/ybLZifDmNLVaMr1rfPXc7kOVHHzZXMY7f4LbKl95sxbjyjdTf

+524trxg3c5g/UzHucvZEbKBifMZh2C3ar5KuUTG+5t1QK1aML/GQbLBiHLTxWc34H6kYJ2LZ/gsg

+m6wY178AssK3gleuGKeIjGygYtzCSvoDFeNk923LiTdVMW6oeqZ1WK9RMb7eDYerVoyvZImvXTFu

+cUfEH6gYJxVDd5v8NtKc10+tGHd5rT9xv9mKcVjLrGb8z1WMW0ZGNl4xrkdGqN2Ka1SMk7w+20/c

+b6pifHb20+Hon6sYd8i031DF+Er3j61dMW5z/9jyivFFPC2pGMfacPwG95+qDtdrw+Hs/7HqcL0f

+YuxPVYfr/VzeP1cdvnwtm6oO1/u5vH+uOlwvtl380vfmqsP12nC9amDz1eE6cHNfYd5wdThdZf1v

+q8NNlfV/qDrcsbJ+I9Xhepk26Px/rDpcrw3X5MufqA5XRUK3PQWM/bHqcF0xVK2kP1IdbpcDv9nq

+cJMO84eqw80+pT9THb65L+Utqw5fo15sjerwpV8v3Vh1uF4bvkZOL3V1uL5cy69mbKg63CKj+w9U

+h1tmdG+8OlwPYzvUWfyqOtzKStpYdbiGO6s6iz9QHa4jw+VIT+tXhy/U8P6R6nC6/LHfVocbswj+

+XHX4YtXzn6gOX5ajuLnqcKcI72aqw/XacIds219Vh9thbLPV4XptOE3m8LrV4TbZgxuuDtdlvVrN

+8Ueqw3VEm+5V2Gh1uJ6M5PL+uepw27VstDpcrw0309gmq8PtdZhNVodbSbHNV4cv2ZcNVofrteGb

+3Re7T3f/Yl9W+HT3Eovv19Xh+mZb6Pwbqw7XNxtj4n+qOtypinMz1eFzttgfqw6nuleB+SgIz0tR

+afAbqAs3xpENCRIur5Yi0WvZf8A39fC6+gdAz23PfvtsU4W8lLdq6NLeUsOD9X1TfQH4nXtFz1Wn

++MA6kFLq4cd8K/ZKpZwLGFuxlNMOY7T3XThjbPHm3xXu7Jpbmq0JvxJIJJL4RpWO5Py9dFtmZZ/X

+Z4unFYtI56xXE1Br3OJmF+giX2Cnrfek0PlxpQu5O7jSOZ3fwlK31/RPfJmRnaZ/brLTf/0V5uxC

+GZoN56er9l3L6Wh7EziAt2AU/8bpCON5V/gyi6PT8dzW6bg8D9Z+N/ZWOjQOVtL5eldSLqust0gJ

++90nwGcC0eXdxM0Jnwvp7fMItPkO7xIELknctkWgrQ6DxetOyWHUCMRZsHjdyZ5QcWchIS0yRsft

+JbVv/I48pKlsoPPB9i6sdn+NrMCLjX/172KzXzQALrFwsNcrfdbzvX+LMccP/tH5LbF6ekPfSL0g

+Gd+/zxsnIFmkelvd1EqBJ0c/03zKnlLLY5eihcXrv/w86sw7Olfsxp9UJhkb79Iwv2aWt7UPlj+5

+DZhvgFlnm2IlLSrqlFNHK95jJftjtsaN0/nVE7xtMXbk3wjGPFq92C8TqfMUSWR0X/xEoH6T222I

+8eWtfBtr4skUNVoe5XFS8rF0nSYd0LV6gcZwScIClsZaHNy1b5zGuBB1kY/L61RTTCdzl0vcue8j

+n73HzO6W9S+KwNJ17fQaIrxrfWm39kZzwYOLshSbSvDakrj+FWasW9/EbRFK1fr8EV73Vg1StR7c

+HI2tKn2tZK9uv5AR69Q0tkLyeLmPPNnGj4iOHqoybmdBp+9+uW97HdLqYWyEcF9nmY66pWFEuzIP

+MuLSa3VcXooRLWtT95ORI7simFtLD8n6sVAQkxTizUVzNgDuHA3x2TruF+ssgAHQ3j1DVZu6nywu

+3j24VvnY3WB5berc7juWYu+vaT6Z/MmEOjZTm4rl15qz9LfyBavWnWtTaWksvpAgYXYiLctAsPlm

+vQXfNDtCKArlZoFxwpO1ezoAj/u2yaJs9jlNYxRa+Rws13K30lVZSyuKKb9dSx01A/N3o3fcIYyr

+3fdg/33ku5Xuy1peiK1V1/76kga7FCVLi8/5S+freB+svl+JdetrXZplhSyrexStXKSUH8PEEe3C

+H1Y0tsKVEbWt0xM7sXyvi2UHbkkplp9/lovlFeRLbeuBxqtpJZZt7iGB3ac9dzRimdS91jfgc0G0

+2Yrlxd13/Hg3taavHz1Lnny/MbGM5dcgljdwi6ZStb5ULK9EY5eOFzzYiOVl36zfnFhe8Chi2DVo

+K5YBxlsa08wklu3X8uAslqkrV3Ur6W3kqFgtfPPcuX6d27TcfxttWO7HfLQXSnjnIolLyuv7v7xq

+cd4Sf1jBEaKOaIs7kxuEourZWUxi/brz2aepYLfw+r15lnn96oaPECy3xOm8fh/psIONiH4YmysX

+lpU0fzpduDCfgeuiuNOg+mu34sI9ilY5Sb9wK1Yt8y3Xvn2YlK7TS2S6z50fUKvXWi2PjdiyTC1a

+48KF+bNfpfHzr2JN6kIL8y0LQthebL2M2w7Xg6nLWPZdiHnr9TZ2YDsfRcTcdr7ZjTqqxxHxWKhk

+6weNXrLfCA2Ske700iQDyFSpbktkEoff18+5/d1rjbk0kruZj6GfTebvHwuzfQYrSQ==

+

+

+            r7xXT5G5+/uV3l3vrNRqqTgpXKe6kodNX92XWrnD7HMY1nfvy/lLXDLxk3r1YWWKYg7MWk8aORyx

+mIhXSlOsjz6TQp7dafY+de+ZP1zFTCNWa2Yb79niaMSNk5799qh0EPLGdvn7y0gyIgbGn+cHg2nN

+5d07a0ny/snTzuOW53zi9yRzNwdb1VcxtlO+3854v/vlwl7rcxgSy4Wft+h3s9BOfL9ffeZbZVm+

+ej77uSuzw/xH+bPU6d6eHlxO795O/b63t3TA/1WNfF33ioH4h8s7DDwmJiNv2bc3GvE7nq1Ba3Dg

+ZXY+4/7HQuMuIAcufcc/O71CjHu/OUoyh4dbo9FJrOjZfzm99HCp624g3hASTI45OWZylfscc7o9

+uGJOr68+R6POSWg0/TwGbjneC17Vw3xBjiXL2+09UkIO63vOhqKF3S8pepLOp7rRUoAUb8NKKxWA

+odUMWFy4YJHnoOyky2t55YK/05U9ga5Qwul5nXRjXG2vlDgMnQlKQfte6ufGGsddVih/3u78jBJ9

+8crl9dxf5QMOKJq+h3f2d70PxR0p3k15i+XTi7338vmRIO9eirCqlCdZOaifYIF8JXB0ELpH4KKJ

++MtrN3Ph852Qr2NXS0z2Lvo2Grcvthmu9LydjL4kWpnz3slDIjZ8OTR58oFHXv5kg9I4LBcvSp3Z

+6TXQOciFYlo/FC6vdixeLnXxznDdyWH6U7yuwl6NX5OwF/dz4zx5rcY2433/JTf1BD+/HvC+i7vX

+rCd4ef/g8YVqW3jLxQX+iHtCSb7oCR3svuI2HXtC/dKzJ9AIy4iOSPKm8ryXrTPxKBk7es8zTXLz

+Bfkt3notfgL3vffBqrYP8Tbgs4+XTGs0CiZ7g8IYVnX/g23NXDrl2Up8bSe76U7tgGWY8ftupn79

+dpWUgsNBIHv3cAadH7ZgvsA7ov+ceztrBhn2ddub6l2/SLl0clpLDMdsXfvi57HYCGYbje39RPzi

+G459Pj8hRhPDTSfbidF2c5QKSd0rht3zt5Plxt40WdqX7pKDQbiAiuqOWM3384nYdfor+x5qTxKH

+J4I3kyrcNXAtUZc39/52PUxWMo8ckHvwKPPBVPFaD5kla8U/3xOHomeEx8I/a+sd+hOFcqrb3wvh

+YLe4k5HU90/Mmyold8SUMAk85XyDdzbzEXq6Jpz/XQCiak5wnGrm4+U+muomujyOSOJBnvTnU2Ma

+uwzwT0gHeQI8kFfoIpe9vJNynuBNLvfmf8qLk+FrEfbqJAiAeHynk7dhHVb1ICBPvpgGEvGCB+/V

+3d/O5PNnUXh7Ozw3jm9P25zMCBc+zqVboaeUEOn7CQloe/rgTX+Gzptn22FvVN9nPPvv51sAfI8N

+ZILeac53dn4eu0pNnzLn54ldvS3e5qrfqbPb/o8yHzethmCRzS29i/gofj0lbz7ao8zHwc5btrH9

+fUKmgrUAAP5c9uc5ltv3BwPiduyhnG0ED0Nzi7ziYNJUn7iOdBhT35c3B0AHzyO8iyBNeFvmI3Uv

+5TKRRw4IqVrIZTk/6DAGdHDbb98JPnXwpfzJtqMDgDa9bVhQ/vF0YAD+KPdzRnYNtuSplBhNc3tA

+DNU7hvdsSZnw9WeGbCLoYx+9+E6y5Km2YRnRi8zF+3gX5N3RC8MFW92UmLj/IfKVYQfVLrCmh0ny

+mg2V1c1pDktkf9UuqXorcfdxew8Mda+QKlVPGYIMQmMfsIM3vXLu+azQSl6nU9VM/txzt/CgzVyQ

+033kCwXfxWrhNpF7be1UM+fdwFXmYzA6VhgXHy/vptqPpbv4x7SYRsJ9hrOPh1PRrggLm3U68k25

+99PDoa+We/fHMhhuu1ZhfNr/zgY6jxNxO339tgCS2JzAvpzswMjnfTwvd2Qtzy9HL/nsQaYd8tWT

+khgN5zLVShDQFn1iuEk8KRe97Yf4RapxnzsZnxZz73fVJChTFQGPVCpZDu1cpi+P+mmVWzQK41Sp

+dH2bavSnr+q+SP32M5+tlx5QF8yHxRPx4TSdvREmKgnkq9108z54n/kojd+QCd/msuxoJxOs/eAK

+HkOZg9rhbqzd37sFuCK+TGt8Iqi48wgyUYJAt+S5wiT3FryLoRpbMpoNVr4prnAPxBmXcP+KtDOD

+fLGYe+WZc+nPaF710CJHAz6dq6AElMXbI7wVMHm7G38nnfAukXt85yLV9VYq6XZ77AG4LyUET8o2

+Iu/+6F23cKqfl+hd6akCP3q13OHp0ylhZqQtdtWOd2KdV+kDHrCwFvVAAgCZVmfwdOo9ff7K1ivZ

+iD4YcLTUrfhQG96R7UbiLGdaD35+9ud76ps78mhC5GwPr35pprrhmwBYQS9+QmPZXaB5IZvztU5e

+koPP633VAtMfNL+esrVaRD6Wz7mBgtnLs7vvxOi0B/qD/7WUCd80OPJ0XudPI59+gbW0PytvoFsn

+jyx02ZjBLQ5MagtY6+1OIj7oVVPXk9o43op5+4oFdj4efOTeC9M9PUtAb5vd1nj80yNX1YDiGN2L

+7Q44ARTjn7vEwWQ/E5AjwiH8dniROBgPT+DB5UVmWitew4Ojk5y8c9NMv1xsnxEFK3oX2rrMvV/u

+RlWn4zAJVtL8Mb0GkLlptvF4RITjDUixwxGezw7uwTnoAjxPfBd44ivkyEXjjYeQqV82sC9+iEdf

+9fNsPZQ4V7I7duIfZweV5DUzvERCO1dE+bTH12HPfyrkphhyKxdwgYc0UWjhnAs+YKg/DaJsHIbe

+cwP99i5JHhx8JMuT4TSZf/RLsBYkP0PrTf/7OVvf3X87O3rm7xV1+PrH30hdT/d8yMzOMh+vW99n

+2zenYeDyz/d4MdBPznfx5QO0DBh1qGmJUCAcXCZ44PKysOXHMJjMAQNsbwMf37uA/f3ZBUWm6kve

+dIf72cb3jwwaUDKEU3WIiILDEHwE9p/YIlRCrhc68t8HOgQtZLnECsTPI4XVbFv29DWMBS/ZrVw2

+44+aepqdFWyl4wOQmE9QjbY+U6FYZkdhlLMfYBS2PDDAzVaydNX6grMvtKeNeRLA+wKkQeZi/2kH

+hmgNDVpfIwVSG9EvC29PN4fBx8xzLhMUAwb5eXJzeJ/z7b50svVyfpoNFMJKpXDKm8mn3vncc3On

+TXYf21hgAPEJKMHXHrmbazzHW7f+TqrxszVSucXO1jjnL3ZigePo3Vn6/Tu1n2m9Tx9zb5PPbiKW

+89ZmD7ZcXmApL8cKD3kU28+gj+UN2gxYP2I0l+kGFUGIBzslTvKTo9xb98CTiGXjxaQcz4e03Q0O

+QPdoT3PJXiyo3X7Uvp73Wq9iNhivwQvtJMb+h61M/uLxPc3e9sY5z345pD/AL0tefLRhzyPRlBhk

+H3DEi9Q3W2tkcs+X7Wzg8/URT+A78TilO1/iAehM99PoiD/rpAqPgwc4i7FnEOSfO8Ajr4RE7Opb

+Tl0Xhx1QaWK78tfI8+TyqqSksLAPJtXtDUPK0dUV7MdGixmNjg6wyzZoLh95llC8PphisOxGBvr1

+WFWQcjdbOX+1OAEau06HjomCiRufRMM9hBYKo8O9ON8ooHuzjnzdeAfw2fYkfpLbicRhsNkkl34R

+X8H2jzi9dHkNyuTifEXDDVx2OFHuvkrvnGRtVwq7r6z1kbuwWqvFzNuOKx3sm1ZK/DBWawXb3pva

+ySxdaYl2pWBX8udPPaPF0GyXTLhlcw+n7MztlIpx9YMO2mw1NCC+iDwj/EB7UM+bpB2efXgeb3u8

+X9lG9Z1LdS8OemAWHkfQ45jCjwsUcu+xgZDzyaI/GwoMhrqNddAJxvAsPsqJ+5J3y/Ld1w+s5AJG

+ko/GOunMJ+G1KPJ9yDyD8Y/g6DHdvLu/VC3e42wQDTcZTIlTwGKd2cl8fJT4mR3rz4TD58E4c/Lh

+gS4Hr7psdnnl67v2de71eaAIodgV030Tpzf8Pdj7500Ypxgh3hC8bxF08OHTa/K6cPaIqn0p984l

+IwqNHcZ7Nwx3dj3NnE6irVQkE7rTnwLG4o3rS5BExQFIIrkGnLgxVuAhasD0nTXc9mcECeSnPUhP

+I5CzM5BA5zcDlRmXbYEKxLu3V6uDhLtf3O3ZAKXcI3lli6f52wqvwIZ6207ExqEBbvxZNnA1qIBh

+cwUWX7LYK7dz6cZNGv0+j3jkuHTnKBWwnPSmx71qzuLMOHMR2N9OCfdcCk1PJlke98tAVAfTufUl

+eCLF/FOQKhcPZNq5Sf3PhnNnNAA7JQWpuWSmYYlyBanntQcyKdiVxmljrPVOT45/aHd6YVKuXTJE

+RgxoxS8bF3S0Lq7PFqkwaeJ+v0ZAgmMWfCVP0T+mPce7Sp8VoEr78Wcr8rICCXSh70s7kF4JSGhZ

+2AGFmDABpT/FOzhfaEGC86IDdVKZXC0Hak2QXN6VgNJBwrinn5YdWZz9ZQxpTXZEfH3V4UrUbzpy

+6oGc5J4tJ8XjiDT2ctFWVNq5jajaHMiX2rJzDgfO4pRjnpI6LF7IKh/j7jcsJn3Qd9+O5LoWrOcE

+bwS6ACm2ucNne/RA66Mlqo90OLQmm4Hd/xMCBUjqc6qTlI0UW0JUR5z1sMVne0rV1rJkWDs+XXz7

+oT0AQGP00LbGtsMyuZR4bQuryzveyrUZm2EHnvWPK8A6O654e7bNgV31uL63bY8rruX0LLVMLFf7

+NsM23myHBQR9GbgAcpiFYV/smMuLDdWW+9YnrCAc6XFkI0fgT24LBQt0vNpsXXVgqSkFC4G4znDI

+rebKBAkuVWXPLSZozaLHX9n6wQfGNkqvROlW3kD/fOr7MjQBdf/5PtvYFncUV/j1q3hMwhHogVfM

+WX6XuInU3y4+vtEPc8MGvqN7DJtP9k4fTo7qSeb4oqc5Z6Gtuu9ppD+fUt6Z77+L8ZwfLb7kF4l3

+BTO7NL8QrL8bRhfNceajUsJgzuN++uPos4iGu+KwP6yL8X7q23fzEW/tiUXcqyd84wIMlrO+4myC

+P6VZXOgZzDrf9uyrGaL/Z2YbfQEXzDJKqIfkTighsVz1VQkVsPnvSS7BXNwCHsKP6p97mXsllKV4

+/LEtefotkKgRWuJq3OgcgxhcsnJ3GwC6ewkYbRowOQ5Pu8fVbH1wFkoWm/GmIVjF+/vbYMfd7mTO

+u7e3JscnCQShlcTEo5pDNzhGk8urhE8OQ/et1Hfha6T4B+eCObXk7e7hMWz33fViQOm+q9u2JCKF

+33ycj0lxZ+mhQiL5armv7fTkSwmu5E9+BD3yg9vZSXde3zit7TEOW7LvnwWw9mHNzD5Sss/vM8TF

+Lr62f8haovf8Yc04PYnHPo2F1PfeaU4z631eY6ArffyilmvNXmPzVZT775feLkasRMXi67xe9IHG

+RiLG6bbk72QW0ObnZzHTBw8cvvxohp2JEj0ddRp+DdZ7KfHA+MPan7tg7+d8ecaLzulLOHK1XYUY

+mrvBfG6fO+a0bXyU0Oru5N738i9wAo+2SWQE3ZgZA0sBGkqA/f3QS1Yus3l9c1xezQ==

+

+

+            /+uVsVMcWj1fydIVaJkY6tHRMYsgyXgOCkrwCO24+QfFRLx3nDYEfV74bBdsZOKA04JCxEFV1UJG

+4ihRTudvQA/xn5MoHjpBJQw4PGldUl9JqfH4kDl4KEWVcNosGAXblPlIxJ+TF4Qnm4GKYrToKNmv

+196V84K35xzujVvtrG/rrp3JeT8u5gNKF+J9zz9IDobDekqYpkqmiJTCYT5zJ+Pnu8Dx9uE2vnMG

+mA/siNssc39wWf5GHfVkB/Sj/SfVEfJ+fgyc6mRsiFx2vZWSIZQzH4QBi6/16v8A7SqHmTPbEvqg

+B7MY0d3Z9s1RHInhEihmb0LcEYpD15wHqmVuzYIs1/qkuJa5aTc+Kbt3gRbfee27uBjb8l9IJVk6

+BS7YqpDAuPoOCcaNIoVUKB6PEe89MArvNF0YTK4RzKF2Srhp+nN6U8HARA45jMLCSGvvK1lJ336Q

+ZcyOoV8JtxWfLp6zb8PmF9DiVkQbjASC2Ex2J/R5z3Ah3yRZDHUraswf/yxdle8wMuJvXish++/W

+C4xTYGup7vd5WQvjA51PfOHLxfi++kDc/vGUT4c7hyL63bcQqYVovHF7Q4QWSfZAWQm41aJFC6I1

+1u6nSing0lupwmMpqbJWRbqeMBhFD6NQ68/kx2Gq+yzHCAx6nGYWf+metnOJduJZOQJkG9lU/dMU

+0VHjNPL4hHwyQOmH9/wnfhKjQ+IdVN+VO57sXn+3BCCxTy6vOTfk+DTvI9GLROzB10lxX2E1Jq70

+C4Z7Sngk3SjHzCGTdGtag+mTLVX3eKgWsvVws4VWUqe9rTiWQDiO1SDN6O5UTZBIpTygMBwntFCP

+b5cczePdcqwTOK4OFE1BCfoQl+xD7eeC8Omzo9c7hhAX0cf0AI/gzZxWE/Vk/8QzyJw/idtKyi1/

+6BOSkebpbeLno91XL/h6mISVQodOMBZAPWqQrNzv7GffxWHD0M/iTntxB4DK/aAH/gsTaUZqoHP2

+A0OQmon31MzWvc26iQQQTxktEUqVj2QtO3u5zHfw9Oj+I51guO3vj6z/tdYGPaMyzj62Jruq0Nv7

+8CYOI18dZMcvChcAZCW1lL5sH/NdSMpQEiQJxyditUI/9fl+iXZlJ/n8nq2XqjPZpgV97t+PK6nu

+Vj9HojyyeOpvYDgGtbCHDHkQPbwX3zDtpYMh8lI2WPk4MMCFn6AA6v0Za7qlwj7k5Hvi8CwdxsHi

+amhY3d9YshxMgLLRqUxIsgtqzJdaduT4v49dAsMKbiHKiu6Dm2m3NboeddqdvjvoirsOkucse9tv

+DnKjVqvS+s8kM2hMe63+xB1zHyTL6fNzCfhrY9BsQXfvXDyn8aFnOuppV7QxX8sg/aPYe3R5SehT

+zeES42PMMPWBrGuPF6LEx7X+affuq556vywlk8E++xI/Ye+kzHZzms2kz55ftCjq0FyxBKLIGZQV

+AAHdPji8ukjk5fGxdHZ4H84NHgVgrNnR8yOTecxVK7mj5FHDCh6NISo6z9dKkfOZwFseORfqB6ks

+d5YgQfPEx23lKnkmvl9RRc5Re1dVBEWT7/a30KR4UyLit6+5GvD8pytDogS2SZXn1H3qe1eaaCcE

+j+VXp6bwx5kQ1APgbLDdPlaYkS9br3QOM/n84d68CVMAtb8XxByeoprIo6RHvEQTsWtfCznJKVE0

+NTWz9pT6zpwxKg9nMi8khIRhp/RTCxihvK9EX0h8ngTkhffQi/IlF9x4NVyvpRLqOVN6WyzPHhzo

+gRwlf6ReOdxGsRp8ieTejpM1+4w5e6PncXAJyziVVaEU8vWUPKrKxVRWRYh8+ePyJkaNMFGkJ9lm

+7LhnYbj00UwMn748+2LpVrl4OxtnlohmCAKWrYwjlzd2WSudKOaBvtP3l8NzAvycDXSHcfeTH2Nb

+z7eX8zWeZ+zyBZTP4uOBIeqO6QioVPWOMDmvWwWB+CIbktfQqkp1Wyk20bseltQw3selrKf7YZxw

+V8lHNybtFB7A0mC+CWtE5OfwEz6RgYRZmSJIxZNbEA3j4JzhkhxlznOPW9qfhwB3/uHDuKDGjxfU

+ndeQJky07M3rglgiGYGouIeeMOVd+diaoOkWJGW20Mrkdv2lVOSuNNEyygw+EYwEHqN0vP/J+c4f

+bmabc6mmuoYS6J5gdmD3MTdAswwq9Rk6QpqZ4XlDFfBmMauNPDg6U3TDxWS5C80weQ7PJeeh7UOU

+Lu1oPj5ye8e+M2OXe/kj0w7kaxa2y2G2cfyyDasPPphAArFaehx2zGL+ZVwvgfWSDYPpIbfErdxb

+CbpIrOZveX45er5KH+WSjXYDU+Su0vxR5ZjYuEoCByba6VYMWct9kFhBhgQ7dvBzBiRXJCSSydQu

+Lm4T8ZPpZE4rP79Pd46OYwoTBu39OxEvT4qpkPQVSHXD7f1ksfFRQLjK5FNkzcfsY/MCY7Avx5ge

+gihq+NKd8SFL6iTmy2FN18KkNPPg+9p2UnSmzE3760nF41vhKskcTscqHzt4BEpW0unZg+3xYeA2

+PlI6oXZE3lET4zBZbhZZVlMAX/NZ4xFXbKDgI1ZonKksDNtaA6EBp3LBelET8UwJduoJROvlOtXL

+qZuMVsDgIvui/4kZna3UWWX7Ffc0jSkfQWK0n2DKSLo3S7W7RLfLQ7J/tv8zy+vSH1zMvvU10JBa

+64FmXPlBsVVNxCs3Y+Xp3AUcqyfMcIUK+t0+QUQNt+OtyvsNCNtaz1yaUrmYTGdyXy9YUT7seDHF

+xN3D0Yib7Hr8h1eCJ3Swd4cp9BnPTkY6nGXUn+CDC0/wZ3iND04wwb7pCV4+nHn2f7ZHsC+XLyYX

+J70RtroJhqkzqxphq5tgcF5WNsJWN8HURJCVjLDVTTDtoodVjLDVTTDislnRCFvdBMOSjFWNsNVN

+MCUpfzUjbHUTzOVdNMK0mljiifZXR6TqoZ87zDVZs0Kv2AbG4rezTMszDOIZaiTuKue1XFYqtZRy

+39zsURv3PEw+5KoU3UrcbS5ZnmyVcZObWPNxrBTKGzKq2qXXWXrdrVVaHGoXmL71Vpm8ZANjfnfG

+wpZngiUcM8Eau0ZbbHnWG36is7Q0E+yOIhNMS2jzTHzj5ZlgzPlzMKxFkpalCk7rxR/TSkHuO2e9

+2a50a+v45HTpSm/nPnW5NOuNyR5eZx1W2tqKHNiuVNt9ZRmpg0untMiz3TNjcdjJaSATDouPxGhQ

+5JlS/aA+uCfSjhTkaPJOed7bAuMk86Vkus1y2fb53fgTO59e92Wwqy4i4bieJ2d61+VV3gbl9gvs

+pdhuLlnqjWcxpQZ7+tpmQOa8jlDNO8/6b8/HimoL6ucNBu5bWAHYIlFivZgJU+7ec8kn1gPyI/WK

+7lq9sH2+NsY+2sy1S7TRZhJrNiVOhUNrRZtfLpcHwNHe/2XGCgVIJPBgCMlerRnsXxLqrwZBVm48

+L6+2dXpuymExpM44pUYZP1JtMPvSy/PyDGlAq+TldW9WT3UgsnJZvgdGnH6dFApr2VwWFl6BPbYC

+yeWlShb8ZQ6P8ZpCI1Cx4mTt/MVFkDBM+/vEorvBcna0/OwvMKQ12ZHp7L+8U1C/He2/2uaqkQJp

+Mu062WpW59wqVw3k/m+z1Shy1VAik1yamC/4RzKyydGb7f5qRFW3T9SiSP/dlECZJ6kW8fasS1R2

+qU/vZkq1Wsvq+dPvS9M1HdOybaFtLMv/ah6YBjWnmD/ZDfvxG8wCT16WXLrmcU2Y8pXNa+ktT5dH

+dvxjMWwSTbysDReoPitrsR8W7Zd31SF06x0ky4+eSYp7v/wislmpNrlKH7wSp/l83cmLfrOBegH6

+8rsNfn2zAWDM+W6DX99soAbpl99t8OubDVxeirsNAr+92YAU4TvdbfDrmw3UhLbldxv8+mYDl5fi

+boNf32wANOZ8t8GvbzZweSnuNvj1zQbouXK82yDw25sNMC7meLfBr282wFJMx7sNAr+92QB23/lu

+g1/fbABrcbrbAAxgh/sFHC81QHt/tQsVVptUuc9gVh6/eKPBBu8zUEvKrW402OB9Bvq1OAs3GgQ2

+d58BXryl3mhgIVoNlZsF081B0jDIjVPfmb3PmTC6RWob5fZ9/g7AkL4HWVHdJnC5lExV9Au9zF8K

+EM+cN47u9J7Yj/jopGQ5+L1DHEuGywO2qsJl9rHpbRNXMuxVXxV0IPck5YqfWUq47+ygs1XcnaVN

+vM2c5kRg9vQwgybU78d6W1LknzvJSJNrq36B0vM2iWjgqVRiGiUmt783muphDxQE7yAIvv2pXmC3

+qgyWPxmWofMgljn/+jnjMqGngDGW0mxfZAPj7G7685kPJpnjaZQQl8ur31iAQraRhR0ZAPqDUzWO

+fFS8IUEYY1TiOBuaRSXUT3ZwwZEHyed7vp93ti/aB8qUKvGr3e/qLBSSnt3Nu6uFQuDgoslBrihY

+JIHPJ4Z9ufxMRfziyJgRQfJFMOuWI/EJvK/sKdPKPuwBEvQ06fte7r0w4MFw2/pMdfKJseoO1Or9

+UUDf4+5Xoe00DIpKqJ3zfUivWP5fx5i4d7hvOGiRA7meaX1dHDKRev4ED1Ioze0cvWfC0/EDSJ/K

+VHvABJOV7G5HzWzeO+NzvnxSVyH2E7HsAXDQVP1E0S0vSbRBi2Tc1xOVG6mMmaEldX+1AIia4Y4R

+R/2GgMF/H7viQEbnLPuW7TeNuWQurxdayq3JdIgdIm+pVrvTL9T+aY1crFv5j4H/WDfnjspuLhLB

+fxg3D/8v1F2+xqA7GI397kLf5X07SI4mmU5j0hn0a6N/3DFsergs3J5n3DH3rGvc7QNImDfoDE/8

+mLz2BtC9uRh3Ev7/8LdrfwpzZ+D3axcTZjg+4mbCLCcL8E+EkSWY+tvFqIDBC//AHxfwyxc0/e0W

+3JfupxfG3cSxblwCK4R5GcAWInyYkeDtntIWjUKTFGZFRnRjQ1SGhQnRaDgiwUwCy4Yl8prEhwWZ

+4dxpl8AIAI0IDyUAxM3LXDjKiCym74UlkHxuXpLDgihIbkFkw5gCBC/xUT4s8xzMIQphjmOjbj4i

+hAWOg8lEeCREeTfPywCaQF7jZFguvMaL4QjHRsjgcoQX3TwnhMWIDFBH5TDLsvAaQC1HRAXGKBPF

+11gmLIk8QBAVwxLDYCc2zETgF5wtKokiaYmwLC6fA0AkjrzHwioFVmljYd2kJRpRWxgYkrREohHS

+wsusSN7jw1wEloC4EWVWgLXwAGaUcwOCw7LMwS+48IgIA0RkpQXekyPhKC/xSi+JgUHZCKBHgl8Y

+QIYgSWRT+EhUIDsHC5ZwC8jOMazSxghKJwkXjNsr46YubHja9QETQn+YXMGxBLvWI22wgIjSJsJa

+sUXgcBBsEQSlJSLwSgP8z91wKZ0krRMfdSsDCbOBRPfidA0AggGiBsTBS6zyROQEAgduiCiSpoiE

+hAQtUVmQlRYetxGIjYmyCiCw3wIBZLEXjiSpI0UlZaS56RCO/Vvrw0pOoXb4wiyMzA==

+

+

+            IPBw1sNSVMLjx8Ay4fBxoFlGOaQlwDEflWRcBeCdY4AKeUEGJCBa4HiJER7pmwHqwpPCSHBSgKp5

+IBegdDwgAg/HgQFUzdoKpC0aZZR+oN5ESFtEwSTPiGExipvEc2FJ4pAykT/g8YWJGFw/0iXP424J

+XAQQF4XXWJhbJCQjKQTCs3Bco4h3eJ8nYEELJ/HaYQfCBrA4EagPVyHKYZ6JwuBwklgBtrvqQtqO

+EMKOIow8TAa/8BKLrUDRPJwVNxx2RAgH/Tl8EoFfkUphRs7NCZEwnGGBkIyMZMVxeKwFmCfKAb9D

+YIBvhCWYi8DAsTATxwHIwK2gJRoWETwOliUzEraIsE+AKGA2wEMAoQilIMEpbbhYOHiiRHYJUCVE

+ZDcL7AQISybwwiRzLSpXSLv0Njie5GQADAycDQ4OmKmN4QSln8wqsDLALqMRmBMQIUUA8xwTBUaJ

+x59H/gHUzOGGMQJH4OJkgKLhQvgJqQMWYbGMRFCj8KIIo5x2DqkCuQ3wpGiEENQicRacaL6QUoQf

+iEIi+kKhtYThZNBr1CZUwlDrSiUMiSB0t1eQeVGNBQq6zIuqMk/WZF5ElXkozRSZx2kyT9RlXkST

+eTyReYwm83hN5kU1mcfrMo/VZJ64IPMiZpnHW8g8XpN5vCrzJE6Tebwm80RN5gGlqTJPVmUesBmT

+zIOWBZkHbSaZhy3zMg9bFmQeYy/zhAWZJ1rIPEGTeZIq81hGk3lRTeYJusyLajJPUGVeVJN5gibz

+zBuuyDxWE0K8LvNYTebxmsxjNZnHazKPVWUer8s8VpN5vCbzWE3m8ZrMM083k3mSrAkhXpN50KTK

+PF6VedCiSjNek2aMJvP4mcxb7EVGktSRiMwzT4dwIHELMuKMCYtAKeRI8ApDR/TLEYmwYCaCHB4o

+CTghS/YxCoyHsHxRIrsv4mmRCOETKQBDANkCBxeEqCInkZNGeZacLAGJFV8DkmR5RCD8AhySMEMg

+OlwdSC+ZQTICBHKIUiAaEJ4CvofgImkRlVKAo4AaUwQXIIiEJHG/kGgiynuyQtx4bkVCLNBL5nBX

+NNkrgFgBquHIsiMRWSRwskyUSGNAU1RAARVl8OiwbgVxiE0CCse7F1CZduKvU3K2EYG8DP/KcHh6

+5NzKHApWra1gbOPIlhQMby62zN77mDXCsQ3LUZCehglmbQVjG6yPFwTDeJZNszfxPAE9inxkBgqS

+kKjqBDPoDE36svQ3rdq0Vw1TzGAxzGGAz9CmL01/16pt9u4HbgfsuETYAHBYVuIJa4jgaRH1poJC

+fUwkMtfGAwELeAIt20D3kGUydQQYRASp2dgGS5WRunhU6YncRtUZGR7IA4kTUFSwirAXBGQ/ArIR

+hANoH4hRAJYbxbMCSiacF2xRtSzQhsKiGNUb4DXUcfA8651gX4Fjw2t8FMSOzJOWqERAEhXJogii

+qBTR2mSi2oFKysC5I2/KyIyUNo5lUO+UUF7gaHjM4QVBANYuskaw1AZlNaAyCoZOEdT0WMJBQNuV

+CVok5ABkwShj8DUQpiIyOgHPLbK+CAhTCTkPoJOXREXOwmAGpKM0jhJJqTaR/cLtZ/Dko/rECgo3

+4ySJJfsQAWUayBKMYxaPu9aCImzWBlwQeQiOBaQYlWW9DWQTTITyiVdsDpwO6JHVQUgrVpQEG2Ak

+D2xTCVCWOA3QOTolupxiovCgFER5lKPA2qISCKqe0oaESJoiZAxg5qh5ALeXJNRCo7AIGeUbil8B

+dWHoIQqMYWbEGlgZojxP5lFgqjzqOmAnSBLuN/RiCC9EWxwsFTJ6RJYUoSICTnAs2GdgOpLephyt

+KIeUgnZTBAWKonQocImipFDB3IlMW59INLhA8qmWTZTQHEgunqwZ9CeOaNDA9QRiXcvAEQhUAop5

+BVeirFC0iDJc5MnuE9JWDrLEsaoNilZVgfAK2DhJkb6oguC7qABGFH4eYSKyijGOVfuBbCNNomrb

+oZohs4Sjo56IG4jTMqgN4NaDwBNV8ECdB4YqabIJNxctzDuVBiReaSPDkhY8FKQFjaYFOklrigmA

+LEWJwQ1oifJEakTQRANyB8qAHZIi2sZzgtrEaaudf1W1Mm5dstvndz/cu5ZJRK0Ph4pVhKiAcGii

+HApGMKlQj5VUHQtW0HVxUcQpSm+wfjng5Ni28G4XQLCfkxMRUlRv0XCLAP5gLmAOIOUVNUqG0wHD

+ossCSJNsBuEqXYtXHaYCWgazQVaEG2jvOFUE7UtBUa4icNpgWCBB0CZEhf3wUVzB4qvLp0IHGyIB

+2WOEiaJURnKKsGhBC7hvcIi7hAswHE6vyZfu4qsOM0mCIkN5kEwysapwBKJO88hIQVTgqBJaNsjE

+gXEC5ZAm05sOExGjAfmliLiAXcc1RZQTh2IRrG6ewI/ePpRT0I8YUV2Ldx3mQncZw0pEFBDeDHNx

+ILPwBHBwGkEq4LCg0ooiylt4xrEcWejCq05TgeYqEi0BmJhEDhs6TDhUldHW59RhkVsSLhuBbZTJ

+qsyvLp9J0WKRXDkZLVFclMAAGxNR7YU5QQ1EaJEfS0TX4HhFu+5avOswF4NMl0eGDxKDEYkvDHkC

+4V3o5kEGDOPCwY2KaIKybDjKsjJpM7+7fC5V8KG4n3Nzwepwq2zcXBxrdnNxrIWbS1LdXGC8L7q5

+ZDRaoIlRLCvQQBn0I6C1CFsDz4jbDu0oBjUAaGPRVIA2dF2xqGihBSSJskpVHDrIOFSyZYJpURkL

+IOTRT4WePEmUOGKBy+iDRGUClKYosbeiRNxBi4xuCvQIRlVvInE7RfQmlFUo/1nF18QSrzlxcxG5

+xqMfh7jQ0JeG+pQiHBUnEqpmcIyEKJxiOHthiZhbyAtZ0c0BouDoKwoFx0RY8hpOi2tDJicR4cYR

+7xu6xMhxBV7LEZNZVjGM/jD8BRBEOBF6z2CkCApgVlaYUxQ9hRFeUxRgEjTUOaI/otNMa2kQlspw

+6GDRezEKmnliVgLj5UBTg8MkkwWjcgrT8cAtRBRnuMXoSOOQIEgngB+1EHS+SRySmIiCNYLmKScg

+USP5yKjqwUpA1spIh3iMiJwiXEIhSPTTRKNq2EB1jQqKaxTQBBhTXaOi5hrlFlyj7IJrFOYBjosi

+JIKyBNaLvh5CKKCHMKiHKO5GpBiM4PACKuEcg5qbdkRBhSDvCSIwaWQGQjQCK4ZHgog8F6hRBnMD

+34OHircJoBPRaObQlGAjCmcGUgYwQUkDBRNb0KJnRLKfwLii2AtMBOLcIr1ERlGcJVDHoQU1LZkl

+DJUokQ0iNVEnBgg4Hl7n0HkUVZkzUfU5UMBFDq0HHmMVMiHfqKS4YdHyAWQAMmFfRRZ1woga2MGR

+0Y0gYDhJIjhBB5PMysQw4XmwylAYK6cPNlpGjxi2sCKgXiAqJfH3gdmGDjTSiZFYluxcFIQPaYmi

+3sfxsuo0gxYRthIxGVUIDJvIatHhSxyR8DqPh59DhiKyioEDFEe8wgxhqVGVj+PSgLMD61HCeBLL

+oH8ZGST6LOAXYLKc+l6EHAwZNw5sKw4dh1FB8dezHJIOMk+Dnz1NfNBmP3tkwc8uWPjZuQU/u6h5

+1XnNzy7qPvWZn33WFtV96hHNzz7Xtuhn51H9jxBWSyw2JHJRwBYOYzLYMvOzEwPY7GfnzH52IAST

+n52Z+dmB04DOAfwAqJwHBgK0gfChps6rMoSLomcN0QAnV0RhAu/JnGKdzNoKxjYeScDUJoaBAGA0

+9DAyRKRhZAnIEpQTVbrA+WAjxE7mkBGAugRtOABuGViRsEkCacHzzEWRVyBeAFCGJxYBgioJguIj

+YDmF4cObPEGLwn70yAKrRBbSxrBX1Bz24qSFsBenh71ELezF6WEv0SLsFV0Ie0UWwl68Oeyl2DeE

+wnlZIFSIZlhPDdDwircRaE5ws6CskOOD+8FEyYFCZiMpwWMiQ4AwgbEz6GuYtRWgDf2caCkAaxcx

+ukDeRCUHcSZE8HDAoMSYAP01wiiEg5FscoCA3eHZQk4gS0TWgcxB1zOHngMGhS0GDnji58eRMPSA

+yFdpGTkB8E0SH4oi3zGv1zHaaRX58RZr7VZlVOt0WyNXe1z7q+Wu9fuDSW3SGsITd3vUGk8Go5Z7

+/Dn4G1vgFa2715u9zrn+L1T7Dxc=

+

+        </i:pgf>

+    <svg:text

+   xml:space="preserve"

+   style="font-size:13.03699398px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L"

+   x="246.20877"

+   y="10.629581"

+   id="text2436"

+   sodipodi:linespacing="125%"

+   transform="scale(0.9830254,1.0172677)"><svg:tspan

+     sodipodi:role="line"

+     id="tspan2438"

+     x="246.20877"

+     y="10.629581">TM</svg:tspan></svg:text>

+</svg:svg>
\ No newline at end of file
diff --git a/webapps/docs/images/update.gif b/webapps/docs/images/update.gif
new file mode 100644
index 0000000..31e22ab
--- /dev/null
+++ b/webapps/docs/images/update.gif
Binary files differ
diff --git a/webapps/docs/images/void.gif b/webapps/docs/images/void.gif
new file mode 100644
index 0000000..e565824
--- /dev/null
+++ b/webapps/docs/images/void.gif
Binary files differ
diff --git a/webapps/docs/index.html b/webapps/docs/index.html
new file mode 100644
index 0000000..a46e0f0
--- /dev/null
+++ b/webapps/docs/index.html
@@ -0,0 +1,214 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Documentation Index</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Remy Maucherat"><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Documentation Index</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>This is the top-level entry point of the documentation bundle for the

+<strong>Apache Tomcat</strong> Servlet/JSP container.  Apache Tomcat version 7.0

+implements the Servlet 3.0 and JavaServer Pages 2.2

+<a href="http://wiki.apache.org/tomcat/Specifications">specifications</a> from the

+<a href="http://www.jcp.org">Java Community Process</a>, and includes many

+additional features that make it a useful platform for developing and deploying

+web applications and web services.</p>

+

+<p>Select one of the links from the navigation menu (to the left) to drill

+down to the more detailed documentation that is available.  Each available

+manual is described in more detail below.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache Tomcat User Guide"><!--()--></a><a name="Apache_Tomcat_User_Guide"><strong>Apache Tomcat User Guide</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The following documents will assist you in downloading, installing

+Apache Tomcat 7, and using many of the Apache Tomcat features.</p>

+

+<ol>

+<li><a href="introduction.html"><strong>Introduction</strong></a> - A

+    brief, high level, overview of Apache Tomcat.</li>

+<li><a href="setup.html"><strong>Setup</strong></a> - How to install and run

+    Apache Tomcat on a variety of platforms.</li>

+<li><a href="appdev/index.html"><strong>First web application</strong></a>

+    - An introduction to the concepts of a <em>web application</em> as defined

+    in the Servlet Specification.  Covers basic organization of your web application

+    source tree, the structure of a web application archive, and an

+    introduction to the web application deployment descriptor

+    (<code>/WEB-INF/web.xml</code>).</li>

+<li><a href="deployer-howto.html"><strong>Deployer</strong></a> -

+    Operating the Apache Tomcat Deployer to deploy, precompile, and validate web

+    applications.</li>

+<li><a href="manager-howto.html"><strong>Manager</strong></a> -

+    Operating the <strong>Manager</strong> web app to deploy, undeploy, and

+    redeploy applications while Apache Tomcat is running.</li>

+<li><a href="realm-howto.html"><strong>Realms and Access Control</strong></a>

+    - Description of how to configure <em>Realms</em> (databases of users,

+    passwords, and their associated roles) for use in web applications that

+    utilize <em>Container Managed Security</em>.</li>

+<li><a href="security-manager-howto.html"><strong>Security Manager</strong></a>

+    - Configuring and using a Java Security Manager to

+    support fine-grained control over the behavior of your web applications.

+    </li>

+<li><a href="jndi-resources-howto.html"><strong>JNDI Resources</strong></a>

+    - Configuring standard and custom resources in the JNDI naming context

+    that is provided to each web application.</li>

+<li><a href="jndi-datasource-examples-howto.html">

+    <strong>JDBC DataSource</strong></a>

+    - Configuring a JNDI DataSoure with a DB connection pool.

+    Examples for many popular databases.</li>

+<li><a href="class-loader-howto.html"><strong>Classloading</strong></a>

+    - Information about class loading in Apache Tomcat, including where to place

+    your application classes so that they are visible.</li>

+<li><a href="jasper-howto.html"><strong>JSPs</strong></a>

+    - Information about Jasper configuration, as well as the JSP compiler

+    usage.</li>

+<li><a href="ssl-howto.html"><strong>SSL</strong></a> -

+    Installing and

+    configuring SSL support so that your Apache Tomcat will serve requests using

+    the <code>https</code> protocol.</li>

+<li><a href="ssi-howto.html"><strong>SSI</strong></a> -

+    Using Server Side Includes in Apache Tomcat.</li>

+<li><a href="cgi-howto.html"><strong>CGI</strong></a> -

+    Using CGIs with Apache Tomcat.</li>

+<li><a href="proxy-howto.html"><strong>Proxy Support</strong></a> -

+    Configuring Apache Tomcat to run behind a proxy server (or a web server

+    functioning as a proxy server).</li>

+<li><a href="mbeans-descriptor-howto.html"><strong>MBean Descriptor</strong></a> -

+    Configuring MBean descriptors files for custom components.</li>

+<li><a href="default-servlet.html"><strong>Default Servlet</strong></a> -

+    Configuring the default servlet and customizing directory listings.</li>

+<li><a href="cluster-howto.html"><strong>Apache Tomcat Clustering</strong></a> -

+    Enable session replication in a Apache Tomcat environment.</li>

+<li><a href="balancer-howto.html"><strong>Balancer</strong></a> -

+    Configuring, using, and extending the load balancer application.</li>

+<li><a href="connectors.html"><strong>Connectors</strong></a> -

+    Connectors available in Apache Tomcat, and native web server integration.</li>

+<li><a href="monitoring.html"><strong>Monitoring and Management</strong></a> -

+    Enabling JMX Remote support, and using tools to monitor and manage Apache Tomcat.</li>

+<li><a href="logging.html"><strong>Logging</strong></a> -

+    Configuring logging in Apache Tomcat.</li>

+<li><a href="apr.html"><strong>Apache Portable Runtime</strong></a> -

+    Using APR to provide superior performance, scalability and better

+    integration with native server technologies.</li>

+<li><a href="virtual-hosting-howto.html"><strong>Virtual Hosting</strong></a> -

+    Configuring virtual hosting in Apache Tomcat.</li>

+<li><a href="aio.html"><strong>Advanced IO</strong></a> -

+    Extensions available over regular, blocking IO.</li>

+<li><a href="extras.html"><strong>Additional Components</strong></a> -

+    Obtaining additional, optional components.</li>

+<li><a href="maven-jars.html"><strong>Using Tomcat libraries with Maven</strong></a> -

+    Obtaining Tomcat jars through Maven.</li>

+<li><a href="security-howto.html"><strong>Security Considerations</strong></a> -

+    Options to consider when securing an Apache Tomcat installation.</li>

+<li><a href="windows-service-howto.html"><strong>Windows Service</strong></a> -

+    Running Tomcat as a service on Microsoft Windows.</li>

+<li><a href="windows-auth-howto.html"><strong>Windows Authentication</strong></a> -

+    Configuring Tomcat to use integrated Windows authentication.</li>

+<li><a href="jdbc-pool.html"><strong>High Concurrency JDBC Pool</strong></a> -

+    Configuring Tomcat to use an alternative JDBC pool.</li>

+<li><a href="web-socket-howto.html"><strong>WebSocket support</strong></a> -

+    Developing WebSocket applications for Apache Tomcat.</li>

+

+</ol>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reference"><strong>Reference</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The following documents are aimed at <em>System Administrators</em> who

+are responsible for installing, configuring, and operating an Apache Tomcat server.

+</p>

+<ul>

+<li><a href="RELEASE-NOTES.txt"><strong>Release notes</strong></a>

+    - Known issues in this Apache Tomcat release.

+    </li>

+<li><a href="config/index.html"><strong>Apache Tomcat Server Configuration Reference</strong></a>

+    - Reference manual that documents all available elements and attributes

+      that may be placed into the Apache Tomcat <code>conf/server.xml</code> file.

+    </li>

+<li><a href="http://tomcat.apache.org/connectors-doc/index.html"><strong>JK Documentation</strong></a>

+    - Complete documentation and HOWTOs on the JK native webserver connector,

+      used to interface Apache Tomcat with servers like Apache HTTPd, IIS

+      and others.</li>

+<li>Servlet 3.0

+    <a href="http://jcp.org/aboutJava/communityprocess/final/jsr315/index.html">

+    <strong>Specification</strong></a> and

+    <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/servlet/package-summary.html">

+    <strong>Javadoc</strong></a>

+    </li>

+<li><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html">

+    <strong>JSP 2.2 and EL 2.2 Specifications</strong></a>,

+    <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/servlet/jsp/package-summary.html">

+    <strong>JSP 2.2 Javadoc (note it is labelled as JSP 2.1)</strong></a>,

+    <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/el/package-summary.html">

+    <strong>EL 2.2 Javadoc</strong></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="Apache Tomcat Developers"><!--()--></a><a name="Apache_Tomcat_Developers"><strong>Apache Tomcat Developers</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The following documents are for Java developers who wish to contribute to

+the development of the <em>Apache Tomcat</em> project.</p>

+<ul>

+<li><a href="building.html"><strong>Building from Source</strong></a> -

+    Details the steps necessary to download Apache Tomcat source code (and the

+    other packages that it depends on), and build a binary distribution from

+    those sources.

+    </li>

+<li><a href="changelog.html"><strong>Changelog</strong></a> - Details the

+    changes made to Apache Tomcat.

+    </li>

+<li><a href="http://wiki.apache.org/tomcat/TomcatVersions"><strong>Status</strong></a> -

+    Apache Tomcat development status.

+    </li>

+<li><a href="developers.html"><strong>Developers</strong></a> - List of active

+    Apache Tomcat contributors.

+    </li>

+<li><a href="funcspecs/index.html"><strong>Functional Specifications</strong></a>

+    - Requirements specifications for features of the <em>Catalina</em> servlet

+    container portion of Apache Tomcat.</li>

+<li><a href="api/index.html"><strong>Javadocs</strong></a>

+    - Javadoc API documentation for Apache Tomcat's internals.</li>

+<li><a href="architecture/index.html"><strong>Apache Tomcat Architecture</strong></a>

+    - Documentation of the Apache Tomcat Server Architecture.</li>

+</ul>

+

+</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="/tomcat-7.0-doc/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/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/introduction.html b/webapps/docs/introduction.html
new file mode 100644
index 0000000..287d6ce
--- /dev/null
+++ b/webapps/docs/introduction.html
@@ -0,0 +1,149 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Introduction</title><meta name="author" content="Robert Slifka"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Introduction</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Terminology">Terminology</a></li><li><a href="#Directories_and_Files">Directories and Files</a></li><li><a href="#Configuring_Tomcat">Configuring Tomcat</a></li><li><a href="#Where_to_Go_for_Help">Where to Go for Help</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>For administrators and web developers alike, there are some important bits

+of information you should familiarize yourself with before starting out. This

+document serves as a brief introduction to some of the concepts and

+terminology behind the Tomcat container. As well, where to go when you need

+help.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Terminology"><strong>Terminology</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>In the course of reading these documents, you will run across a number of

+terms; some specific to Tomcat, and others defined by the

+<a href="http://wiki.apache.org/tomcat/Specifications">Servlet and

+JSP specifications</a>.</p>

+

+<ul>

+<li><strong>Context</strong> - In a nutshell, a Context is a

+    web application.</li>

+<li><strong>Term2</strong> - This is it.</li>

+<li><strong>Term3</strong> - This is it!</li>

+</ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Directories and Files"><!--()--></a><a name="Directories_and_Files"><strong>Directories and Files</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Throughout the docs, you'll notice there are numerous references to

+<strong>$CATALINA_HOME</strong>. This represents the root of your Tomcat

+installation. When we say, "This information can be found in your

+$CATALINA_HOME/README.txt file" we mean to look at the README.txt file at the

+root of your Tomcat install. Optionally, Tomcat may be configured for multiple

+instances by defining <strong>$CATALINA_BASE</strong> for each instance. If

+multiple instances are not configured, <strong>$CATALINA_BASE</strong> is the

+same as <strong>$CATALINA_HOME</strong>.</p>

+

+<p>These are some of the key tomcat directories:</p>

+

+<ul>

+<li><strong>/bin</strong> - Startup, shutdown, and other scripts. The

+    <code>*.sh</code> files (for Unix systems) are functional duplicates of

+    the <code>*.bat</code> files (for Windows systems).  Since the Win32

+    command-line lacks certain functionality, there are some additional

+    files in here.</li>

+<li><strong>/conf</strong> - Configuration files and related DTDs.  The most

+    important file in here is server.xml.  It is the main configuration file

+    for the container.</li>

+<li><strong>/logs</strong> - Log files are here by default.</li>

+<li><strong>/webapps</strong> - This is where your webapps go.</li>

+</ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Tomcat"><!--()--></a><a name="Configuring_Tomcat"><strong>Configuring Tomcat</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>This section will acquaint you with the basic information used during

+the configuration of the container.</p>

+

+<p>All of the information in the configuration files is read at startup,

+meaning that any change to the files necessitates a restart of the container.

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Where to Go for Help"><!--()--></a><a name="Where_to_Go_for_Help"><strong>Where to Go for Help</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>While we've done our best to ensure that these documents are clearly

+written and easy to understand, we may have missed something.  Provided

+below are various web sites and mailing lists in case you get stuck.</p>

+

+<p>As Tomcat 7 is a new release of Tomcat, keep in mind that some of the

+issues and solutions vary between the major versions of Tomcat (6.x versus

+7.x).  As you search around the web, there will be some documentation that

+is not relevant to Tomcat 7, but 6.x, 5.x or earlier versions.  Doing 3.x

+or 4.x things to 7 will probably not work in most cases as the server.xml

+files are very different.</p>

+

+<ul>

+<li>Current document - most documents will list potential hangups. Be sure

+    to fully read the relevant documentation as it will save you much time

+    and effort. There's nothing like scouring the web only to find out that

+    the answer was right in front of you all along!</li>

+<li><a href="http://wiki.apache.org/tomcat/FAQ">Tomcat FAQ</a></li>

+<li><a href="http://wiki.apache.org/tomcat/">Tomcat WIKI</a></li>

+<li>Tomcat FAQ at <a href="http://www.jguru.com/faq/home.jsp?topic=Tomcat">jGuru</a></li>

+<li>Tomcat mailing list archives - numerous sites archive the Tomcat mailing

+    lists. Since the links change over time, clicking here will search

+    <a href="http://www.google.com/search?q=tomcat+mailing+list+archives">Google</a>.

+    </li>

+<li>The TOMCAT-USER mailing list, which you can subscribe to

+    <a href="http://tomcat.apache.org/lists.html">here</a>. If you don't

+    get a reply, then there's a good chance that your question was probably

+    answered in the list archives or one of the FAQs.  Although questions

+    about web application development in general are sometimes asked and

+    answered, please focus your questions on Tomcat-specific issues.</li>

+<li>The TOMCAT-DEV mailing list, which you can subscribe to

+    <a href="http://tomcat.apache.org/lists.html">here</a>.  This list is

+    <strong>reserved</strong> for discussions about the development of Tomcat

+    itself.  Questions about Tomcat configuration, and the problems you run

+    into while developing and running applications, will normally be more

+    appropriate on the TOMCAT-USER list instead.</li>

+</ul>

+

+<p>And, if you think something should be in the docs, by all means let us know

+on the TOMCAT-DEV list.</p>

+

+</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="/tomcat-7.0-doc/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/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jasper-howto.html b/webapps/docs/jasper-howto.html
new file mode 100644
index 0000000..1fb368f
--- /dev/null
+++ b/webapps/docs/jasper-howto.html
@@ -0,0 +1,406 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Jasper 2 JSP Engine How To</title><meta name="author" content="Glenn L. Nielsen"><meta name="author" content="Peter Rossbach"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Jasper 2 JSP Engine How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuration">Configuration</a></li><li><a href="#Known_issues">Known issues</a></li><li><a href="#Production_Configuration">Production Configuration</a></li><li><a href="#Web_Application_Compilation">Web Application Compilation</a></li><li><a href="#Optimisation">Optimisation</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Tomcat 7.0 uses the Jasper 2 JSP Engine to implement

+the <a href="http://wiki.apache.org/tomcat/Specifications">JavaServer Pages 2.2</a>

+specification.</p>

+

+<p>Jasper 2 has been redesigned to significantly improve performance over

+the original Jasper.  In addition to general code improvements the following

+changes were made:

+<ul>

+<li><strong>JSP Custom Tag Pooling</strong> - The java objects instantiated

+for JSP Custom Tags can now be pooled and reused.  This significantly boosts

+the performance of JSP pages which use custom tags.</li>

+<li><strong>Background JSP compilation</strong> - If you make a change to

+a JSP page which had already been compiled Jasper 2 can recompile that

+page in the background.  The previously compiled JSP page will still be

+available to serve requests.  Once the new page has been compiled

+successfully it will replace the old page.  This helps improve availability

+of your JSP pages on a production server.</li>

+<li><strong>Recompile JSP when included page changes</strong> - Jasper 2

+can now detect when a page included at compile time from a JSP has changed

+and then recompile the parent JSP.</li>

+<li><strong>JDT used to compile JSP pages</strong> - The

+Eclipse JDT Java compiler is now used to perform JSP java source code

+compilation. This compiler loads source dependencies from the container

+classloader. Ant and javac can still be used.</li>

+</ul>

+</p>

+

+<p>Jasper is implemented using the servlet class

+<code>org.apache.jasper.servlet.JspServlet</code>.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>By default Jasper is configured for use when doing web application

+development.  See the section <a href="#Production Configuration">

+Production Configuration</a> for information on configuring Jasper

+for use on a production Tomcat server.</p>

+

+<p>The servlet which implements Jasper is configured using init parameters

+in your global <code>$CATALINA_BASE/conf/web.xml</code>.

+

+<ul>

+<li><strong>checkInterval</strong> - If development is false and checkInterval

+is greater than zero, background compiles are enabled. checkInterval is the time

+in seconds between checks to see if a JSP page (and its dependent files) needs

+to be recompiled. Default <code>0</code> seconds.</li>

+

+<li><strong>classdebuginfo</strong> - Should the class file be compiled with

+debugging information?  <code>true</code> or <code>false</code>, default

+<code>true</code>.

+</li>

+

+<li><strong>classpath</strong> - Defines the class path to be used to compile

+the generated servlets. This parameter only has an effect if the ServletContext

+attribute org.apache.jasper.Constants.SERVLET_CLASSPATH is not set. This

+attribute is always set when Jasper is used within Tomcat. By default the

+classpath is created dynamically based on the current web application.</li>

+

+<li><strong>compiler</strong> - Which compiler Ant should use to compile JSP

+pages. The valid values for this are the same as for the compiler attribute of

+Ant's

+<a href="http://ant.apache.org/manual/Tasks/javac.html#compilervalues">javac</a>

+task. If the value is not set, then the default Eclipse JDT Java compiler will

+be used instead of using Ant. There is no default value. If this attribute is

+set then <code>setenv.[sh|bat]</code> should be used to add

+<code>ant.jar</code>, <code>ant-launcher.jar</code> and <code>tools.jar</code>

+to the <code>CLASSPATH</code> environment variable.</li>

+

+<li><strong>compilerSourceVM</strong> - What JDK version are the source files

+compatible with? (Default value: <code>1.6</code>)</li>

+

+<li><strong>compilerTargetVM</strong> - What JDK version are the generated files

+compatible with? (Default value: <code>1.6</code>)</li>

+

+<li><strong>development</strong> - Is Jasper used in development mode? If true,

+the frequency at which JSPs are checked for modification may be specified via

+the modificationTestInterval parameter.<code>true</code> or <code>false</code>,

+default <code>true</code>.</li>

+

+<li><strong>displaySourceFragment</strong> - Should a source fragment be

+included in exception messages? <code>true</code> or <code>false</code>,

+default <code>true</code>.</li>

+

+<li><strong>dumpSmap</strong> - Should the SMAP info for JSR45 debugging be

+dumped to a file? <code>true</code> or <code>false</code>, default

+<code>false</code>. <code>false</code> if suppressSmap is true.</li>

+

+<li><strong>enablePooling</strong> - Determines whether tag handler pooling is

+enabled. This is a compilation option. It will not alter the behaviour of JSPs

+that have already been compiled. <code>true</code> or <code>false</code>,

+default <code>true</code>.

+</li>

+

+<li><strong>engineOptionsClass</strong> - Allows specifying the Options class

+used to configure Jasper. If not present, the default EmbeddedServletOptions

+will be used.

+</li>

+

+<li><strong>errorOnUseBeanInvalidClassAttribute</strong> - Should Jasper issue

+an error when the value of the class attribute in an useBean action is not a

+valid bean class? <code>true</code> or <code>false</code>, default

+<code>true</code>.</li>

+

+<li><strong>fork</strong> - Have Ant fork JSP page compiles so they are

+performed in a separate JVM from Tomcat? <code>true</code> or

+<code>false</code>, default <code>true</code>.</li>

+

+<li><strong>genStringAsCharArray</strong> - Should text strings be generated as char

+arrays, to improve performance in some cases? Default <code>false</code>.</li>

+

+<li><strong>ieClassId</strong> - The class-id value to be sent to Internet

+Explorer when using &lt;jsp:plugin&gt; tags.   Default

+<code>clsid:8AD9C840-044E-11D1-B3E9-00805F499D93</code>.</li>

+

+<li><strong>javaEncoding</strong> - Java file encoding to use for generating

+java source files. Default <code>UTF8</code>.</li>

+

+<li><strong>keepgenerated</strong> - Should we keep the generated Java source

+code for each page instead of deleting it? <code>true</code> or

+<code>false</code>, default <code>true</code>.</li>

+

+<li><strong>mappedfile</strong> - Should we generate static content with one

+print statement per input line, to ease debugging?

+<code>true</code> or <code>false</code>, default <code>true</code>.</li>

+

+<li><strong>maxLoadedJsps</strong> - The maximum number of JSPs that will be

+loaded for a web application. If more than this number of JSPs are loaded, the

+least recently used JSPs will be unloaded so that the number of JSPs loaded at

+any one time does not exceed this limit. A value of zero or less indicates no

+limit. Default <code>-1</code></li>

+

+<li><strong>jspIdleTimeout</strong> - The amount of time in seconds a JSP can be

+idle before it is unloaded. A value of zero or less indicates never unload.

+Default <code>-1</code></li>

+

+<li><strong>modificationTestInterval</strong> - Causes a JSP (and its dependent

+files) to not be checked for modification during the specified time interval

+(in seconds) from the last time the JSP was checked for modification. A value of

+0 will cause the JSP to be checked on every access. Used in development mode

+only. Default is <code>4</code> seconds.</li>

+

+<li><strong>recompileOnFail</strong> - If a JSP compilation fails should the

+modificationTestInterval be ignored and the next access trigger a re-compilation

+attempt? Used in development mode only and is disabled by default as compilation

+may be expensive and could lead to excessive resource usage.</li>

+

+<li><strong>scratchdir</strong> - What scratch directory should we use when

+compiling JSP pages? Default is the work directory for the current web

+application.</li>

+

+<li><strong>suppressSmap</strong> - Should the generation of SMAP info for JSR45

+debugging be suppressed? <code>true</code> or <code>false</code>, default

+<code>false</code>.</li>

+

+<li><strong>trimSpaces</strong> - Should white spaces in template text between

+actions or directives be trimmed ?, default <code>false</code>.</li>

+

+<li><strong>xpoweredBy</strong> - Determines whether X-Powered-By response

+header is added by generated servlet. <code>true</code> or <code>false</code>,

+default <code>false</code>.</li>

+</ul>

+</p>

+

+<p>The Java compiler from Eclipse JDT in included as the default compiler. It is

+an advanced Java compiler which will load all dependencies from the Tomcat class

+loader, which will help tremendously when compiling on large installations with

+tens of JARs. On fast servers, this will allow sub-second recompilation cycles

+for even large JSP  pages.</p>

+

+<p>Apache Ant, which was used in previous Tomcat releases, can be used instead

+of the new compiler by configuring the compiler attribute as explained above.

+</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="Known issues"><!--()--></a><a name="Known_issues"><strong>Known issues</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>As described in

+<a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=39089">

+bug 39089</a>, a known JVM issue,

+<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6294277">

+bug 6294277</a>, may cause a

+<code>java.lang.InternalError: name is too long to represent</code> exception

+when compiling very large JSPs. If this is observed then it may be worked around

+by using one of the following:

+<ul>

+<li>reduce the size of the JSP</li>

+<li>disable SMAP generation and JSR-045 support by setting

+<code>suppressSmap</code> to <code>true</code>.</li>

+</ul>

+</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="Production Configuration"><!--()--></a><a name="Production_Configuration"><strong>Production Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The main JSP optimization which can be done is precompilation of JSPs.

+However, this might not be possible (for example, when using the

+jsp-property-group feature) or practical, in which case the configuration of the

+Jasper servlet becomes critical.</p>

+

+<p>When using Jasper 2 in a production Tomcat server you should consider making

+the following changes from the default configuration.

+<ul>

+<li><strong>development</strong> - To disable on access checks for JSP

+pages compilation set this to <code>false</code>.</li>

+<li><strong>genStringAsCharArray</strong> - To generate slightly more efficient

+char arrays, set this to <code>true</code>.</li>

+<li><strong>modificationTestInterval</strong> - If development has to be set to

+<code>true</code> for any reason (such as dynamic generation of JSPs), setting

+this to a high value will improve performance a lot.</li>

+<li><strong>trimSpaces</strong> - To remove useless bytes from the response,

+set this to <code>true</code>.</li>

+</ul>

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Web Application Compilation"><!--()--></a><a name="Web_Application_Compilation"><strong>Web Application Compilation</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Using Ant is the preferred way to compile web applications using JSPC. Note

+that when pre-compiling JSPs, SMAP information will only be included in the

+final classes if suppressSmap is false and compile is true.

+Use the script given below (a similar script is included in the "deployer"

+download) to precompile a webapp:

+</p>

+

+<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>

+&lt;project name="Webapp Precompilation" default="all" basedir="."&gt;

+

+   &lt;import file="${tomcat.home}/bin/catalina-tasks.xml"/&gt;

+

+   &lt;target name="jspc"&gt;

+

+    &lt;jasper

+             validateXml="false"

+             uriroot="${webapp.path}"

+             webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml"

+             outputDir="${webapp.path}/WEB-INF/src" /&gt;

+

+  &lt;/target&gt;

+

+  &lt;target name="compile"&gt;

+

+    &lt;mkdir dir="${webapp.path}/WEB-INF/classes"/&gt;

+    &lt;mkdir dir="${webapp.path}/WEB-INF/lib"/&gt;

+

+    &lt;javac destdir="${webapp.path}/WEB-INF/classes"

+           optimize="off"

+           debug="on" failonerror="false"

+           srcdir="${webapp.path}/WEB-INF/src"

+           excludes="**/*.smap"&gt;

+      &lt;classpath&gt;

+        &lt;pathelement location="${webapp.path}/WEB-INF/classes"/&gt;

+        &lt;fileset dir="${webapp.path}/WEB-INF/lib"&gt;

+          &lt;include name="*.jar"/&gt;

+        &lt;/fileset&gt;

+        &lt;pathelement location="${tomcat.home}/lib"/&gt;

+        &lt;fileset dir="${tomcat.home}/lib"&gt;

+          &lt;include name="*.jar"/&gt;

+        &lt;/fileset&gt;

+        &lt;fileset dir="${tomcat.home}/bin"&gt;

+          &lt;include name="*.jar"/&gt;

+        &lt;/fileset&gt;

+      &lt;/classpath&gt;

+      &lt;include name="**" /&gt;

+      &lt;exclude name="tags/**" /&gt;

+    &lt;/javac&gt;

+

+  &lt;/target&gt;

+

+  &lt;target name="all" depends="jspc,compile"&gt;

+  &lt;/target&gt;

+

+  &lt;target name="cleanup"&gt;

+    &lt;delete&gt;

+        &lt;fileset dir="${webapp.path}/WEB-INF/src"/&gt;

+        &lt;fileset dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/&gt;

+    &lt;/delete&gt;

+  &lt;/target&gt;

+

+&lt;/project&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+<p>

+The following command line can be used to run the script

+(replacing the tokens with the Tomcat base path and the path to the webapp

+which should be precompiled):<br>

+<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_HOME/bin/ant -Dtomcat.home=&lt;$TOMCAT_HOME&gt; -Dwebapp.path=&lt;$WEBAPP_PATH&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+<p>

+Then, the declarations and mappings for the servlets which were generated

+during the precompilation must be added to the web application deployment

+descriptor. Insert the <code>${webapp.path}/WEB-INF/generated_web.xml</code>

+at the right place inside the <code>${webapp.path}/WEB-INF/web.xml</code> file.

+Restart the web application (using the manager) and test it to verify it is

+running fine with precompiled servlets. An appropriate token placed in the

+web application deployment descriptor may also be used to automatically

+insert the generated servlet declarations and mappings using Ant filtering

+capabilities. This is actually how all the webapps distributed with Tomcat

+are automatically compiled as part of the build process.

+</p>

+

+<p>

+At the jasper task you can use the option <code>addWebXmlMappings</code> for

+automatic merge the <code>${webapp.path}/WEB-INF/generated_web.xml</code>

+with the current web application deployment descriptor at

+<code>${webapp.path}/WEB-INF/web.xml</code>. When you want to use Java 6

+features inside your jsp's, add the following javac compiler task attributes:

+<code>source="1.6" target="1.6"</code>. For live

+applications you can also compile with <code>optimize="on"</code> and

+without debug info <code>debug="off"</code>.

+</p>

+

+<p>

+When you don't want to stop the jsp generation at first jsp syntax error, use

+<code>failOnError="false"</code>and with

+<code>showSuccess="true"</code> all successfull <i>jsp to java</i>

+generation are printed out. Sometimes it is very helpfull, when you cleanup the

+generate java source files at <code>${webapp.path}/WEB-INF/src</code>

+and the compile jsp servlet classes at

+<code>${webapp.path}/WEB-INF/classes/org/apache/jsp</code>.

+</p>

+

+<p><strong>Hints:</strong>

+<ul>

+<li> When you switch to another Tomcat release, then regenerate and recompile

+your jsp's with the new Tomcat version.</li>

+<li>Use java system property at server runtime to disable PageContext pooling

+<code>org.apache.jasper.runtime.JspFactoryImpl.USE_POOL=false</code>.

+and limit the buffering with

+<code>org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true</code>. Note

+that changing from the defaults may affect performance, but it will vary

+depending on the application.</li>

+</ul>

+</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="Optimisation"><strong>Optimisation</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+There are a number of extension points provided within Jasper that enable the

+user to optimise the behaviour for their environment.

+</p>

+

+<p>

+The first of these extension points is the tag plug-in mechanism. This allows

+alternative implementations of tag handlers to be provided for a web application

+to use. Tag plug-ins are registered via a <code>tagPlugins.xml</code> file

+located under <code>WEB-INF</code>. A sample plug-in for the JSTL is included

+with Jasper. 

+</p>

+

+<p>

+The second extension point is the Expression Language interpreter. Alternative

+interpreters may be configured through the <code>ServletContext</code>. See the

+<code>ELInterpreterFactory</code> javadoc for details of how to configure an

+alternative EL interpreter. 

+</p>

+</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="/tomcat-7.0-doc/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/jasper-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jdbc-pool.html b/webapps/docs/jdbc-pool.html
new file mode 100644
index 0000000..1f11e1a
--- /dev/null
+++ b/webapps/docs/jdbc-pool.html
@@ -0,0 +1,819 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - The Tomcat JDBC Connection Pool</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Tomcat JDBC Connection Pool</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#How_to_use">How to use</a><ol><li><a href="#Additional_features">Additional features</a></li><li><a href="#Inside_the_Apache_Tomcat_Container">Inside the Apache Tomcat Container</a></li><li><a href="#Standalone">Standalone</a></li><li><a href="#JMX">JMX</a></li></ol></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#JNDI_Factory_and_Type">JNDI Factory and Type</a></li><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Tomcat_JDBC_Enhanced_Attributes">Tomcat JDBC Enhanced Attributes</a></li></ol></li><li><a href="#Advanced_usage">Advanced usage</a><ol><li><a href="#JDBC_interceptors">JDBC interceptors</a></li><li><a href="#Configuring_JDBC_interceptors">Configuring JDBC interceptors</a></li><li><a href="#org.apache.tomcat.jdbc.pool.JdbcInterceptor">org.apache.tomcat.jdbc.pool.JdbcInterceptor</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.ConnectionState">org.apache.tomcat.jdbc.pool.interceptor.ConnectionState</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer">org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.StatementCache">org.apache.tomcat.jdbc.pool.interceptor.StatementCache</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor">org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor">org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport">org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx">org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx</a></li><li><a href="#org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer">org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer</a></li></ol></li><li><a href="#Code_Example">Code Example</a><ol><li><a href="#Plain_Ol'_Java">Plain Ol' Java</a></li><li><a href="#As_a_Resource">As a Resource</a></li><li><a href="#Asynchronous_Connection_Retrieval">Asynchronous Connection Retrieval</a></li><li><a href="#Interceptors">Interceptors</a></li><li><a href="#Getting_the_actual_JDBC_connection">Getting the actual JDBC connection</a></li></ol></li><li><a href="#Building">Building</a><ol><li><a href="#Building_from_source">Building from source</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>The <strong>JDBC Connection Pool <code>org.apache.tomcat.jdbc.pool</code></strong>

+  is a replacement or an alternative to the <a href="http://commons.apache.org/dbcp/">commons-dbcp</a>

+  connection pool.</p>

+

+  <p>So why do we need a new connection pool?</p>

+

+  <p>Here are a few of the reasons:

+    <ol>

+      <li>commons-dbcp is single threaded, in order to be thread safe commons-dbcp locks the entire pool, even during query validation.</li>

+      <li>commons-dbcp is slow - as the number of logical CPUs grow, the performance suffers, the above point shows that there is not support for high concurrency

+          Even with the enormous optimizations of the <code>synchronized</code> statement in Java 6, commons-dbcp still suffers in speed and concurrency.</li>

+      <li>commons-dbcp is complex, over 60 classes. tomcat-jdbc-pool, core is 8 classes, hence modifications for future requirement will require

+          much less changes. This is all you need to run the connection pool itself, the rest is gravy.</li>

+      <li>commons-dbcp uses static interfaces. This means you can't compile it with JDK 1.6, or if you run on JDK 1.6/1.7 you will get

+          <code>NoSuchMethodException</code> for all the methods not implemented, even if the driver supports it.  </li>

+      <li>The commons-dbcp has become fairly stagnant. Sparse updates, releases, and new feature support.</li>

+      <li>It's not worth rewriting over 60 classes, when something as a connection pool can be accomplished with as a much simpler implementation.</li>

+      <li>Tomcat jdbc pool implements a fairness option not available in commons-dbcp and still performs faster than commons-dbcp</li>

+      <li>Tomcat jdbc pool implements the ability retrieve a connection asynchronously, without adding additional threads to the library itself</li>

+      <li>Tomcat jdbc pool is a Tomcat module, it depends on Tomcat JULI, a simplified logging framework used in Tomcat.</li>

+      <li>Retrieve the underlying connection using the <code>javax.sql.PooledConnection</code> interface.</li>

+      <li>Starvation proof. If a pool is empty, and threads are waiting for a connection, when a connection is returned,

+          the pool will awake the correct thread waiting. Most pools will simply starve.</li>

+    </ol>

+  </p>

+

+  <p>Features added over other connection pool implementations

+    <ol>

+      <li>Support for highly concurrent environments and multi core/cpu systems.</li>

+      <li>Dynamic implementation of interface, will support <code>java.sql</code> and <code>javax.sql</code> interfaces for

+          your runtime environment (as long as your JDBC driver does the same), even when compiled with a lower version of the JDK.</li>

+      <li>Validation intervals - we don't have to validate every single time we use the connection, we can do this

+          when we borrow or return the connection, just not more frequent than an interval we can configure.</li>

+      <li>Run-Once query, a configurable query that will be run only once, when the connection to the database is established.

+          Very useful to setup session settings, that you want to exist during the entire time the connection is established.</li>

+      <li>Ability to configure custom interceptors.

+          This allows you to write custom interceptors to enhance the functionality. You can use interceptors to gather query stats,

+          cache session states, reconnect the connection upon failures, retry queries, cache query results, and so on.

+          Your options are endless and the interceptors are dynamic, not tied to a JDK version of a

+          <code>java.sql</code>/<code>javax.sql</code> interface.</li>

+      <li>High performance - we will show some differences in performance later on</li>

+      <li>Extremely simple, due to the very simplified implementation, the line count and source file count are very low, compare with c3p0

+          that has over 200 source files(last time we checked), Tomcat jdbc has a core of 8 files, the connection pool itself is about half

+          that. As bugs may occur, they will be faster to track down, and easier to fix. Complexity reduction has been a focus from inception.</li>

+      <li>Asynchronous connection retrieval - you can queue your request for a connection and receive a <code>Future&lt;Connection&gt;</code> back.</li>

+      <li>Better idle connection handling. Instead of closing connections directly, it can still pool connections and sizes the idle pool with a smarter algorithm.</li>

+      <li>You can decide at what moment connections are considered abandoned, is it when the pool is full, or directly at a timeout

+          by specifying a pool usage threshold.

+      </li>

+      <li>The abandon connection timer will reset upon a statement/query activity. Allowing a connections that is in use for a long time to not timeout.

+          This is achieved using the <code>ResetAbandonedTimer</code>

+      </li>

+      <li>Close connections after they have been connected for a certain time. Age based close upon return to the pool.

+      </li>

+      <li>Get JMX notifications and log entries when connections are suspected for being abandoned. This is similar to

+          the <code>removeAbandonedTimeout</code> but it doesn't take any action, only reports the information.

+          This is achieved using the <code>suspectTimeout</code> attribute.</li>

+      <li>Connections can be retrieved from a <code>java.sql.Driver</code>, <code>javax.sql.DataSource</code> or <code>javax.sql.XADataSource</code>

+          This is achieved using the <code>dataSource</code> and <code>dataSourceJNDI</code> attributes.</li>

+      <li>XA connection support</li>

+    </ol>

+  </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="How to use"><!--()--></a><a name="How_to_use"><strong>How to use</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    Usage of the Tomcat connection pool has been made to be as simple as possible, for those of you that are familiar with commons-dbcp, the

+    transition will be very simple. Moving from other connection pools is also fairly straight forward.

+  </p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Additional features"><!--()--></a><a name="Additional_features"><strong>Additional features</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The Tomcat connection pool offers a few additional features over what most other pools let you do:</p>

+    <ul>

+      <li><code>initSQL</code> - the ability to run a SQL statement exactly once, when the connection is created</li>

+      <li><code>validationInterval</code> - in addition to running validations on connections, avoid running them too frequently.</li>

+      <li><code>jdbcInterceptors</code> - flexible and pluggable interceptors to create any customizations around the pool,

+          the query execution and the result set handling. More on this in the advanced section.</li>

+      <li><code>fairQueue</code> - Set the fair flag to true to achieve thread fairness or to use asynchronous connection retrieval</li>

+    </ul>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Inside the Apache Tomcat Container"><!--()--></a><a name="Inside_the_Apache_Tomcat_Container"><strong>Inside the Apache Tomcat Container</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      The Tomcat Connection pool is configured as a resource described in <a href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html">The Tomcat JDBC documentation</a>

+      With the only difference being that you have to specify the <code>factory</code> attribute and set the value to

+      <code>org.apache.tomcat.jdbc.pool.DataSourceFactory</code>

+    </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="Standalone"><strong>Standalone</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      The connection pool only has another dependency, and that is on tomcat-juli.jar.

+      To configure the pool in a stand alone project using bean instantiation, the bean to instantiate is

+      <code>org.apache.tomcat.jdbc.pool.DataSource</code>. The same attributes (documented below) as you use to configure a connection

+      pool as a JNDI resource, are used to configure a data source as a bean.

+    </p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX"><strong>JMX</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      The connection pool object exposes an MBean that can be registered.

+      In order for the connection pool object to create the MBean, the flag <code>jmxEnabled</code> has to be set to true.

+      This doesn't imply that the pool will be registered with an MBean server, merely that the MBean is created.

+      In a container like Tomcat, Tomcat itself registers the DataSource with the MBean server, the

+      <code>org.apache.tomcat.jdbc.pool.DataSource</code> object will then register the actual

+      connection pool MBean.

+      If you're running outside of a container, you can register the DataSource yourself under any object name you specify,

+      and it propagates the registration to the underlying pool. To do this you would call <code>mBeanServer.registerMBean(dataSource.getPool().getJmxPool(),objectname)</code>.

+      Prior to this call, ensure that the pool has been created by calling <code>dataSource.createPool()</code>.

+    </p>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <p>To provide a very simple switch to and from commons-dbcp and tomcat-jdbc-pool,

+     Most attributes are the same and have the same meaning.</p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JNDI Factory and Type"><!--()--></a><a name="JNDI_Factory_and_Type"><strong>JNDI Factory and Type</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">factory</code></strong></td><td align="left" valign="center">

+        <p>factory is required, and the value should be <code>org.apache.tomcat.jdbc.pool.DataSourceFactory</code></p>

+      </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">

+        <p>Type should always be <code>javax.sql.DataSource</code> or <code>javax.sql.XADataSource</code></p>

+        <p>Depending on the type a <code>org.apache.tomcat.jdbc.pool.DataSource</code> or a <code>org.apache.tomcat.jdbc.pool.XADataSource</code> will be created.</p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>

+  <p>These attributes are shared between commons-dbcp and tomcat-jdbc-pool, in some cases default values are different.</p>

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">defaultAutoCommit</code></td><td align="left" valign="center">

+      <p>(boolean) The default auto-commit state of connections created by this pool. If not set, default is JDBC driver default (If not set then the <code>setAutoCommit</code> method will not be called.)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">defaultReadOnly</code></td><td align="left" valign="center">

+      <p>(boolean) The default read-only state of connections created by this pool. If not set then the <code>setReadOnly</code> method will not be called. (Some drivers don't support read only mode, ex: Informix)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">defaultTransactionIsolation</code></td><td align="left" valign="center">

+      <p>(String) The default TransactionIsolation state of connections created by this pool. One of the following: (see javadoc )

+         <ul>

+           <li><code>NONE</code></li>

+           <li><code>READ_COMMITTED</code></li>

+           <li><code>READ_UNCOMMITTED</code></li>

+           <li><code>REPEATABLE_READ</code></li>

+           <li><code>SERIALIZABLE</code></li>

+         </ul>

+         If not set, the method will not be called and it defaults to the JDBC driver.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">defaultCatalog</code></td><td align="left" valign="center">

+      <p>(String) The default catalog of connections created by this pool.</p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">driverClassName</code></strong></td><td align="left" valign="center">

+      <p>(String) The fully qualified Java class name of the JDBC driver to be used. The driver has to be accessible

+         from the same classloader as tomcat-jdbc.jar

+      </p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">username</code></strong></td><td align="left" valign="center">

+      <p>(String) The connection username to be passed to our JDBC driver to establish a connection.

+         Note that method <code>DataSource.getConnection(username,password)</code>

+         by default will not use credentials passed into the method,

+         but will use the ones configured here. See <code>alternateUsernameAllowed</code>

+         property for more details.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">password</code></strong></td><td align="left" valign="center">

+      <p>(String) The connection password to be passed to our JDBC driver to establish a connection.

+         Note that method <code>DataSource.getConnection(username,password)</code>

+         by default will not use credentials passed into the method,

+         but will use the ones configured here. See <code>alternateUsernameAllowed</code>

+         property for more details.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxActive</code></td><td align="left" valign="center">

+      <p>(int) The maximum number of active connections that can be allocated from this pool at the same time.

+         The default value is <code>100</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxIdle</code></td><td align="left" valign="center">

+      <p>(int) The maximum number of connections that should be kept in the pool at all times.

+         Default value is  <code>maxActive</code>:<code>100</code>

+         Idle connections are checked periodically (if enabled) and

+         connections that been idle for longer than <code>minEvictableIdleTimeMillis</code>

+         will be released. (also see <code>testWhileIdle</code>)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minIdle</code></td><td align="left" valign="center">

+      <p>

+        (int) The minimum number of established connections that should be kept in the pool at all times.

+        The connection pool can shrink below this number if validation queries fail.

+        Default value is derived from <code>initialSize</code>:<code>10</code> (also see <code>testWhileIdle</code>)

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">initialSize</code></td><td align="left" valign="center">

+      <p>(int)The initial number of connections that are created when the pool is started.

+         Default value is <code>10</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxWait</code></td><td align="left" valign="center">

+      <p>(int) The maximum number of milliseconds that the pool will wait (when there are no available connections)

+         for a connection to be returned before throwing an exception.

+         Default value is <code>30000</code> (30 seconds)</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">testOnBorrow</code></td><td align="left" valign="center">

+      <p>(boolean) The indication of whether objects will be validated before being borrowed from the pool.

+         If the object fails to validate, it will be dropped from the pool, and we will attempt to borrow another.

+         NOTE - for a true value to have any effect, the <code>validationQuery</code> parameter must be set to a non-null string.

+         In order to have a more efficient validation, see <code>validationInterval</code>.

+         Default value is <code>false</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">testOnReturn</code></td><td align="left" valign="center">

+      <p>(boolean) The indication of whether objects will be validated before being returned to the pool.

+         NOTE - for a true value to have any effect, the <code>validationQuery</code> parameter must be set to a non-null string.

+         The default value is <code>false</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">testWhileIdle</code></td><td align="left" valign="center">

+      <p>(boolean) The indication of whether objects will be validated by the idle object evictor (if any).

+         If an object fails to validate, it will be dropped from the pool.

+         NOTE - for a true value to have any effect, the <code>validationQuery</code> parameter must be set to a non-null string.

+         The default value is <code>false</code> and this property has to be set in order for the

+         pool cleaner/test thread is to run (also see <code>timeBetweenEvictionRunsMillis</code>)

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">validationQuery</code></td><td align="left" valign="center">

+      <p>(String) The SQL query that will be used to validate connections from this pool before returning them to the caller.

+         If specified, this query does not have to return any data, it just can't throw a <code>SQLException</code>.

+         The default value is <code>null</code>.

+         Example values are <code>SELECT 1</code>(mysql), <code>select 1 from dual</code>(oracle), <code>SELECT 1</code>(MS Sql Server)

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">validatorClassName</code></td><td align="left" valign="center">

+      <p>(String) The name of a class which implements the

+         <code>org.apache.tomcat.jdbc.pool.Validator</code> interface and

+         provides a no-arg constructor (may be implicit). If specified, the

+         class will be used to create a Validator instance which is then used

+         instead of any validation query to validate connections. The default

+         value is <code>null</code>. An example value is

+         <code>com.mycompany.project.SimpleValidator</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">timeBetweenEvictionRunsMillis</code></td><td align="left" valign="center">

+      <p>(int) The number of milliseconds to sleep between runs of the idle connection validation/cleaner thread.

+         This value should not be set under 1 second. It dictates how often we check for idle, abandoned connections, and how often

+         we validate idle connections.

+         The default value is <code>5000</code> (5 seconds). <br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">numTestsPerEvictionRun</code></td><td align="left" valign="center">

+      <p>(int) Property not used in tomcat-jdbc-pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">minEvictableIdleTimeMillis</code></td><td align="left" valign="center">

+      <p>(int) The minimum amount of time an object may sit idle in the pool before it is eligible for eviction.

+         The default value is <code>60000</code> (60 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">accessToUnderlyingConnectionAllowed</code></td><td align="left" valign="center">

+      <p>(boolean) Property not used. Access can be achieved by calling <code>unwrap</code> on the pooled connection.

+         see <code>javax.sql.DataSource</code> interface, or call <code>getConnection</code> through reflection or

+         cast the object as <code>javax.sql.PooledConnection</code></p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">removeAbandoned</code></td><td align="left" valign="center">

+      <p>(boolean) Flag to remove abandoned connections if they exceed the <code>removeAbandonedTimeout</code>.

+         If set to true a connection is considered abandoned and eligible for removal if it has been in use

+         longer than the <code>removeAbandonedTimeout</code> Setting this to <code>true</code> can recover db connections from

+         applications that fail to close a connection. See also <code>logAbandoned</code>

+         The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">removeAbandonedTimeout</code></td><td align="left" valign="center">

+      <p>(int) Timeout in seconds before an abandoned(in use) connection can be removed.

+         The default value is <code>60</code> (60 seconds). The value should be set to the longest running query your applications

+         might have.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">logAbandoned</code></td><td align="left" valign="center">

+      <p>(boolean) Flag to log stack traces for application code which abandoned a Connection.

+         Logging of abandoned Connections adds overhead for every Connection borrow because a stack trace has to be generated.

+         The default value is <code>false</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">connectionProperties</code></td><td align="left" valign="center">

+      <p>(String) The connection properties that will be sent to our JDBC driver when establishing new connections.

+         Format of the string must be [propertyName=property;]*

+         NOTE - The "user" and "password" properties will be passed explicitly, so they do not need to be included here.

+         The default value is <code>null</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">poolPreparedStatements</code></td><td align="left" valign="center">

+      <p>(boolean) Property not used.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxOpenPreparedStatements</code></td><td align="left" valign="center">

+      <p>(int) Property not used.</p>

+    </td></tr></table>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat JDBC Enhanced Attributes"><!--()--></a><a name="Tomcat_JDBC_Enhanced_Attributes"><strong>Tomcat JDBC Enhanced Attributes</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">initSQL</code></td><td align="left" valign="center">

+      <p>(String) A custom query to be run when a connection is first created.

+         The default value is <code>null</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">jdbcInterceptors</code></td><td align="left" valign="center">

+      <p>(String) A semicolon separated list of classnames extending

+         <code>org.apache.tomcat.jdbc.pool.JdbcInterceptor</code> class.

+         See <a href="#Configuring_JDBC_interceptors">Configuring JDBC interceptors</a>

+         below for more detailed description of syntaz and examples.

+      </p>

+      <p>

+         These interceptors will be inserted as an interceptor into the chain

+         of operations on a <code>java.sql.Connection</code> object.

+         The default value is <code>null</code>.

+      </p>

+      <p>

+         Predefined interceptors:<br>

+         <code>org.apache.tomcat.jdbc.pool.interceptor.<br>ConnectionState</code>

+          - keeps track of auto commit, read only, catalog and transaction isolation level.<br>

+         <code>org.apache.tomcat.jdbc.pool.interceptor.<br>StatementFinalizer</code>

+          - keeps track of opened statements, and closes them when the connection is returned to the pool.

+      </p>

+      <p>

+         More predefined interceptors are described in detail in the

+         <a href="#JDBC_interceptors">JDBC Interceptors section</a>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">validationInterval</code></td><td align="left" valign="center">

+      <p>(long) avoid excess validation, only run validation at most at this frequency - time in milliseconds.

+         If a connection is due for validation, but has been validated previously within this interval, it will not be validated again.

+         The default value is <code>30000</code> (30 seconds).</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">jmxEnabled</code></td><td align="left" valign="center">

+      <p>(boolean) Register the pool with JMX or not.

+         The default value is <code>true</code>.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">fairQueue</code></td><td align="left" valign="center">

+      <p>(boolean) Set to true if you wish that calls to getConnection should be treated

+         fairly in a true FIFO fashion. This uses the <code>org.apache.tomcat.jdbc.pool.FairBlockingQueue</code>

+         implementation for the list of the idle connections. The default value is <code>true</code>.

+         This flag is required when you want to use asynchronous connection retrieval.<br>

+         Setting this flag ensures that threads receive connections in the order they arrive.<br>

+         During performance tests, there is a very large difference in how locks

+         and lock waiting is implemented. When <code>fairQueue=true</code>

+         there is a decision making process based on what operating system the system is running.

+         If the system is running on Linux (property <code>os.name=Linux</code>.

+         To disable this Linux specific behavior and still use the fair queue, simply add the property

+         <code>org.apache.tomcat.jdbc.pool.FairBlockingQueue.ignoreOS=true</code> to your system properties

+         before the connection pool classes are loaded.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">abandonWhenPercentageFull</code></td><td align="left" valign="center">

+      <p>(int) Connections that have been abandoned (timed out) wont get closed and reported up unless

+         the number of connections in use are above the percentage defined by <code>abandonWhenPercentageFull</code>.

+         The value should be between 0-100.

+         The default value is <code>0</code>, which implies that connections are eligible for closure as soon

+         as <code>removeAbandonedTimeout</code> has been reached.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxAge</code></td><td align="left" valign="center">

+      <p>(long) Time in milliseconds to keep this connection. When a connection is returned to the pool,

+         the pool will check to see if the <code>now - time-when-connected &gt; maxAge</code> has been reached,

+         and if so, it closes the connection rather than returning it to the pool.

+         The default value is <code>0</code>, which implies that connections will be left open and no age check

+         will be done upon returning the connection to the pool.</p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useEquals</code></td><td align="left" valign="center">

+      <p>(boolean) Set to true if you wish the <code>ProxyConnection</code> class to use <code>String.equals</code> and set to <code>false</code>

+         when you wish to use <code>==</code> when comparing method names. This property does not apply to added interceptors as those are configured individually.

+         The default value is <code>true</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">suspectTimeout</code></td><td align="left" valign="center">

+      <p>(int) Timeout value in seconds. Default value is <code>0</code>.<br>

+           Similar to to the <code>removeAbandonedTimeout</code> value but instead of treating the connection

+           as abandoned, and potentially closing the connection, this simply logs the warning if

+           <code>logAbandoned</code> is set to true. If this value is equal or less than 0, no suspect

+           checking will be performed. Suspect checking only takes place if the timeout value is larger than 0 and

+           the connection was not abandoned or if abandon check is disabled. If a connection is suspect a WARN message gets

+           logged and a JMX notification gets sent once.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">rollbackOnReturn</code></td><td align="left" valign="center">

+      <p>(boolean) If <code>autoCommit==false</code> then the pool can terminate the transaction by calling rollback on the connection as it is returned to the pool

+          Default value is <code>false</code>.<br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">commitOnReturn</code></td><td align="left" valign="center">

+      <p>(boolean) If <code>autoCommit==false</code> then the pool can complete the transaction by calling commit on the connection as it is returned to the pool

+          If <code>rollbackOnReturn==true</code> then this attribute is ignored.

+          Default value is <code>false</code>.<br>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">alternateUsernameAllowed</code></td><td align="left" valign="center">

+      <p>(boolean) By default, the jdbc-pool will ignore the

+         <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection(java.lang.String,%20java.lang.String)"><code>DataSource.getConnection(username,password)</code></a>

+         call, and simply return a previously pooled connection under the globally configured properties <code>username</code> and <code>password</code>, for performance reasons.

+      </p>

+      <p>

+         The pool can however be configured to allow use of different credentials

+         each time a connection is requested.  To enable the functionality described in the

+         <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection(java.lang.String,%20java.lang.String)"><code>DataSource.getConnection(username,password)</code></a>

+         call, simply set the property <code>alternateUsernameAllowed</code>

+         to <code>true</code>.<br>

+         Should you request a connection with the credentials user1/password1 and the connection

+         was previously connected using different user2/password2, the connection will be closed,

+         and reopened with the requested credentials. This way, the pool size is still managed

+         on a global level, and not on a per schema level. <br>

+         The default value is <code>false</code>.<br>

+         This property was added as an enhancement to <a href="https://issues.apache.org/bugzilla/show_bug.cgi?id=50025">bug 50025</a>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dataSource</code></td><td align="left" valign="center">

+      <p>(javax.sql.DataSource) Inject a data source to the connection pool, and the pool will use the data source to retrieve connections instead of establishing them using the <code>java.sql.Driver</code> interface.

+         This is useful when you wish to pool XA connections or connections established using a data source instead of a connection string. Default value is <code>null</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">dataSourceJNDI</code></td><td align="left" valign="center">

+      <p>(String) The JNDI name for a data source to be looked up in JNDI and then used to establish connections to the database. See the <code>dataSource</code> attribute. Default value is <code>null</code>

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">useDisposableConnectionFacade</code></td><td align="left" valign="center">

+      <p>(boolean) Set this to true if you wish to put a facade on your connection so that it cannot be reused after it has been closed. This prevents a thread holding on to a

+                   reference of a connection it has already called closed on, to execute queries on it. Default value is <code>true</code>.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">logValidationErrors</code></td><td align="left" valign="center">

+      <p>(boolean) Set this to true to log errors during the validation phase to the log file. If set to true, errors will be logged as SEVERE. Default value is <code>false</code> for backwards compatibility.

+      </p>

+    </td></tr><tr><td align="left" valign="center"><code class="attributeName">propagateInterruptState</code></td><td align="left" valign="center">

+      <p>(boolean) Set this to true to propagate the interrupt state for a thread that has been interrupted (not clearing the interrupt state). Default value is <code>false</code> for backwards compatibility.

+      </p>

+    </td></tr></table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Advanced usage"><!--()--></a><a name="Advanced_usage"><strong>Advanced usage</strong></a></font></td></tr><tr><td><blockquote>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC interceptors"><!--()--></a><a name="JDBC_interceptors"><strong>JDBC interceptors</strong></a></font></td></tr><tr><td><blockquote>

+    <p>To see an example of how to use an interceptor, take a look at

+    <code>org.apache.tomcat.jdbc.pool.interceptor.ConnectionState</code>.

+    This simple interceptor is a cache of three attributes, transaction isolation level, auto commit and read only state,

+    in order for the system to avoid not needed roundtrips to the database.

+    </p>

+    <p>Further interceptors will be added to the core of the pool as the need arises. Contributions are always welcome!</p>

+    <p>Interceptors are of course not limited to just <code>java.sql.Connection</code> but can be used to wrap any

+    of the results from a method invokation as well. You could build query performance analyzer that provides JMX notifications when a

+    query is running longer than the expected time.</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="Configuring JDBC interceptors"><!--()--></a><a name="Configuring_JDBC_interceptors"><strong>Configuring JDBC interceptors</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Configuring JDBC interceptors is done using the <b>jdbcInterceptors</b> property.

+    The property contains a list of semicolon separated class names. If the

+    classname is not fully qualified it will be prefixed with the

+    <code>org.apache.tomcat.jdbc.pool.interceptor.</code> prefix.

+    </p>

+    <p>Example:<br>

+      <code>

+      jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;

+        org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"

+      </code>

+      <br>

+      is the same as

+      <br>

+      <code> jdbcInterceptors="ConnectionState;StatementFinalizer"</code>

+    </p>

+    <p>

+    Interceptors can have properties as well. Properties for an interceptor

+    are specified within parentheses after the class name. Several properties

+    are separated by commas.

+    </p>

+    <p>Example:<br>

+    <code>

+      jdbcInterceptors="ConnectionState;StatementFinalizer(useEquals=true)"

+    </code>

+    </p>

+    <p>

+    Extra whitespace characters around class names, property names and values

+    are ignored.

+    </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="org.apache.tomcat.jdbc.pool.JdbcInterceptor"><strong>org.apache.tomcat.jdbc.pool.JdbcInterceptor</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Abstract base class for all interceptors, can not be instantiated.</p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">useEquals</code></td><td align="left" valign="center">

+        <p>(boolean) Set to true if you wish the <code>ProxyConnection</code> class to use <code>String.equals</code> and set to <code>false</code>

+         when you wish to use <code>==</code> when comparing method names.

+         The default value is <code>true</code>.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState"><strong>org.apache.tomcat.jdbc.pool.interceptor.ConnectionState</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Caches the connection for the following attributes <code>autoCommit</code>, <code>readOnly</code>,

+       <code>transactionIsolation</code> and <code>catalog</code>.

+       It is a performance enhancement to avoid roundtrip to the database when getters are called or setters are called with an already set value.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"><strong>org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Keeps track of all statements created using <code>createStatement</code>, <code>prepareStatement</code> or <code>prepareCall</code>

+       and closes these statements when the connection is returned to the pool.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.StatementCache"><strong>org.apache.tomcat.jdbc.pool.interceptor.StatementCache</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Caches <code>PreparedStatement</code> and/or <code>CallableStatement</code>

+       instances on a connection.

+    </p>

+    <p>The statements are cached per connection.

+       The count limit is counted globally for all connections that belong to

+       the same pool. Once the count reaches <code>max</code>, subsequent

+       statements are not returned to the cache and are closed immediately.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">prepared</code></td><td align="left" valign="center">

+        <p>(boolean as String) Enable caching of <code>PreparedStatement</code>

+           instances created using <code>prepareStatement</code> calls.

+           The default value is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">callable</code></td><td align="left" valign="center">

+        <p>(boolean as String) Enable caching of <code>CallableStatement</code>

+           instances created using <code>prepareCall</code> calls.

+           The default value is <code>false</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">max</code></td><td align="left" valign="center">

+        <p>(int as String) Limit on the count of cached statements across

+           the connection pool.

+           The default value is <code>50</code>.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor"><strong>org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor</strong></a></font></td></tr><tr><td><blockquote>

+    <p>See <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48392">48392</a>. Interceptor to wrap statements and result sets in order to prevent access to the actual connection

+       using the methods <code>ResultSet.getStatement().getConnection()</code> and <code>Statement.getConnection()</code>

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor"><strong>org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Automatically calls <code>java.sql.Statement.setQueryTimeout(seconds)</code> when a new statement is created.

+       The pool itself doesn't timeout the query, it is still up to the JDBC driver to enforce query timeouts.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">queryTimeout</code></strong></td><td align="left" valign="center">

+        <p>(int as String) The number of seconds to set for the query timeout

+           The default value is <code>1000</code> milliseconds.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport"><strong>org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReport</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Keeps track of query performance and issues log entries when queries exceed a time threshold of fail.

+       The log level used is <code>WARN</code>

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">threshold</code></td><td align="left" valign="center">

+        <p>(int as String) The number of milliseconds a query has to exceed before issuing a log alert.

+           The default value is <code>1000</code> milliseconds.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">maxQueries</code></td><td align="left" valign="center">

+        <p>(int as String) The maximum number of queries to keep track of in order to preserve memory space

+           The default value is <code>1000</code>.

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx"><strong>org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Extends the <code>SlowQueryReport</code> and in addition to log entries it issues JMX notification

+       for monitoring tools to react to. Inherits all the attributes from its parent class.

+       This class uses Tomcat's JMX engine so it wont work outside of the Tomcat container.

+       By default, JMX notifications are sent through the ConnectionPool mbean if it is enabled.

+       The <code>SlowQueryReportJmx</code> can also register an MBean if <code>notifyPool=false</code>

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">notifyPool</code></td><td align="left" valign="center">

+        <p>(boolean as String) Set to false if you want JMX notifications to go to the <code>SlowQueryReportJmx</code> MBean

+           The default value is <code>true</code>.

+        </p>

+      </td></tr><tr><td align="left" valign="center"><code class="attributeName">objectName</code></td><td align="left" valign="center">

+        <p>(String) Define a valid <code>javax.management.ObjectName</code> string that will be used to register this object with the platform mbean server

+           The default value is <code>null</code> and the object will be registered using

+           tomcat.jdbc:type=org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx,name=the-name-of-the-pool

+        </p>

+      </td></tr></table>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer"><strong>org.apache.tomcat.jdbc.pool.interceptor.ResetAbandonedTimer</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+        The abandoned timer starts when a connection is checked out from the pool.

+        This means if you have a 30second timeout and run 10x10second queries using the connection

+        it will be marked abandoned and potentially reclaimed depending on the <code>abandonWhenPercentageFull</code>

+        attribute.

+        Using this interceptor it will reset the checkout timer every time you perform an operation on the connection or execute a

+        query successfully.

+    </p>

+    <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr></table>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Code Example"><!--()--></a><a name="Code_Example"><strong>Code Example</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Other examples of Tomcat configuration for JDBC usage can be found <a href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html">in the Tomcat documentation</a>. </p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Plain Ol' Java"><!--()--></a><a name="Plain_Ol'_Java"><strong>Plain Ol' Java</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Here is a simple example of how to create and use a data source.</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>

+  import java.sql.Connection;

+  import java.sql.ResultSet;

+  import java.sql.Statement;

+

+  import org.apache.tomcat.jdbc.pool.DataSource;

+  import org.apache.tomcat.jdbc.pool.PoolProperties;

+

+  public class SimplePOJOExample {

+

+      public static void main(String[] args) throws Exception {

+          PoolProperties p = new PoolProperties();

+          p.setUrl("jdbc:mysql://localhost:3306/mysql");

+          p.setDriverClassName("com.mysql.jdbc.Driver");

+          p.setUsername("root");

+          p.setPassword("password");

+          p.setJmxEnabled(true);

+          p.setTestWhileIdle(false);

+          p.setTestOnBorrow(true);

+          p.setValidationQuery("SELECT 1");

+          p.setTestOnReturn(false);

+          p.setValidationInterval(30000);

+          p.setTimeBetweenEvictionRunsMillis(30000);

+          p.setMaxActive(100);

+          p.setInitialSize(10);

+          p.setMaxWait(10000);

+          p.setRemoveAbandonedTimeout(60);

+          p.setMinEvictableIdleTimeMillis(30000);

+          p.setMinIdle(10);

+          p.setLogAbandoned(true);

+          p.setRemoveAbandoned(true);

+          p.setJdbcInterceptors(

+            "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+

+            "org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");

+          DataSource datasource = new DataSource();

+          datasource.setPoolProperties(p);

+

+          Connection con = null;

+          try {

+            con = datasource.getConnection();

+            Statement st = con.createStatement();

+            ResultSet rs = st.executeQuery("select * from user");

+            int cnt = 1;

+            while (rs.next()) {

+                System.out.println((cnt++)+". Host:" +rs.getString("Host")+

+                  " User:"+rs.getString("User")+" Password:"+rs.getString("Password"));

+            }

+            rs.close();

+            st.close();

+          } finally {

+            if (con!=null) try {con.close();}catch (Exception ignore) {}

+          }

+      }

+

+  }

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="As a Resource"><!--()--></a><a name="As_a_Resource"><strong>As a Resource</strong></a></font></td></tr><tr><td><blockquote>

+    <p>And here is an example on how to configure a resource for JNDI lookups</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>

+&lt;Resource name="jdbc/TestDB"

+          auth="Container"

+          type="javax.sql.DataSource"

+          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

+          testWhileIdle="true"

+          testOnBorrow="true"

+          testOnReturn="false"

+          validationQuery="SELECT 1"

+          validationInterval="30000"

+          timeBetweenEvictionRunsMillis="30000"

+          maxActive="100"

+          minIdle="10"

+          maxWait="10000"

+          initialSize="10"

+          removeAbandonedTimeout="60"

+          removeAbandoned="true"

+          logAbandoned="true"

+          minEvictableIdleTimeMillis="30000"

+          jmxEnabled="true"

+          jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;

+            org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"

+          username="root"

+          password="password"

+          driverClassName="com.mysql.jdbc.Driver"

+          url="jdbc:mysql://localhost:3306/mysql"/&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Asynchronous Connection Retrieval"><!--()--></a><a name="Asynchronous_Connection_Retrieval"><strong>Asynchronous Connection Retrieval</strong></a></font></td></tr><tr><td><blockquote>

+    <p> The Tomcat JDBC connection pool supports asynchronous connection retrieval without adding additional threads to the

+        pool library. It does this by adding a method to the data source called <code>Future&lt;Connection&gt; getConnectionAsync()</code>.

+        In order to use the async retrieval, two conditions must be met:

+        <ol>

+          <li>You must configure the <code>fairQueue</code> property to be <code>true</code>.</li>

+          <li>You will have to cast the data source to <code>org.apache.tomcat.jdbc.pool.DataSource</code></li>

+        </ol>

+        An example of using the async feature is show below.

+<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>

+  Connection con = null;

+  try {

+    Future&lt;Connection&gt; future = datasource.getConnectionAsync();

+    while (!future.isDone()) {

+      System.out.println("Connection is not yet available. Do some background work");

+      try {

+        Thread.sleep(100); //simulate work

+      }catch (InterruptedException x) {

+        Thread.currentThread().interrupt();

+      }

+    }

+    con = future.get(); //should return instantly

+    Statement st = con.createStatement();

+    ResultSet rs = st.executeQuery("select * from user");

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Interceptors"><strong>Interceptors</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Interceptors are a powerful way to enable, disable or modify functionality on a specific connection or its sub components.

+       There are many different use cases for when interceptors are useful. By default, and for performance reasons, the connection pool is stateless.

+       The only state the pool itself inserts are <code>defaultAutoCommit</code>, <code>defaultReadOnly</code>, <code>defaultTransactionIsolation</code>, <code>defaultCatalog</code> if

+       these are set. These 4 properties are only set upon connection creation. Should these properties be modified during the usage of the connection,

+       the pool itself will not reset them.</p>

+    <p>An interceptor has to extend the <code>org.apache.tomcat.jdbc.pool.JdbcInterceptor</code> class. This class is fairly simple,

+       You will need to have a no arg constructor</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>

+  public JdbcInterceptor() {

+  }

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+       When a connection is borrowed from the pool, the interceptor can initialize or in some other way react to the event by implementing the

+<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>

+  public abstract void reset(ConnectionPool parent, PooledConnection con);

+</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>

+       method. This method gets called with two parameters, a reference to the connection pool itself <code>ConnectionPool parent</code>

+       and a reference to the underlying connection <code>PooledConnection con</code>.

+    </p>

+    <p>

+       When a method on the <code>java.sql.Connection</code> object is invoked, it will cause the

+<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>

+  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable

+</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>

+       method to get invoked. The <code>Method method</code> is the actual method invoked, and <code>Object[] args</code> are the arguments.

+       To look at a very simple example, where we demonstrate how to make the invokation to <code>java.sql.Connection.close()</code> a noop

+       if the connection has been closed

+<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>

+  if (CLOSE_VAL==method.getName()) {

+      if (isClosed()) return null; //noop for already closed.

+  }

+  return super.invoke(proxy,method,args);

+</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>

+        There is an observation being made. It is the comparison of the method name. One way to do this would be to do

+        <code>"close".equals(method.getName())</code>.

+        Above we see a direct reference comparison between the method name and <code>static final String</code> reference.

+        According to the JVM spec, method names and static final String end up in a shared constant pool, so the reference comparison should work.

+        One could of course do this as well:

+<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>

+  if (compare(CLOSE_VAL,method)) {

+      if (isClosed()) return null; //noop for already closed.

+  }

+  return super.invoke(proxy,method,args);

+</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>

+        The <code>compare(String,Method)</code> will use the <code>useEquals</code> flag on an interceptor and do either reference comparison or

+        a string value comparison when the <code>useEquals=true</code> flag is set.

+    </p>

+    <p>Pool start/stop<br>

+       When the connection pool is started or closed, you can be notifed. You will only be notified once per interceptor class

+       even though it is an instance method. and you will be notified using an interceptor currently not attached to a pool.

+<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>

+  public void poolStarted(ConnectionPool pool) {

+  }

+

+  public void poolClosed(ConnectionPool pool) {

+  }

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+       When overriding these methods, don't forget to call super if you are extending a class other than <code>JdbcInterceptor</code>

+    </p>

+    <p>Configuring interceptors<br>

+       Interceptors are configured using the <code>jdbcInterceptors</code> property or the <code>setJdbcInterceptors</code> method.

+       An interceptor can have properties, and would be configured like this

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+  String jdbcInterceptors=

+    "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState(useEquals=true,fast=yes)"

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+    <p>Interceptor properties<br>

+       Since interceptors can have properties, you need to be able to read the values of these properties within your

+       interceptor. Taking an example like the one above, you can override the <code>setProperties</code> method.

+<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>

+  public void setProperties(Map&lt;String, InterceptorProperty&gt; properties) {

+     super.setProperties(properties);

+     final String myprop = "myprop";

+     InterceptorProperty p1 = properties.get(myprop);

+     if (p1!=null) {

+         setMyprop(Long.parseLong(p1.getValue()));

+     }

+  }

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+  </blockquote></td></tr></table>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Getting the actual JDBC connection"><!--()--></a><a name="Getting_the_actual_JDBC_connection"><strong>Getting the actual JDBC connection</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Connection pools create wrappers around the actual connection in order to properly pool them.

+       We also create interceptors in these wrappers to be able to perform certain functions.

+       If there is a need to retrieve the actual connection, one can do so using the <code>javax.sql.PooledConnection</code>

+       interface.

+<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>

+  Connection con = datasource.getConnection();

+  Connection actual = ((javax.sql.PooledConnection)con).getConnection();

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building"><strong>Building</strong></a></font></td></tr><tr><td><blockquote>

+  <p>We build the JDBC pool code with 1.6, but it is backwards compatible down to 1.5 for runtime environment. For unit test, we use 1.6 and higher</p>

+  <p>Other examples of Tomcat configuration for JDBC usage can be found <a href="http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html">in the Tomcat documentation</a>. </p>

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Building from source"><!--()--></a><a name="Building_from_source"><strong>Building from source</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Building is pretty simple. The pool has a dependency on <code>tomcat-juli.jar</code> and in case you want the <code>SlowQueryReportJmx</code></p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+  javac -classpath tomcat-juli.jar \

+        -d . \

+        org/apache/tomcat/jdbc/pool/*.java \

+        org/apache/tomcat/jdbc/pool/interceptor/*.java \

+        org/apache/tomcat/jdbc/pool/jmx/*.java

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+       A build file can be found in the Tomcat <a href="http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/">source repository</a>.

+    </p>

+    <p>

+      As a convenience, a build file is also included where a simple build command will generate all files needed.

+<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 download  (downloads dependencies)

+  ant build     (compiles and generates .jar files)

+  ant dist      (creates a release package)

+  ant test      (runs tests, expects a test database to be setup)

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+    <p>

+      The system is structured for a Maven build, but does generate release artifacts. Just the library itself.

+    </p>

+  </blockquote></td></tr></table>

+</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="/tomcat-7.0-doc/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/jdbc-pool.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jndi-datasource-examples-howto.html b/webapps/docs/jndi-datasource-examples-howto.html
new file mode 100644
index 0000000..4f0ad83
--- /dev/null
+++ b/webapps/docs/jndi-datasource-examples-howto.html
@@ -0,0 +1,699 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - JNDI Datasource HOW-TO</title><meta name="author" content="Les Hughes"><meta name="author" content="David Haraburda"><meta name="author" content="Glenn Nielsen"><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JNDI Datasource HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#DriverManager,_the_service_provider_mechanism_and_memory_leaks">DriverManager, the service provider mechanism and memory leaks</a></li><li><a href="#Database_Connection_Pool_(DBCP)_Configurations">Database Connection Pool (DBCP) Configurations</a><ol><li><a href="#Installation">Installation</a></li><li><a href="#Preventing_database_connection_pool_leaks">Preventing database connection pool leaks</a></li><li><a href="#MySQL_DBCP_Example">MySQL DBCP Example</a></li><li><a href="#Oracle_8i,_9i_&amp;_10g">Oracle 8i, 9i &amp; 10g</a></li><li><a href="#PostgreSQL">PostgreSQL</a></li></ol></li><li><a href="#Non-DBCP_Solutions">Non-DBCP Solutions</a></li><li><a href="#Oracle_8i_with_OCI_client">Oracle 8i with OCI client</a><ol><li><a href="#Oracle_8i_with_OCI_client/Introduction">Introduction</a></li><li><a href="#Putting_it_all_together">Putting it all together</a></li></ol></li><li><a href="#Common_Problems">Common Problems</a><ol><li><a href="#Intermittent_Database_Connection_Failures">Intermittent Database Connection Failures</a></li><li><a href="#Random_Connection_Closed_Exceptions">Random Connection Closed Exceptions</a></li><li><a href="#Context_versus_GlobalNamingResources">Context versus GlobalNamingResources</a></li><li><a href="#JNDI_Resource_Naming_and_Realm_Interaction">JNDI Resource Naming and Realm Interaction</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>JNDI Datasource configuration is covered extensively in the

+JNDI-Resources-HOWTO.  However, feedback from <code>tomcat-user</code> has

+shown that specifics for individual configurations can be rather tricky.</p>

+

+<p>Here then are some example configurations that have been posted to

+tomcat-user for popular databases and some general tips for db usage.</p>

+

+<p>You should be aware that since these notes are derived from configuration

+and/or feedback posted to <code>tomcat-user</code> YMMV :-). Please let us

+know if you have any other tested configurations that you feel may be of use

+to the wider audience, or if you feel we can improve this section in anyway.</p>

+

+<p>

+<b>Please note that JNDI resource configuration changed somewhat between

+Tomcat 5.0.x and Tomcat 5.5.x.</b>  You will most likely need to modify older

+JNDI resource configurations to match the syntax in the example below in order

+to make them work in Tomcat 7.x.x.

+</p>

+

+<p>

+Also, please note that JNDI DataSource configuration in general, and this

+tutorial in particular, assumes that you have read and understood the

+<a href="config/context.html">Context</a> and

+<a href="config/host.html">Host</a> configuration references, including

+the section about Automatic Application Deployment in the latter reference.

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="DriverManager, the service provider mechanism and memory leaks"><!--()--></a><a name="DriverManager,_the_service_provider_mechanism_and_memory_leaks"><strong>DriverManager, the service provider mechanism and memory leaks</strong></a></font></td></tr><tr><td><blockquote>

+

+<p><code>java.sql.DriverManager</code> supports the

+<a href="http://docs.oracle.com/javase/6/docs/api/index.html?java/sql/DriverManager.html">service

+provider</a> mechanism. This feature is that all the available JDBC drivers

+that announce themselves by providing a <code>META-INF/services/java.sql.Driver</code>

+file are automatically discovered, loaded and registered,

+relieving you from the need to load the database driver explicitly before

+you create a JDBC connection.

+However, the implementation is fundamentally broken in all Java versions for

+a servlet container environment. The problem is that

+<code>java.sql.DriverManager</code> will scan for the drivers only once.</p>

+

+<p>The <a href="config/listeners.html">JRE Memory Leak Prevention Listener</a>

+that is included with Apache Tomcat solves this by triggering the drivers scan

+during Tomcat startup. This is enabled by default. It means that only

+libraries visible to the listener such as the ones in

+<code>$CATALINA_BASE/lib</code> will be scanned for database drivers.

+If you are considering disabling this feature, note that

+the scan would be triggered by the first web application that is

+using JDBC, leading to failures when this web application is reloaded

+and for other web applications that rely on this feature.

+</p>

+

+<p>Thus, the web applications that have database drivers in their

+<code>WEB-INF/lib</code> directory cannot rely on the service provider

+mechanism and should register the drivers explicitly.</p>

+

+<p>The list of drivers in <code>java.sql.DriverManager</code> is also

+a known source of memory leaks. Any Drivers registered

+by a web application must be deregistered when the web application stops.

+Tomcat will attempt to automatically discover and deregister any

+JDBC drivers loaded by the web application class loader when the web

+application stops.

+However, it is expected that applications do this for themselves via

+a <code>ServletContextListener</code>.

+</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="Database Connection Pool (DBCP) Configurations"><!--()--></a><a name="Database_Connection_Pool_(DBCP)_Configurations"><strong>Database Connection Pool (DBCP) Configurations</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The default database connection pool implementation in Apache Tomcat

+relies on the libraries from the

+<a href="http://commons.apache.org/">Apache Commons</a> project.

+The following libraries are used:

+</p>

+

+<ul>

+<li>Commons DBCP</li>

+<li>Commons Pool</li>

+</ul>

+

+<p>

+These libraries are located in a single JAR at

+<code>$CATALINA_HOME/lib/tomcat-dbcp.jar</code>. However,

+only the classes needed for connection pooling have been included, and the

+packages have been renamed to avoid interfering with applications.

+</p>

+

+<p>DBCP 1.4 provides support for JDBC 4.0.</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>See the <a href="http://commons.apache.org/dbcp/configuration.html">

+DBCP documentation</a> for a complete list of configuration parameters.

+</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="Preventing database connection pool leaks"><!--()--></a><a name="Preventing_database_connection_pool_leaks"><strong>Preventing database connection pool leaks</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>

+A database connection pool creates and manages a pool of connections

+to a database. Recycling and reusing already existing connections

+to a database is more efficient than opening a new connection.

+</p>

+

+<p>

+There is one problem with connection pooling.  A web application has

+to explicitly close ResultSet's, Statement's, and Connection's.

+Failure of a web application to close these resources can result in

+them never being available again for reuse, a database connection pool "leak".

+This can eventually result in your web application database connections failing

+if there are no more available connections.</p>

+

+<p>

+There is a solution to this problem.  The Apache Commons DBCP can be

+configured to track and recover these abandoned database connections.  Not

+only can it recover them, but also generate a stack trace for the code

+which opened these resources and never closed them.</p>

+

+<p>

+To configure a DBCP DataSource so that abandoned database connections are

+removed and recycled add the following attribute to the

+<code>Resource</code> configuration for your DBCP DataSource:

+</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>removeAbandoned="true"</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>

+When available database connections run low DBCP will recover and recycle

+any abandoned database connections it finds. The default is <code>false</code>.

+</p>

+

+<p>

+Use the <code>removeAbandonedTimeout</code> attribute to set the number

+of seconds a database connection has been idle before it is considered abandoned.

+</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>removeAbandonedTimeout="60"</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>

+The default timeout for removing abandoned connections is 300 seconds.

+</p>

+

+<p>

+The <code>logAbandoned</code> attribute can be set to <code>true</code>

+if you want DBCP to log a stack trace of the code which abandoned the

+database connection resources.

+</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>logAbandoned="true"</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>

+The default is <code>false</code>.

+</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="MySQL DBCP Example"><!--()--></a><a name="MySQL_DBCP_Example"><strong>MySQL DBCP Example</strong></a></font></td></tr><tr><td><blockquote>

+

+<h3>0. Introduction</h3>

+<p>Versions of <a href="http://www.mysql.com/products/mysql/index.html">MySQL</a> and JDBC

+drivers that have been reported to work:

+</p>

+<ul>

+<li>MySQL 3.23.47, MySQL 3.23.47 using InnoDB,, MySQL 3.23.58,  MySQL 4.0.1alpha</li>

+<li><a href="http://www.mysql.com/products/connector-j">Connector/J</a> 3.0.11-stable (the official JDBC Driver)</li>

+<li><a href="http://mmmysql.sourceforge.net">mm.mysql</a> 2.0.14 (an old 3rd party JDBC Driver)</li>

+</ul>

+

+<p>Before you proceed, don't forget to copy the JDBC Driver's jar into <code>$CATALINA_HOME/lib</code>.</p>

+

+<h3>1. MySQL configuration</h3>

+<p>

+Ensure that you follow these instructions as variations can cause problems.

+</p>

+

+<p>Create a new test user, a new database and a single test table.

+Your MySQL user <strong>must</strong> have a password assigned. The driver

+will fail if you try to connect with an empty password.

+</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>

+mysql&gt; GRANT ALL PRIVILEGES ON *.* TO javauser@localhost

+    -&gt;   IDENTIFIED BY 'javadude' WITH GRANT OPTION;

+mysql&gt; create database javatest;

+mysql&gt; use javatest;

+mysql&gt; create table testdata (

+    -&gt;   id int not null auto_increment primary key,

+    -&gt;   foo varchar(25),

+    -&gt;   bar int);

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<blockquote>

+<strong>Note:</strong> the above user should be removed once testing is

+complete!

+</blockquote>

+

+<p>Next insert some test data into the testdata table.

+</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>

+mysql&gt; insert into testdata values(null, 'hello', 12345);

+Query OK, 1 row affected (0.00 sec)

+

+mysql&gt; select * from testdata;

++----+-------+-------+

+| ID | FOO   | BAR   |

++----+-------+-------+

+|  1 | hello | 12345 |

++----+-------+-------+

+1 row in set (0.00 sec)

+

+mysql&gt;

+</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>

+

+<h3>2. Context configuration</h3>

+<p>Configure the JNDI DataSource in Tomcat by adding a declaration for your

+resource to your <a href="config/context.html">Context</a>.</p>

+<p>For example:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Context&gt;

+

+    &lt;!-- maxActive: Maximum number of database connections in pool. Make sure you

+         configure your mysqld max_connections large enough to handle

+         all of your db connections. Set to -1 for no limit.

+         --&gt;

+

+    &lt;!-- maxIdle: Maximum number of idle database connections to retain in pool.

+         Set to -1 for no limit.  See also the DBCP documentation on this

+         and the minEvictableIdleTimeMillis configuration parameter.

+         --&gt;

+

+    &lt;!-- maxWait: Maximum time to wait for a database connection to become available

+         in ms, in this example 10 seconds. An Exception is thrown if

+         this timeout is exceeded.  Set to -1 to wait indefinitely.

+         --&gt;

+

+    &lt;!-- username and password: MySQL username and password for database connections  --&gt;

+

+    &lt;!-- driverClassName: Class name for the old mm.mysql JDBC driver is

+         org.gjt.mm.mysql.Driver - we recommend using Connector/J though.

+         Class name for the official MySQL Connector/J driver is com.mysql.jdbc.Driver.

+         --&gt;

+

+    &lt;!-- url: The JDBC connection url for connecting to your MySQL database.

+         --&gt;

+

+  &lt;Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"

+               maxActive="100" maxIdle="30" maxWait="10000"

+               username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"

+               url="jdbc:mysql://localhost:3306/javatest"/&gt;

+

+&lt;/Context&gt;

+</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>

+

+<h3>3. web.xml configuration</h3>

+

+<p>Now create a <code>WEB-INF/web.xml</code> for this test application.</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>

+&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

+http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"

+    version="2.4"&gt;

+  &lt;description&gt;MySQL Test App&lt;/description&gt;

+  &lt;resource-ref&gt;

+      &lt;description&gt;DB Connection&lt;/description&gt;

+      &lt;res-ref-name&gt;jdbc/TestDB&lt;/res-ref-name&gt;

+      &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;

+      &lt;res-auth&gt;Container&lt;/res-auth&gt;

+  &lt;/resource-ref&gt;

+&lt;/web-app&gt;

+</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>

+

+<h3>4. Test code</h3>

+<p>Now create a simple <code>test.jsp</code> page for use later.

+<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>

+&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %&gt;

+&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

+

+&lt;sql:query var="rs" dataSource="jdbc/TestDB"&gt;

+select id, foo, bar from testdata

+&lt;/sql:query&gt;

+

+&lt;html&gt;

+  &lt;head&gt;

+    &lt;title&gt;DB Test&lt;/title&gt;

+  &lt;/head&gt;

+  &lt;body&gt;

+

+  &lt;h2&gt;Results&lt;/h2&gt;

+

+&lt;c:forEach var="row" items="${rs.rows}"&gt;

+    Foo ${row.foo}&lt;br/&gt;

+    Bar ${row.bar}&lt;br/&gt;

+&lt;/c:forEach&gt;

+

+  &lt;/body&gt;

+&lt;/html&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+<p>That JSP page makes use of <a href="http://java.sun.com/products/jsp/jstl">JSTL</a>'s

+SQL and Core taglibs. You can get it from

+<a href="http://tomcat.apache.org/taglibs/standard/">Apache Tomcat Taglibs - Standard Tag Library</a>

+project &mdash; just make sure you get a 1.1.x or later release. Once you have

+JSTL, copy <code>jstl.jar</code> and <code>standard.jar</code> to your web app's

+<code>WEB-INF/lib</code> directory.

+

+</p>

+

+<p>Finally deploy your web app into <code>$CATALINA_BASE/webapps</code> either

+as a warfile called <code>DBTest.war</code> or into a sub-directory called

+<code>DBTest</code></p>

+<p>Once deployed, point a browser at

+<code>http://localhost:8080/DBTest/test.jsp</code> to view the fruits of

+your hard work.</p>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Oracle 8i, 9i &amp; 10g"><!--()--></a><a name="Oracle_8i,_9i_&amp;_10g"><strong>Oracle 8i, 9i &amp; 10g</strong></a></font></td></tr><tr><td><blockquote>

+<h3>0.    Introduction</h3>

+

+<p>Oracle requires minimal changes from the MySQL configuration except for the

+usual gotchas :-)</p>

+<p>Drivers for older Oracle versions may be distributed as *.zip files rather

+than *.jar files. Tomcat will only use <code>*.jar</code> files installed in

+<code>$CATALINA_HOME/lib</code>. Therefore <code>classes111.zip</code>

+or <code>classes12.zip</code> will need to be renamed with a <code>.jar</code>

+extension. Since jarfiles are zipfiles, there is no need to unzip and jar these

+files - a simple rename will suffice.</p>

+

+<p>For Oracle 9i onwards you should use <code>oracle.jdbc.OracleDriver</code>

+rather than <code>oracle.jdbc.driver.OracleDriver</code> as Oracle have stated

+that <code>oracle.jdbc.driver.OracleDriver</code> is deprecated and support

+for this driver class will be discontinued in the next major release.

+</p>

+

+<h3>1. Context configuration</h3>

+<p>In a similar manner to the mysql config above, you will need to define your

+Datasource in your <a href="config/context.html">Context</a>. Here we define a

+Datasource called myoracle using the thin driver to connect as user scott,

+password tiger to the sid called mysid. (Note: with the thin driver this sid is

+not the same as the tnsname). The schema used will be the default schema for the

+user scott.</p>

+

+<p>Use of the OCI driver should simply involve a changing thin to oci in the URL string.

+</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>

+&lt;Resource name="jdbc/myoracle" auth="Container"

+              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"

+              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"

+              username="scott" password="tiger" maxActive="20" maxIdle="10"

+              maxWait="-1"/&gt;

+</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>

+

+<h3>2.    web.xml configuration</h3>

+<p>You should ensure that you respect the element ordering defined by the DTD when you

+create you applications web.xml file.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;resource-ref&gt;

+ &lt;description&gt;Oracle Datasource example&lt;/description&gt;

+ &lt;res-ref-name&gt;jdbc/myoracle&lt;/res-ref-name&gt;

+ &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;

+ &lt;res-auth&gt;Container&lt;/res-auth&gt;

+&lt;/resource-ref&gt;

+</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>

+<h3>3.   Code example</h3>

+<p>You can use the same example application as above (asuming you create the required DB

+instance, tables etc.) replacing the Datasource code with something like</p>

+<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 initContext = new InitialContext();

+Context envContext  = (Context)initContext.lookup("java:/comp/env");

+DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");

+Connection conn = ds.getConnection();

+//etc.

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="PostgreSQL"><strong>PostgreSQL</strong></a></font></td></tr><tr><td><blockquote>

+<h3>0.    Introduction</h3>

+<p>PostgreSQL is configured in a similar manner to Oracle.</p>

+

+<h3>1. Required files </h3>

+<p>

+Copy the Postgres JDBC jar to $CATALINA_HOME/lib. As with Oracle, the

+jars need to be in this directory in order for DBCP's Classloader to find

+them. This has to be done regardless of which configuration step you take next.

+</p>

+

+<h3>2. Resource configuration</h3>

+

+<p>

+You have two choices here: define a datasource that is shared across all Tomcat

+applications, or define a datasource specifically for one application.

+</p>

+

+<h4>2a. Shared resource configuration</h4>

+<p>

+Use this option if you wish to define a datasource that is shared across

+multiple Tomcat applications, or if you just prefer defining your datasource

+in this file.

+</p>

+<p><i>This author has not had success here, although others have reported so.

+Clarification would be appreciated here.</i></p>

+

+<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>

+&lt;Resource name="jdbc/postgres" auth="Container"

+          type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"

+          url="jdbc:postgresql://127.0.0.1:5432/mydb"

+          username="myuser" password="mypasswd" maxActive="20" maxIdle="10" maxWait="-1"/&gt;

+</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>

+<h4>2b. Application-specific resource configuration</h4>

+

+<p>

+Use this option if you wish to define a datasource specific to your application,

+not visible to other Tomcat applications. This method is less invasive to your

+Tomcat installation.

+</p>

+

+<p>

+Create a resource definition for your <a href="config/context.html">Context</a>.

+The Context element should look something like the following.

+</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>

+&lt;Context&gt;

+

+&lt;Resource name="jdbc/postgres" auth="Container"

+          type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"

+          url="jdbc:postgresql://127.0.0.1:5432/mydb"

+          username="myuser" password="mypasswd" maxActive="20" maxIdle="10"

+maxWait="-1"/&gt;

+&lt;/Context&gt;

+</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>

+

+<h3>3. web.xml configuration</h3>

+<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>

+&lt;resource-ref&gt;

+ &lt;description&gt;postgreSQL Datasource example&lt;/description&gt;

+ &lt;res-ref-name&gt;jdbc/postgres&lt;/res-ref-name&gt;

+ &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;

+ &lt;res-auth&gt;Container&lt;/res-auth&gt;

+&lt;/resource-ref&gt;

+</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>

+

+<h4>4. Accessing the datasource</h4>

+<p>

+When accessing the datasource programmatically, remember to prepend

+<code>java:/comp/env</code> to your JNDI lookup, as in the following snippet of

+code. Note also that "jdbc/postgres" can be replaced with any value you prefer, provided

+you change it in the above resource definition file as well.

+</p>

+

+<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>

+InitialContext cxt = new InitialContext();

+if ( cxt == null ) {

+   throw new Exception("Uh oh -- no context!");

+}

+

+DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/postgres" );

+

+if ( ds == null ) {

+   throw new Exception("Data source not found!");

+}

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Non-DBCP Solutions"><!--()--></a><a name="Non-DBCP_Solutions"><strong>Non-DBCP Solutions</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+These solutions either utilise a single connection to the database (not recommended for anything other

+than testing!) or some other pooling technology.

+</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="Oracle 8i with OCI client"><!--()--></a><a name="Oracle_8i_with_OCI_client"><strong>Oracle 8i with OCI client</strong></a></font></td></tr><tr><td><blockquote>

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Oracle 8i with OCI client/Introduction"><!--()--></a><a name="Oracle_8i_with_OCI_client/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+<p>Whilst not strictly addressing the creation of a JNDI DataSource using the OCI client, these notes can be combined with the

+Oracle and DBCP solution above.</p>

+<p>

+In order to use OCI driver, you should have an Oracle client installed. You should have installed

+Oracle8i(8.1.7) client from cd,  and download the suitable JDBC/OCI

+driver(Oracle8i 8.1.7.1 JDBC/OCI Driver) from <a href="http://otn.oracle.com/">otn.oracle.com</a>.

+</p>

+<p>

+After renaming <code>classes12.zip</code> file to <code>classes12.jar</code>

+for Tomcat, copy it into <code>$CATALINA_HOME/lib</code>.

+You may also have to remove the <code>javax.sql.*</code> classes

+from this file depending upon the version of Tomcat and JDK you are using.

+</p>

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Putting it all together"><!--()--></a><a name="Putting_it_all_together"><strong>Putting it all together</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+Ensure that you have the <code>ocijdbc8.dll</code> or <code>.so</code> in your <code>$PATH</code> or <code>LD_LIBRARY_PATH</code>

+ (possibly in <code>$ORAHOME\bin</code>) and also confirm that the native library can be loaded by a simple test program

+using <code>System.loadLibrary("ocijdbc8");</code>

+</p>

+<p>

+You should next create a simple test servlet or jsp that has these

+<strong>critical lines</strong>:

+</p>

+<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>

+DriverManager.registerDriver(new

+oracle.jdbc.driver.OracleDriver());

+conn =

+DriverManager.getConnection("jdbc:oracle:oci8:@database","username","password");

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>

+where database is of the form <code>host:port:SID</code> Now if you try to access the URL of your

+test servlet/jsp and what you get is a

+<code>ServletException</code> with a root cause of <code>java.lang.UnsatisfiedLinkError:get_env_handle</code>.

+</p>

+<p>

+First, the <code>UnsatisfiedLinkError</code> indicates that you have

+<ul>

+<li>a mismatch between your JDBC classes file and

+your Oracle client version. The giveaway here is the message stating that a needed library file cannot be

+found. For example, you may be using a classes12.zip file from Oracle Version 8.1.6 with a Version 8.1.5

+Oracle client. The classeXXXs.zip file and Oracle client software versions must match.

+</li>

+<li>A <code>$PATH</code>, <code>LD_LIBRARY_PATH</code> problem.</li>

+<li>It has been reported that ignoring the driver you have downloded from otn and using

+the classes12.zip file from the directory <code>$ORAHOME\jdbc\lib</code> will also work.

+</li>

+</ul>

+</p>

+<p>

+Next you may experience the error <code>ORA-06401 NETCMN: invalid driver designator</code>

+</p>

+<p>

+The Oracle documentation says : "Cause: The login (connect) string contains an invalid

+driver designator. Action: Correct the string and re-submit."

+

+Change the database connect string (of the form <code>host:port:SID</code>) with this one:

+<code>(description=(address=(host=myhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl)))</code>

+</p>

+<p>

+<i>Ed. Hmm, I don't think this is really needed if you sort out your TNSNames - but I'm not an Oracle DBA :-)</i>

+</p>

+</blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Problems"><!--()--></a><a name="Common_Problems"><strong>Common Problems</strong></a></font></td></tr><tr><td><blockquote>

+<p>Here are some common problems encountered with a web application which

+uses a database and tips for how to solve them.</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Intermittent Database Connection Failures"><!--()--></a><a name="Intermittent_Database_Connection_Failures"><strong>Intermittent Database Connection Failures</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+Tomcat runs within a JVM.  The JVM periodically performs garbage collection

+(GC) to remove java objects which are no longer being used.  When the JVM

+performs GC execution of code within Tomcat freezes. If the maximum time

+configured for establishment of a database connection is less than the amount

+of time garbage collection took you can get a database connection failure.

+</p>

+

+<p>To collect data on how long garbage collection is taking add the

+<code>-verbose:gc</code> argument to your <code>CATALINA_OPTS</code>

+environment variable when starting Tomcat.  When verbose gc is enabled

+your <code>$CATALINA_BASE/logs/catalina.out</code> log file will include

+data for every garbage collection including how long it took.</p>

+

+<p>When your JVM is tuned correctly 99% of the time a GC will take less

+than one second.  The remainder will only take a few seconds.  Rarely,

+if ever should a GC take more than 10 seconds.</p>

+

+<p>Make sure that the db connection timeout is set to 10-15 seconds.

+For the DBCP you set this using the parameter <code>maxWait</code>.</p>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Random Connection Closed Exceptions"><!--()--></a><a name="Random_Connection_Closed_Exceptions"><strong>Random Connection Closed Exceptions</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+These can occur when one request gets a db connection from the connection

+pool and closes it twice.  When using a connection pool, closing the

+connection just returns it to the pool for reuse by another request,

+it doesn't close the connection.  And Tomcat uses multiple threads to

+handle concurrent requests. Here is an example of the sequence

+of events which could cause this error in Tomcat:

+</p>

+<pre>

+  Request 1 running in Thread 1 gets a db connection.

+

+  Request 1 closes the db connection.

+

+  The JVM switches the running thread to Thread 2

+

+  Request 2 running in Thread 2 gets a db connection

+  (the same db connection just closed by Request 1).

+

+  The JVM switches the running thread back to Thread 1

+

+  Request 1 closes the db connection a second time in a finally block.

+

+  The JVM switches the running thread back to Thread 2

+

+  Request 2 Thread 2 tries to use the db connection but fails

+  because Request 1 closed it.

+</pre>

+<p>

+Here is an example of properly written code to use a database connection

+obtained from a connection pool:

+</p>

+<pre>

+  Connection conn = null;

+  Statement stmt = null;  // Or PreparedStatement if needed

+  ResultSet rs = null;

+  try {

+    conn = ... get connection from connection pool ...

+    stmt = conn.createStatement("select ...");

+    rs = stmt.executeQuery();

+    ... iterate through the result set ...

+    rs.close();

+    rs = null;

+    stmt.close();

+    stmt = null;

+    conn.close(); // Return to connection pool

+    conn = null;  // Make sure we don't close it twice

+  } catch (SQLException e) {

+    ... deal with errors ...

+  } finally {

+    // Always make sure result sets and statements are closed,

+    // and the connection is returned to the pool

+    if (rs != null) {

+      try { rs.close(); } catch (SQLException e) { ; }

+      rs = null;

+    }

+    if (stmt != null) {

+      try { stmt.close(); } catch (SQLException e) { ; }

+      stmt = null;

+    }

+    if (conn != null) {

+      try { conn.close(); } catch (SQLException e) { ; }

+      conn = null;

+    }

+  }

+</pre>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context versus GlobalNamingResources"><!--()--></a><a name="Context_versus_GlobalNamingResources"><strong>Context versus GlobalNamingResources</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+  Please note that although the above instructions place the JNDI declarations in a Context

+  element, it is possible and sometimes desirable to place these declarations in the

+  <a href="config/globalresources.html">GlobalNamingResources</a> section of the server

+  configuration file.  A resource placed in the GlobalNamingResources section will be shared

+  among the Contexts of the server.

+</p>

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JNDI Resource Naming and Realm Interaction"><!--()--></a><a name="JNDI_Resource_Naming_and_Realm_Interaction"><strong>JNDI Resource Naming and Realm Interaction</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+  In order to get Realms to work, the realm must refer to the datasource as

+  defined in the &lt;GlobalNamingResources&gt; or &lt;Context&gt; section, not a datasource as renamed

+  using &lt;ResourceLink&gt;.

+</p>

+</blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/jndi-datasource-examples-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jndi-resources-howto.html b/webapps/docs/jndi-resources-howto.html
new file mode 100644
index 0000000..1e44b0b
--- /dev/null
+++ b/webapps/docs/jndi-resources-howto.html
@@ -0,0 +1,985 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - JNDI Resources HOW-TO</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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>JNDI Resources HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#web.xml_configuration">web.xml configuration</a></li><li><a href="#context.xml_configuration">context.xml configuration</a></li><li><a href="#Global_configuration">Global configuration</a></li><li><a href="#Using_resources">Using resources</a></li><li><a href="#Tomcat_Standard_Resource_Factories">Tomcat Standard Resource Factories</a><ol><li><a href="#Generic_JavaBean_Resources">Generic JavaBean Resources</a></li><li><a href="#UserDatabase_Resources">UserDatabase Resources</a></li><li><a href="#JavaMail_Sessions">JavaMail Sessions</a></li><li><a href="#JDBC_Data_Sources">JDBC Data Sources</a></li></ol></li><li><a href="#Adding_Custom_Resource_Factories">Adding Custom Resource Factories</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Tomcat provides a JNDI <strong>InitialContext</strong> implementation

+instance for each web application running under it, in a manner that is

+compatible with those provided by a

+<a href="http://java.sun.com/j2ee">Java Enterprise Edition</a> application

+server. The Java EE standard provides a standard set of elements in the

+<code>/WEB-INF/web.xml</code> file to reference/define resources.</p>

+

+<p>See the following Specifications for more information about programming APIs

+for JNDI, and for the features supported by Java Enterprise Edition (Java EE)

+servers, which Tomcat emulates for the services that it provides:</p>

+<ul>

+<li><a href="http://java.sun.com/products/jndi">Java Naming and Directory

+    Interface</a> (included in JDK 1.4 onwards)</li>

+<li><a href="http://java.sun.com/j2ee/download.html">Java EE Platform

+    Specification</a> (in particular, see Chapter 5 on <em>Naming</em>)</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="web.xml configuration"><!--()--></a><a name="web.xml_configuration"><strong>web.xml configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The following elements may be used in the web application deployment

+descriptor (<code>/WEB-INF/web.xml</code>) of your web application to define

+resources:</p>

+<ul>

+<li><code><strong>&lt;env-entry&gt;</strong></code> - Environment entry, a

+    single-value parameter that can be used to configure how the application

+    will operate.</li>

+<li><code><strong>&lt;resource-ref&gt;</strong></code> - Resource reference,

+    which is typically to an object factory for resources such as a JDBC

+    <code>DataSource</code>, a JavaMail <code>Session</code>, or custom

+    object factories configured into Tomcat.</li>

+<li><code><strong>&lt;resource-env-ref&gt;</strong></code> - Resource

+    environment reference, a new variation of <code>resource-ref</code>

+    added in Servlet 2.4 that is simpler to configure for resources

+    that do not require authentication information.</li>

+</ul>

+

+<p>Providing that Tomcat is able to identify an appropriate resource factory to

+use to create the resource and that no further configuration information is

+required, Tomcat will use the information in <code>/WEB-INF/web.xml</code> to

+create the resource.</p>

+

+<p>Tomcat provides a number of Tomcat specific options for JNDI resources that

+cannot be specified in web.xml. These include <code>closeMethod</code> that

+enables faster cleaning-up of JNDI resources when a web application stops and

+<code>singleton</code> that controls whether or not a new instance of the

+resource is created for every JNDI lookup. To use these configuration options

+the resource must be specified in a web application's

+<a href="config/context.html"><code>&lt;Context&gt;</code></a> element or in the

+<a href="config/globalresources.html">

+<code><strong>&lt;GlobalNamingResources&gt;</strong></code></a> element of

+<code>$CATALINA_BASE/conf/server.xml</code>.</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="context.xml configuration"><!--()--></a><a name="context.xml_configuration"><strong>context.xml configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>If Tomcat is unable to identify the appropriate resource factory and/or

+additional configuration information is required, additional Tomcat specific

+configuration must be specified before Tomcat can create the resource.

+Tomcat specific resource configuration is entered in

+the <a href="config/context.html"><code>&lt;Context&gt;</code></a> elements that

+can be specified in either <code>$CATALINA_BASE/conf/server.xml</code> or,

+preferably, the per-web-application context XML file

+(<code>META-INF/context.xml</code>).</p>

+

+<p>Tomcat specific resource configuration is performed using the following

+elements in the <a href="config/context.html"><code>&lt;Context&gt;</code></a>

+element:</p>

+

+<ul>

+<li><a href="config/context.html#Environment Entries">&lt;Environment&gt;</a> -

+    Configure names and values for scalar environment entries that will be

+    exposed to the web application through the JNDI

+    <code>InitialContext</code> (equivalent to the inclusion of an

+    <code>&lt;env-entry&gt;</code> element in the web application

+    deployment descriptor).</li>

+<li><a href="config/context.html#Resource Definitions">&lt;Resource&gt;</a> -

+    Configure the name and data type of a resource made available to the

+    application (equivalent to the inclusion of a

+    <code>&lt;resource-ref&gt;</code> element in the web application

+    deployment descriptor).</li>

+<li><a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a> -

+    Add a link to a resource defined in the global JNDI context. Use resource

+    links to give a web application access to a resource defined in

+    the <a href="config/globalresources.html">&lt;GlobalNamingResources&gt;</a>

+    child element of the <a href="config/server.html">&lt;Server&gt;</a>

+    element.</li>

+<li><a href="config/context.html#Transaction">&lt;Transaction&gt;</a> -

+    Add a resource factory for instantiating the UserTransaction object

+    instance that is available at <code>java:comp/UserTransaction</code>.</li>

+

+</ul>

+

+<p>Any number of these elements may be nested inside a

+<a href="config/context.html"><code>&lt;Context&gt;</code></a> element and will

+be associated only with that particular web application.</p>

+

+<p>If a resource has been defined in a

+<a href="config/context.html"><code>&lt;Context&gt;</code></a> element it is not

+necessary for that resource to be defined in <code>/WEB-INF/web.xml</code>.

+However, it is recommended to keep the entry in <code>/WEB-INF/web.xml</code>

+to document the resource requirements for the web application.</p>

+

+<p>Where the same resource name has been defined for a

+<code>&lt;env-entry&gt;</code> element included in the web application

+deployment descriptor (<code>/WEB-INF/web.xml</code>) and in an

+<code>&lt;Environment&gt;</code> element as part of the

+<a href="config/context.html"><code>&lt;Context&gt;</code></a> element for the

+web application, the values in the deployment descriptor will take precedence

+<strong>only</strong> if allowed by the corresponding

+<code>&lt;Environment&gt;</code> element (by setting the <code>override</code>

+attribute to "true").</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="Global configuration"><!--()--></a><a name="Global_configuration"><strong>Global configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Tomcat maintains a separate namespace of global resources for the

+entire server.  These are configured in the

+<a href="config/globalresources.html">

+<code><strong>&lt;GlobalNamingResources&gt;</strong></code></a> element of

+<code>$CATALINA_BASE/conf/server.xml</code>. You may expose these resources to

+web applications by using a

+<a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a> to

+include it in the per-web-application context.</p>

+

+<p>If a resource has been defined using a

+<a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a>, it is not

+necessary for that resource to be defined in <code>/WEB-INF/web.xml</code>.

+However, it is recommended to keep the entry in <code>/WEB-INF/web.xml</code>

+to document the resource requirements for the web application.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using resources"><!--()--></a><a name="Using_resources"><strong>Using resources</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The <code>InitialContext</code> is configured as a web application is

+initially deployed, and is made available to web application components (for

+read-only access).  All configured entries and resources are placed in

+the <code>java:comp/env</code> portion of the JNDI namespace, so a typical

+access to a resource - in this case, to a JDBC <code>DataSource</code> -

+would look something like this:</p>

+

+<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>

+// Obtain our environment naming context

+Context initCtx = new InitialContext();

+Context envCtx = (Context) initCtx.lookup("java:comp/env");

+

+// Look up our data source

+DataSource ds = (DataSource)

+  envCtx.lookup("jdbc/EmployeeDB");

+

+// Allocate and use a connection from the pool

+Connection conn = ds.getConnection();

+... use this connection to access the database ...

+conn.close();

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat Standard Resource Factories"><!--()--></a><a name="Tomcat_Standard_Resource_Factories"><strong>Tomcat Standard Resource Factories</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Tomcat includes a series of standard resource factories that can

+  provide services to your web applications, but give you configuration

+  flexibility (via the

+  <a href="config/context.html"><code>&lt;Context&gt;</code></a> element)

+  without modifying the web application or the deployment descriptor. Each

+  subsection below details the configuration and usage of the standard resource

+  factories.</p>

+

+  <p>See <a href="#Adding Custom Resource Factories">Adding Custom

+  Resource Factories</a> for information about how to create, install,

+  configure, and use your own custom resource factory classes with

+  Tomcat.</p>

+

+  <p><em>NOTE</em> - Of the standard resource factories, only the

+  "JDBC Data Source" and "User Transaction" factories are mandated to

+  be available on other platforms, and then they are required only if

+  the platform implements the Java Enterprise Edition (Java EE) specs.

+  All other standard resource factories, plus custom resource factories

+  that you write yourself, are specific to Tomcat and cannot be assumed

+  to be available on other containers.</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Generic JavaBean Resources"><!--()--></a><a name="Generic_JavaBean_Resources"><strong>Generic JavaBean Resources</strong></a></font></td></tr><tr><td><blockquote>

+

+    <h3>0.  Introduction</h3>

+

+    <p>This resource factory can be used to create objects of <em>any</em>

+    Java class that conforms to standard JavaBeans naming conventions (i.e.

+    it has a zero-arguments constructor, and has property setters that

+    conform to the setFoo() naming pattern.  The resource factory will

+    create a new instance of the appropriate bean class every time a

+    <code>lookup()</code> for this entry is made.</p>

+

+    <p>The steps required to use this facility are described below.</p>

+

+    <h3>1.  Create Your JavaBean Class</h3>

+

+    <p>Create the JavaBean class which will be instantiated each time

+    that the resource factory is looked up.  For this example, assume

+    you create a class <code>com.mycompany.MyBean</code>, which looks

+    like this:</p>

+

+<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>

+package com.mycompany;

+

+public class MyBean {

+

+  private String foo = "Default Foo";

+

+  public String getFoo() {

+    return (this.foo);

+  }

+

+  public void setFoo(String foo) {

+    this.foo = foo;

+  }

+

+  private int bar = 0;

+

+  public int getBar() {

+    return (this.bar);

+  }

+

+  public void setBar(int bar) {

+    this.bar = bar;

+  }

+

+

+}

+</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>

+

+  <h3>2.  Declare Your Resource Requirements</h3>

+

+  <p>Next, modify your web application deployment descriptor

+  (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under which

+  you will request new instances of this bean.  The simplest approach is

+  to use a <code>&lt;resource-env-ref&gt;</code> element, like this:</p>

+

+<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>

+&lt;resource-env-ref&gt;

+  &lt;description&gt;

+    Object factory for MyBean instances.

+  &lt;/description&gt;

+  &lt;resource-env-ref-name&gt;

+    bean/MyBeanFactory

+  &lt;/resource-env-ref-name&gt;

+  &lt;resource-env-ref-type&gt;

+    com.mycompany.MyBean

+  &lt;/resource-env-ref-type&gt;

+&lt;/resource-env-ref&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p><strong>WARNING</strong> - Be sure you respect the element ordering

+    that is required by the DTD for web application deployment descriptors!

+    See the

+    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

+    Specification</a> for details.</p>

+

+  <h3>3.  Code Your Application's Use Of This Resource</h3>

+

+  <p>A typical use of this resource environment reference might look

+  like this:</p>

+

+<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 initCtx = new InitialContext();

+Context envCtx = (Context) initCtx.lookup("java:comp/env");

+MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");

+

+writer.println("foo = " + bean.getFoo() + ", bar = " +

+               bean.getBar());

+</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>

+

+    <h3>4.  Configure Tomcat's Resource Factory</h3>

+

+    <p>To configure Tomcat's resource factory, add an element like this to the

+    <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

+    this web application.</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>

+&lt;Context ...&gt;

+  ...

+  &lt;Resource name="bean/MyBeanFactory" auth="Container"

+            type="com.mycompany.MyBean"

+            factory="org.apache.naming.factory.BeanFactory"

+            bar="23"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that the resource name (here, <code>bean/MyBeanFactory</code>

+    must match the value specified in the web application deployment

+    descriptor.  We are also initializing the value of the <code>bar</code>

+    property, which will cause <code>setBar(23)</code> to be called before

+    the new bean is returned.  Because we are not initializing the

+    <code>foo</code> property (although we could have), the bean will

+    contain whatever default value is set up by its constructor.</p>

+

+  </blockquote></td></tr></table>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="UserDatabase Resources"><!--()--></a><a name="UserDatabase_Resources"><strong>UserDatabase Resources</strong></a></font></td></tr><tr><td><blockquote>

+

+    <h3>0.  Introduction</h3>

+

+    <p>UserDatabase resources are typically configured as global resources for

+    use by a UserDatabase realm. Tomcat includes a UserDatabaseFactoory that

+    creates UserDatabase resources backed by an XML file - usually

+    <code>tomcat-users.xml</code></p>

+

+    <p>The steps required to set up a global UserDatabase resource are described

+    below.</p>

+

+    <h3>1. Create/edit the XML file</h3>

+

+    <p>The XMl file is typically located at

+    <code>$CATALINA_BASE/conf/tomcat-users.xml</code> however, you are free to

+    locate the file anywhere on the file system. It is recommended that the XML

+    files are placed in <code>$CATALINA_BASE/conf</code>. A typical XML would

+    look like:</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>

+&lt;?xml version='1.0' encoding='utf-8'?&gt;

+&lt;tomcat-users&gt;

+  &lt;role rolename="tomcat"/&gt;

+  &lt;role rolename="role1"/&gt;

+  &lt;user username="tomcat" password="tomcat" roles="tomcat"/&gt;

+  &lt;user username="both" password="tomcat" roles="tomcat,role1"/&gt;

+  &lt;user username="role1" password="tomcat" roles="role1"/&gt;

+&lt;/tomcat-users&gt;

+</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>

+

+    <h3>2.  Declare Your Resource</h3>

+

+    <p>Next, modify <code>$CATALINA_BASE/conf/server.xml</code> to create the

+    UserDatabase resource based on your XMl file. It should look 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>

+&lt;Resource name="UserDatabase"

+          auth="Container"

+          type="org.apache.catalina.UserDatabase"

+          description="User database that can be updated and saved"

+          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

+          pathname="conf/tomcat-users.xml"

+          readonly="false" /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>The <code>pathname</code> attribute can be absolute or relative. If

+    relative, it is relative to <code>$CATALINA_BASE</code>.</p>

+

+    <p>The <code>readonly</code> attribute is optional and defaults to

+    <code>true</code> if not supplied. If the XML is writeable then it will be

+    written to when Tomcat starts. <strong>WARNING:</strong> When the file is

+    written it will inherit the default file permissions for the user Tomcat

+    is running as. Ensure that these are appropriate to maintain the security

+    of your installation.</p>

+

+    <h3>3.  Configure the Realm</h3>

+

+    <p>Configure a UserDatabase Realm to use this resource as described in the

+    <a href="config/realm.html">Realm configuration documentation</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="JavaMail Sessions"><!--()--></a><a name="JavaMail_Sessions"><strong>JavaMail Sessions</strong></a></font></td></tr><tr><td><blockquote>

+

+    <h3>0.  Introduction</h3>

+

+    <p>In many web applications, sending electronic mail messages is a

+    required part of the system's functionality.  The

+    <a href="http://java.sun.com/products/javamail">Java Mail</a> API

+    makes this process relatively straightforward, but requires many

+    configuration details that the client application must be aware of

+    (including the name of the SMTP host to be used for message sending).</p>

+

+    <p>Tomcat includes a standard resource factory that will create

+    <code>javax.mail.Session</code> session instances for you, already

+    configured to connect to an SMTP server.

+    In this way, the application is totally insulated from changes in the

+    email server configuration environment - it simply asks for, and receives,

+    a preconfigured session whenever needed.</p>

+

+    <p>The steps required for this are outlined below.</p>

+

+    <h3>1.  Declare Your Resource Requirements</h3>

+

+    <p>The first thing you should do is modify the web application deployment

+    descriptor (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under

+    which you will look up preconfigured sessions.  By convention, all such

+    names should resolve to the <code>mail</code> subcontext (relative to the

+    standard <code>java:comp/env</code> naming context that is the root of

+    all provided resource factories.  A typical <code>web.xml</code> entry

+    might look like this:</p>

+<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>

+&lt;resource-ref&gt;

+  &lt;description&gt;

+    Resource reference to a factory for javax.mail.Session

+    instances that may be used for sending electronic mail

+    messages, preconfigured to connect to the appropriate

+    SMTP server.

+  &lt;/description&gt;

+  &lt;res-ref-name&gt;

+    mail/Session

+  &lt;/res-ref-name&gt;

+  &lt;res-type&gt;

+    javax.mail.Session

+  &lt;/res-type&gt;

+  &lt;res-auth&gt;

+    Container

+  &lt;/res-auth&gt;

+&lt;/resource-ref&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p><strong>WARNING</strong> - Be sure you respect the element ordering

+    that is required by the DTD for web application deployment descriptors!

+    See the

+    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

+    Specification</a> for details.</p>

+

+    <h3>2.  Code Your Application's Use Of This Resource</h3>

+

+    <p>A typical use of this resource reference might look like this:</p>

+<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 initCtx = new InitialContext();

+Context envCtx = (Context) initCtx.lookup("java:comp/env");

+Session session = (Session) envCtx.lookup("mail/Session");

+

+Message message = new MimeMessage(session);

+message.setFrom(new InternetAddress(request.getParameter("from")));

+InternetAddress to[] = new InternetAddress[1];

+to[0] = new InternetAddress(request.getParameter("to"));

+message.setRecipients(Message.RecipientType.TO, to);

+message.setSubject(request.getParameter("subject"));

+message.setContent(request.getParameter("content"), "text/plain");

+Transport.send(message);

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that the application uses the same resource reference name

+    that was declared in the web application deployment descriptor.  This

+    is matched up against the resource factory that is configured in the

+    <a href="config/context.html"><code>&lt;Context&gt;</code></a> element

+    for the web application as described below.</p>

+

+    <h3>3.  Configure Tomcat's Resource Factory</h3>

+

+    <p>To configure Tomcat's resource factory, add an elements like this to the

+    <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

+    this web application.</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>

+&lt;Context ...&gt;

+  ...

+  &lt;Resource name="mail/Session" auth="Container"

+            type="javax.mail.Session"

+            mail.smtp.host="localhost"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that the resource name (here, <code>mail/Session</code>) must

+    match the value specified in the web application deployment descriptor.

+    Customize the value of the <code>mail.smtp.host</code> parameter to

+    point at the server that provides SMTP service for your network.</p>

+

+    <p>Additional resource attributes and values will be converted to properties

+    and values and passed to

+    <code>javax.mail.Session.getInstance(java.util.Properties)</code> as part of

+    the <code>java.util.Properties</code> collection. In addition to the

+    properties defined in Annex A of the JavaMail specification, individual

+    providers may also support additional properties.

+    </p>

+    

+    <p>If the resource is configured with a <code>password</code> attribute and

+    either a <code>mail.smtp.user</code> or <code>mail.user</code> attribute

+    then Tomcat's resource factory will configure and add a

+    <code>javax.mail.Authenticator</code> to the mail session.</p>

+

+    <h3>4.  Install the JavaMail libraries</h3>

+

+    <p><a href="http://www.oracle.com/technetwork/java/index-138643.html">

+    Download the JavaMail API</a>.</p>

+

+    <p>Unpackage the distribution and place mail.jar  into $CATALINA_HOME/lib so

+    that it is available to Tomcat during the initialization of the mail Session

+    Resource. <strong>Note:</strong> placing this jar in both $CATALINA_HOME/lib

+    and a  web application's lib folder will cause an error, so ensure you have

+    it in the $CATALINA_HOME/lib location only.

+    </p>

+

+    <h3>5.  Restart Tomcat</h3>

+

+    <p>For the additional JAR to be visible to Tomcat, it is necessary for the

+    Tomcat instance to be restarted.</p>

+

+

+    <h3>Example Application</h3>

+

+    <p>The <code>/examples</code> application included with Tomcat contains

+    an example of utilizing this resource factory.  It is accessed via the

+    "JSP Examples" link.  The source code for the servlet that actually

+    sends the mail message is in

+    <code>/WEB-INF/classes/SendMailServlet.java</code>.</p>

+

+    <p><strong>WARNING</strong> - The default configuration assumes that there

+    is an SMTP server listing on port 25 on <code>localhost</code>. If this is

+    not the case, edit the

+    <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

+    this web application and modify the parameter value for the

+    <code>mail.smtp.host</code> parameter to be the host name of an SMTP server

+    on your network.</p>

+

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBC Data Sources"><!--()--></a><a name="JDBC_Data_Sources"><strong>JDBC Data Sources</strong></a></font></td></tr><tr><td><blockquote>

+

+    <h3>0.  Introduction</h3>

+

+    <p>Many web applications need to access a database via a JDBC driver,

+    to support the functionality required by that application.  The Java EE

+    Platform Specification requires Java EE Application Servers to make

+    available a <em>DataSource</em> implementation (that is, a connection

+    pool for JDBC connections) for this purpose.  Tomcat offers exactly

+    the same support, so that database-based applications you develop on

+    Tomcat using this service will run unchanged on any Java EE server.</p>

+

+    <p>For information about JDBC, you should consult the following:</p>

+    <ul>

+    <li><a href="http://java.sun.com/products/jdbc/">http://java.sun.com/products/jdbc/</a> -

+        Home page for information about Java Database Connectivity.</li>

+    <li><a href="http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html">http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec2/jdbc2.1.frame.html</a> -

+        The JDBC 2.1 API Specification.</li>

+    <li><a href="http://java.sun.com/products/jdbc/jdbc20.stdext.pdf">http://java.sun.com/products/jdbc/jdbc20.stdext.pdf</a> -

+        The JDBC 2.0 Standard Extension API (including the

+        <code>javax.sql.DataSource</code> API).  This package is now known

+        as the "JDBC Optional Package".</li>

+    <li><a href="http://java.sun.com/j2ee/download.html">http://java.sun.com/j2ee/download.html</a> -

+        The Java EE Platform Specification (covers the JDBC facilities that

+        all Java EE platforms must provide to applications).</li>

+    </ul>

+

+    <p><strong>NOTE</strong> - The default data source support in Tomcat

+    is based on the <strong>DBCP</strong> connection pool from the

+    <a href="http://commons.apache.org/">Commons</a>

+    project.  However, it is possible to use any other connection pool

+    that implements <code>javax.sql.DataSource</code>, by writing your

+    own custom resource factory, as described

+    <a href="#Adding Custom Resource Factories">below</a>.</p>

+

+    <h3>1.  Install Your JDBC Driver</h3>

+

+    <p>Use of the <em>JDBC Data Sources</em> JNDI Resource Factory requires

+    that you make an appropriate JDBC driver available to both Tomcat internal

+    classes and to your web application.  This is most easily accomplished by

+    installing the driver's JAR file(s) into the

+    <code>$CATALINA_HOME/lib</code> directory, which makes the driver

+    available both to the resource factory and to your application.</p>

+

+    <h3>2.  Declare Your Resource Requirements</h3>

+

+    <p>Next, modify the web application deployment descriptor

+    (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under

+    which you will look up preconfigured data source.  By convention, all such

+    names should resolve to the <code>jdbc</code> subcontext (relative to the

+    standard <code>java:comp/env</code> naming context that is the root of

+    all provided resource factories.  A typical <code>web.xml</code> entry

+    might look like this:</p>

+<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>

+&lt;resource-ref&gt;

+  &lt;description&gt;

+    Resource reference to a factory for java.sql.Connection

+    instances that may be used for talking to a particular

+    database that is configured in the &lt;Context&gt;

+    configurartion for the web application.

+  &lt;/description&gt;

+  &lt;res-ref-name&gt;

+    jdbc/EmployeeDB

+  &lt;/res-ref-name&gt;

+  &lt;res-type&gt;

+    javax.sql.DataSource

+  &lt;/res-type&gt;

+  &lt;res-auth&gt;

+    Container

+  &lt;/res-auth&gt;

+&lt;/resource-ref&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p><strong>WARNING</strong> - Be sure you respect the element ordering

+    that is required by the DTD for web application deployment descriptors!

+    See the

+    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

+    Specification</a> for details.</p>

+

+    <h3>3.  Code Your Application's Use Of This Resource</h3>

+

+    <p>A typical use of this resource reference might look like this:</p>

+<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 initCtx = new InitialContext();

+Context envCtx = (Context) initCtx.lookup("java:comp/env");

+DataSource ds = (DataSource)

+  envCtx.lookup("jdbc/EmployeeDB");

+

+Connection conn = ds.getConnection();

+... use this connection to access the database ...

+conn.close();

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that the application uses the same resource reference name that was

+    declared in the web application deployment descriptor. This is matched up

+    against the resource factory that is configured in the

+    <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

+    the web application as described below.</p>

+

+    <h3>4.  Configure Tomcat's Resource Factory</h3>

+

+    <p>To configure Tomcat's resource factory, add an element like this to the

+    <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

+    the web application.</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>

+&lt;Context ...&gt;

+  ...

+  &lt;Resource name="jdbc/EmployeeDB"

+            auth="Container"

+            type="javax.sql.DataSource"

+            username="dbusername"

+            password="dbpassword"

+            driverClassName="org.hsql.jdbcDriver"

+            url="jdbc:HypersonicSQL:database"

+            maxActive="8"

+            maxIdle="4"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that the resource name (here, <code>jdbc/EmployeeDB</code>) must

+    match the value specified in the web application deployment descriptor.</p>

+

+    <p>This example assumes that you are using the HypersonicSQL database

+    JDBC driver.  Customize the <code>driverClassName</code> and

+    <code>driverName</code> parameters to match your actual database's

+    JDBC driver and connection URL.</p>

+

+    <p>The configuration properties for Tomcat's standard data source

+    resource factory

+    (<code>org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory</code>) are

+    as follows:</p>

+    <ul>

+    <li><strong>driverClassName</strong> - Fully qualified Java class name

+        of the JDBC driver to be used.</li>

+    <li><strong>username</strong> - Database username to be passed to our

+        JDBC driver.</li>

+    <li><strong>password</strong> - Database password to be passed to our

+        JDBC driver.</li>

+    <li><strong>url</strong> - Connection URL to be passed to our JDBC driver.

+        (For backwards compatibility, the property <code>driverName</code>

+        is also recognized.)</li>

+    <li><strong>initialSize</strong> - The initial number of connections

+        that will be created in the pool during pool initialization. Default: 0</li>

+    <li><strong>maxActive</strong> - The maximum number of connections

+        that can be allocated from this pool at the same time. Default: 8</li>

+    <li><strong>minIdle</strong> - The minimum number of connections that

+        will sit idle in this pool at the same time. Default: 0</li>

+    <li><strong>maxIdle</strong> - The maximum number of connections that

+        can sit idle in this pool at the same time. Default: 8</li>

+    <li><strong>maxWait</strong> - The maximum number of milliseconds that the

+        pool will wait (when there are no available connections) for a

+        connection to be returned before throwing an exception. Default: -1 (infinite)</li>

+    </ul>

+    <p>Some additional properties handle connection validation:</p>

+    <ul>

+    <li><strong>validationQuery</strong> - SQL query that can be used by the

+        pool to validate connections before they are returned to the

+        application.  If specified, this query MUST be an SQL SELECT

+        statement that returns at least one row.</li>

+    <li><strong>validationQueryTimeout</strong> - Timeout in seconds

+        for the validation query to return. Default: -1 (infinite)</li>

+    <li><strong>testOnBorrow</strong> - true or false: whether a connection

+        should be validated using the validation query each time it is

+        borrowed from the pool. Default: true</li>

+    <li><strong>testOnReturn</strong> - true or false: whether a connection

+        should be validated using the validation query each time it is

+        returned to the pool. Default: false</li>

+    </ul>

+    <p>The optional evictor thread is responsible for shrinking the pool

+    by removing any conections which are idle for a long time. The evictor

+    does not respect <code>minIdle</code>. Note that you do not need to

+    activate the evictor thread if you only want the pool to shrink according

+    to the configured <code>maxIdle</code> property.</p>

+    <p>The evictor is disabled by default and can be configured using

+    the following properties:</p>

+    <ul>

+    <li><strong>timeBetweenEvictionRunsMillis</strong> - The number of

+        milliseconds between consecutive runs of the evictor.

+        Default: -1 (disabled)</li>

+    <li><strong>numTestsPerEvictionRun</strong> - The number of connections

+        that will be checked for idleness by the evitor during each

+        run of the evictor. Default: 3</li>

+    <li><strong>minEvictableIdleTimeMillis</strong> - The idle time in

+        milliseconds after which a connection can be removed from the pool

+        by the evictor. Default: 30*60*1000 (30 minutes)</li>

+    <li><strong>testWhileIdle</strong> - true or false: whether a connection

+        should be validated by the evictor thread using the validation query

+        while sitting idle in the pool. Default: false</li>

+    </ul>

+    <p>Another optional feature is the removal of abandoned connections.

+    A connection is called abandoned if the application does not return it

+    to the pool for a long time. The pool can close such connections

+    automatically and remove them from the pool. This is a workaround

+    for applications leaking connections.</p>

+    <p>The abandoning feature is disabled by default and can be configured

+    using the following properties:</p>

+    <ul>

+    <li><strong>removeAbandoned</strong> - true or false: whether to

+        remove abandoned connections from the pool. Default: false</li>

+    <li><strong>removeAbandonedTimeout</strong> - The number of

+        seconds after which a borrowed connection is assumed to be abandoned.

+        Default: 300</li>

+    <li><strong>logAbandoned</strong> - true or false: whether to log

+        stack traces for application code which abandoned a statement

+        or connection. This adds serious overhead. Default: false</li>

+    </ul>

+    <p>Finally there are various properties that allow further fine tuning

+    of the pool behaviour:</p>

+    <ul>

+    <li><strong>defaultAutoCommit</strong> - true or false: default

+        auto-commit state of the connections created by this pool.

+        Default: true</li>

+    <li><strong>defaultReadOnly</strong> - true or false: default

+        read-only state of the connections created by this pool.

+        Default: false</li>

+    <li><strong>defaultTransactionIsolation</strong> - This sets the

+        default transaction isolation level. Can be one of

+        <code>NONE</code>, <code>READ_COMMITTED</code>,

+        <code>READ_UNCOMMITTED</code>, <code>REPEATABLE_READ</code>,

+        <code>SERIALIZABLE</code>. Default: no default set</li>

+    <li><strong>poolPreparedStatements</strong> - true or false: whether to

+        pool PreparedStatements and CallableStatements. Default: false</li>

+    <li><strong>maxOpenPreparedStatements</strong> - The maximum number of open

+        statements that can be allocated from the statement pool at the same time.

+        Default: -1 (unlimited)</li>

+    <li><strong>defaultCatalog</strong> - The name of the default catalog.

+        Default: not set</li>

+    <li><strong>connectionInitSqls</strong> - A list of SQL statements

+        run once after a Connection is created. Separate multiple statements

+        by semicolons (<code>;</code>). Default: no statement</li>

+    <li><strong>connectionProperties</strong> - A list of driver specific

+        properties passed to the driver for creating connections. Each

+        property is given as <code>name=value</code>, multiple properties

+        are separated by semicolons (<code>;</code>). Default: no properties</li>

+    <li><strong>accessToUnderlyingConnectionAllowed</strong> - true or false: whether

+        accessing the underlying connections is allowed. Default: false</li>

+    </ul>

+    <p>For more details, please refer to the commons-dbcp documentation.</p>

+

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Adding Custom Resource Factories"><!--()--></a><a name="Adding_Custom_Resource_Factories"><strong>Adding Custom Resource Factories</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>If none of the standard resource factories meet your needs, you can write

+  your own factory and integrate it into Tomcat, and then configure the use

+  of this factory in the

+  <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

+  the web application. In the example below, we will create a factory that only

+  knows how to create <code>com.mycompany.MyBean</code> beans from the

+  <a href="#Generic JavaBean Resources">Generic JavaBean Resources</a> example

+  above.</p>

+

+  <h3>1.  Write A Resource Factory Class</h3>

+

+  <p>You must write a class that implements the JNDI service provider

+  <code>javax.naming.spi.ObjectFactory</code> inteface.  Every time your

+  web application calls <code>lookup()</code> on a context entry that is

+  bound to this factory, the <code>getObjectInstance()</code> method is

+  called, with the following arguments:</p>

+  <ul>

+  <li><strong>Object obj</strong> - The (possibly null) object containing

+      location or reference information that can be used in creating an object.

+      For Tomcat, this will always be an object of type

+      <code>javax.naming.Reference</code>, which contains the class name of

+      this factory class, as well as the configuration properties (from the

+      <a href="config/context.html"><code>&lt;Context&gt;</code></a> for the

+      web application) to use in creating objects to be returned.</li>

+  <li><strong>Name name</strong> - The name to which this factory is bound

+      relative to <code>nameCtx</code>, or <code>null</code> if no name

+      is specified.</li>

+  <li><strong>Context nameCtx</strong> - The context relative to which the

+      <code>name</code> parameter is specified, or <code>null</code> if

+      <code>name</code> is relative to the default initial context.</li>

+  <li><strong>Hashtable environment</strong> - The (possibly null)

+      environment that is used in creating this object.  This is generally

+      ignored in Tomcat object factories.</li>

+  </ul>

+

+  <p>To create a resource factory that knows how to produce <code>MyBean</code>

+  instances, you might create a class like this:</p>

+

+<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>

+package com.mycompany;

+

+import java.util.Enumeration;

+import java.util.Hashtable;

+import javax.naming.Context;

+import javax.naming.Name;

+import javax.naming.NamingException;

+import javax.naming.RefAddr;

+import javax.naming.Reference;

+import javax.naming.spi.ObjectFactory;

+

+public class MyBeanFactory implements ObjectFactory {

+

+  public Object getObjectInstance(Object obj,

+      Name name, Context nameCtx, Hashtable environment)

+      throws NamingException {

+

+      // Acquire an instance of our specified bean class

+      MyBean bean = new MyBean();

+

+      // Customize the bean properties from our attributes

+      Reference ref = (Reference) obj;

+      Enumeration addrs = ref.getAll();

+      while (addrs.hasMoreElements()) {

+          RefAddr addr = (RefAddr) addrs.nextElement();

+          String name = addr.getType();

+          String value = (String) addr.getContent();

+          if (name.equals("foo")) {

+              bean.setFoo(value);

+          } else if (name.equals("bar")) {

+              try {

+                  bean.setBar(Integer.parseInt(value));

+              } catch (NumberFormatException e) {

+                  throw new NamingException("Invalid 'bar' value " + value);

+              }

+          }

+      }

+

+      // Return the customized instance

+      return (bean);

+

+  }

+

+}

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  <p>In this example, we are unconditionally creating a new instance of

+  the <code>com.mycompany.MyBean</code> class, and populating its properties

+  based on the parameters included in the <code>&lt;ResourceParams&gt;</code>

+  element that configures this factory (see below).  You should note that any

+  parameter named <code>factory</code> should be skipped - that parameter is

+  used to specify the name of the factory class itself (in this case,

+  <code>com.mycompany.MyBeanFactory</code>) rather than a property of the

+  bean being configured.</p>

+

+  <p>For more information about <code>ObjectFactory</code>, see the

+  <a href="http://java.sun.com/products/jndi/docs.html">JNDI 1.2 Service

+  Provider Interface (SPI) Specification</a>.</p>

+

+  <p>You will need to compile this class against a class path that includes

+  all of the JAR files in the <code>$CATALINA_HOME/lib</code> directory.  When you are through,

+  place the factory class (and the corresponding bean class) unpacked under

+  <code>$CATALINA_HOME/lib</code>, or in a JAR file inside

+  <code>$CATALINA_HOME/lib</code>.  In this way, the required class

+  files are visible to both Catalina internal resources and your web

+  application.</p>

+

+  <h3>2.  Declare Your Resource Requirements</h3>

+

+  <p>Next, modify your web application deployment descriptor

+  (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under which

+  you will request new instances of this bean.  The simplest approach is

+  to use a <code>&lt;resource-env-ref&gt;</code> element, like this:</p>

+

+<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>

+&lt;resource-env-ref&gt;

+  &lt;description&gt;

+    Object factory for MyBean instances.

+  &lt;/description&gt;

+  &lt;resource-env-ref-name&gt;

+    bean/MyBeanFactory

+  &lt;/resource-env-ref-name&gt;

+  &lt;resource-env-ref-type&gt;

+    com.mycompany.MyBean

+  &lt;/resource-env-ref-type&gt;

+&lt;resource-env-ref&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p><strong>WARNING</strong> - Be sure you respect the element ordering

+    that is required by the DTD for web application deployment descriptors!

+    See the

+    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

+    Specification</a> for details.</p>

+

+  <h3>3.  Code Your Application's Use Of This Resource</h3>

+

+  <p>A typical use of this resource environment reference might look

+  like this:</p>

+

+<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 initCtx = new InitialContext();

+Context envCtx = (Context) initCtx.lookup("java:comp/env");

+MyBean bean = (MyBean) envCtx.lookup("bean/MyBeanFactory");

+

+writer.println("foo = " + bean.getFoo() + ", bar = " +

+               bean.getBar());

+</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>

+

+    <h3>4.  Configure Tomcat's Resource Factory</h3>

+

+    <p>To configure Tomcat's resource factory, add an elements like this to the

+    <a href="config/context.html"><code>&lt;Context&gt;</code></a> element for

+    this web application.</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>

+&lt;Context ...&gt;

+  ...

+  &lt;Resource name="bean/MyBeanFactory" auth="Container"

+            type="com.mycompany.MyBean"

+            factory="com.mycompany.MyBeanFactory"

+            bar="23"/&gt;

+  ...

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Note that the resource name (here, <code>bean/MyBeanFactory</code>

+    must match the value specified in the web application deployment

+    descriptor.  We are also initializing the value of the <code>bar</code>

+    property, which will cause <code>setBar(23)</code> to be called before

+    the new bean is returned.  Because we are not initializing the

+    <code>foo</code> property (although we could have), the bean will

+    contain whatever default value is set up by its constructor.</p>

+

+    <p>You will also note that, from the application developer's perspective,

+    the declaration of the resource environment reference, and the programming

+    used to request new instances, is identical to the approach used for the

+    <em>Generic JavaBean Resources</em> example.  This illustrates one of the

+    advantages of using JNDI resources to encapsulate functionality - you can

+    change the underlying implementation without necessarily having to

+    modify applications using the resources, as long as you maintain

+    compatible APIs.</p>

+

+</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="/tomcat-7.0-doc/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/jndi-resources-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jspapi/index.html b/webapps/docs/jspapi/index.html
new file mode 100644
index 0000000..4a73392
--- /dev/null
+++ b/webapps/docs/jspapi/index.html
@@ -0,0 +1,34 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">

+<html>

+    <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>API docs</title>

+</head>

+

+<body>

+

+The JSP Javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

+

+</body>

+</html>

diff --git a/webapps/docs/logging.html b/webapps/docs/logging.html
new file mode 100644
index 0000000..040a6fc
--- /dev/null
+++ b/webapps/docs/logging.html
@@ -0,0 +1,593 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Logging in Tomcat</title><meta name="author" content="Allistair Crossley"><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Logging in Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a><ol><li><a href="#Java_logging_API_%E2%80%94_java.util.logging">Java logging API &mdash; java.util.logging</a></li><li><a href="#Servlets_logging_API">Servlets logging API</a></li><li><a href="#Console">Console</a></li><li><a href="#Access_logging">Access logging</a></li></ol></li><li><a href="#Using_java.util.logging_(default)">Using java.util.logging (default)</a><ol><li><a href="#Documentation_references">Documentation references</a></li><li><a href="#Considerations_for_productive_usage">Considerations for productive usage</a></li></ol></li><li><a href="#Using_Log4j">Using Log4j</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      Logging in Apache Tomcat is implemented with the help of

+      <a href="http://commons.apache.org/logging">Apache Commons Logging</a>

+      library. That library is a thin wrapper above different logging

+      frameworks. It provides Tomcat with the ability to log

+      hierarchically across various log levels without the need to rely on a

+      particular logging implementation.

+    </p>

+

+    <p>

+      Since Tomcat 6.0, Tomcat uses a private package-renamed implementation of

+      Apache Commons Logging, to allow web applications to use their own

+      independent copies of the original Apache Commons Logging library.

+      In the default distribution this private copy of the library

+      is simplified and hardcoded to use the <code>java.util.logging</code> framework.

+    </p>

+

+    <p>

+      To configure Tomcat to use alternative logging frameworks for its internal

+      logging, one has to replace the logging library with the one that is built

+      with the full implementation. Such library is provided as an <a href="extras.html">extras</a>

+      component. Instructions on how to configure Tomcat to use Log4j framework

+      for its internal logging may be found below.

+    </p>

+

+    <p>

+      A web application running on Apache Tomcat can:

+    </p>

+    <ul>

+      <li>

+        Use system logging API, <code>java.util.logging</code>.

+      </li>

+      <li>

+        Use the logging API provided by the Java Servlets specification,

+        <code>javax.servlet.ServletContext.log(...)</code>

+      </li>

+      <li>

+        Use any logging framework of its choice.

+      </li>

+    </ul>

+

+    <p>

+      The logging frameworks used by different web applications run independently

+      of each other. See <a href="class-loader-howto.html">class loading</a>

+      for more details.

+      The exception to this rule is <code>java.util.logging</code>, if it used

+      directly or indirectly by your logging library. That is because it is loaded

+      by the system and is shared across web applications.

+    </p>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Java logging API %E2%80%94 java.util.logging"><!--()--></a><a name="Java_logging_API_%E2%80%94_java.util.logging"><strong>Java logging API &mdash; java.util.logging</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      Apache Tomcat has its own implementation of several key elements of

+      <code>java.util.logging</code> API. This implementation is called "JULI".

+      The key component there is a custom LogManager implementation,

+      that is aware of different web applications running on Tomcat (and

+      their different class loaders). It supports private per-application

+      logging configurations. It is also notified by Tomcat when a web application

+      is unloaded from memory, so that the references to its classes can be

+      cleared, preventing memory leaks.

+    </p>

+

+    <p>

+      This <code>java.util.logging</code> implementation is enabled by providing

+      certain system properties when starting Java. The Apache Tomcat startup

+      scripts do this for you, but if you are using different tools to run

+      Tomcat (such as jsvc, or running Tomcat from within an IDE), you should

+      take care of them by yourself.

+    </p>

+

+    <p>

+      More details about java.util.logging may be found in the documentation

+      for your JDK and on its Javadoc pages for the <code>java.util.logging</code>

+      package.

+    </p>

+

+    <p>

+      More details about Tomcat JULI may be found below.

+    </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="Servlets logging API"><!--()--></a><a name="Servlets_logging_API"><strong>Servlets logging API</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      The calls to <code>javax.servlet.ServletContext.log(...)</code> to write

+      log messages are handled by internal Tomcat logging. Such messages are

+      logged to the category named

+    </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>org.apache.catalina.core.ContainerBase.[${engine}].[${host}].[${context}]</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+      This logging is performed according to the Tomcat logging configuration. You

+      cannot overwrite it in a web application.

+    </p>

+

+    <p>

+      The Servlets logging API predates the <code>java.util.logging</code> API

+      that is now provided by Java. As such, it does not offer you much options.

+      E.g., you cannot control the log levels. It can be noted, though, that

+      in Apache Tomcat implementation the calls to <code>ServletContext.log(String)</code>

+      or <code>GenericServlet.log(String)</code> are logged at the INFO level.

+      The calls to <code>ServletContext.log(String, Throwable)</code> or

+      <code>GenericServlet.log(String, Throwable)</code>

+      are logged at the ERROR level.

+    </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="Console"><strong>Console</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      When running Tomcat on unixes, the console output is usually redirected

+      to the file named <code>catalina.out</code>. The name is configurable

+      using an environment variable. (See the startup scripts).

+      Whatever is written to <code>System.err/out</code> will be caught into

+      that file. That may include:

+    </p>

+

+    <ul>

+      <li>Uncaught exceptions printed by <code>java.lang.ThreadGroup.uncaughtException(..)</code></li>

+      <li>Thread dumps, if you requested them via a system signal</li>

+    </ul>

+

+    <p>

+      When running as a service on Windows, the console output is also caught

+      and redirected, but the file names are different.

+    </p>

+

+    <p>

+      The default logging configuration in Apache Tomcat writes the same

+      messages to the console and to a log file. This is great when using

+      Tomcat for development, but usually is not needed in production.

+    </p>

+

+    <p>

+      Old applications that still use <code>System.out</code> or <code>System.err</code>

+      can be tricked by setting <code>swallowOutput</code> attribute on a

+      <a href="config/context.html">Context</a>. If the attribute is set to

+      <code>true</code>, the calls to <code>System.out/err</code> during request

+      processing will be intercepted, and their output will be fed to the

+      logging subsystem using the

+      <code>javax.servlet.ServletContext.log(...)</code> calls.<br>

+      <strong>Note</strong>, that the <code>swallowOutput</code>  feature is

+      actually a trick, and it has its limitations.

+      It works only with direct calls to <code>System.out/err</code>,

+      and only during request processing cycle. It may not work in other

+      threads that might be created by the application. It cannot be used to

+      intercept logging frameworks that themselves write to the system streams,

+      as those start early and may obtain a direct reference to the streams

+      before the redirection takes place.

+    </p>

+

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access logging"><!--()--></a><a name="Access_logging"><strong>Access logging</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      A related, but different feature is access logging. It can be configured

+      as a valve at the Context, or Host, or Engine. See <a href="config/valve.html">Valves</a>

+      documentation for more details.

+    </p>

+

+    </blockquote></td></tr></table>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using java.util.logging (default)"><!--()--></a><a name="Using_java.util.logging_(default)"><strong>Using java.util.logging (default)</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>

+    The default implementation of java.util.logging provided in the JDK is too

+    limited to be useful. A limitation of JDK Logging appears to be the

+    inability to have per-web application logging,  as the configuration is

+    per-VM. As a result, Tomcat will, in the default configuration, replace the

+    default LogManager implementation with a container friendly implementation

+    called JULI, which addresses these shortcomings. It supports the same

+    configuration mechanisms as the standard JDK java.util.logging, using either

+    a programmatic approach, or properties files. The main difference is that

+    per-classloader properties files can be set (which enables easy redeployment

+    friendly webapp configuration), and the properties files support slightly

+    extended constructs which allows more freedom for defining handlers and

+    assigning them to loggers.

+  </p>

+  <p>

+    JULI is enabled by default, and supports per classloader configuration, in

+    addition to the regular global java.util.logging configuration. This means

+    that logging can be configured at the following layers:

+    <ul>

+      <li>Globally. That is usually done in the

+        <code>${catalina.base}/conf/logging.properties</code> file.

+        The file is specified by the <code>java.util.logging.config.file</code>

+        System property which is set by the startup scripts.

+        If it is not readable or is not configured, the default is to use the

+        <code>${java.home}/lib/logging.properties</code> file in the JRE.

+      </li>

+      <li>In the web application. The file will be

+        <code>WEB-INF/classes/logging.properties</code>

+      </li>

+    </ul>

+  </p>

+  <p>

+    The default <code>logging.properties</code> in the JRE specifies a

+    <code>ConsoleHandler</code> that routes logging to System.err.

+    The default <code>conf/logging.properties</code> in Apache Tomcat also

+    adds several <code>FileHandler</code>s that write to files.

+  </p>

+  <p>

+    A handler's log level threshold is INFO by default and can be set using

+    SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST or ALL.

+    You can also target specific packages to collect logging from and specify

+    a level.

+  </p>

+  <p>

+    Here is how you would set debugging from Tomcat. You would need to ensure the

+    ConsoleHandler's (or FileHandler's') level is also set to collect this threshold,

+    so FINEST or ALL should be set. Please refer to <code>java.util.logging</code>

+    documentation in the JDK for the complete details:

+  </p>

+  <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>org.apache.catalina.level=FINEST</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </p>

+  <p>

+    The configuration used by JULI is extremely similar to the one supported by

+    plain <code>java.util.logging</code>, but uses a few

+    extensions to allow better flexibility in assigning loggers. The main

+    differences are:

+  </p>

+  <ul>

+      <li>A prefix may be added to handler names, so that multiple handlers of a

+      single class may be instantiated. A prefix is a String which starts with a

+      digit, and ends with '.'. For example, <code>22foobar.</code> is a valid

+      prefix.</li>

+      <li>System property replacement is performed for property values which

+      contain ${systemPropertyName}.</li>

+      <li>As in Java 6, loggers can define a list of handlers using the

+      <code>loggerName.handlers</code> property.</li>

+      <li>By default, loggers will not delegate to their parent if they have

+      associated handlers. This may be changed per logger using the

+      <code>loggerName.useParentHandlers</code> property, which accepts a

+      boolean value.</li>

+      <li>The root logger can define its set of handlers using the

+      <code>.handlers</code> property.</li>

+  </ul>

+  <p>

+    There are several additional implementation classes, that can be used

+    together with the ones provided by Java. The notable one is

+    <code>org.apache.juli.FileHandler</code>.

+  </p>

+  <p>

+    <code>org.apache.juli.FileHandler</code> supports buffering of the

+      logs. The buffering is not enabled by default. To configure it, use the

+      <code>bufferSize</code> property of a handler. The value of <code>0</code>

+      uses system default buffering (typically an 8K buffer will be used). A

+      value of <code>&lt;0</code> forces a writer flush upon each log write. A

+      value <code>&gt;0</code> uses a BufferedOutputStream with the defined

+      value but note that the system default buffering will also be

+      applied.

+  </p>

+  <p>

+    Example logging.properties file to be placed in $CATALINA_BASE/conf:

+    <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>

+handlers = 1catalina.org.apache.juli.FileHandler, \

+           2localhost.org.apache.juli.FileHandler, \

+           3manager.org.apache.juli.FileHandler, \

+           java.util.logging.ConsoleHandler

+

+.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

+

+############################################################

+# Handler specific properties.

+# Describes specific configuration info for Handlers.

+############################################################

+

+1catalina.org.apache.juli.FileHandler.level = FINE

+1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+1catalina.org.apache.juli.FileHandler.prefix = catalina.

+

+2localhost.org.apache.juli.FileHandler.level = FINE

+2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+2localhost.org.apache.juli.FileHandler.prefix = localhost.

+

+3manager.org.apache.juli.FileHandler.level = FINE

+3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+3manager.org.apache.juli.FileHandler.prefix = manager.

+3manager.org.apache.juli.FileHandler.bufferSize = 16384

+

+java.util.logging.ConsoleHandler.level = FINE

+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

+

+

+############################################################

+# Facility specific properties.

+# Provides extra control for each logger.

+############################################################

+

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \

+   2localhost.org.apache.juli.FileHandler

+

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO

+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \

+   3manager.org.apache.juli.FileHandler

+

+# For example, set the org.apache.catalina.util.LifecycleBase logger to log

+# each component that extends LifecycleBase changing state:

+#org.apache.catalina.util.LifecycleBase.level = FINE

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+

+    <p>

+      Example logging.properties for the servlet-examples web application to be

+      placed in WEB-INF/classes inside the web application:

+      <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>

+handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

+

+############################################################

+# Handler specific properties.

+# Describes specific configuration info for Handlers.

+############################################################

+

+org.apache.juli.FileHandler.level = FINE

+org.apache.juli.FileHandler.directory = ${catalina.base}/logs

+org.apache.juli.FileHandler.prefix = servlet-examples.

+

+java.util.logging.ConsoleHandler.level = FINE

+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </p>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Documentation references"><!--()--></a><a name="Documentation_references"><strong>Documentation references</strong></a></font></td></tr><tr><td><blockquote>

+      <p>See the following resources for additional information:</p>

+      <ul>

+        <li>Apache Tomcat Javadoc for the

+          <a href="api/org/apache/juli/package-summary.html"><code>org.apache.juli</code></a>

+          package.

+        </li>

+        <li>Oracle Java 6 Javadoc for the

+          <a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/package-summary.html"><code>java.util.logging</code></a>

+          package.

+        </li>

+      </ul>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Considerations for productive usage"><!--()--></a><a name="Considerations_for_productive_usage"><strong>Considerations for productive usage</strong></a></font></td></tr><tr><td><blockquote>

+      <p>You may want to take note of the following:</p>

+      <ul>

+        <li><p>Consider removing <code>ConsoleHandler</code> from configuration.</p>

+        <p>By default (thanks to the <code>.handlers</code> setting) logging goes

+        both to a <code>FileHandler</code> and to a <code>ConsoleHandler</code>.

+        The output of the latter one is usually captured into a file, such as

+        <code>catalina.out</code>. Thus you end up with two copies of the same

+        messages.</p>

+        </li>

+        <li><p>Consider removing <code>FileHandler</code>s for the applications

+        that you do not use. E.g., the one for <code>host-manager</code>.</p></li>

+        <li><p>The handlers by default use the system default encoding to write

+        the log files. It can be configured with <code>encoding</code> property.

+        See Javadoc for details.</p></li>

+        <li><p>Consider configuring an <a href="config/valve.html">Access

+        log</a>.</p></li>

+      </ul>

+    </blockquote></td></tr></table>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using Log4j"><!--()--></a><a name="Using_Log4j"><strong>Using Log4j</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      This section explains how to configure Tomcat to use

+      <a href="http://logging.apache.org/log4j/">log4j</a> rather than

+      java.util.logging for all Tomcat's internal logging.

+    </p>

+    <p><em>Note</em>: The steps described in this section are needed

+      when you want to reconfigure Tomcat to use Apache log4j for its own

+      logging. These steps are <strong>not</strong> needed if you just want

+      to use log4j in your own web application. &mdash; In that case, just

+      put <code>log4j.jar</code> and <code>log4j.properties</code> into

+      <code>WEB-INF/lib</code> and <code>WEB-INF/classes</code>

+      of your web application.

+    </p>

+    <p>

+      The following steps describe configuring log4j to output Tomcat's

+      internal logging.

+    </p>

+

+    <ol>

+        <li>Create a file called <code>log4j.properties</code> with the

+        following content and save it into <code>$CATALINA_BASE/lib</code></li>

+    </ol>

+    <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>

+log4j.rootLogger=INFO, CATALINA

+

+# Define all the appenders

+log4j.appender.CATALINA=org.apache.log4j.DailyRollingFileAppender

+log4j.appender.CATALINA.File=${catalina.base}/logs/catalina.

+log4j.appender.CATALINA.Append=true

+log4j.appender.CATALINA.Encoding=UTF-8

+# Roll-over the log once per day

+log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout

+log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

+

+log4j.appender.LOCALHOST=org.apache.log4j.DailyRollingFileAppender

+log4j.appender.LOCALHOST.File=${catalina.base}/logs/localhost.

+log4j.appender.LOCALHOST.Append=true

+log4j.appender.LOCALHOST.Encoding=UTF-8

+log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout

+log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

+

+log4j.appender.MANAGER=org.apache.log4j.DailyRollingFileAppender

+log4j.appender.MANAGER.File=${catalina.base}/logs/manager.

+log4j.appender.MANAGER.Append=true

+log4j.appender.MANAGER.Encoding=UTF-8

+log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout

+log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

+

+log4j.appender.HOST-MANAGER=org.apache.log4j.DailyRollingFileAppender

+log4j.appender.HOST-MANAGER.File=${catalina.base}/logs/host-manager.

+log4j.appender.HOST-MANAGER.Append=true

+log4j.appender.HOST-MANAGER.Encoding=UTF-8

+log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd'.log'

+log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout

+log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

+

+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

+log4j.appender.CONSOLE.Encoding=UTF-8

+log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout

+log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n

+

+# Configure which loggers log to which appenders

+log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST

+log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\

+  INFO, MANAGER

+log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\

+  INFO, HOST-MANAGER

+</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>

+    <ol start="2">

+        <li><a href="http://logging.apache.org/log4j">Download Log4J</a>

+        (v1.2 or later).</li>

+

+        <li><p>Download or build <code>tomcat-juli.jar</code> and

+        <code>tomcat-juli-adapters.jar</code> that are available as an "extras"

+        component for Tomcat. See <a href="extras.html">Additional Components

+        documentation</a> for details.</p>

+        <p>This <code>tomcat-juli.jar</code> differs from the default one. It

+        contains the full Apache Commons Logging implementation and thus is

+        able to discover the presense of log4j and configure itself.</p>

+        </li>

+

+        <li><p>If you want to configure Tomcat to use log4j globally:</p>

+        <ul>

+          <li>Put <code>log4j.jar</code> and

+            <code>tomcat-juli-adapters.jar</code> from "extras" into

+            <code>$CATALINA_HOME/lib</code>.</li>

+          <li>Replace <code>$CATALINA_HOME/bin/tomcat-juli.jar</code> with

+          <code>tomcat-juli.jar</code> from "extras".</li>

+        </ul>

+        </li>

+

+        <li><p>If you are running Tomcat with separate $CATALINA_HOME and

+        $CATALINA_BASE and want to configure to use log4j in a single

+        $CATALINA_BASE only:</p>

+        <ul>

+          <li>Create <code>$CATALINA_BASE/bin</code> and

+          <code>$CATALINA_BASE/lib</code> directories if they do not exist.

+          </li>

+          <li>Put <code>log4j.jar</code> and

+             <code>tomcat-juli-adapters.jar</code> from "extras" into

+             <code>$CATALINA_BASE/lib</code></li>

+          <li>Put <code>tomcat-juli.jar</code> from "extras" as

+          <code>$CATALINA_BASE/bin/tomcat-juli.jar</code></li>

+          <li>If you are running with a

+          <a href="security-manager-howto.html">security manager</a>, you

+          would need to edit the

+          <code>$CATALINA_BASE/conf/catalina.policy</code> file to adjust

+          it to using a different copy of tomcat-juli.jar.</li>

+        </ul>

+        </li>

+

+        <li><p>Delete <code>$CATALINA_BASE/conf/logging.properties</code> to

+        prevent java.util.logging generating zero length log files.</p></li>

+

+        <li><p>Start Tomcat</p></li>

+    </ol>

+

+    <p>

+      This log4j configuration mirrors the default java.util.logging setup

+      that ships with Tomcat: both the manager and host-manager apps get an

+      individual log file, and everything else goes to the "catalina.log" log

+      file. Each file is rolled-over once per day.

+    </p>

+

+    <p>

+      You can (and should) be more picky about which packages to include

+      in the logging. Tomcat defines loggers by Engine and Host names.

+      For example, for a more detailed Catalina localhost log, add this to the

+      end of the log4j.properties above. Note that there are known issues with

+      using this naming convention (with square brackets) in log4j XML based

+      configuration files, so we recommend you use a properties file as

+      described until a future version of log4j allows this convention.

+    </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>

+log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG

+log4j.logger.org.apache.catalina.core=DEBUG

+log4j.logger.org.apache.catalina.session=DEBUG

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>

+      Be warned: a level of DEBUG will produce megabytes of logging and slow

+      startup of Tomcat. This level should be used sparingly when debugging of

+      internal Tomcat operations is required.

+    </p>

+

+    <p>

+      Your web applications should certainly use their own log4j configuration.

+      This is valid <i>with</i> the above configuration.  You would place a

+      similar log4j.properties file in your web application's WEB-INF/classes

+      directory, and log4jx.y.z.jar into WEB-INF/lib. Then specify your package

+      level logging. This is a basic setup of log4j which does *not* require

+      Commons-Logging, and you should consult the

+      <a href="http://logging.apache.org/log4j/docs/documentation.html">log4j

+      documentation</a> for more options. This page is intended only as a

+      bootstrapping guide.

+    </p>

+

+    <p><em>Additional notes</em></p>

+    <ul>

+        <li><p>This exposes log4j libraries to the web applications through the

+        Common classloader. See <a href="class-loader-howto.html">class loading</a>

+        documentation for details.</p>

+        <p>Because of that, the web applications and libraries using

+        <a href="http://commons.apache.org/logging">Apache Commons Logging</a>

+        library are likely to automatically choose log4j as the underlying

+        logging implementation.</p></li>

+

+        <li><p>The <code>java.util.logging</code> API is still available, for

+        those web applications that use it directly. The

+        <code>${catalina.base}/conf/logging.properties</code> file is still

+        referenced by Tomcat startup scripts.</p>

+        <p> Removal of <code>${catalina.base}/conf/logging.properties</code>

+        file, mentioned as one of the steps, just causes

+        <code>java.util.logging</code> to fallback to the default configuration

+        as configured in JRE, which is to use a ConsoleHandler and do not

+        create any files.</p></li>

+    </ul>

+  </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="/tomcat-7.0-doc/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/logging.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/manager-howto.html b/webapps/docs/manager-howto.html
new file mode 100644
index 0000000..7804a1c
--- /dev/null
+++ b/webapps/docs/manager-howto.html
@@ -0,0 +1,1363 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Manager App HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Manager App HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuring_Manager_Application_Access">Configuring Manager Application Access</a></li><li><a href="#Supported_Manager_Commands">Supported Manager Commands</a><ol><li><a href="#Deploy_A_New_Application_Remotely">Deploy A New Application Remotely</a></li><li><a href="#Deploy_A_New_Application_from_a_Local_Path">Deploy A New Application from a Local Path</a></li><li><a href="#List_Currently_Deployed_Applications">List Currently Deployed Applications</a></li><li><a href="#Reload_An_Existing_Application">Reload An Existing Application</a></li><li><a href="#List_OS_and_JVM_Properties">List OS and JVM Properties</a></li><li><a href="#List_Available_Global_JNDI_Resources">List Available Global JNDI Resources</a></li><li><a href="#Session_Statistics">Session Statistics</a></li><li><a href="#Start_an_Existing_Application">Start an Existing Application</a></li><li><a href="#Stop_an_Existing_Application">Stop an Existing Application</a></li><li><a href="#Undeploy_an_Existing_Application">Undeploy an Existing Application</a></li><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li><li><a href="#Server_Status">Server Status</a></li></ol></li><li><a href="#Executing_Manager_Commands_With_Ant">Executing Manager Commands With Ant</a><ol><li><a href="#Tasks_output_capture">Tasks output capture</a></li></ol></li><li><a href="#Using_the_JMX_Proxy_Servlet">Using the JMX Proxy Servlet</a><ol><li><a href="#What_is_JMX_Proxy_Servlet">What is JMX Proxy Servlet</a></li><li><a href="#JMX_Query_command">JMX Query command</a></li><li><a href="#JMX_Get_command">JMX Get command</a></li><li><a href="#JMX_Set_command">JMX Set command</a></li><li><a href="#JMX_Invoke_command">JMX Invoke command</a></li></ol></li></ul>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>In many production environments, it is very useful to have the capability

+to deploy a new web application, or undeploy an existing one, without having

+to shut down and restart the entire container.  In addition, you can request

+an existing application to reload itself, even if you have not declared it

+to be <code>reloadable</code> in the Tomcat server

+configuration file.</p>

+

+<p>To support these capabilities, Tomcat includes a web application

+(installed by default on context path <code>/manager</code>) that supports

+the following functions:</p>

+<ul>

+<li>Deploy a new web application from the uploaded contents of a WAR file.</li>

+<li>Deploy a new web application, on a specified context path, from the

+    server file system.</li>

+<li>List the currently deployed web applications, as well as the

+    sessions that are currently active for those web apps.</li>

+<li>Reload an existing web application, to reflect changes in the

+    contents of <code>/WEB-INF/classes</code> or <code>/WEB-INF/lib</code>.

+    </li>

+<li>List the OS and JVM property values.</li>

+<li>List the available global JNDI resources, for use in deployment

+    tools that are preparing <code>&lt;ResourceLink&gt;</code> elements

+    nested in a <code>&lt;Context&gt;</code> deployment description.</li>

+<li>Start a stopped application (thus making it available again).</li>

+<li>Stop an existing application (so that it becomes unavailable), but

+    do not undeploy it.</li>

+<li>Undeploy a deployed web application and delete its document base

+    directory (unless it was deployed from file system).</li>

+</ul>

+

+<p>A default Tomcat installation includes the Manager. To add an instance of the

+Manager web application <code>Context</code> to a new host install the

+<code>manager.xml</code> context configuration file in the

+<code>$CATALINA_BASE/conf/[enginename]/[hostname]</code> folder. Here is an

+example:</p>

+<pre>

+&lt;Context privileged="true" antiResourceLocking="false"

+         docBase="${catalina.home}/webapps/manager"&gt;

+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         allow="127\.0\.0\.1" /&gt;

+&lt;/Context&gt;

+</pre>

+

+<p>If you have Tomcat configured to support multiple virtual hosts

+(websites) you would need to configure a Manager for each.</p>

+

+<p>There are three ways to use the <strong>Manager</strong> web application.</p>

+<ul>

+<li>As an application with a user interface you use in your browser.

+Here is an example URL where you can replace <code>localhost</code> with

+your website host name:  <code>http://localhost/manager/html/</code> .</li>

+<li>A minimal version using HTTP requests only which is suitable for use

+by scripts setup by system administrators.  Commands are given as part of the

+request URI, and responses are in the form of simple text that can be easily

+parsed and processed.  See <a href="#Supported Manager Commands">

+Supported Manager Commands</a> for more information.</li>

+<li>A convenient set of task definitions for the <em>Ant</em>

+(version 1.4 or later) build tool.  See

+<a href="#Executing Manager Commands With Ant">Executing Manager Commands

+With Ant</a> for more information.</li>

+</ul>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Manager Application Access"><!--()--></a><a name="Configuring_Manager_Application_Access"><strong>Configuring Manager Application Access</strong></a></font></td></tr><tr><td><blockquote>

+

+    <blockquote>

+    <p><em>The description below uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</em></p>

+    </blockquote>

+

+<p>It would be quite unsafe to ship Tomcat with default settings that allowed

+anyone on the Internet to execute the Manager application on your server.

+Therefore, the Manager application is shipped with the requirement that anyone

+who attempts to use it must authenticate themselves, using a username and

+password that have one of <strong>manager-**</strong> roles associated with

+them (the role name depends on what functionality is required).

+Further, there is no username in the default users file

+(<code>$CATALINA_BASE/conf/tomcat-users.xml</code>) that is assigned to those

+roles.  Therefore, access to the Manager application is completely disabled

+by default.</p>

+

+<p>You can find the role names in the <code>web.xml</code> file of the Manager

+web application. The available roles are:</p>

+

+<ul>

+  <li><strong>manager-gui</strong> &mdash; Access to the HTML interface.</li>

+  <li><strong>manager-status</strong> &mdash; Access to the "Server Status"

+    page only.</li>

+  <li><strong>manager-script</strong> &mdash; Access to the tools-friendly

+    plain text interface that is described in this document,

+    and to the "Server Status" page.</li>

+  <li><strong>manager-jmx</strong> &mdash; Access to JMX proxy interface

+    and to the "Server Status" page.</li>

+</ul>

+

+<p>The HTML interface is protected against CSRF (Cross-Site Request Forgery)

+attacks, but the text and JMX interfaces cannot be protected. To maintain

+the CSRF protection:</p>

+

+<ul>

+  <li>Users with the <strong>manager-gui</strong> role should not be granted

+      the <strong>manager-script</strong> or <strong>manager-jmx</strong>

+      roles.</li>

+  <li>If you use web browser to access the Manager application using

+      a user that has either <strong>manager-script</strong> or

+      <strong>manager-jmx</strong> roles (for example for testing

+      the plain text or JMX interfaces),

+      then all windows of the browser MUST be closed afterwards to terminate

+      the session.</li>

+</ul>

+

+<p>Note that JMX proxy interface is effectively low-level root-like

+administrative interface of Tomcat. One can do a lot, if he knows

+what commands to call. You should be cautious when enabling the

+<strong>manager-jmx</strong> role.</p>

+

+<p>To enable access to the Manager web application, you must either create

+a new username/password combination and associate one of the

+<strong>manager-**</strong> roles with it, or add a

+<strong>manager-**</strong> role

+to some existing username/password combination.

+As the majority of this document describes the commands of plain textual

+interface, let the role name for further example to be

+<strong>manager-script</strong>.

+Exactly how the usernames/passwords are configured depends on which

+<code>Realm</code> implementation you are using:</p>

+<ul>

+<li><em>MemoryRealm</em> &mdash; This one is configured in the default

+    <code>$CATALINA_BASE/conf/server.xml</code>.

+    If you have not configured it differently, or replaced it with

+    a different <code>Realm</code> implementation, this realm

+    reads an XML-format file stored at

+    <code>$CATALINA_BASE/conf/tomcat-users.xml</code>, which can be

+    edited with any text editor.  This file contains an XML

+    <code>&lt;user&gt;</code> for each individual user, which might

+    look something like this:

+<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>

+&lt;user name="craigmcc" password="secret" roles="standard,manager-script" /&gt;

+</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>

+    which defines the username and password used by this individual to

+    log on, and the role names he or she is associated with.  You can

+    add the <strong>manager-script</strong> role to the comma-delimited

+    <code>roles</code> attribute for one or more existing users, and/or

+    create new users with that assigned role.</li>

+<li><em>JDBCRealm</em> &mdash; Your user and role information is stored in

+    a database accessed via JDBC.  Add the <strong>manager-script</strong> role

+    to one or more existing users, and/or create one or more new users

+    with this role assigned, following the standard procedures for your

+    environment.</li>

+<li><em>JNDIRealm</em> &mdash; Your user and role information is stored in

+    a directory server accessed via LDAP.  Add the

+    <strong>manager-script</strong> role to one or more existing users,

+    and/or create one or more new users with this role assigned, following

+    the standard procedures for your environment.</li>

+</ul>

+

+<p>The first time you attempt to issue one of the Manager commands

+described in the next section, you will be challenged to log on using

+BASIC authentication.  The username and password you enter do not matter,

+as long as they identify a valid user in the users database who possesses

+the role <strong>manager-script</strong>.</p>

+

+<p>In addition to the password restrictions the Manager web application

+could be restricted by the <strong>remote IP address</strong> or host by adding

+a <code>RemoteAddrValve</code> or <code>RemoteHostValve</code>.

+See <a href="config/valve.html#Remote_Address_Filter">valves documentation</a>

+for details. Here is

+an example of restricting access to the localhost by IP address:</p>

+<pre>

+&lt;Context privileged="true"&gt;

+         &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"

+                allow="127\.0\.0\.1"/&gt;

+&lt;/Context&gt;

+</pre>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Supported Manager Commands"><!--()--></a><a name="Supported_Manager_Commands"><strong>Supported Manager Commands</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>All commands that the Manager application knows how to process are

+specified in a single request URI like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://{host}:{port}/manager/text/{command}?{parameters}

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>where <code>{host}</code> and <code>{port}</code> represent the hostname

+and port number on which Tomcat is running, <code>{command}</code>

+represents the Manager command you wish to execute, and

+<code>{parameters}</code> represents the query parameters

+that are specific to that command.  In the illustrations below, customize

+the host and port appropriately for your installation.</p>

+

+<p>Most commands accept one or more of the following query parameters:</p>

+<ul>

+<li><strong>path</strong> - The context path (including the leading slash)

+    of the web application you are dealing with.  To select the ROOT web

+    application, specify "/".  <strong>NOTE</strong> -

+    It is not possible to perform administrative commands on the

+    Manager application itself.</li>

+<li><strong>version</strong> - The version of this web application as used by

+    the parallel deployment feature,</li>

+<li><strong>war</strong> - URL of a web application archive (WAR) file,

+    pathname of a directory which contains the web application, or a

+    Context configuration ".xml" file.  You can use URLs in any of the

+    following formats:

+    <ul>

+    <li><strong>file:/absolute/path/to/a/directory</strong> - The absolute

+        path of a directory that contains the unpacked version of a web

+        application.  This directory will be attached to the context path

+        you specify without any changes.</li>

+    <li><strong>file:/absolute/path/to/a/webapp.war</strong> - The absolute

+        path of a web application archive (WAR) file.  This is valid

+        <strong>only</strong> for the <code>/deploy</code> command, and is

+        the only acceptable format to that command.</li>

+    <li><strong>jar:file:/absolute/path/to/a/warfile.war!/</strong> - The

+        URL to a local web application archive (WAR) file.  You can use any

+        syntax that is valid for the <code>JarURLConnection</code> class

+        for reference to an entire JAR file.</li>

+    <li><strong>file:/absolute/path/to/a/context.xml</strong> - The

+        absolute path of a web application Context configuration ".xml"

+        file which contains the Context configuration element.</li>

+    <li><strong>directory</strong> - The directory name for the web

+        application context in the Host's application base directory.</li>

+    <li><strong>webapp.war</strong> - The name of a web application war file

+        located in the Host's application base directory.</li>

+    </ul></li>

+</ul>

+

+<p>Each command will return a response in <code>text/plain</code> format

+(i.e. plain ASCII with no HTML markup), making it easy for both humans and

+programs to read).  The first line of the response will begin with either

+<code>OK</code> or <code>FAIL</code>, indicating whether the requested

+command was successful or not.  In the case of failure, the rest of the first

+line will contain a description of the problem that was encountered.  Some

+commands include additional lines of information as described below.</p>

+

+<p><em>Internationalization Note</em> - The Manager application looks up

+its message strings in resource bundles, so it is possible that the strings

+have been translated for your platform.  The examples below show the English

+version of the messages.</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy A New Application Remotely"><!--()--></a><a name="Deploy_A_New_Application_Remotely"><strong>Deploy A New Application Remotely</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy?path=/foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Upload the web application archive (WAR) file that is specified as the

+request data in this HTTP PUT request, install it into the <code>appBase</code>

+directory of our corresponding virtual host, and start , using the directory

+name or the war file name without the .war extension as the path.  The

+application can later be undeployed (and the corresponding application directory

+removed) by use of the <code>/undeploy</code> command.</p>

+

+<p>The .WAR file may include Tomcat specific deployment configuration, by

+including a Context configuration XML file in

+<code>/META-INF/context.xml</code>.</p>

+

+<p>URL parameters include:</p>

+<ul>

+<li><code>update</code>: When set to true, any existing update will be

+    undeployed first. The default value is set to false.</li>

+<li><code>tag</code>: Specifying a tag name, this allows associating the

+    deployed webapp with a tag or label. If the web application is undeployed,

+    it can be later redeployed when needed using only the tag.</li>

+</ul>

+

+<p><strong>NOTE</strong> - This command is the logical

+opposite of the <code>/undeploy</code> command.</p>

+

+<p>If installation and startup is successful, you will receive a response

+like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Deployed application at context path /foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the response will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Application already exists at path /foo</em>

+    <blockquote>

+    <p>The context paths for all currently running web applications must be

+    unique.  Therefore, you must undeploy the existing web

+    application using this context path, or choose a different context path

+    for the new one. The <code>update</code> parameter may be specified as

+    a parameter on the URL, with a value of <code>true</code> to avoid this

+    error. In that case, an undeploy will be performed on an existing

+    application before performing the deployment.</p>

+    </blockquote></li>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to start the new web application.

+    Check the Tomcat logs for the details, but likely explanations include

+    problems parsing your <code>/WEB-INF/web.xml</code> file, or missing

+    classes encountered when initializing application event listeners and

+    filters.</p>

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy A New Application from a Local Path"><!--()--></a><a name="Deploy_A_New_Application_from_a_Local_Path"><strong>Deploy A New Application from a Local Path</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Deploy and start a new web application, attached to the specified context

+<code>path</code> (which must not be in use by any other web application).

+This command is the logical opposite of the <code>/undeploy</code> command.</p>

+

+<p>There are a number of different ways the deploy command can be used.</p>

+

+<h3>Deploy a previously deployed webapp</h3>

+

+<p>This can be used to deploy a previously deployed web application, which

+has been deployed using the <code>tag</code> attribute. Note that the work

+directory for the Manager webapp will contain the previously deployed WARs;

+removing it would make the deployment fail.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy?path=/footoo&amp;tag=footag

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<h3>Deploy a Directory or WAR by URL</h3>

+

+<p>Deploy a web application directory or ".war" file located on the Tomcat

+server. If no <code>path</code> is specified, the directory name or the war file

+name without the ".war" extension is used as the path. The <code>war</code>

+parameter specifies a URL (including the <code>file:</code> scheme) for either

+a directory or a web application archive (WAR) file. The supported syntax for

+a URL referring to a WAR file is described on the Javadocs page for the

+<code>java.net.JarURLConnection</code> class.  Use only URLs that refer to

+the entire WAR file.</p>

+

+<p>In this example the web application located in the directory

+<code>/path/to/foo</code> on the Tomcat server is deployed as the

+web application context named <code>/footoo</code>.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy?path=/footoo&amp;war=file:/path/to/foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>In this example the ".war" file <code>/path/to/bar.war</code> on the

+Tomcat server is deployed as the web application context named

+<code>/bar</code>. Notice that there is no <code>path</code> parameter

+so the context path defaults to the name of the web application archive

+file without the ".war" extension.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy?war=jar:file:/path/to/bar.war!/

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<h3>Deploy a Directory or War from the Host appBase</h3>

+

+<p>Deploy a web application directory or ".war" file located in your Host

+appBase directory. The directory name or the war file name without the ".war"

+extension is used as the path.</p>

+

+<p>In this example the web application located in a sub directory named

+<code>foo</code> in the Host appBase directory of the Tomcat server is

+deployed as the web application context named <code>/foo</code>. Notice

+that the context path used is the name of the web application directory.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy?war=foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>In this example the ".war" file <code>bar.war</code> located in your

+Host appBase directory on the Tomcat server is deployed as the web

+application context named <code>/bar</code>.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy?war=bar.war

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<h3>Deploy using a Context configuration ".xml" file</h3>

+

+<p>If the Host deployXML flag is set to true you can deploy a web

+application using a Context configuration ".xml" file and an optional

+".war" file or web application directory. The context <code>path</code>

+is not used when deploying a web application using a context ".xml"

+configuration file.</p>

+

+<p>A Context configuration ".xml" file can contain valid XML for a

+web application Context just as if it were configured in your

+Tomcat <code>server.xml</code> configuration file. Here is an

+example:</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>

+&lt;Context path="/foobar" docBase="/path/to/application/foobar"&gt;

+&lt;/Context&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>When the optional <code>war</code> parameter is set to the URL

+for a web application ".war" file or directory it overrides any

+docBase configured in the context configuration ".xml" file.</p>

+

+<p>Here is an example of deploying an application using a Context

+configuration ".xml" file.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy?config=file:/path/context.xml

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<p>Here is an example of deploying an application using a Context

+configuration ".xml" file and a web application ".war" file located

+on the server.</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/deploy

+ ?config=file:/path/context.xml&amp;war=jar:file:/path/bar.war!/

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+<h3>Deployment Notes</h3>

+

+<p>If the Host is configured with unpackWARs=true and you deploy a war

+file, the war will be unpacked into a directory in your Host appBase

+directory.</p>

+

+<p>If the application war or directory is installed in your Host appBase

+directory and either the Host is configured with autoDeploy=true or the

+Context path must match the directory name or war file name without the

+".war" extension.</p>

+

+<p>For security when untrusted users can manage web applications, the

+Host deployXML flag can be set to false.  This prevents untrusted users

+from deploying web applications using a configuration XML file and

+also prevents them from deploying application directories or ".war"

+files located outside of their Host appBase.</p>

+

+

+<h3>Deploy Response</h3>

+

+<p>If installation and startup is successful, you will receive a response

+like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Deployed application at context path /foo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the response will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Application already exists at path /foo</em>

+    <blockquote>

+    <p>The context paths for all currently running web applications must be

+    unique.  Therefore, you must undeploy the existing web

+    application using this context path, or choose a different context path

+    for the new one. The <code>update</code> parameter may be specified as

+    a parameter on the URL, with a value of <code>true</code> to avoid this

+    error. In that case, an undeploy will be performed on an existing

+    application before performing the deployment.</p>

+    </blockquote></li>

+<li><em>Document base does not exist or is not a readable directory</em>

+    <blockquote>

+    <p>The URL specified by the <code>war</code> parameter must identify a

+    directory on this server that contains the "unpacked" version of a

+    web application, or the absolute URL of a web application archive (WAR)

+    file that contains this application.  Correct the value specified by

+    the <code>war</code> parameter.</p>

+    </blockquote></li>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to start the new web application.

+    Check the Tomcat logs for the details, but likely explanations include

+    problems parsing your <code>/WEB-INF/web.xml</code> file, or missing

+    classes encountered when initializing application event listeners and

+    filters.</p>

+    </blockquote></li>

+<li><em>Invalid application URL was specified</em>

+    <blockquote>

+    <p>The URL for the directory or web application that you specified

+    was not valid.  Such URLs must start with <code>file:</code>, and URLs

+    for a WAR file must end in ".war".</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character. To reference the

+    ROOT web application use "/".</p>

+    </blockquote></li>

+<li><em>Context path must match the directory or WAR file name:</em>

+    <blockquote>

+    If the application war or directory is installed in your Host appBase

+    directory and either the Host is configured with autoDeploy=true the

+    Context path must match the directory name or war file name without

+    the ".war" extension.

+    </blockquote></li>

+<li><em>Only web applications in the Host web application directory can

+     be installed</em>

+     <blockquote>

+     If the Host deployXML flag is set to false this error will happen

+     if an attempt is made to deploy a web application directory or

+      ".war" file outside of the Host appBase directory.

+     </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Currently Deployed Applications"><!--()--></a><a name="List_Currently_Deployed_Applications"><strong>List Currently Deployed Applications</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/list

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>List the context paths, current status (<code>running</code> or

+<code>stopped</code>), and number of active sessions for all currently

+deployed web applications.  A typical response immediately

+after starting Tomcat might look like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Listed applications for virtual host localhost

+/webdav:running:0

+/examples:running:0

+/manager:running:0

+/:running:0

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reload An Existing Application"><!--()--></a><a name="Reload_An_Existing_Application"><strong>Reload An Existing Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/reload?path=/examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Signal an existing application to shut itself down and reload.  This can

+be useful when the web application context is not reloadable and you have

+updated classes or property files in the <code>/WEB-INF/classes</code>

+directory or when you have added or updated jar files in the

+<code>/WEB-INF/lib</code> directory.

+</p>

+<p><strong>NOTE:</strong> The <code>/WEB-INF/web.xml</code>

+web application configuration file is not reread on a reload.

+If you have made changes to your web.xml file you must stop

+then start the web application.

+</p>

+

+<p>If this command succeeds, you will see a response like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Reloaded application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the response will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to restart the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character. To reference the

+    ROOT web application use "/".</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+<li><em>Reload not supported on WAR deployed at path /foo</em>

+    <blockquote>

+    Currently, application reloading (to pick up changes to the classes or

+    <code>web.xml</code> file) is not supported when a web application is

+    deployed directly from a WAR file.  It only works when the web application

+    is deployed from an unpacked directory.  If you are using a WAR file,

+    you should <code>undeploy</code> and then <code>deploy</code> or

+    <code>deploy</code> with the <code>update</code> parameter the

+    application again to pick up your changes.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List OS and JVM Properties"><!--()--></a><a name="List_OS_and_JVM_Properties"><strong>List OS and JVM Properties</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/serverinfo

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Lists information about the Tomcat version, OS, and JVM properties.</p>

+

+<p>If an error occurs, the response will start with <code>FAIL</code> and

+include an error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to enumerate the system properties.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Available Global JNDI Resources"><!--()--></a><a name="List_Available_Global_JNDI_Resources"><strong>List Available Global JNDI Resources</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/resources[?type=xxxxx]

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>List the global JNDI resources that are available for use in resource

+links for context configuration files.  If you specify the <code>type</code>

+request parameter, the value must be the fully qualified Java class name of

+the resource type you are interested in (for example, you would specify

+<code>javax.sql.DataSource</code> to acquire the names of all available

+JDBC data sources).  If you do not specify the <code>type</code> request

+parameter, resources of all types will be returned.</p>

+

+<p>Depending on whether the <code>type</code> request parameter is specified

+or not, the first line of a normal response will be:</p>

+<pre>

+  OK - Listed global resources of all types

+</pre>

+<p>or</p>

+<pre>

+  OK - Listed global resources of type xxxxx

+</pre>

+<p>followed by one line for each resource.  Each line is composed of fields

+delimited by colon characters (":"), as follows:</p>

+<ul>

+<li><em>Global Resource Name</em> - The name of this global JNDI resource,

+    which would be used in the <code>global</code> attribute of a

+    <code>&lt;ResourceLink&gt;</code> element.</li>

+<li><em>Global Resource Type</em> - The fully qualified Java class name of

+    this global JNDI resource.</li>

+</ul>

+

+<p>If an error occurs, the response will start with <code>FAIL</code> and

+include an error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to enumerate the global JNDI

+    resources.  Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>No global JNDI resources are available</em>

+    <blockquote>

+    <p>The Tomcat server you are running has been configured without

+    global JNDI resources.</p>

+    </blockquote></li>

+</ul>

+

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Session Statistics"><!--()--></a><a name="Session_Statistics"><strong>Session Statistics</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/sessions?path=/examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Display the default session timeout for a web application, and the

+number of currently active sessions that fall within ten-minute ranges of

+their actual timeout times.  For example, after restarting Tomcat and then

+executing one of the JSP samples in the <code>/examples</code> web app,

+you might get something like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Session information for application at context path /examples

+Default maximum session inactive interval 30 minutes

+30 - &lt;40 minutes:1 sessions

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Start an Existing Application"><!--()--></a><a name="Start_an_Existing_Application"><strong>Start an Existing Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/start?path=/examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Signal a stopped application to restart, and make itself available again.

+Stopping and starting is useful, for example, if the database required by

+your application becomes temporarily unavailable.  It is usually better to

+stop the web application that relies on this database rather than letting

+users continuously encounter database exceptions.</p>

+

+<p>If this command succeeds, you will see a response like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Started application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the response will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to start the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character. To reference the

+    ROOT web application use "/".</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stop an Existing Application"><!--()--></a><a name="Stop_an_Existing_Application"><strong>Stop an Existing Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/stop?path=/examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Signal an existing application to make itself unavailable, but leave it

+deployed.  Any request that comes in while an application is

+stopped will see an HTTP error 404, and this application will show as

+"stopped" on a list applications command.</p>

+

+<p>If this command succeeds, you will see a response like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Stopped application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the response will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to stop the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character. To reference the

+    ROOT web application use "/".</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Undeploy an Existing Application"><!--()--></a><a name="Undeploy_an_Existing_Application"><strong>Undeploy an Existing Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/undeploy?path=/examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p><strong><font color="red">WARNING</font> - This command will delete any web

+application artifacts that exist within <code>appBase</code> directory

+(typically "webapps") for this virtual host</strong>.

+This will delete the the application .WAR, if present,

+the application directory resulting either from a deploy in unpacked form

+or from .WAR expansion as well as the XML Context definition from

+<code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.

+If you simply want to take an application

+out of service, you should use the <code>/stop</code> command instead.</p>

+

+<p>Signal an existing application to gracefully shut itself down, and

+remove it from Tomcat (which also makes this context path available for

+reuse later).  In addition, the document root directory is removed, if it

+exists in the <code>appBase</code> directory (typically "webapps") for

+this virtual host.  This command is the logical opposite of the

+<code>/deploy</code> command.</p>

+

+<p>If this command succeeds, you will see a response like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+OK - Undeployed application at context path /examples

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Otherwise, the response will start with <code>FAIL</code> and include an

+error message.  Possible causes for problems include:</p>

+<ul>

+<li><em>Encountered exception</em>

+    <blockquote>

+    <p>An exception was encountered trying to undeploy the web application.

+    Check the Tomcat logs for the details.</p>

+    </blockquote></li>

+<li><em>Invalid context path was specified</em>

+    <blockquote>

+    <p>The context path must start with a slash character. To reference the

+    ROOT web application use "/".</p>

+    </blockquote></li>

+<li><em>No context exists for path /foo</em>

+    <blockquote>

+    <p>There is no deployed application on the context path

+    that you specified.</p>

+    </blockquote></li>

+<li><em>No context path was specified</em>

+    <blockquote>

+    The <code>path</code> parameter is required.

+    </blockquote></li>

+</ul>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Finding memory leaks"><!--()--></a><a name="Finding_memory_leaks"><strong>Finding memory leaks</strong></a></font></td></tr><tr><td><blockquote>

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/text/findleaks[?statusLine=[true|false]]

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p><strong>The find leaks diagnostic triggers a full garbage collection. It

+should be used with extreme caution on production systems.</strong></p>

+

+<p>The find leaks diagnostic attempts to identify web applications that have

+caused memory leaks when they were stopped, reloaded or undeployed. Results

+should always be confirmed

+with a profiler. The diagnostic uses additional functionality provided by the

+StandardHost implementation. It will not work if a custom host is used that

+does not extend StandardHost.</p>

+

+<p>Explicitly triggering a full garbage collection from Java code is documented

+to be unreliable. Furthermore, depending on the JVM used, there are options to

+disable explicit GC triggering, like <code>-XX:+DisableExplicitGC</code>.

+If you want to make sure, that the diagnostics were successfully running a full

+GC, you will need to check using tools like GC logging, JConsole or similar.</p>

+

+<p>If this command succeeds, you will see a response like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+/leaking-webapp

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>If you wish to see a status line included in the response then include the

+<code>statusLine</code> query parameter in the request with a value of

+<code>true</code>.</p>

+

+<p>Each context path for a web application that was stopped, reloaded or

+undeployed, but which classes from the previous runs are still loaded in memory,

+thus causing a memory leak, will be listed on a new line. If an application

+has been reloaded several times, it may be listed several times.</p>

+

+<p>If the command does not succeed, the response will start with

+<code>FAIL</code> and include an error message.</p>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Status"><!--()--></a><a name="Server_Status"><strong>Server Status</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>From this link , you can view information about the server.</p>

+

+<p>First, you have the server and JVM version number, JVM provider, OS name

+and number followed by the architecture type.</p>

+

+<p>Second, there is several information about the memory usage of the JVM

+(available, total and max memory).</p>

+

+<p>Then, there is information about the Tomcat AJP and HTTP connectors.

+The same information is available for both of them :

+</p>

+<ul>

+    <li><p>Threads information : Max threads, min and max spare threads,

+    current thread count and current thread busy.</p></li>

+    <li><p>Request information : Max processing time and processing time,

+    request and error count, bytes received and sent.</p></li>

+    <li><p>A table showing Stage, Time, Bytes Sent, Bytes Receive, Client,

+    VHost and Request. All existing threads are listed in the table.

+    Here is the list of the possible thread stages :</p>

+    <ul>

+        <li><p><em>"Parse and Prepare Request"</em> : The request headers are

+        being parsed or the necessary preparation to read the request body (if

+        a transfer encoding has been specified) is taking place.</p></li>

+        <li><p><em>"Service"</em> : The thread is processing a request and

+        generating the response. This stage follows the "Parse and Prepare

+        Request" stage and precedes the "Finishing" stage. There is always at

+        least one thread in this stage (the server-status page).</p></li>

+        <li><p><em>"Finishing"</em> : The end of the request processing. Any

+        remainder of the response still in the output buffers is sent to the

+        client. This stage is followed by "Keep-Alive" if it is appropriate to

+        keep the connection alive or "Ready" if "Keep-Alive" is not

+        appropriate.</p></li>

+        <li><p><em>"Keep-Alive"</em> : The thread keeps the connection open to

+        the client in case the client sends another request. If another request

+        is received, the next stage will br "Parse and Prepare Requst". If no

+        request is received before the keep alive times out, the connection will

+        be closed and the next stage will be "Ready".</p></li>

+        <li><p><em>"Ready"</em> : The thread is at rest and ready to be

+        used.</p></li>

+    </ul>

+    </li>

+</ul>

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Executing Manager Commands With Ant"><!--()--></a><a name="Executing_Manager_Commands_With_Ant"><strong>Executing Manager Commands With Ant</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>In addition to the ability to execute Manager commands via HTTP requests,

+as documented above, Tomcat includes a convenient set of Task definitions

+for the <em>Ant</em> (version 1.4 or later) build tool.  In order to use these

+commands, you must perform the following setup operations:</p>

+<ul>

+<li>Download the binary distribution of Ant from

+    <a href="http://ant.apache.org">http://ant.apache.org</a>.

+    You must use version <strong>1.4</strong> or later.</li>

+<li>Install the Ant distribution in a convenient directory (called

+    ANT_HOME in the remainder of these instructions).</li>

+<li>Copy the file <code>server/lib/catalina-ant.jar</code> from your Tomcat

+    installation into Ant's library directory (<code>$ANT_HOME/lib</code>).

+    </li>

+<li>Add the <code>$ANT_HOME/bin</code> directory to your <code>PATH</code>

+    environment variable.</li>

+<li>Configure at least one username/password combination in your Tomcat

+    user database that includes the <code>manager-script</code> role.</li>

+</ul>

+

+<p>To use custom tasks within Ant, you must declare them first with a

+<code>&lt;taskdef&gt;</code> element.  Therefore, your <code>build.xml</code>

+file might look something like this:</p>

+

+<table border="1">

+<tr><td><pre>

+&lt;project name="My Application" default="compile" basedir="."&gt;

+

+  &lt;!-- Configure the directory into which the web application is built --&gt;

+  &lt;property name="build"    value="${basedir}/build"/&gt;

+

+  &lt;!-- Configure the context path for this application --&gt;

+  &lt;property name="path"     value="/myapp"/&gt;

+

+  &lt;!-- Configure properties to access the Manager application --&gt;

+  &lt;property name="url"      value="http://localhost:8080/manager/text"/&gt;

+  &lt;property name="username" value="myusername"/&gt;

+  &lt;property name="password" value="mypassword"/&gt;

+

+  &lt;!-- Configure the custom Ant tasks for the Manager application --&gt;

+  &lt;taskdef name="deploy"    classname="org.apache.catalina.ant.DeployTask"/&gt;

+  &lt;taskdef name="list"      classname="org.apache.catalina.ant.ListTask"/&gt;

+  &lt;taskdef name="reload"    classname="org.apache.catalina.ant.ReloadTask"/&gt;

+  &lt;taskdef name="findleaks" classname="org.apache.catalina.ant.FindLeaksTask"/&gt;

+  &lt;taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask"/&gt;

+  &lt;taskdef name="start"     classname="org.apache.catalina.ant.StartTask"/&gt;

+  &lt;taskdef name="stop"      classname="org.apache.catalina.ant.StopTask"/&gt;

+  &lt;taskdef name="undeploy"  classname="org.apache.catalina.ant.UndeployTask"/&gt;

+

+  &lt;!-- Executable Targets --&gt;

+  &lt;target name="compile" description="Compile web application"&gt;

+    &lt;!-- ... construct web application in ${build} subdirectory, and

+            generated a ${path}.war ... --&gt;

+  &lt;/target&gt;

+

+  &lt;target name="deploy" description="Install web application"

+          depends="compile"&gt;

+    &lt;deploy url="${url}" username="${username}" password="${password}"

+            path="${path}" war="file:${build}${path}.war"/&gt;

+  &lt;/target&gt;

+

+  &lt;target name="reload" description="Reload web application"

+          depends="compile"&gt;

+    &lt;reload  url="${url}" username="${username}" password="${password}"

+            path="${path}"/&gt;

+  &lt;/target&gt;

+

+  &lt;target name="undeploy" description="Remove web application"&gt;

+    &lt;undeploy url="${url}" username="${username}" password="${password}"

+            path="${path}"/&gt;

+  &lt;/target&gt;

+

+&lt;/project&gt;

+</pre></td></tr>

+</table>

+

+<p>Note: The definition of the resources task above will override the resources

+datatype added in Ant 1.7. If you wish to use the resources datatype you will

+need to use Ant's namespace support to assign the Tomcat tasks to their own

+namespace.</p>

+

+<p>Now, you can execute commands like <code>ant deploy</code> to deploy the

+application to a running instance of Tomcat, or <code>ant reload</code> to

+tell Tomcat to reload it.  Note also that most of the interesting values in

+this <code>build.xml</code> file are defined as replaceable properties, so

+you can override their values from the command line.  For example, you might

+consider it a security risk to include the real manager password in your

+<code>build.xml</code> file's source code.  To avoid this, omit the password

+property, and specify it from the command line:</p>

+<pre>

+  ant -Dpassword=secret deploy

+</pre>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tasks output capture"><!--()--></a><a name="Tasks_output_capture"><strong>Tasks output capture</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Using <em>Ant</em> version <strong>1.6.2</strong> or later,

+the Catalina tasks offer the option to capture their output in

+properties or external files. They support directly the following subset of the

+<code>&lt;redirector&gt;</code> type attributes:

+</p>

+

+<table border="1" cellpadding="2" cellspacing="0">

+<tbody>

+<tr>

+<td valign="top"><b>Attribute</b></td>

+<td valign="top"><b>Description</b></td>

+<td align="center" valign="top"><b>Required</b></td>

+</tr>

+<tr>

+<td valign="top">output</td>

+<td valign="top">Name of a file to which to write the output. If

+the error stream is not also redirected to a file or property, it will

+appear in this output.</td>

+<td align="center" valign="top">No</td>

+</tr>

+<tr>

+<td valign="top">error</td>

+<td valign="top">The file to which the standard error of the

+command should be redirected.</td>

+<td align="center" valign="top">No</td>

+</tr>

+<tr>

+<td valign="top">logError</td>

+<td valign="top">This attribute is used when you wish to see

+error output in Ant's log and you are redirecting output to a

+file/property. The error output will not be included in the output

+file/property. If you redirect error with the <i>error</i> or <i>errorProperty</i>

+attributes, this will have no effect.</td>

+<td align="center" valign="top">No</td>

+</tr>

+<tr>

+<td valign="top">append</td>

+<td valign="top">Whether output and error files should be

+appended to or overwritten. Defaults to <code>false</code>.</td>

+<td align="center" valign="top">No</td>

+</tr>

+<tr>

+<td valign="top">createemptyfiles</td>

+<td valign="top">Whether output and error files should be created

+even when empty. Defaults to <code>true</code>.</td>

+<td align="center" valign="top">No</td>

+</tr>

+<tr>

+<td valign="top">outputproperty</td>

+<td valign="top">The name of a property in which the output of

+the command should be stored. Unless the error stream is redirected to

+a separate file or stream, this property will include the error output.</td>

+<td align="center" valign="top">No</td>

+</tr>

+<tr>

+<td valign="top">errorproperty</td>

+<td valign="top">The name of a property in which the standard

+error of the command should be stored.</td>

+<td align="center" valign="top">No</td>

+</tr>

+</tbody>

+</table>

+

+<p>A couple of additional attributes can also be specified:

+</p>

+<table border="1" cellpadding="2" cellspacing="0">

+<tbody>

+<tr>

+<td valign="top"><b>Attribute</b></td>

+<td valign="top"><b>Description</b></td>

+<td align="center" valign="top"><b>Required</b></td>

+</tr>

+<tr>

+<td valign="top">alwaysLog</td>

+<td valign="top">This attribute is used when you wish to see the

+output you are capturing, appearing also in the Ant's log. It must not be

+used unless you are capturing task output.

+Defaults to <code>false</code>.

+<em>This attribute will be supported directly by <code>&lt;redirector&gt;</code>

+in Ant 1.6.3</em></td>

+<td align="center" valign="top">No</td>

+</tr>

+<tr>

+<td valign="top">failonerror</td>

+<td valign="top">This attribute is used when you wish to avoid that

+any manager command processing error terminates the ant execution. Defaults to <code>true</code>.

+It must be set to <code>false</code>, if you want to capture error output,

+otherwise execution will terminate before anything can be captured.

+<br>

+This attribute acts only on manager command execution,

+any wrong or missing command attribute will still cause Ant execution termination.

+</td>

+<td align="center" valign="top">No</td>

+</tr>

+</tbody>

+</table>

+

+<p>They also support the embedded <code>&lt;redirector&gt;</code> element

+in which you can specify

+its full set of attributes, but <code>input</code>, <code>inputstring</code> and

+<code>inputencoding</code> that, even if accepted, are not used because they have

+no meaning in this context.

+Refer to <a href="http://ant.apache.org">ant manual</a> for details on

+<code>&lt;redirector&gt;</code> element attributes.

+</p>

+

+<p>

+Here is a sample build file extract that shows how this output redirection support

+can be used:

+</p>

+

+<table border="1">

+<tr><td><pre>

+    &lt;target name="manager.deploy"

+        depends="context.status"

+        if="context.notInstalled"&gt;

+        &lt;deploy url="${mgr.url}"

+            username="${mgr.username}"

+            password="${mgr.password}"

+            path="${mgr.context.path}"

+            config="${mgr.context.descriptor}"/&gt;

+    &lt;/target&gt;

+

+    &lt;target name="manager.deploy.war"

+        depends="context.status"

+        if="context.deployable"&gt;

+        &lt;deploy url="${mgr.url}"

+            username="${mgr.username}"

+            password="${mgr.password}"

+            update="${mgr.update}"

+            path="${mgr.context.path}"

+            war="${mgr.war.file}"/&gt;

+    &lt;/target&gt;

+

+    &lt;target name="context.status"&gt;

+        &lt;property name="running" value="${mgr.context.path}:running"/&gt;

+        &lt;property name="stopped" value="${mgr.context.path}:stopped"/&gt;

+

+        &lt;list url="${mgr.url}"

+            outputproperty="ctx.status"

+            username="${mgr.username}"

+            password="${mgr.password}"&gt;

+        &lt;/list&gt;

+

+        &lt;condition property="context.running"&gt;

+            &lt;contains string="${ctx.status}" substring="${running}"/&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.stopped"&gt;

+            &lt;contains string="${ctx.status}" substring="${stopped}"/&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.notInstalled"&gt;

+            &lt;and&gt;

+                &lt;isfalse value="${context.running}"/&gt;

+                &lt;isfalse value="${context.stopped}"/&gt;

+            &lt;/and&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.deployable"&gt;

+            &lt;or&gt;

+                &lt;istrue value="${context.notInstalled}"/&gt;

+                &lt;and&gt;

+                    &lt;istrue value="${context.running}"/&gt;

+                    &lt;istrue value="${mgr.update}"/&gt;

+                &lt;/and&gt;

+                &lt;and&gt;

+                    &lt;istrue value="${context.stopped}"/&gt;

+                    &lt;istrue value="${mgr.update}"/&gt;

+                &lt;/and&gt;

+            &lt;/or&gt;

+        &lt;/condition&gt;

+        &lt;condition property="context.undeployable"&gt;

+            &lt;or&gt;

+                &lt;istrue value="${context.running}"/&gt;

+                &lt;istrue value="${context.stopped}"/&gt;

+            &lt;/or&gt;

+        &lt;/condition&gt;

+    &lt;/target&gt;

+</pre></td></tr>

+</table>

+

+<p><strong>WARNING:</strong> even if it doesn't make many sense, and is always a bad idea,

+calling a Catalina task more than once,

+badly set Ant tasks depends chains may cause that a task be called

+more than once in the same Ant run, even if not intended to. A bit of caution should be exercised when you are

+capturing output from that task, because this could lead to something unexpected:</p>

+<ul>

+<li>when capturing in a property you will find in it only the output from the <em>first</em> call, because

+Ant properties are immutable and once set they cannot be changed,

+</li>

+<li>when capturing in a file, each run will overwrite it and you will find in it only the <em>last</em> call

+output, unless you are using the <code>append="true"</code> attribute, in which case you will

+see the output of each task call appended to the file.

+</li>

+</ul>

+

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JMX Proxy Servlet"><!--()--></a><a name="Using_the_JMX_Proxy_Servlet"><strong>Using the JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What is JMX Proxy Servlet"><!--()--></a><a name="What_is_JMX_Proxy_Servlet"><strong>What is JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>

+    The JMX Proxy Servlet is a lightweight proxy to get and set the

+    tomcat internals. (Or any class that has been exposed via an MBean)

+    Its usage is not very user friendly but the UI is

+    extremely help for integrating command line scripts for monitoring

+    and changing the internals of tomcat. You can do two things with the proxy:

+    get information and set information. For you to really understand the

+    JMX Proxy Servlet, you should have a general understanding of JMX.

+    If you don't know what JMX is, then prepare to be confused.

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Query command"><!--()--></a><a name="JMX_Query_command"><strong>JMX Query command</strong></a></font></td></tr><tr><td><blockquote>

+    This takes the form:

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://webserver/manager/jmxproxy/?qry=STUFF

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    Where <code>STUFF</code> is the JMX query you wish to perform. For example,

+    here are some queries you might wish to run:

+    <ul>

+      <li>

+        <code>qry=*%3Atype%3DRequestProcessor%2C* --&gt;

+         type=RequestProcessor</code> which will locate all

+         workers which can process requests and report

+         their state.

+      </li>

+      <li>

+        <code>qry=*%3Aj2eeType=Servlet%2c* --&gt;

+            j2eeType=Servlet</code> which return all loaded servlets.

+      </li>

+      <li>

+        <code>qry=Catalina%3Atype%3DEnvironment%2Cresourcetype%3DGlobal%2Cname%3DsimpleValue --&gt;

+            Catalina:type=Environment,resourcetype=Global,name=simpleValue</code>

+            which look for a specific MBean by the given name.

+      </li>

+    </ul>

+    You'll need to experiment with this to really understand its capabilites.

+    If you provide no <code>qry</code> parameter, then all of the MBeans will

+    be displayed. We really recommend looking at the tomcat source code and

+    understand the JMX spec to get a better understanding of all the queries

+    you may run.

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Get command"><!--()--></a><a name="JMX_Get_command"><strong>JMX Get command</strong></a></font></td></tr><tr><td><blockquote>

+    The JXMProxyServlet also supports a "get" command that you can use to

+    fetch the value of a specific MBean's attribute. The general form of

+    the <code>get</code> command is:

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://webserver/manager/jmxproxy/?get=BEANNAME&amp;att=MYATTRIBUTE&amp;key=MYKEY

+</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>

+

+    You must provide the following parameters:

+    <ol>

+      <li><code>get</code>: The full bean name</li>

+      <li><code>att</code>: The attribute you wish to fetch</li>

+      <li><code>key</code>: (optional) The key into a CompositeData MBean attribute</li>

+    </ol>

+

+    If all goes well, then it will say OK, otherwise an error message will

+    be shown. For example, let's say we wish to fetch the current heap memory

+    data:

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://webserver/manager/jmxproxy/?get=java.lang:type=Memory&amp;att=HeapMemoryUsage

+</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>

+

+    Or, if you only want the "used" key:

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://webserver/manager/jmxproxy/

+ ?get=java.lang:type=Memory&amp;att=HeapMemoryUsage&amp;key=used

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Set command"><!--()--></a><a name="JMX_Set_command"><strong>JMX Set command</strong></a></font></td></tr><tr><td><blockquote>

+    Now that you can query an MBean, its time to muck with Tomcat's internals!

+    The general form of the set command is :

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://webserver/manager/jmxproxy/?set=BEANNAME&amp;att=MYATTRIBUTE&amp;val=NEWVALUE

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    So you need to provide 3 request parameters:

+    <ol>

+      <li><code>set</code>: The full bean name</li>

+      <li><code>att</code>: The attribute you wish to alter</li>

+      <li><code>val</code>: The new value </li>

+    </ol>

+    If all goes ok, then it will say OK, otherwise an error message will be

+    shown. For example, lets say we wish to turn up debugging on the fly for the

+    <code>ErrorReportValve</code>. The following will set debugging to 10.

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/jmxproxy/

+ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost

+ &amp;att=debug&amp;val=10

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    and my result is (YMMV):

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+Result: ok

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    Here is what I see if I pass in a bad value. Here is the URL I used,

+    I try set debugging equal to 'cow':

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/jmxproxy/

+ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost

+ &amp;att=debug&amp;val=cow

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    When I try that, my result is

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+Error: java.lang.NumberFormatException: For input string: "cow"

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Invoke command"><!--()--></a><a name="JMX_Invoke_command"><strong>JMX Invoke command</strong></a></font></td></tr><tr><td><blockquote>

+    <p>The <code>invoke</code> command enables methods to be called on MBeans. The

+    general form of the command is:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://webserver/manager/jmxproxy/

+ ?invoke=BEANNAME&amp;op=METHODNAME&amp;ps=COMMASEPARATEDPARAMETERS

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>For example, to call the <code>findConnectors()</code> method of the

+    <strong>Service</strong> use:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+http://localhost:8080/manager/jmxproxy/

+ ?invoke=Catalina%3Atype%3DService&amp;op=findConnectors&amp;ps=

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><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="/tomcat-7.0-doc/comments.html">here</a>.

+              Comments may be removed by our moderators if they are either

+              implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--

+              var comments_shortname = 'tomcat';

+              var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/maven-jars.html b/webapps/docs/maven-jars.html
new file mode 100644
index 0000000..5701051
--- /dev/null
+++ b/webapps/docs/maven-jars.html
@@ -0,0 +1,65 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Apache Tomcat - Using Tomcat libraries with Maven</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat - Using Tomcat libraries with Maven</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="#Using_Tomcat_libraries_With_Maven">Using Tomcat libraries With Maven</a><ol><li><a href="#Tomcat_Snapshots">Tomcat Snapshots</a></li><li><a href="#Tomcat_Releases">Tomcat Releases</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="Using Tomcat libraries With Maven"><!--()--></a><a name="Using_Tomcat_libraries_With_Maven"><strong>Using Tomcat libraries With Maven</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat Snapshots"><!--()--></a><a name="Tomcat_Snapshots"><strong>Tomcat Snapshots</strong></a></font></td></tr><tr><td><blockquote>

+      Tomcat snapshots are located in the

+      <a href="http://people.apache.org/repo/m2-snapshot-repository/org/apache/tomcat/">Apache Snapshot Repository</a>.

+      The official URL is <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>http://people.apache.org/repo/m2-snapshot-repository/org/apache/tomcat/</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>

+      Snapshots are done periodically, not on a regular basis, but when changes happen and the Tomcat team deems a new snapshot might

+      useful.

+    </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 Releases"><!--()--></a><a name="Tomcat_Releases"><strong>Tomcat Releases</strong></a></font></td></tr><tr><td><blockquote>

+      Stable releases are published to the

+      <a href="http://repo2.maven.org/maven2/org/apache/tomcat/">Central

+      Maven Repositories</a>. The URL for this is

+      <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>http://repo2.maven.org/maven2/org/apache/tomcat/</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><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="/tomcat-7.0-doc/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/maven-jars.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/mbeans-descriptor-howto.html b/webapps/docs/mbeans-descriptor-howto.html
new file mode 100644
index 0000000..d565451
--- /dev/null
+++ b/webapps/docs/mbeans-descriptor-howto.html
@@ -0,0 +1,91 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - MBean Descriptor How To</title><meta name="author" content="Amy Roh"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>MBean Descriptor How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Adding_MBean_descriptions">Adding MBean descriptions</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Tomcat uses JMX MBeans as the technology for implementing

+manageability of Tomcat.</p>

+

+<p>The descriptions of JMX MBeans for Catalina are in the mbeans-descriptor.xml

+file in each package.</p>

+

+<p>You will need to add MBean descriptions for your custom components

+in order to avoid a "ManagedBean is not found" exception.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Adding MBean descriptions"><!--()--></a><a name="Adding_MBean_descriptions"><strong>Adding MBean descriptions</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>You may also add MBean descriptions for custom components in

+a mbeans-descriptor.xml file, located in the same package as the class files

+it describes.</p>

+

+<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>

+  &lt;mbean         name="LDAPRealm"

+            className="org.apache.catalina.mbeans.ClassNameMBean"

+          description="Custom LDAPRealm"

+               domain="Catalina"

+                group="Realm"

+                 type="com.myfirm.mypackage.LDAPRealm"&gt;

+

+    &lt;attribute   name="className"

+          description="Fully qualified class name of the managed object"

+                 type="java.lang.String"

+            writeable="false"/&gt;

+

+    &lt;attribute   name="debug"

+          description="The debugging detail level for this component"

+                 type="int"/&gt;

+    .

+    .

+    .

+

+  &lt;/mbean&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+

+</blockquote></td></tr></table></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="/tomcat-7.0-doc/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/mbeans-descriptor-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/monitoring.html b/webapps/docs/monitoring.html
new file mode 100644
index 0000000..c89245a
--- /dev/null
+++ b/webapps/docs/monitoring.html
@@ -0,0 +1,1155 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Monitoring and Managing Tomcat</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Monitoring and Managing Tomcat</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Enabling_JMX_Remote">Enabling JMX Remote</a></li><li><a href="#Manage_Tomcat_with_JMX_remote_Ant_Tasks">Manage Tomcat with JMX remote Ant Tasks</a></li><li><a href="#JMXAccessorOpenTask_-_JMX_open_connection_task">JMXAccessorOpenTask - JMX open connection task</a></li><li><a href="#JMXAccessorGetTask:__get_attribute_value_Ant_task">JMXAccessorGetTask:  get attribute value Ant task</a></li><li><a href="#JMXAccessorSetTask:__set_attribute_value_Ant_task">JMXAccessorSetTask:  set attribute value Ant task</a></li><li><a href="#JMXAccessorInvokeTask:__invoke_MBean_operation_Ant_task">JMXAccessorInvokeTask:  invoke MBean operation Ant task</a></li><li><a href="#JMXAccessorQueryTask:__query_MBean_Ant_task">JMXAccessorQueryTask:  query MBean Ant task</a></li><li><a href="#JMXAccessorCreateTask:__remote_create_MBean_Ant_task">JMXAccessorCreateTask:  remote create MBean Ant task</a></li><li><a href="#JMXAccessorUnregisterTask:__remote_unregister_MBean_Ant_task">JMXAccessorUnregisterTask:  remote unregister MBean Ant task</a></li><li><a href="#JMXAccessorCondition:__express_condition">JMXAccessorCondition:  express condition</a></li><li><a href="#JMXAccessorEqualsCondition:__equals_MBean_Ant_condition">JMXAccessorEqualsCondition:  equals MBean Ant condition</a></li><li><a href="#Using_the_JMXProxyServlet">Using the JMXProxyServlet</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Monitoring is a key aspect of system administration. Looking inside a

+     running server, obtaining some statistics or reconfiguring some aspects of

+     an application are all daily administration tasks.</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="Enabling JMX Remote"><!--()--></a><a name="Enabling_JMX_Remote"><strong>Enabling JMX Remote</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p><strong>Note:</strong> This configuration is needed only if you are

+    going to monitor Tomcat remotely. It is not needed if you are going

+    to monitor it locally, using the same user that Tomcat runs with.</p>

+

+    <p>The Oracle website includes the list of options and how to configure

+    JMX Remote on Java 6:

+        <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html">

+        http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html</a>.

+    </p>

+    <p>The following is a quick configuration guide for Java 6:</p>

+    <p>Add the following parameters to <code>setenv.bat</code> script of your

+    Tomcat (see <a href="RUNNING.txt">RUNNING.txt</a> for details).<br>

+    <em>Note:</em> This syntax is for Microsoft Windows. The command has

+    to be on the same line. It is wrapped to be more readable. If Tomcat is

+    running as a Windows service, use its configuration dialog to set

+    java options for the service.

+    For un*xes remove <code>"set "</code> from beginning of the line.

+    </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>

+set CATALINA_OPTS=-Dcom.sun.management.jmxremote

+  -Dcom.sun.management.jmxremote.port=%my.jmx.port%

+  -Dcom.sun.management.jmxremote.ssl=false

+  -Dcom.sun.management.jmxremote.authenticate=false

+</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>

+

+    <ol>

+    <li>If you require authorization, add and change this:

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+  -Dcom.sun.management.jmxremote.authenticate=true

+  -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password

+  -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access

+</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>

+    </li>

+    <li>edit the access authorization file <em>$CATALINA_BASE/conf/jmxremote.access</em>:

+<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>

+monitorRole readonly

+controlRole readwrite

+</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>

+    </li>

+    <li>edit the password file <em>$CATALINA_BASE/conf/jmxremote.password</em>:

+<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>

+monitorRole tomcat

+controlRole tomcat

+</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>

+    <b>Tip</b>: The password file should be read-only and only accessible by the

+    operating system user Tomcat is running as.

+    </li>

+    </ol>

+    <p><strong>Note:</strong> The JSR 160 JMX-Adaptor opens a second data channel

+    on a random port. That is a problem when you have a local firewall installed.

+    To fix it, configure a <code>JmxRemoteLifecycleListener</code>, as described

+    in <a href="config/listeners.html">listeners</a> documentation.

+    </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="Manage Tomcat with JMX remote Ant Tasks"><!--()--></a><a name="Manage_Tomcat_with_JMX_remote_Ant_Tasks"><strong>Manage Tomcat with JMX remote Ant Tasks</strong></a></font></td></tr><tr><td><blockquote>

+   <p>To simplify JMX usage with Ant 1.6.x, a set of tasks is provided that may

+   be used with antlib.</p>

+   <p><b>antlib</b>: Copy your catalina-ant.jar from $CATALINA_HOME/lib to $ANT_HOME/lib.</p>

+   <p>The following example shows the JMX Accessor usage:<br>

+   <em>Note:</em> The <code>name</code> attribute value was wrapped here to be

+   more readable. It has to be all on the same line, without spaces.</p>

+   <table border="1">

+   <tr><td><pre>

+&lt;project name="Catalina Ant JMX"

+      xmlns:jmx="antlib:org.apache.catalina.ant.jmx"

+      default="state"

+      basedir="."&gt;

+  &lt;property name="jmx.server.name" value="localhost" /&gt;

+  &lt;property name="jmx.server.port" value="9012" /&gt;

+  &lt;property name="cluster.server.address" value="192.168.1.75" /&gt;

+  &lt;property name="cluster.server.port" value="9025" /&gt;

+

+  &lt;target name="state" description="Show JMX Cluster state"&gt;

+    &lt;jmx:open

+      host="${jmx.server.name}"

+      port="${jmx.server.port}"

+      username="controlRole"

+      password="tomcat"/&gt;

+    &lt;jmx:get

+      name=

+"Catalina:type=IDataSender,host=localhost,

+senderAddress=${cluster.server.address},senderPort=${cluster.server.port}"

+      attribute="connected"

+      resultproperty="IDataSender.backup.connected"

+      echo="false"

+    /&gt;

+    &lt;jmx:get

+      name="Catalina:type=ClusterSender,host=localhost"

+      attribute="senderObjectNames"

+      resultproperty="senderObjectNames"

+      echo="false"

+    /&gt;

+    &lt;!-- get current maxActiveSession from ClusterTest application

+       echo it to Ant output and store at

+       property &lt;em&gt;clustertest.maxActiveSessions.orginal&lt;/em&gt;

+    --&gt;

+    &lt;jmx:get

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

+      attribute="maxActiveSessions"

+      resultproperty="clustertest.maxActiveSessions.orginal"

+      echo="true"

+    /&gt;

+    &lt;!-- set maxActiveSession to 100

+    --&gt;

+    &lt;jmx:set

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

+      attribute="maxActiveSessions"

+      value="100"

+      type="int"

+    /&gt;

+    &lt;!-- get all sessions and split result as delimiter &lt;em&gt;SPACE&lt;/em&gt; for easy

+       access all session ids directly with Ant property sessions.[0..n].

+    --&gt;

+    &lt;jmx:invoke

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

+      operation="listSessionIds"

+      resultproperty="sessions"

+      echo="false"

+      delimiter=" "

+    /&gt;

+    &lt;!-- Access session attribute &lt;em&gt;Hello&lt;/em&gt; from first session.

+    --&gt;

+    &lt;jmx:invoke

+      name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

+      operation="getSessionAttribute"

+      resultproperty="Hello"

+      echo="false"

+    &gt;

+      &lt;arg value="${sessions.0}"/&gt;

+      &lt;arg value="Hello"/&gt;

+    &lt;/jmx:invoke&gt;

+    &lt;!-- Query for all application manager.of the server from all hosts

+       and bind all attributes from all found manager MBeans.

+    --&gt;

+    &lt;jmx:query

+      name="Catalina:type=Manager,*"

+      resultproperty="manager"

+      echo="true"

+      attributebinding="true"

+    /&gt;

+    &lt;!-- echo the create properties --&gt;

+&lt;echo&gt;

+senderObjectNames: ${senderObjectNames.0}

+IDataSender.backup.connected: ${IDataSender.backup.connected}

+session: ${sessions.0}

+manager.length: ${manager.length}

+manager.0.name: ${manager.0.name}

+manager.1.name: ${manager.1.name}

+hello: ${Hello}

+manager.ClusterTest.0.name: ${manager.ClusterTest.0.name}

+manager.ClusterTest.0.activeSessions: ${manager.ClusterTest.0.activeSessions}

+manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED:

+ ${manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED}

+manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS:

+ ${manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS}

+&lt;/echo&gt;

+

+  &lt;/target&gt;

+

+&lt;/project&gt;

+</pre>

+   </td></tr>

+</table>

+   <p><b>import:</b> Import the JMX Accessor Project with

+   <em>&lt;import file="${CATALINA.HOME}/bin/catalina-tasks.xml" /&gt;</em> and

+   reference the tasks with <em>jmxOpen</em>, <em>jmxSet</em>, <em>jmxGet</em>,

+   <em>jmxQuery</em>, <em>jmxInvoke</em>, <em>jmxEquals</em> and <em>jmxCondition</em>.</p>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorOpenTask - JMX open connection task"><!--()--></a><a name="JMXAccessorOpenTask_-_JMX_open_connection_task"><strong>JMXAccessorOpenTask - JMX open connection task</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+  <tr>

+    <td>url</td>

+    <td>Set JMX connection URL - <em>service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>host</td>

+    <td>Set the host, shortcut the very long URL syntax.

+    </td>

+    <td><code>localhost</code></td>

+  </tr>

+

+  <tr>

+    <td>port</td>

+    <td>Set the remote connection port

+    </td>

+    <td><code>8050</code></td>

+  </tr>

+

+  <tr>

+    <td>username</td>

+    <td>remote JMX connection user name.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>password</td>

+    <td>remote JMX connection password.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>Name of the internal connection reference. With this attribute you can

+        configure more the one connection inside the same Ant project.

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo the command usage (for access analysis or debugging)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+  <tr>

+    <td>if</td>

+    <td>Only execute if a property of the given name <b>exists</b> in the current project.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>unless</td>

+    <td>Only execute if a property of the given name <b>not exists</b> in the current project.

+    </td>

+    <td></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Example to open a new JMX connection<br>

+<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>

+  &lt;jmx:open

+    host="${jmx.server.name}"

+    port="${jmx.server.port}"

+  /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+Example to open a JMX connection from URL, with authorization and

+store at other reference <br>

+<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>

+  &lt;jmx:open

+    url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"

+    ref="jmx.server.9024"

+    username="controlRole"

+    password="tomcat"

+  /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+<p>

+Example to open a JMX connection from URL, with authorization and

+store at other reference, but only when property <em>jmx.if</em> exists and

+<em>jmx.unless</em> not exists<br>

+<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>

+  &lt;jmx:open

+    url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"

+    ref="jmx.server.9024"

+    username="controlRole"

+    password="tomcat"

+    if="jmx.if"

+    unless="jmx.unless"

+  /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p><b>Note</b>: All properties from <em>jmxOpen</em> task also exists at all

+other tasks and conditions.

+</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="JMXAccessorGetTask:  get attribute value Ant task"><!--()--></a><a name="JMXAccessorGetTask:__get_attribute_value_Ant_task"><strong>JMXAccessorGetTask:  get attribute value Ant task</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>attribute</td>

+    <td>Existing MBean attribute (see Tomcat MBean description above)

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>JMX Connection reference

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo command usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+  <tr>

+    <td>resultproperty</td>

+    <td>Save result at this project property

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>delimiter</td>

+    <td>Split result with delimiter (java.util.StringTokenizier)

+        and use resultproperty as prefix to store tokens.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>separatearrayresults</td>

+    <td>When return value is an array, save result as property list

+    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>)

+    </td>

+    <td><code>true</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Example to get remote MBean attribute from default JMX connection <br>

+<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>

+  &lt;jmx:get

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

+    attribute="maxActiveSessions"

+    resultproperty="servlets-examples.maxActiveSessions"

+  /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+Example to get and result array and split it at separate properties<br>

+<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>

+  &lt;jmx:get

+      name="Catalina:type=ClusterSender,host=localhost"

+      attribute="senderObjectNames"

+      resultproperty="senderObjectNames"

+  /&gt;

+</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>

+Access the senderObjectNames properties with:

+<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>

+  ${senderObjectNames.length} give the number of returned sender list.

+  ${senderObjectNames.[0..N]} found all sender object names

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+<p>

+Example to get IDataSender attribute connected only when cluster is configured.<br>

+<em>Note:</em> The <code>name</code> attribute value was wrapped here to be

+more readable. It has to be all on the same line, without spaces.

+</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>

+  &lt;jmx:query

+    failonerror="false"

+    name="Catalina:type=Cluster,host=${tomcat.application.host}"

+    resultproperty="cluster"

+  /&gt;

+  &lt;jmx:get

+    name=

+"Catalina:type=IDataSender,host=${tomcat.application.host},

+senderAddress=${cluster.backup.address},senderPort=${cluster.backup.port}"

+    attribute="connected"

+    resultproperty="datasender.connected"

+    if="cluster.0.name" /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorSetTask:  set attribute value Ant task"><!--()--></a><a name="JMXAccessorSetTask:__set_attribute_value_Ant_task"><strong>JMXAccessorSetTask:  set attribute value Ant task</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>attribute</td>

+    <td>Existing MBean attribute (see Tomcat MBean description above)

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>value</td>

+    <td>value that set to attribute

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>type</td>

+    <td>type of the attribute.

+    </td>

+    <td>java.lang.String</td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>JMX Connection reference

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo command usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Example to set remote MBean attribute value<br>

+<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>

+  &lt;jmx:set

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

+    attribute="maxActiveSessions"

+    value="500"

+    type="int"

+  /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorInvokeTask:  invoke MBean operation Ant task"><!--()--></a><a name="JMXAccessorInvokeTask:__invoke_MBean_operation_Ant_task"><strong>JMXAccessorInvokeTask:  invoke MBean operation Ant task</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>operation</td>

+    <td>Existing MBean operation (see Tomcat

+        <a href="funcspecs/fs-admin-opers.html">funcspecs/fs-admin-opers.html</a>).

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>JMX Connection reference

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo command usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+  <tr>

+    <td>resultproperty</td>

+    <td>Save result at this project property

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>delimiter</td>

+    <td>Split result with delimiter (java.util.StringTokenizier)

+        and use resultproperty as prefix to store tokens.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>separatearrayresults</td>

+    <td>When return value is an array, save result as property list

+    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>)

+    </td>

+    <td><code>true</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+stop an application <br>

+<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>

+  &lt;jmx:invoke

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

+    operation="stop"/&gt;

+</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>

+Now you can find the sessionid at <em>${sessions.[0..N}</em> properties and access the count

+with ${sessions.length} property.

+</p>

+<p>

+Example to get all sessionids <br>

+<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>

+  &lt;jmx:invoke

+    name="Catalina:type=Manager,context=/servlets-examples,host=localhost"

+    operation="listSessionIds"

+    resultproperty="sessions"

+    delimiter=" "

+  /&gt;

+</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>

+Now you can find the sessionid at <em>${sessions.[0..N}</em> properties and access the count

+with ${sessions.length} property.

+</p>

+<p>

+Example to get remote MBean session attribute from session ${sessionid.0}<br>

+<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>

+  &lt;jmx:invoke

+    name="Catalina:type=Manager,context=/ClusterTest,host=localhost"

+    operation="getSessionAttribute"

+    resultproperty="hello"&gt;

+     &lt;arg value="${sessionid.0}"/&gt;

+     &lt;arg value="Hello" /&gt;

+  &lt;/jmx:invoke&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+Example to create a new access logger valve at vhost <em>localhost</em>

+<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>

+ &lt;jmx:invoke

+         name="Catalina:type=MBeanFactory"

+         operation="createAccessLoggerValve"

+         resultproperty="accessLoggerObjectName"

+ &gt;

+     &lt;arg value="Catalina:type=Host,host=localhost"/&gt;

+ &lt;/jmx:invoke&gt;

+</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>

+Now you can find new MBean with name stored at <em>${accessLoggerObjectName}</em>

+property.

+</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="JMXAccessorQueryTask:  query MBean Ant task"><!--()--></a><a name="JMXAccessorQueryTask:__query_MBean_Ant_task"><strong>JMXAccessorQueryTask:  query MBean Ant task</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>JMX  ObjectName query string -- <em>Catalina:type=Manager,*</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>JMX Connection reference

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo command usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+  <tr>

+    <td>resultproperty</td>

+    <td>Prefix project property name to all founded MBeans (<em>mbeans.[0..N].objectname</em>)

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>attributebinduing</td>

+    <td>bind ALL MBean attributes in addition to <em>name</em>

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+  <tr>

+    <td>delimiter</td>

+    <td>Split result with delimiter (java.util.StringTokenizier)

+        and use resultproperty as prefix to store tokens.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>separatearrayresults</td>

+    <td>When return value is an array, save result as property list

+    (<em>$resultproperty.[0..N]</em> and <em>$resultproperty.length</em>)

+    </td>

+    <td><code>true</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Get all Manager ObjectNames from all services and Hosts <br>

+<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>

+  &lt;jmx:query

+    name="Catalina:type=Manager,*

+    resultproperty="manager" /&gt;

+</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>

+Now you can find the Session Manager at <em>${manager.[0..N].name}</em>

+properties and access the result object counter with ${manager.length} property.

+</p>

+<p>

+Example to get the Manager from <em>servlet-examples</em> application an bind all MBean properties<br>

+<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>

+  &lt;jmx:query

+    name="Catalina:type=Manager,context=/servlet-examples,host=localhost*"

+    attributebinding="true"

+    resultproperty="manager.servletExamples" /&gt;

+</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>

+Now you can find the manager at <em>${manager.servletExamples.0.name}</em> property

+and can access all properties from this manager with <em>${manager.servletExamples.0.[manager attribute names]</em>}.

+The result object counter from MBeans is stored ad ${manager.length} property.

+</p>

+

+<p>

+Example to get all MBeans from a server and store inside an external XML property file<br>

+<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>

+&lt;project name="jmx.query"

+            xmlns:jmx="antlib:org.apache.catalina.ant.jmx"

+            default="query-all" basedir="."&gt;

+&lt;property name="jmx.host" value="localhost"/&gt;

+&lt;property name="jmx.port" value="8050"/&gt;

+&lt;property name="jmx.username" value="controlRole"/&gt;

+&lt;property name="jmx.password" value="tomcat"/&gt;

+

+&lt;target name="query-all" description="Query all MBeans of a server"&gt;

+  &lt;!-- Configure connection --&gt;

+  &lt;jmx:open

+    host="${jmx.host}"

+    port="${jmx.port}"

+    ref="jmx.server"

+    username="${jmx.username}"

+    password="${jmx.password}"/&gt;

+

+  &lt;!-- Query MBean list --&gt;

+  &lt;jmx:query

+    name="*:*"

+    resultproperty="mbeans"

+    attributebinding="false"/&gt;

+

+  &lt;echoproperties

+    destfile="mbeans.properties"

+    prefix="mbeans."

+    format="xml"/&gt;

+

+  &lt;!-- Print results --&gt;

+  &lt;echo message=

+    "Number of MBeans in server ${jmx.host}:${jmx.port} is ${mbeans.length}"/&gt;

+&lt;/target&gt;

+&lt;/project&gt;

+</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>

+Now you can find all MBeans inside the file <em>mbeans.properties</em>.

+</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="JMXAccessorCreateTask:  remote create MBean Ant task"><!--()--></a><a name="JMXAccessorCreateTask:__remote_create_MBean_Ant_task"><strong>JMXAccessorCreateTask:  remote create MBean Ant task</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>Full qualified JMX ObjectName -- <em>Catalina:type=MBeanFactory</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>className</td>

+    <td>Existing MBean full qualified class name (see Tomcat MBean description above)

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>classLoader</td>

+    <td>ObjectName of server or web application classloader <br>

+    ( <em>Catalina:type=ServerClassLoader,name=[server,common,shared]</em> or<br>

+     <em>Catalina:type=WebappClassLoader,context=/myapps,host=localhost</em>)

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>JMX Connection reference

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo command usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Example to create remote MBean<br>

+<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>

+  &lt;jmx:create

+    ref="${jmx.reference}"

+    name="Catalina:type=MBeanFactory"

+    className="org.apache.commons.modeler.BaseModelMBean"

+    classLoader="Catalina:type=ServerClassLoader,name=server"&gt;

+    &lt;arg value="org.apache.catalina.mbeans.MBeanFactory" /&gt;

+  &lt;/jmx:create&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+    <b>Warning</b>: Many Tomcat MBeans can't be linked to their parent once<br>

+    created. The Valve, Cluster and Realm MBeans are not automatically<br>

+    connected with their parent. Use the <em>MBeanFacrory</em> create<br>

+    operation instead.

+</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="JMXAccessorUnregisterTask:  remote unregister MBean Ant task"><!--()--></a><a name="JMXAccessorUnregisterTask:__remote_unregister_MBean_Ant_task"><strong>JMXAccessorUnregisterTask:  remote unregister MBean Ant task</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>Full qualified JMX ObjectName -- <em>Catalina:type=MBeanFactory</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>JMX Connection reference

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo command usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Example to unregister remote MBean<br>

+<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>

+  &lt;jmx:unregister

+    name="Catalina:type=MBeanFactory"

+  /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+    <b>Warning</b>: A lot of Tomcat MBeans can't be unregister.<br>

+    The MBeans are not unlinked from their parent. Use <em>MBeanFacrory</em><br>

+    remove operation instead.

+</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="JMXAccessorCondition:  express condition"><!--()--></a><a name="JMXAccessorCondition:__express_condition"><strong>JMXAccessorCondition:  express condition</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+ <tr>

+    <td>url</td>

+    <td>Set JMX connection URL - <em>service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>host</td>

+    <td>Set the host, shortcut the very long URL syntax.

+    </td>

+    <td><code>localhost</code></td>

+  </tr>

+

+  <tr>

+    <td>port</td>

+    <td>Set the remote connection port

+    </td>

+    <td><code>8050</code></td>

+  </tr>

+

+  <tr>

+    <td>username</td>

+    <td>remote JMX connection user name.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>password</td>

+    <td>remote JMX connection password.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>Name of the internal connection reference. With this attribute you can

+        configure more the one connection inside the same Ant project.

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>echo</td>

+    <td>Echo condition usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+  <tr>

+    <td>if</td>

+    <td>Only execute if a property of the given name <b>exists</b> in the current project.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>unless</td>

+    <td>Only execute if a property of the given name <b>not exists</b> in the current project.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>value (requiered)</td>

+    <td>Second arg for operation

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>type</td>

+    <td>Value type to express operation (support <em>long</em> and <em>double</em>)

+    </td>

+    <td><code>long</code></td>

+  </tr>

+

+  <tr>

+    <td>operation</td>

+    <td> express one

+    <ul>

+    <li>==  equals</li>

+    <li>!=  not equals</li>

+    <li>&gt; greater than (&amp;gt;)</li>

+    <li>&gt;= greater than or equals (&amp;gt;=)</li>

+    <li>&lt; lesser than (&amp;lt;)</li>

+    <li>&lt;= lesser than or equals (&amp;lt;=)</li>

+    </ul>

+    </td>

+    <td><code>==</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Wait for server connection and that cluster backup node is accessable<br>

+<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>

+&lt;target name="wait"&gt;

+  &lt;waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" &gt;

+    &lt;and&gt;

+      &lt;socket server="${server.name}" port="${server.port}"/&gt;

+      &lt;http url="${url}"/&gt;

+      &lt;jmx:condition

+        operation="=="

+        host="localhost"

+        port="9014"

+        username="controlRole"

+        password="tomcat"

+        name=

+"Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025"

+        attribute="connected"

+        value="true"

+      /&gt;

+    &lt;/and&gt;

+  &lt;/waitfor&gt;

+  &lt;fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" /&gt;

+  &lt;echo message="Server ${url} alive" /&gt;

+&lt;/target&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorEqualsCondition:  equals MBean Ant condition"><!--()--></a><a name="JMXAccessorEqualsCondition:__equals_MBean_Ant_condition"><strong>JMXAccessorEqualsCondition:  equals MBean Ant condition</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+List of Attributes<br>

+<table border="1" cellpadding="5">

+

+  <tr>

+    <th align="center" bgcolor="aqua">Attribute</th>

+    <th align="center" bgcolor="aqua">Description</th>

+    <th align="center" bgcolor="aqua">Default value</th>

+  </tr>

+

+ <tr>

+    <td>url</td>

+    <td>Set JMX connection URL - <em>service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi</em>

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>host</td>

+    <td>Set the host, shortcut the very long URL syntax.

+    </td>

+    <td><code>localhost</code></td>

+  </tr>

+

+  <tr>

+    <td>port</td>

+    <td>Set the remote connection port

+    </td>

+    <td><code>8050</code></td>

+  </tr>

+

+  <tr>

+    <td>username</td>

+    <td>remote JMX connection user name.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>password</td>

+    <td>remote JMX connection password.

+    </td>

+    <td></td>

+  </tr>

+

+  <tr>

+    <td>ref</td>

+    <td>Name of the internal connection reference. With this attribute you can

+        configure more the one connection inside the same Ant project.

+    </td>

+    <td><code>jmx.server</code></td>

+  </tr>

+

+  <tr>

+    <td>name</td>

+    <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>

+    </td>

+    <td></td>

+  </tr>

+

+

+  <tr>

+    <td>echo</td>

+    <td>Echo condition usage (access and result)

+    </td>

+    <td><code>false</code></td>

+  </tr>

+

+</table>

+</p>

+<p>

+Wait for server connection and that cluster backup node is accessible<br>

+<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>

+&lt;target name="wait"&gt;

+  &lt;waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" &gt;

+    &lt;and&gt;

+      &lt;socket server="${server.name}" port="${server.port}"/&gt;

+      &lt;http url="${url}"/&gt;

+      &lt;jmx:equals

+        host="localhost"

+        port="9014"

+        username="controlRole"

+        password="tomcat"

+        name=

+"Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025"

+        attribute="connected"

+        value="true"

+      /&gt;

+    &lt;/and&gt;

+  &lt;/waitfor&gt;

+  &lt;fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" /&gt;

+  &lt;echo message="Server ${url} alive" /&gt;

+&lt;/target&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JMXProxyServlet"><!--()--></a><a name="Using_the_JMXProxyServlet"><strong>Using the JMXProxyServlet</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      Tomcat offers an alternative to using remote (or even local) JMX

+      connections while still giving you access to everything JMX has to offer:

+      Tomcat's

+      <a href="api/org/apache/catalina/manager/JMXProxyServlet.html">JMXProxyServlet</a>.

+    </p>

+    

+    <p>

+      The JMXProxyServlet allows a client to issue JMX queries via an HTTP

+      interface. This technique offers the following advantages over using

+      JMX directly from a client program:

+    </p>

+

+    <ul>

+      <li>You don't have to launch a full JVM and make a remote JMX connection

+      just to ask for one small piece of data from a runing server</li>

+      <li>You don't have to know how to work with JMX connections</li>

+      <li>You don't need any of the complex configuration covered in the rest

+      of this page</li>

+      <li>Your client program does not have to be written in Java</li>

+    </ul>

+

+    <p>

+      A perfect example of JMX overkill can be seen in the case of popular

+      server-monitoring software such as Nagios or Ichinga: if you want to

+      monitor 10 items via JMX, you will have to launch 10 JVMs, make 10 JMX

+      connections, and then shut them all down every few minutes. With the

+      JMXProxyServlet, you can make 10 HTTP connections and be done with it.

+    </p>

+    

+    <p>

+      You can find out more information about the JMXProxyServlet in the

+      documentation for the 

+      <a href="manager-howto.html#Using_the_JMX_Proxy_Servlet">Tomcat

+      manager</a>.

+    </p>

+  </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="/tomcat-7.0-doc/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/monitoring.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/proxy-howto.html b/webapps/docs/proxy-howto.html
new file mode 100644
index 0000000..cebd923
--- /dev/null
+++ b/webapps/docs/proxy-howto.html
@@ -0,0 +1,161 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Proxy Support HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Proxy Support HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Apache_1.3_Proxy_Support">Apache 1.3 Proxy Support</a></li><li><a href="#Apache_2.0_Proxy_Support">Apache 2.0 Proxy Support</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Using standard configurations of Tomcat, web applications can ask for

+the server name and port number to which the request was directed for

+processing.  When Tomcat is running standalone with the

+<a href="config/coyote.html">Coyote HTTP/1.1 Connector</a>, it will generally

+report the server name specified in the request, and the port number on

+which the <strong>Connector</strong> is listening.  The servlet API

+calls of interest, for this purpose, are:</p>

+<ul>

+<li><code>ServletRequest.getServerName()</code>: Returns the host name of the server to which the request was sent.</li>

+<li><code>ServletRequest.getServerPort()</code>: Returns the host name of the server to which the request was sent.</li>

+<li><code>ServletRequest.getLocalName()</code>: Returns the host name of the Internet Protocol (IP) interface on which the request was received.</li>

+<li><code>ServletRequest.getLocalPort()</code>:  Returns the Internet Protocol (IP) port number of the interface on which the request was received.</li>

+</ul>

+

+<p>When you are running behind a proxy server (or a web server that is

+configured to behave like a proxy server), you will sometimes prefer to

+manage the values returned by these calls.  In particular, you will

+generally want the port number to reflect that specified in the original

+request, not the one on which the <strong>Connector</strong> itself is

+listening.  You can use the <code>proxyName</code> and <code>proxyPort</code>

+attributes on the <code>&lt;Connector&gt;</code> element to configure

+these values.</p>

+

+<p>Proxy support can take many forms.  The following sections describe

+proxy configurations for several common cases.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache 1.3 Proxy Support"><!--()--></a><a name="Apache_1.3_Proxy_Support"><strong>Apache 1.3 Proxy Support</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Apache 1.3 supports an optional module (<code>mod_proxy</code>) that

+configures the web server to act as a proxy server.  This can be used to

+forward requests for a particular web application to a Tomcat instance,

+without having to configure a web connector such as <code>mod_jk</code>.

+To accomplish this, you need to perform the following tasks:</p>

+<ol>

+<li>Configure your copy of Apache so that it includes the

+    <code>mod_proxy</code> module.  If you are building from source,

+    the easiest way to do this is to include the

+    <code>--enable-module=proxy</code> directive on the

+    <code>./configure</code> command line.</li>

+<li>If not already added for you, make sure that you are loading the

+    <code>mod_proxy</code> module at Apache startup time, by using the

+    following directives in your <code>httpd.conf</code> file:

+<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>

+LoadModule proxy_module  {path-to-modules}/mod_proxy.so

+AddModule  mod_proxy.c

+</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></li>

+<li>Include two directives in your <code>httpd.conf</code> file for

+    each web application that you wish to forward to Tomcat.  For

+    example, to forward an application at context path <code>/myapp</code>:

+<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>

+ProxyPass         /myapp  http://localhost:8081/myapp

+ProxyPassReverse  /myapp  http://localhost:8081/myapp

+</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>

+    which tells Apache to forward URLs of the form

+    <code>http://localhost/myapp/*</code> to the Tomcat connector

+    listening on port 8081.</li>

+<li>Configure your copy of Tomcat to include a special

+    <code>&lt;Connector&gt;</code> element, with appropriate

+    proxy settings, for example:

+<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>

+&lt;Connector port="8081" ...

+              proxyName="www.mycompany.com"

+              proxyPort="80"/&gt;

+</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>

+    which will cause servlets inside this web application to think that

+    all proxied requests were directed to <code>www.mycompany.com</code>

+    on port 80.</li>

+<li>It is legal to omit the <code>proxyName</code> attribute from the

+    <code>&lt;Connector&gt;</code> element.  If you do so, the value

+    returned by <code>request.getServerName()</code> will by the host

+    name on which Tomcat is running.  In the example above, it would be

+    <code>localhost</code>.</li>

+<li>If you also have a <code>&lt;Connector&gt;</code> listening on port

+    8080 (nested within the same <a href="config/service.html">Service</a>

+    element), the requests to either port will share the same set of

+    virtual hosts and web applications.</li>

+<li>You might wish to use the IP filtering features of your operating

+    system to restrict connections to port 8081 (in this example) to

+    be allowed <strong>only</strong> from the server that is running

+    Apache.</li>

+<li>Alternatively, you can set up a series of web applications that are

+    only available via proxying, as follows:

+    <ul>

+    <li>Configure another <code>&lt;Service&gt;</code> that contains

+        only a <code>&lt;Connector&gt;</code> for the proxy port.</li>

+    <li>Configure appropriate <a href="config/engine.html">Engine</a>,

+        <a href="config/host.html">Host</a>, and

+        <a href="config/context.html">Context</a> elements for the virtual hosts

+        and web applications accessible via proxying.</li>

+    <li>Optionally, protect port 8081 with IP filters as described

+        earlier.</li>

+    </ul></li>

+<li>When requests are proxied by Apache, the web server will be recording

+    these requests in its access log.  Therefore, you will generally want to

+    disable any access logging performed by Tomcat itself.</li>

+</ol>

+

+<p>When requests are proxied in this manner, <strong>all</strong> requests

+for the configured web applications will be processed by Tomcat (including

+requests for static content).  You can improve performance by using the

+<code>mod_jk</code> web connector instead of <code>mod_proxy</code>.

+<code>mod_jk</code> can be configured so that the web server serves static

+content that is not processed by filters or security constraints defined

+within the web application's deployment descriptor

+(<code>/WEB-INF/web.xml</code>).</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache 2.0 Proxy Support"><!--()--></a><a name="Apache_2.0_Proxy_Support"><strong>Apache 2.0 Proxy Support</strong></a></font></td></tr><tr><td><blockquote>

+The same instructions hold true as for 1.3. (Except in Apache 2.0,

+you may omit <code>AddModule  mod_proxy.c</code>)

+</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="/tomcat-7.0-doc/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/proxy-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/realm-howto.html b/webapps/docs/realm-howto.html
new file mode 100644
index 0000000..9023185
--- /dev/null
+++ b/webapps/docs/realm-howto.html
@@ -0,0 +1,1217 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Realm Configuration HOW-TO</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><meta name="author" content="Andrew R. Jaquith"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Realm Configuration HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Quick_Start">Quick Start</a></li><li><a href="#Overview">Overview</a><ol><li><a href="#What_is_a_Realm?">What is a Realm?</a></li><li><a href="#Configuring_a_Realm">Configuring a Realm</a></li></ol></li><li><a href="#Common_Features">Common Features</a><ol><li><a href="#Digested_Passwords">Digested Passwords</a></li><li><a href="#Example_Application">Example Application</a></li><li><a href="#Manager_Application">Manager Application</a></li><li><a href="#Realm_Logging">Realm Logging</a></li></ol></li><li><a href="#Standard_Realm_Implementations">Standard Realm Implementations</a><ol><li><a href="#JDBCRealm">JDBCRealm</a></li><li><a href="#DataSourceRealm">DataSourceRealm</a></li><li><a href="#JNDIRealm">JNDIRealm</a></li><li><a href="#UserDatabaseRealm">UserDatabaseRealm</a></li><li><a href="#MemoryRealm">MemoryRealm</a></li><li><a href="#JAASRealm">JAASRealm</a></li><li><a href="#CombinedRealm">CombinedRealm</a></li><li><a href="#LockOutRealm">LockOutRealm</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="Quick Start"><!--()--></a><a name="Quick_Start"><strong>Quick Start</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>This document describes how to configure Tomcat to support <em>container

+managed security</em>, by connecting to an existing "database" of usernames,

+passwords, and user roles.  You only need to care about this if you are using

+a web application that includes one or more

+<code>&lt;security-constraint&gt;</code> elements, and a

+<code>&lt;login-config&gt;</code> element defining how users are required

+to authenticate themselves.  If you are not utilizing these features, you can

+safely skip this document.</p>

+

+<p>For fundamental background information about container managed security,

+see the <a href="http://wiki.apache.org/tomcat/Specifications">Servlet

+Specification (Version 2.4)</a>, Section 12.</p>

+

+<p>For information about utilizing the <em>Single Sign On</em> feature of

+Tomcat (allowing a user to authenticate themselves once across the entire

+set of web applications associated with a virtual host), see

+<a href="config/host.html#Single Sign On">here</a>.</p>

+

+</blockquote></td></tr></table><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>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What is a Realm?"><!--()--></a><a name="What_is_a_Realm?"><strong>What is a Realm?</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>A <strong>Realm</strong> is a "database" of usernames and passwords that

+identify valid users of a web application (or set of web applications), plus

+an enumeration of the list of <em>roles</em> associated with each valid user.

+You can think of roles as similar to <em>groups</em> in Unix-like operating

+systems, because access to specific web application resources is granted to

+all users possessing a particular role (rather than enumerating the list of

+associated usernames).  A particular user can have any number of roles

+associated with their username.</p>

+

+<p>Although the Servlet Specification describes a portable mechanism for

+applications to <em>declare</em> their security requirements (in the

+<code>web.xml</code> deployment descriptor), there is no portable API

+defining the interface between a servlet container and the associated user

+and role information.  In many cases, however, it is desirable to "connect"

+a servlet container to some existing authentication database or mechanism

+that already exists in the production environment.  Therefore, Tomcat

+defines a Java interface (<code>org.apache.catalina.Realm</code>) that

+can be implemented by "plug in" components to establish this connection.

+Five standard plug-ins are provided, supporting connections to various

+sources of authentication information:</p>

+<ul>

+<li><a href="#JDBCRealm">JDBCRealm</a> - Accesses authentication information

+    stored in a relational database, accessed via a JDBC driver.</li>

+<li><a href="#DataSourceRealm">DataSourceRealm</a> - Accesses authentication

+    information stored in a relational database, accessed via a named JNDI

+    JDBC DataSource.</li>

+<li><a href="#JNDIRealm">JNDIRealm</a> - Accesses authentication information

+    stored in an LDAP based directory server, accessed via a JNDI provider.

+    </li>

+<li><a href="#UserDatabaseRealm">UserDatabaseRealm</a> - Accesses authentication

+    information stored in an UserDatabase JNDI resource, which is typically

+    backed by an XML document (<code>conf/tomcat-users.xml</code>).</li>

+<li><a href="#MemoryRealm">MemoryRealm</a> - Accesses authentication

+    information stored in an in-memory object collection, which is initialized

+    from an XML document (<code>conf/tomcat-users.xml</code>).</li>

+<li><a href="#JAASRealm">JAASRealm</a> - Accesses authentication information

+    through the Java Authentication &amp; Authorization Service (JAAS)

+    framework.</li>

+</ul>

+

+<p>It is also possible to write your own <code>Realm</code> implementation,

+and integrate it with Tomcat.  To do so, you need to:

+<ul>

+  <li>Implement <code>org.apache.catalina.Realm</code>,</li>

+  <li>Place your compiled realm in $CATALINA_HOME/lib,</li>

+  <li>Declare your realm as described in the "Configuring a Realm" section below,</li>

+  <li>Declare your realm to the <a href="mbeans-descriptor-howto.html">MBeans Descriptor</a>.</li>

+</ul>

+</p>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring a Realm"><!--()--></a><a name="Configuring_a_Realm"><strong>Configuring a Realm</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Before getting into the details of the standard Realm implementations, it is

+important to understand, in general terms, how a Realm is configured.  In

+general, you will be adding an XML element to your <code>conf/server.xml</code>

+configuration file, that looks something like this:</p>

+

+<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>

+&lt;Realm className="... class name for this implementation"

+       ... other attributes for this implementation .../&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>The <code>&lt;Realm&gt;</code> element can be nested inside any one of

+of the following <code>Container</code> elements.  The location of the

+Realm element has a direct impact on the "scope" of that Realm

+(i.e. which web applications will share the same authentication information):

+</p>

+<ul>

+<li><em>Inside an &lt;Engine&gt; element</em> - This Realm will be shared

+    across ALL web applications on ALL virtual hosts, UNLESS it is overridden

+    by a Realm element nested inside a subordinate <code>&lt;Host&gt;</code>

+    or <code>&lt;Context&gt;</code> element.</li>

+<li><em>Inside a &lt;Host&gt; element</em> - This Realm will be shared across

+    ALL web applications for THIS virtual host, UNLESS it is overridden

+    by a Realm element nested inside a subordinate <code>&lt;Context&gt;</code>

+    element.</li>

+<li><em>Inside a &lt;Context&gt; element</em> - This Realm will be used ONLY

+    for THIS web application.</li>

+</ul>

+

+

+</blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Features"><!--()--></a><a name="Common_Features"><strong>Common Features</strong></a></font></td></tr><tr><td><blockquote>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Digested Passwords"><!--()--></a><a name="Digested_Passwords"><strong>Digested Passwords</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>For each of the standard <code>Realm</code> implementations, the

+user's password (by default) is stored in clear text.  In many

+environments, this is undesirable because casual observers of the

+authentication data can collect enough information to log on

+successfully, and impersonate other users.  To avoid this problem, the

+standard implementations support the concept of <em>digesting</em>

+user passwords.  This allows the stored version of the passwords to be

+encoded (in a form that is not easily reversible), but that the

+<code>Realm</code> implementation can still utilize for

+authentication.</p>

+

+<p>When a standard realm authenticates by retrieving the stored

+password and comparing it with the value presented by the user, you

+can select digested passwords by specifying the <code>digest</code>

+attribute on your <code>&lt;Realm&gt;</code> element.  The value for

+this attribute must be one of the digest algorithms supported by the

+<code>java.security.MessageDigest</code> class (SHA, MD2, or MD5).

+When you select this option, the contents of the password that is

+stored in the <code>Realm</code> must be the cleartext version of the

+password, as digested by the specified algorithm.</p>

+

+<p>When the <code>authenticate()</code> method of the Realm is called, the

+(cleartext) password specified by the user is itself digested by the same

+algorithm, and the result is compared with the value returned by the

+<code>Realm</code>.  An equal match implies that the cleartext version of the

+original password is the same as the one presented by the user, so that this

+user should be authorized.</p>

+

+<p>To calculate the digested value of a cleartext password, two convenience

+techniques are supported:</p>

+<ul>

+<li>If you are writing an application that needs to calculate digested

+    passwords dynamically, call the static <code>Digest()</code> method of the

+    <code>org.apache.catalina.realm.RealmBase</code> class, passing the

+    cleartext password and the digest algorithm name as arguments.  This

+    method will return the digested password.</li>

+<li>If you want to execute a command line utility to calculate the digested

+    password, simply execute

+<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>CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} {cleartext-password}

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    and the digested version of this cleartext password will be returned to

+    standard output.</li>

+</ul>

+

+<p>If using digested passwords with DIGEST authentication, the cleartext used

+   to generate the digest is different and the digest must use the MD5

+   algorithm. In the examples above <code>{cleartext-password}</code> must be

+   replaced with <code>{username}:{realm}:{cleartext-password}</code>. For

+   example, in a development environment this might take the form

+   <code>testUser:Authentication required:testPassword</code>. The value for

+   <code>{realm}</code> is taken from the <code>&lt;realm-name&gt;</code>

+   element of the web application's <code>&lt;login-config&gt;</code>. If

+   not specified in web.xml, the default value of <code>Authentication

+   required</code> is used.</p>

+

+<p>Non-ASCII usernames and/or passwords are supported using

+<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>CATALINA_HOME/bin/digest.[bat|sh] -a {algorithm} -e {encoding} {input}

+</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>

+but care is required to ensure that the non-ASCII input is

+correctly passed to the digester.

+The digester returns <code>{input}:{digest}</code>. If the input appears

+corrupted in the return, the digest will be invalid.</p>

+

+</blockquote></td></tr></table>

+

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Example Application"><!--()--></a><a name="Example_Application"><strong>Example Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The example application shipped with Tomcat includes an area that is

+protected by a security constraint, utilizing form-based login.  To access it,

+point your browser at

+<a href="http://localhost:8080/examples/jsp/security/protected/">http://localhost:8080/examples/jsp/security/protected/</a>

+and log on with one of the usernames and passwords described for the default

+<a href="#UserDatabaseRealm">UserDatabaseRealm</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="Manager Application"><!--()--></a><a name="Manager_Application"><strong>Manager Application</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>If you wish to use the <a href="manager-howto.html">Manager Application</a>

+to deploy and undeploy applications in a running Tomcat installation, you

+MUST add the "manager-gui" role to at least one username in your selected

+Realm implementation.  This is because the manager web application itself uses a

+security constraint that requires role "manager-gui" to access ANY request URI

+within the HTML interface of that application.</p>

+

+<p>For security reasons, no username in the default Realm (i.e. using

+<code>conf/tomcat-users.xml</code> is assigned the "manager-gui" role.

+Therefore, no one will be able to utilize the features of this application

+until the Tomcat administrator specifically assigns this role to one or more

+users.</p>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Realm Logging"><!--()--></a><a name="Realm_Logging"><strong>Realm Logging</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Debugging and exception messages logged by a <code>Realm</code> will

+   be recorded by the logging configuration associated with the container

+   for the realm: its surrounding <a href="config/context.html">Context</a>,

+   <a href="config/host.html">Host</a>, or

+   <a href="config/engine.html">Engine</a>.</p>

+

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Realm Implementations"><!--()--></a><a name="Standard_Realm_Implementations"><strong>Standard Realm Implementations</strong></a></font></td></tr><tr><td><blockquote>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDBCRealm"><strong>JDBCRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+<h3>Introduction</h3>

+

+<p><strong>JDBCRealm</strong> is an implementation of the Tomcat

+<code>Realm</code> interface that looks up users in a relational database

+accessed via a JDBC driver.  There is substantial configuration flexibility

+that lets you adapt to existing table and column names, as long as your

+database structure conforms to the following requirements:</p>

+<ul>

+<li>There must be a table, referenced below as the <em>users</em> table,

+    that contains one row for every valid user that this <code>Realm</code>

+    should recognize.</li>

+<li>The <em>users</em> table must contain at least two columns (it may

+    contain more if your existing applications required it):

+    <ul>

+    <li>Username to be recognized by Tomcat when the user logs in.</li>

+    <li>Password to be recognized by Tomcat when the user logs in.

+        This value may in cleartext or digested - see below for more

+        information.</li>

+    </ul></li>

+<li>There must be a table, referenced below as the <em>user roles</em> table,

+    that contains one row for every valid role that is assigned to a

+    particular user.  It is legal for a user to have zero, one, or more than

+    one valid role.</li>

+<li>The <em>user roles</em> table must contain at least two columns (it may

+    contain more if your existing applications required it):

+    <ul>

+    <li>Username to be recognized by Tomcat (same value as is specified

+        in the <em>users</em> table).</li>

+    <li>Role name of a valid role associated with this user.</li>

+    </ul></li>

+</ul>

+

+<h3>Quick Start</h3>

+

+<p>To set up Tomcat to use JDBCRealm, you will need to follow these steps:</p>

+<ol>

+<li>If you have not yet done so, create tables and columns in your database

+    that conform to the requirements described above.</li>

+<li>Configure a database username and password for use by Tomcat, that has

+    at least read only access to the tables described above.  (Tomcat will

+    never attempt to write to these tables.)</li>

+<li>Place a copy of the JDBC driver you will be using inside the

+    <code>$CATALINA_HOME/lib</code> directory.

+    Note that <strong>only</strong> JAR files are recognized!</li>

+<li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your

+    <code>$CATALINA_BASE/conf/server.xml</code> file.</li>

+<li>Restart Tomcat if it is already running.</li>

+</ol>

+

+<h3>Realm Element Attributes</h3>

+

+<p>To configure JDBCRealm, you will create a <code>&lt;Realm&gt;</code>

+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,

+as described <a href="#Configuring a Realm">above</a>. The attributes for the

+JDBCRealm are defined in the <a href="config/realm.html">Realm</a> configuration

+documentation.</p>

+

+<h3>Example</h3>

+

+<p>An example SQL script to create the needed tables might look something

+like this (adapt the syntax as required for your particular database):</p>

+<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>

+create table users (

+  user_name         varchar(15) not null primary key,

+  user_pass         varchar(15) not null

+);

+

+create table user_roles (

+  user_name         varchar(15) not null,

+  role_name         varchar(15) not null,

+  primary key (user_name, role_name)

+);

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Example <code>Realm</code> elements are included (commented out) in the

+default <code>$CATALINA_BASE/conf/server.xml</code> file.  Here's an example

+for using a MySQL database called "authority", configured with the tables

+described above, and accessed with username "dbuser" and password "dbpass":</p>

+<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>

+&lt;Realm className="org.apache.catalina.realm.JDBCRealm"

+      driverName="org.gjt.mm.mysql.Driver"

+   connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;amp;password=dbpass"

+       userTable="users" userNameCol="user_name" userCredCol="user_pass"

+   userRoleTable="user_roles" roleNameCol="role_name"/&gt;

+</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>

+

+<h3>Additional Notes</h3>

+

+<p>JDBCRealm operates according to the following rules:</p>

+<ul>

+<li>When a user attempts to access a protected resource for the first time,

+    Tomcat will call the <code>authenticate()</code> method of this

+    <code>Realm</code>.  Thus, any changes you have made to the database

+    directly (new users, changed passwords or roles, etc.) will be immediately

+    reflected.</li>

+<li>Once a user has been authenticated, the user (and his or her associated

+    roles) are cached within Tomcat for the duration of the user's login.

+    (For FORM-based authentication, that means until the session times out or

+    is invalidated; for BASIC authentication, that means until the user

+    closes their browser).  The cached user is <strong>not</strong> saved and

+    restored across sessions serialisations. Any changes to the database

+    information for an already authenticated user will <strong>not</strong> be

+    reflected until the next time that user logs on again.</li>

+<li>Administering the information in the <em>users</em> and <em>user roles</em>

+    table is the responsibility of your own applications.  Tomcat does not

+    provide any built-in capabilities to maintain users and roles.</li>

+</ul>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="DataSourceRealm"><strong>DataSourceRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+<h3>Introduction</h3>

+

+<p><strong>DataSourceRealm</strong> is an implementation of the Tomcat

+<code>Realm</code> interface that looks up users in a relational database

+accessed via a JNDI named JDBC DataSource.  There is substantial configuration

+flexibility that lets you adapt to existing table and column names, as long

+as your database structure conforms to the following requirements:</p>

+<ul>

+<li>There must be a table, referenced below as the <em>users</em> table,

+    that contains one row for every valid user that this <code>Realm</code>

+    should recognize.</li>

+<li>The <em>users</em> table must contain at least two columns (it may

+    contain more if your existing applications required it):

+    <ul>

+    <li>Username to be recognized by Tomcat when the user logs in.</li>

+    <li>Password to be recognized by Tomcat when the user logs in.

+        This value may in cleartext or digested - see below for more

+        information.</li>

+    </ul></li>

+<li>There must be a table, referenced below as the <em>user roles</em> table,

+    that contains one row for every valid role that is assigned to a

+    particular user.  It is legal for a user to have zero, one, or more than

+    one valid role.</li>

+<li>The <em>user roles</em> table must contain at least two columns (it may

+    contain more if your existing applications required it):

+    <ul>

+    <li>Username to be recognized by Tomcat (same value as is specified

+        in the <em>users</em> table).</li>

+    <li>Role name of a valid role associated with this user.</li>

+    </ul></li>

+</ul>

+

+<h3>Quick Start</h3>

+

+<p>To set up Tomcat to use DataSourceRealm, you will need to follow these steps:</p>

+<ol>

+<li>If you have not yet done so, create tables and columns in your database

+    that conform to the requirements described above.</li>

+<li>Configure a database username and password for use by Tomcat, that has

+    at least read only access to the tables described above.  (Tomcat will

+    never attempt to write to these tables.)</li>

+<li>Configure a JNDI named JDBC DataSource for your database.  Refer to the

+    <a href="jndi-datasource-examples-howto.html">JNDI DataSource Example HOW-TO</a>

+    for information on how to configure a JNDI named JDBC DataSource.</li>

+<li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your

+    <code>$CATALINA_BASE/conf/server.xml</code> file.</li>

+<li>Restart Tomcat if it is already running.</li>

+</ol>

+

+<h3>Realm Element Attributes</h3>

+

+<p>To configure DataSourceRealm, you will create a <code>&lt;Realm&gt;</code>

+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,

+as described <a href="#Configuring a Realm">above</a>. The attributes for the

+DataSourceRealm are defined in the <a href="config/realm.html">Realm</a>

+configuration documentation.</p>

+

+<h3>Example</h3>

+

+<p>An example SQL script to create the needed tables might look something

+like this (adapt the syntax as required for your particular database):</p>

+<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>

+create table users (

+  user_name         varchar(15) not null primary key,

+  user_pass         varchar(15) not null

+);

+

+create table user_roles (

+  user_name         varchar(15) not null,

+  role_name         varchar(15) not null,

+  primary key (user_name, role_name)

+);

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Here is an example for using a MySQL database called "authority", configured

+with the tables described above, and accessed with the JNDI JDBC DataSource with

+name "java:/comp/env/jdbc/authority".</p>

+<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>

+&lt;Realm className="org.apache.catalina.realm.DataSourceRealm"

+   dataSourceName="jdbc/authority"

+   userTable="users" userNameCol="user_name" userCredCol="user_pass"

+   userRoleTable="user_roles" roleNameCol="role_name"/&gt;

+</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>

+

+<h3>Additional Notes</h3>

+

+<p>DataSourceRealm operates according to the following rules:</p>

+<ul>

+<li>When a user attempts to access a protected resource for the first time,

+    Tomcat will call the <code>authenticate()</code> method of this

+    <code>Realm</code>.  Thus, any changes you have made to the database

+    directly (new users, changed passwords or roles, etc.) will be immediately

+    reflected.</li>

+<li>Once a user has been authenticated, the user (and his or her associated

+    roles) are cached within Tomcat for the duration of the user's login.

+    (For FORM-based authentication, that means until the session times out or

+    is invalidated; for BASIC authentication, that means until the user

+    closes their browser).  The cached user is <strong>not</strong> saved and

+    restored across sessions serialisations. Any changes to the database

+    information for an already authenticated user will <strong>not</strong> be

+    reflected until the next time that user logs on again.</li>

+<li>Administering the information in the <em>users</em> and <em>user roles</em>

+    table is the responsibility of your own applications.  Tomcat does not

+    provide any built-in capabilities to maintain users and roles.</li>

+</ul>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JNDIRealm"><strong>JNDIRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+<h3>Introduction</h3>

+

+<p><strong>JNDIRealm</strong> is an implementation of the Tomcat

+<code>Realm</code> interface that looks up users in an LDAP directory

+server accessed by a JNDI provider (typically, the standard LDAP

+provider that is available with the JNDI API classes). The realm

+supports a variety of approaches to using a directory for

+authentication.</p>

+

+<h4>Connecting to the directory</h4>

+

+<p>The realm's connection to the directory is defined by the

+<strong>connectionURL</strong> configuration attribute. This is a URL

+whose format is defined by the JNDI provider. It is usually an LDAP

+URL that specifies the domain name of the directory server to connect

+to, and optionally the port number and distinguished name (DN) of the

+required root naming context.</p>

+

+<p>If you have more than one provider you can configure an

+<strong>alternateURL</strong>.  If a socket connection can not be

+made to the provider at the <strong>connectionURL</strong> an

+attempt will be made to use the <strong>alternateURL</strong>.</p>

+

+<p>When making a connection in order to search the directory and

+retrieve user and role information, the realm authenticates itself to

+the directory with the username and password specified by the

+<strong>connectionName</strong> and

+<strong>connectionPassword</strong> properties. If these properties

+are not specified the connection is anonymous. This is sufficient in

+many cases.

+</p>

+

+

+<h4>Selecting the user's directory entry</h4>

+

+<p>Each user that can be authenticated must be represented in the

+directory by an individual entry that corresponds to an element in the

+initial <code>DirContext</code> defined by the

+<strong>connectionURL</strong> attribute. This user entry must have an

+attribute containing the username that is presented for

+authentication.</p>

+

+<p>Often the distinguished name of the user's entry contains the

+username presented for authentication but is otherwise the same for

+all users. In this case the <strong>userPattern</strong> attribute may

+be used to specify the DN, with "{0}" marking where

+the username should be substituted.</p>

+

+<p>Otherwise the realm must search the directory to find a unique entry

+containing the username. The following attributes configure this

+search:

+

+     <ul>

+     <li><strong>userBase</strong> - the entry that is the base of

+         the subtree containing users.  If not specified, the search

+         base is the top-level context.</li>

+

+     <li><strong>userSubtree</strong> - the search scope. Set to

+         <code>true</code> if you wish to search the entire subtree

+         rooted at the <strong>userBase</strong> entry. The default value

+         of <code>false</code> requests a single-level search

+         including only the top level.</li>

+

+     <li><strong>userSearch</strong> - pattern specifying the LDAP

+         search filter to use after substitution of the username.</li>

+

+    </ul>

+</p>

+

+

+<h4>Authenticating the user</h4>

+

+<ul>

+<li>

+<p><b>Bind mode</b></p>

+

+<p>By default the realm authenticates a user by binding to

+the directory with the DN of the entry for that user and the password

+presented by the user. If this simple bind succeeds the user is considered to

+be authenticated.</p>

+

+<p>For security reasons a directory may store a digest of the user's

+password rather than the clear text version (see <a href="#Digested Passwords">Digested Passwords</a> for more information). In that case,

+as part of the simple bind operation the directory automatically

+computes the correct digest of the plaintext password presented by the

+user before validating it against the stored value. In bind mode,

+therefore, the realm is not involved in digest processing. The

+<strong>digest</strong> attribute is not used, and will be ignored if

+set.</p>

+</li>

+

+<li>

+<p><b>Comparison mode</b></p>

+<p>Alternatively, the realm may retrieve the stored

+password from the directory and compare it explicitly with the value

+presented by the user. This mode is configured by setting the

+<strong>userPassword</strong> attribute to the name of a directory

+attribute in the user's entry that contains the password.</p>

+

+<p>Comparison mode has some disadvantages. First, the

+<strong>connectionName</strong> and

+<strong>connectionPassword</strong> attributes must be configured to

+allow the realm to read users' passwords in the directory. For

+security reasons this is generally undesirable; indeed many directory

+implementations will not allow even the directory manager to read

+these passwords. In addition, the realm must handle password digests

+itself, including variations in the algorithms used and ways of

+representing password hashes in the directory. However, the realm may

+sometimes need access to the stored password, for example to support

+HTTP Digest Access Authentication (RFC 2069). (Note that HTTP digest

+authentication is different from the storage of password digests in

+the repository for user information as discussed above).

+</p>

+</li>

+</ul>

+

+<h4>Assigning roles to the user</h4>

+

+<p>The directory realm supports two approaches to the representation

+of roles in the directory:</p>

+

+<ul>

+<li>

+<p><b>Roles as explicit directory entries</b></p>

+

+<p>Roles may be represented by explicit directory entries. A role

+entry is usually an LDAP group entry with one attribute

+containing the name of the role and another whose values are the

+distinguished names or usernames of the users in that role.  The

+following attributes configure a directory search to

+find the names of roles associated with the authenticated user:</p>

+

+<ul>

+<li><strong>roleBase</strong> - the base entry for the role search.

+    If not specified, the search base is the top-level directory

+    context.</li>

+

+<li><strong>roleSubtree</strong> - the search

+    scope. Set to <code>true</code> if you wish to search the entire

+    subtree rooted at the <code>roleBase</code> entry. The default

+    value of <code>false</code> requests a single-level search

+    including the top level only.</li>

+

+<li><strong>roleSearch</strong> - the LDAP search filter for

+    selecting role entries. It optionally includes pattern

+    replacements "{0}" for the distinguished name and/or "{1}" for the

+    username and/or "{2}" for an attribute from user's directory entry,

+    of the authenticated user. Use <strong>userRoleAttribute</strong> to

+    specify the name of the attribute that provides the value for "{2}".</li>

+

+<li><strong>roleName</strong> - the attribute in a role entry

+     containing the name of that role.</li>

+

+<li><strong>roleNested</strong> - enable nested roles. Set to

+     <code>true</code> if you want to nest roles in roles. If configured, then

+     every newly found roleName and distinguished

+     Name will be recursively tried for a new role search.

+     The default value is <code>false</code>.</li>

+

+</ul>

+

+</li>

+</ul>

+

+<ul>

+<li>

+<p><b>Roles as an attribute of the user entry</b></p>

+

+<p>Role names may also be held as the values of an attribute in the

+user's directory entry. Use <strong>userRoleName</strong> to specify

+the name of this attribute.</p>

+

+</li>

+</ul>

+<p>A combination of both approaches to role representation may be used.</p>

+

+<h3>Quick Start</h3>

+

+<p>To set up Tomcat to use JNDIRealm, you will need to follow these steps:</p>

+<ol>

+<li>Make sure your directory server is configured with a schema that matches

+    the requirements listed above.</li>

+<li>If required, configure a username and password for use by Tomcat, that has

+    read only access to the information described above.  (Tomcat will

+    never attempt to modify this information.)</li>

+<li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your

+    <code>$CATALINA_BASE/conf/server.xml</code> file.</li>

+<li>Restart Tomcat if it is already running.</li>

+</ol>

+

+<h3>Realm Element Attributes</h3>

+

+<p>To configure JNDIRealm, you will create a <code>&lt;Realm&gt;</code>

+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,

+as described <a href="#Configuring a Realm">above</a>. The attributes for the

+JNDIRealm are defined in the <a href="config/realm.html">Realm</a> configuration

+documentation.</p>

+

+<h3>Example</h3>

+

+<p>Creation of the appropriate schema in your directory server is beyond the

+scope of this document, because it is unique to each directory server

+implementation.  In the examples below, we will assume that you are using a

+distribution of the OpenLDAP directory server (version 2.0.11 or later), which

+can be downloaded from

+<a href="http://www.openldap.org">http://www.openldap.org</a>.  Assume that

+your <code>slapd.conf</code> file contains the following settings

+(among others):</p>

+<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>

+database ldbm

+suffix dc="mycompany",dc="com"

+rootdn "cn=Manager,dc=mycompany,dc=com"

+rootpw secret

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>We will assume for <code>connectionURL</code> that the directory

+server runs on the same machine as Tomcat.  See <a href="http://java.sun.com/products/jndi/docs.html">http://java.sun.com/products/jndi/docs.html</a>

+for more information about configuring and using the JNDI LDAP

+provider.</p>

+

+<p>Next, assume that this directory server has been populated with elements

+as shown below (in LDIF format):</p>

+

+<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>

+

+# Define top-level entry

+dn: dc=mycompany,dc=com

+objectClass: dcObject

+dc:mycompany

+

+# Define an entry to contain people

+# searches for users are based on this entry

+dn: ou=people,dc=mycompany,dc=com

+objectClass: organizationalUnit

+ou: people

+

+# Define a user entry for Janet Jones

+dn: uid=jjones,ou=people,dc=mycompany,dc=com

+objectClass: inetOrgPerson

+uid: jjones

+sn: jones

+cn: janet jones

+mail: j.jones@mycompany.com

+userPassword: janet

+

+# Define a user entry for Fred Bloggs

+dn: uid=fbloggs,ou=people,dc=mycompany,dc=com

+objectClass: inetOrgPerson

+uid: fbloggs

+sn: bloggs

+cn: fred bloggs

+mail: f.bloggs@mycompany.com

+userPassword: fred

+

+# Define an entry to contain LDAP groups

+# searches for roles are based on this entry

+dn: ou=groups,dc=mycompany,dc=com

+objectClass: organizationalUnit

+ou: groups

+

+# Define an entry for the "tomcat" role

+dn: cn=tomcat,ou=groups,dc=mycompany,dc=com

+objectClass: groupOfUniqueNames

+cn: tomcat

+uniqueMember: uid=jjones,ou=people,dc=mycompany,dc=com

+uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

+

+# Define an entry for the "role1" role

+dn: cn=role1,ou=groups,dc=mycompany,dc=com

+objectClass: groupOfUniqueNames

+cn: role1

+uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>An example <code>Realm</code> element for the OpenLDAP directory

+server configured as described above might look like this, assuming

+that users use their uid (e.g. jjones) to login to the

+application and that an anonymous connection is sufficient to search

+the directory and retrieve role information:</p>

+

+<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>

+&lt;Realm   className="org.apache.catalina.realm.JNDIRealm"

+     connectionURL="ldap://localhost:389"

+       userPattern="uid={0},ou=people,dc=mycompany,dc=com"

+          roleBase="ou=groups,dc=mycompany,dc=com"

+          roleName="cn"

+        roleSearch="(uniqueMember={0})"

+/&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>With this configuration, the realm will determine the user's

+distinguished name by substituting the username into the

+<code>userPattern</code>, authenticate by binding to the directory

+with this DN and the password received from the user, and search the

+directory to find the user's roles.</p>

+

+<p>Now suppose that users are expected to enter their email address

+rather than their userid when logging in. In this case the realm must

+search the directory for the user's entry. (A search is also necessary

+when user entries are held in multiple subtrees corresponding perhaps

+to different organizational units or company locations).</p>

+

+<p>Further, suppose that in addition to the group entries you want to

+use an attribute of the user's entry to hold roles. Now the entry for

+Janet Jones might read as follows:</p>

+

+<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>

+dn: uid=jjones,ou=people,dc=mycompany,dc=com

+objectClass: inetOrgPerson

+uid: jjones

+sn: jones

+cn: janet jones

+mail: j.jones@mycompany.com

+memberOf: role2

+memberOf: role3

+userPassword: janet

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p> This realm configuration would satisfy the new requirements:</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>

+&lt;Realm   className="org.apache.catalina.realm.JNDIRealm"

+     connectionURL="ldap://localhost:389"

+          userBase="ou=people,dc=mycompany,dc=com"

+        userSearch="(mail={0})"

+      userRoleName="memberOf"

+          roleBase="ou=groups,dc=mycompany,dc=com"

+          roleName="cn"

+        roleSearch="(uniqueMember={0})"

+/&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>Now when Janet Jones logs in as "j.jones@mycompany.com", the realm

+searches the directory for a unique entry with that value as its mail

+attribute and attempts to bind to the directory as

+<code>uid=jjones,ou=people,dc=mycompany,dc=com</code> with the given

+password. If authentication succeeds, she is assigned three roles:

+"role2" and "role3", the values of the "memberOf" attribute in her

+directory entry, and "tomcat", the value of the "cn" attribute in the

+only group entry of which she is a member.</p>

+

+<p>Finally, to authenticate the user by retrieving

+the password from the directory and making a local comparison in the

+realm, you might use a realm configuration like this:</p>

+

+<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>

+&lt;Realm   className="org.apache.catalina.realm.JNDIRealm"

+    connectionName="cn=Manager,dc=mycompany,dc=com"

+connectionPassword="secret"

+     connectionURL="ldap://localhost:389"

+      userPassword="userPassword"

+       userPattern="uid={0},ou=people,dc=mycompany,dc=com"

+          roleBase="ou=groups,dc=mycompany,dc=com"

+          roleName="cn"

+        roleSearch="(uniqueMember={0})"

+/&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>However, as discussed above, the default bind mode for

+authentication is usually to be preferred.</p>

+

+<h3>Additional Notes</h3>

+

+<p>JNDIRealm operates according to the following rules:</p>

+<ul>

+<li>When a user attempts to access a protected resource for the first time,

+    Tomcat will call the <code>authenticate()</code> method of this

+    <code>Realm</code>.  Thus, any changes you have made to the directory

+    (new users, changed passwords or roles, etc.) will be immediately

+    reflected.</li>

+<li>Once a user has been authenticated, the user (and his or her associated

+    roles) are cached within Tomcat for the duration of the user's login.

+    (For FORM-based authentication, that means until the session times out or

+    is invalidated; for BASIC authentication, that means until the user

+    closes their browser).  The cached user is <strong>not</strong> saved and

+    restored across sessions serialisations. Any changes to the directory

+    information for an already authenticated user will <strong>not</strong> be

+    reflected until the next time that user logs on again.</li>

+<li>Administering the information in the directory server

+    is the responsibility of your own applications.  Tomcat does not

+    provide any built-in capabilities to maintain users and roles.</li>

+</ul>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="UserDatabaseRealm"><strong>UserDatabaseRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+<h3>Introduction</h3>

+

+<p><strong>UserDatabaseRealm</strong> is an implementation of the Tomcat

+<code>Realm</code> interface that uses a JNDI resource to store user

+information. By default, the JNDI resource is backed by an XML file. It is not

+designed for large-scale production use. At startup time, the UserDatabaseRealm

+loads information about all users, and their corresponding roles, from an XML

+document (by default, this document is loaded from

+<code>$CATALINA_BASE/conf/tomcat-users.xml</code>). The users, their passwords

+and their roles may all be editing dynamically, typically via JMX. Changes may

+be saved and will be reflected in the XML file.</p>

+

+<h3>Realm Element Attributes</h3>

+

+<p>To configure UserDatabaseRealm, you will create a <code>&lt;Realm&gt;</code>

+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,

+as described <a href="#Configuring a Realm">above</a>. The attributes for the

+UserDatabaseRealm are defined in the <a href="config/realm.html">Realm</a>

+configuration documentation.</p>

+

+<h3>User File Format</h3>

+

+<p>The users file uses the same format as the

+<a href="#MemoryRealm">MemoryRealm</a>.</p>

+

+<h3>Example</h3>

+

+<p>The default installation of Tomcat is configured with a UserDatabaseRealm

+nested inside the <code>&lt;Engine&gt;</code> element, so that it applies

+to all virtual hosts and web applications.  The default contents of the

+<code>conf/tomcat-users.xml</code> file is:</p>

+<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>

+&lt;tomcat-users&gt;

+  &lt;user name="tomcat" password="tomcat" roles="tomcat" /&gt;

+  &lt;user name="role1"  password="tomcat" roles="role1"  /&gt;

+  &lt;user name="both"   password="tomcat" roles="tomcat,role1" /&gt;

+&lt;/tomcat-users&gt;

+</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>

+

+<h3>Additional Notes</h3>

+

+<p>UserDatabaseRealm operates according to the following rules:</p>

+<ul>

+<li>When Tomcat first starts up, it loads all defined users and their

+    associated information from the users file. Changes made to the data in

+    this file will <strong>not</strong> be recognized until Tomcat is

+    restarted. Changes may be made via the UserDatabase resource. Tomcat

+    provides MBeans that may be accessed via JMX for this purpose.</li>

+<li>When a user attempts to access a protected resource for the first time,

+    Tomcat will call the <code>authenticate()</code> method of this

+    <code>Realm</code>.</li>

+<li>Once a user has been authenticated, the user (and his or her associated

+    roles) are cached within Tomcat for the duration of the user's login.

+    (For FORM-based authentication, that means until the session times out or

+    is invalidated; for BASIC authentication, that means until the user

+    closes their browser).  The cached user is <strong>not</strong> saved and

+    restored across sessions serialisations.</li>

+</ul>

+

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="MemoryRealm"><strong>MemoryRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+<h3>Introduction</h3>

+

+<p><strong>MemoryRealm</strong> is a simple demonstration implementation of the

+Tomcat <code>Realm</code> interface.  It is not designed for production use.

+At startup time, MemoryRealm loads information about all users, and their

+corresponding roles, from an XML document (by default, this document is loaded

+from <code>$CATALINA_BASE/conf/tomcat-users.xml</code>).  Changes to the data

+in this file are not recognized until Tomcat is restarted.</p>

+

+<h3>Realm Element Attributes</h3>

+

+<p>To configure MemoryRealm, you will create a <code>&lt;Realm&gt;</code>

+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,

+as described <a href="#Configuring a Realm">above</a>. The attributes for the

+MemoryRealm are defined in the <a href="config/realm.html">Realm</a>

+configuration documentation.</p>

+

+<h3>User File Format</h3>

+

+<p>The users file (by default, <code>conf/tomcat-users.xml</code> must be an

+XML document, with a root element <code>&lt;tomcat-users&gt;</code>.  Nested

+inside the root element will be a <code>&lt;user&gt;</code> element for each

+valid user, consisting of the following attributes:</p>

+<ul>

+<li><strong>name</strong> - Username this user must log on with.</li>

+<li><strong>password</strong> - Password this user must log on with (in

+    clear text if the <code>digest</code> attribute was not set on the

+    <code>&lt;Realm&gt;</code> element, or digested appropriately as

+    described <a href="#Digested Passwords">here</a> otherwise).</li>

+<li><strong>roles</strong> - Comma-delimited list of the role names

+    associated with this user.</li>

+</ul>

+

+<h3>Additional Notes</h3>

+

+<p>MemoryRealm operates according to the following rules:</p>

+<ul>

+<li>When Tomcat first starts up, it loads all defined users and their

+    associated information from the users file.  Changes to the data in

+    this file will <strong>not</strong> be recognized until Tomcat is

+    restarted.</li>

+<li>When a user attempts to access a protected resource for the first time,

+    Tomcat will call the <code>authenticate()</code> method of this

+    <code>Realm</code>.</li>

+<li>Once a user has been authenticated, the user (and his or her associated

+    roles) are cached within Tomcat for the duration of the user's login.

+    (For FORM-based authentication, that means until the session times out or

+    is invalidated; for BASIC authentication, that means until the user

+    closes their browser).  The cached user is <strong>not</strong> saved and

+    restored across sessions serialisations.</li>

+<li>Administering the information in the users file is the responsibility

+    of your application.  Tomcat does not

+    provide any built-in capabilities to maintain users and roles.</li>

+</ul>

+

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JAASRealm"><strong>JAASRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+<h3>Introduction</h3>

+

+        <p><strong>JAASRealm</strong> is an implementation of the Tomcat

+6 <code>Realm</code> interface that authenticates users through the Java

+Authentication &amp; Authorization Service (JAAS) framework which is now

+provided as part of the standard Java SE API.</p>

+        <p>Using JAASRealm gives the developer the ability to combine

+practically any conceivable security realm with Tomcat's CMA. </p>

+        <p>JAASRealm is prototype for Tomcat of the JAAS-based

+J2EE authentication framework for J2EE v1.4, based on the <a href="http://www.jcp.org/en/jsr/detail?id=196">JCP Specification

+Request 196</a> to enhance container-managed security and promote

+'pluggable' authentication mechanisms whose implementations would be

+container-independent.

+        </p>

+        <p>Based on the JAAS login module and principal (see <code>javax.security.auth.spi.LoginModule</code>

+and <code>javax.security.Principal</code>), you can develop your own

+security mechanism or wrap another third-party mechanism for

+integration with the CMA as implemented by Tomcat.

+        </p>

+

+        <h3>Quick Start</h3>

+        <p>To set up Tomcat to use JAASRealm with your own JAAS login module,

+ you will need to follow these steps:</p>

+        <ol>

+          <li>Write your own LoginModule, User and Role classes based

+on JAAS (see

+<a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/tutorials/GeneralAcnOnly.html">the

+JAAS Authentication Tutorial</a> and

+<a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/JAASLMDevGuide.html">the JAAS Login Module

+Developer's Guide</a>) to be managed by the JAAS Login

+Context (<code>javax.security.auth.login.LoginContext</code>)

+When developing your LoginModule, note that JAASRealm's built-in <code>CallbackHandler</code>

+only recognizes the <code>NameCallback</code> and <code>PasswordCallback</code> at present.

+          </li>

+          <li>Although not specified in JAAS, you should create

+seperate classes to distinguish between users and roles, extending <code>javax.security.Principal</code>,

+so that Tomcat can tell which Principals returned from your login

+module are users and which are roles (see <code>org.apache.catalina.realm.JAASRealm</code>).

+Regardless, the first Principal returned is <em>always</em> treated as the user Principal.

+          </li>

+          <li>Place the compiled classes on Tomcat's classpath

+          </li>

+          <li>Set up a login.config file for Java (see <a href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jaas/tutorials/LoginConfigFile.html">JAAS

+LoginConfig file</a>) and tell Tomcat where to find it by specifying

+its location to the JVM, for instance by setting the environment

+variable: <code>JAVA_OPTS=$JAVA_OPTS -Djava.security.auth.login.config==$CATALINA_BASE/conf/jaas.config</code></li>

+

+          <li>Configure your security-constraints in your web.xml for

+the resources you want to protect</li>

+          <li>Configure the JAASRealm module in your server.xml </li>

+          <li>Restart Tomcat if it is already running.</li>

+        </ol>

+        <h3>Realm Element Attributes</h3>

+        <p>To configure JAASRealm as for step 6 above, you create

+a <code>&lt;Realm&gt;</code> element and nest it in your

+<code>$CATALINA_BASE/conf/server.xml</code>

+file within your <code>&lt;Engine&gt;</code> node. The attributes for the

+JAASRealm are defined in the <a href="config/realm.html">Realm</a>

+configuration documentation.</p>

+

+<h3>Example</h3>

+

+<p>Here is an example of how your server.xml snippet should look.</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>

+&lt;Realm className="org.apache.catalina.realm.JAASRealm"

+                appName="MyFooRealm"

+    userClassNames="org.foobar.realm.FooUser"

+     roleClassNames="org.foobar.realm.FooRole"/&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>It is the responsibility of your login module to create and save User and

+Role objects representing Principals for the user

+(<code>javax.security.auth.Subject</code>). If your login module doesn't

+create a user object but also doesn't throw a login exception, then the

+Tomcat CMA will break and you will be left at the

+http://localhost:8080/myapp/j_security_check URI or at some other

+unspecified location.</p>

+

+        <p>The flexibility of the JAAS approach is two-fold: </p>

+        <ul>

+          <li>you can carry out whatever processing you require behind

+the scenes in your own login module.</li>

+          <li>you can plug in a completely different LoginModule by changing the configuration

+and restarting the server, without any code changes to your application.</li>

+        </ul>

+

+        <h3>Additional Notes</h3>

+        <ul>

+          <li>When a user attempts to access a protected resource for

+              the first time, Tomcat will call the <code>authenticate()</code>

+              method of this <code>Realm</code>.  Thus, any changes you have made in

+              the security mechanism directly (new users, changed passwords or

+              roles, etc.) will be immediately reflected.</li>

+          <li>Once a user has been authenticated, the user (and his or

+              her associated roles) are cached within Tomcat for the duration of

+              the user's login.  For FORM-based authentication, that means until

+              the session times out or is invalidated; for BASIC authentication,

+              that means until the user closes their browser.  Any changes to the

+              security information for an already authenticated user will <strong>not</strong>

+              be reflected until the next time that user logs on again.</li>

+          <li>As with other <code>Realm</code> implementations, digested passwords

+              are supported if the <code>&lt;Realm&gt;</code> element in <code>server.xml</code>

+              contains a <code>digest</code> attribute; JAASRealm's <code>CallbackHandler</code>

+              will digest the password prior to passing it back to the <code>LoginModule</code></li>

+        </ul>

+

+</blockquote></td></tr></table>

+

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="CombinedRealm"><strong>CombinedRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <h3>Introduction</h3>

+

+    <p><strong>CombinedRealm</strong> is an implementation of the Tomcat

+    <code>Realm</code> interface that authenticates users through one or more

+    sub-Realms.</p>

+

+    <p>Using CombinedRealm gives the developer the ability to combine multiple

+    Realms of the same or different types. This can be used to authenticate

+    against different sources, provide fall back in case one Realm fails or for

+    any other purpose that requires multiple Realms.</p>

+

+    <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the

+    <code>Realm</code> element that defines the CombinedRealm. Authentication

+    will be attempted against each <code>Realm</code> in the order they are

+    listed. Authentication against any Realm will be sufficient to authenticate

+    the user.</p>

+

+    <h3>Realm Element Attributes</h3>

+    <p>To configure a CombinedRealm, you create a <code>&lt;Realm&gt;</code>

+    element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code>

+    file within your <code>&lt;Engine&gt;</code> or <code>&lt;Host&gt;</code>.

+    You can also nest inside a <code>&lt;Context&gt;</code> node in a

+    <code>context.xml</code> file.</p>

+

+<h3>Example</h3>

+

+<p>Here is an example of how your server.xml snippet should look to use a

+UserDatabase Realm and a DataSource Realm.</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>

+&lt;Realm className="org.apache.catalina.realm.CombinedRealm" &gt;

+   &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"

+             resourceName="UserDatabase"/&gt;

+   &lt;Realm className="org.apache.catalina.realm.DataSourceRealm"

+             dataSourceName="jdbc/authority"

+             userTable="users" userNameCol="user_name" userCredCol="user_pass"

+             userRoleTable="user_roles" roleNameCol="role_name"/&gt;

+&lt;/Realm&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="LockOutRealm"><strong>LockOutRealm</strong></a></font></td></tr><tr><td><blockquote>

+

+    <h3>Introduction</h3>

+

+    <p><strong>LockOutRealm</strong> is an implementation of the Tomcat

+    <code>Realm</code> interface that extends the CombinedRealm to provide lock

+    out functionality to provide a user lock out mechanism if there are too many

+    failed authentication attempts in a given period of time.</p>

+

+    <p>To ensure correct operation, there is a reasonable degree of

+    synchronisation in this Realm.</p>

+

+    <p>This Realm does not require modification to the underlying Realms or the

+    associated user storage mechanisms. It achieves this by recording all failed

+    logins, including those for users that do not exist. To prevent a DOS by

+    deliberating making requests with invalid users (and hence causing this

+    cache to grow) the size of the list of users that have failed authentication

+    is limited.</p>

+

+    <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the

+    <code>Realm</code> element that defines the LockOutRealm. Authentication

+    will be attempted against each <code>Realm</code> in the order they are

+    listed. Authentication against any Realm will be sufficient to authenticate

+    the user.</p>

+

+    <h3>Realm Element Attributes</h3>

+    <p>To configure a LockOutRealm, you create a <code>&lt;Realm&gt;</code>

+    element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code>

+    file within your <code>&lt;Engine&gt;</code> or <code>&lt;Host&gt;</code>.

+    You can also nest inside a <code>&lt;Context&gt;</code> node in a

+    <code>context.xml</code> file. The attributes for the

+    LockOutRealm are defined in the <a href="config/realm.html">Realm</a>

+    configuration documentation.</p>

+

+<h3>Example</h3>

+

+<p>Here is an example of how your server.xml snippet should look to add lock out

+functionality to a UserDatabase Realm.</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>

+&lt;Realm className="org.apache.catalina.realm.LockOutRealm" &gt;

+   &lt;Realm className="org.apache.catalina.realm.UserDatabaseRealm"

+             resourceName="UserDatabase"/&gt;

+&lt;/Realm&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table></td></tr><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="/tomcat-7.0-doc/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/realm-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/security-howto.html b/webapps/docs/security-howto.html
new file mode 100644
index 0000000..f4eb70a
--- /dev/null
+++ b/webapps/docs/security-howto.html
@@ -0,0 +1,391 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Security Considerations</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Security Considerations</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Non-Tomcat_settings">Non-Tomcat settings</a></li><li><a href="#Default_web_applications">Default web applications</a></li><li><a href="#Security_manager">Security manager</a></li><li><a href="#server.xml">server.xml</a><ol><li><a href="#server.xml/General">General</a></li><li><a href="#Server">Server</a></li><li><a href="#Listeners">Listeners</a></li><li><a href="#Connectors">Connectors</a></li><li><a href="#Host">Host</a></li><li><a href="#Context">Context</a></li><li><a href="#Valves">Valves</a></li><li><a href="#Realms">Realms</a></li><li><a href="#Manager">Manager</a></li></ol></li><li><a href="#System_Properties">System Properties</a></li><li><a href="#web.xml">web.xml</a></li><li><a href="#General">General</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Tomcat is configured to be reasonably secure for most use cases by

+    default. Some environments may require more, or less, secure configurations.

+    This page is to provide a single point of reference for configuration

+    options that may impact security and to offer some commentary on the

+    expected impact of changing those options. The intention is to provide a

+    list of configuration options that should be considered when assessing the

+    security of a Tomcat installation.</p>

+

+    <p><strong>Note</strong>: Reading this page is not a substitute for reading

+    and understanding the detailed configuration documentation. Fuller

+    descriptions of these attributes may be found in the relevant documentation

+    pages.</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="Non-Tomcat settings"><!--()--></a><a name="Non-Tomcat_settings"><strong>Non-Tomcat settings</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Tomcat configuration should not be the only line of defense. The other

+    components in the system (operating system, network, database, etc.) should

+    also be secured.</p>

+    <p>Tomcat should not be run under the root user. Create a dedicated user for

+    the Tomcat process and provide that user with the minimum necessary

+    permissions for the operating system. For example, it should not be possible

+    to log on remotely using the Tomcat user.</p>

+    <p>File permissions should also be suitable restricted. Taking the Tomcat

+    instances at the ASF as an example (where auto-deployment is disabled and

+    web applications are deployed as exploded directories), the standard

+    configuration is to have all Tomcat files owned by root with group Tomcat

+    and whilst owner has read/write priviliges, group only has read and world

+    has no permissions. The exceptions are the logs, temp and work directory

+    that are owned by the Tomcat user rather than root. This means that even if

+    an attacker compromises the Tomcat process, they can't change the

+    Tomcat configuration, deploy new web applications or modify existing web

+    applications. The Tomcat process runs with a umask of 007 to maintain these

+    permissions.</p>

+    <p>At the network level, consider using a firewall to limit both incoming

+    and outgoing connections to only those connections you  expect to be

+    present.</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="Default web applications"><!--()--></a><a name="Default_web_applications"><strong>Default web applications</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Tomcat ships with a number of web applications by default.

+    Vulnerabilities have been discovered in these applications in the past.

+    Applications that are not required should be removed so the system will not

+    be at risk if another vulnerability is discovered.</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="Security manager"><!--()--></a><a name="Security_manager"><strong>Security manager</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Enabling the security manager causes web applications to be run in a

+    sandbox, significantly limiting a web application's ability to perform

+    malicious actions such as calling System.exit(), establishing network

+    connections or accessing the file system outside of the web application's

+    root and temporary directories. However, it should be noted that there are

+    some malicious actions, such as triggering high CPU consumption via an

+    infinite loop, that the security manager cannot prevent.</p>

+

+    <p>Enabling the security manager is usually done to limit the potential

+    impact, should an attacker find a way to compromise a trusted web

+    application . A security manager may also be used to reduce the risks of

+    running untrusted web applications (e.g. in hosting environments) but it

+    should be noted that the security manager only reduces the risks of

+    running untrusted web applications, it does not eliminate them. If running

+    multiple untrusted web applications, it is recommended that each web

+    application is deployed to a separate Tomcat instance (and ideally separate

+    hosts) to reduce the ability of a malicious web application impacting the

+    availability of other applications.</p>

+

+    <p>Tomcat is tested with the security manager enabled; but the majority of

+    Tomcat users do not run with a security manager, so Tomcat is not as well

+    user-tested in this configuration. There have been, and continue to be,

+    bugs reported that are triggered by running under a security manager.</p>

+

+    <p>The restrictions imposed by a security manager are likely to break most

+    applications if the security manager is enabled. The security manager should

+    not be used without extensive testing. Ideally, the use of a security

+    manager should be introduced at the start of the development cycle as it can

+    be time-consuming to track down and fix issues caused by enabling a security

+    manager for a mature application.</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="server.xml"><strong>server.xml</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="server.xml/General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The default server.xml contains a large number of comments, including

+      some example component definitions that are commented out. Removing these

+      comments makes it considerably easier to read and comprehend

+      server.xml.</p>

+      <p>If a component type is not listed, then there are no settings for that

+      type that directly impact security.</p>

+    </blockquote></td></tr></table>

+

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>

+      <p>Setting the <strong>port</strong> attribute to <code>-1</code> disables

+      the shutdown port.</p>

+      <p>If the shutdown port is not disabled, a strong password should be

+      configured for <strong>shutdown</strong>.</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="Listeners"><strong>Listeners</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The APR Lifecycle Listener is not stable if compiled on Solaris using

+      gcc. If using the APR/native connector on Solaris, compile it with the

+      Sun Studio compiler.</p>

+

+      <p>The Security Listener should be enabled and configured as appropriate.

+      </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="Connectors"><strong>Connectors</strong></a></font></td></tr><tr><td><blockquote>

+      <p>By default, an HTTP and an AJP connector are configured. Connectors

+      that will not be used should be removed from server.xml.</p>

+

+      <p>The <strong>address</strong> attribute may be used to control which IP

+      address the connector listens on for connections. By default, the

+      connector listens on all configured IP addresses.</p>

+

+      <p>The <strong>allowTrace</strong> attribute may be used to enable TRACE

+      requests which can be useful for debugging. Due to the way some browsers

+      handle the response from a TRACE request (which exposes the browser to an

+      XSS attack), support for TRACE requests is disabled by default.</p>

+

+      <p>The <strong>maxPostSize</strong> attribute controls the maximum size

+      of a POST request that will be parsed for parameters. The parameters are

+      cached for the duration of the request so this is limited to 2MB by

+      default to reduce exposure to a DOS attack.</p>

+

+      <p>The <strong>maxSavePostSize</strong> attribute controls the saving of

+      POST requests during FORM and CLIENT-CERT authentication. The parameters

+      are cached for the duration of the authentication (which may be many

+      minutes) so this is limited to 4KB by default to reduce exposure to a DOS

+      attack.</p>

+

+      <p>The <strong>maxParameterCount</strong> attribute controls the

+      maximum number of parameter and value pairs (GET plus POST) that can

+      be parsed and stored in the request. Excessive parameters are ignored.

+      If you want to reject such requests, configure a

+      <a href="config/filter.html">FailedRequestFilter</a>.</p>

+

+      <p>The <strong>xpoweredBy</strong> attribute controls whether or not the

+      X-Powered-By HTTP header is sent with each request. If sent, the value of

+      the header contains the Servlet and JSP specification versions, the full

+      Tomcat version (e.g. Apache Tomcat/7.0.0), the name of the JVM vendor and

+      the version of the JVM. This header is disabled by default. This header

+      can provide useful information to both legitimate clients and attackers.

+      </p>

+

+      <p>The <strong>server</strong> attribute controls the value of the Server

+      HTTP header. The default value of this header for Tomcat 4.1.x, 5.0.x,

+      5.5.x, 6.0.x and 7.0.x is Apache-Coyote/1.1. This header can provide

+      limited information to both legitimate clients and attackers.</p>

+

+      <p>The <strong>SSLEnabled</strong>, <strong>scheme</strong> and

+      <strong>secure</strong> attributes may all be independently set. These are

+      normally used when Tomcat is located behind a reverse proxy and the proxy

+      is connecting to Tomcat via HTTP or HTTPS. They allow Tomcat to see the

+      SSL attributes of the connections between the client and the proxy rather

+      than the proxy and Tomcat. For example, the client may connect to the

+      proxy over HTTPS but the proxy connects to Tomcat using HTTP. If it is

+      necessary for Tomcat to be able to distinguish between secure and

+      non-secure connections received by a proxy, the proxy must use separate

+      connectors to pass secure and non-secure requests to Tomcat. If the

+      proxy uses AJP then the SSL attributes of the client connection are

+      passed via the AJP protocol and separate connectors are not needed.</p>

+

+      <p>The <strong>ciphers</strong> attribute controls the ciphers used for

+      SSL connections. By default, the default ciphers for the JVM will be used.

+      This usually means that the weak export grade ciphers will be included in

+      the list of available ciphers. Secure environments will normally want to

+      configure a more limited set of ciphers.</p>

+

+      <p>The <strong>tomcatAuthentication</strong> attribute is used with the

+      AJP connectors to determine if Tomcat should authenticate the user or if

+      authentication can be delegated to the reverse proxy that will then pass

+      the authenticated username to Tomcat as part of the AJP protocol.</p>

+

+      <p>The <strong>allowUnsafeLegacyRenegotiation</strong> attribute provides

+      a workaround for

+      <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555">

+      CVE-2009-3555</a>, a TLS man in the middle attack. This workaround applies

+      to the BIO connector. It is only necessary if the underlying SSL

+      implementation is vulnerable to CVE-2009-3555. For more information on the

+      current state of this vulnerability and the work-arounds available see the

+      <a href="http://tomcat.apache.org/security-7.html">Tomcat 7 security

+      page</a>.</p>

+

+      <p>The <strong>requiredSecret</strong> attribute in AJP connectors

+      configures shared secret between Tomcat and reverse proxy in front of

+      Tomcat. It is used to prevent unauthorized connections over AJP protocol.</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="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The host element controls deployment. Automatic deployment allows for

+      simpler management but also makes it easier for an attacker to deploy a

+      malicious application. Automatic deployment is controlled by the

+      <strong>autoDeploy</strong> and <strong>deployOnStartup</strong>

+      attributes. If both are <code>false</code>, only Contexts defined in

+      server.xml will be deployed and any changes will require a Tomcat restart.

+      </p>

+

+      <p>In a hosted environment where web applications may not be trusted, set

+      the <strong>deployXML</strong> attribute to <code>false</code> to ignore any

+      context.xml packaged with the web application that may try to assign

+      increased privileges to the web application. </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="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>

+      <p>This applies to <a href="config/context.html">Context</a>

+      elements in all places where they can be defined:

+      <code>server.xml</code> file,

+      default <code>context.xml</code> file,

+      per-host <code>context.xml.default</code> file,

+      web application context file in per-host configuration directory

+      or inside the web application.</p>

+

+      <p>The <strong>crossContext</strong> attribute controls if a context is

+      allowed to access the resources of another context. It is

+      <code>false</code> by default and should only be changed for trusted web

+      applications.</p>

+

+      <p>The <strong>privileged</strong> attribute controls if a context is

+      allowed to use container provided servlets like the Manager servlet. It is

+      <code>false</code> by default and should only be changed for trusted web

+      applications.</p>

+

+      <p>The <strong>allowLinking</strong> attribute controls if a context is

+      allowed to use linked files. If enabled and the context is undeployed, the

+      links will be followed when deleting the context resources. To avoid this

+      behaviour, use the <strong>aliases</strong> attribute. Changing this

+      setting from the default of <code>false</code> on case insensitive

+      operating systems (this includes Windows) will disable a number of

+      security measures and allow, among other things, direct access to the

+      WEB-INF directory.</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="Valves"><strong>Valves</strong></a></font></td></tr><tr><td><blockquote>

+      <p>It is strongly recommended that an AccessLogValve is configured. The

+      default Tomcat configuration includes an AccessLogValve. These are

+      normally configured per host but may also be configured per engine or per

+      context as required.</p>

+

+      <p>Any administrative application should be protected by a

+      RemoteAddrValve. (Note that this Valve is also available as a Filter.)

+      The <strong>allow</strong> attribute should be used to limit access to a

+      set of known trusted hosts.</p>

+

+      <p>The default ErrorReportValve includes the Tomcat version number in the

+      response sent to clients. To avoid this, custom error handling can be

+      configured within each web application. Alternatively, the version number

+      can be changed by creating the file

+      CATALINA_BASE/lib/org/apache/catalina/util/ServerInfo.properties with

+      content as follows:</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>

+server.info=Apache Tomcat/7.0.x

+      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      <p>Modify the values as required. Note that this will also change the version

+      number reported in some of the management tools and may make it harder to

+      determine the real version installed. The CATALINA_HOME/bin/version.bat|sh

+      script will still report the version number.</p>

+

+      <p>The default ErrorReportValve can display stack traces and/or JSP

+      source code to clients when an error occurs. To avoid this, custom error

+      handling can be configured within each web application.</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="Realms"><strong>Realms</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The MemoryRealm is not intended for production use as any changes to

+      tomcat-users.xml require a restart of Tomcat to take effect.</p>

+

+      <p>The JDBCRealm is not recommended for production use as it is single

+      threaded for all authentication and authorization options. Use the

+      DataSourceRealm instead.</p>

+

+      <p>The UserDatabaseRealm is not intended for large-scale installations. It

+      is intended for small-scale, relatively static environments.</p>

+

+      <p>The JAASRealm is not widely used and therefore the code is not as

+      mature as the other realms. Additional testing is recommended before using

+      this realm.</p>

+

+      <p>By default, the realms do not implement any form of account lock-out.

+      This means that brute force attacks can be successful. To prevent a brute

+      force attack, the chosen realm should be wrapped in a LockOutRealm.</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="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>

+      <p>The manager component is used to generate session IDs.</p>

+

+      <p>The default <strong>entropy</strong> value has been shown to generate predictable values

+      under certain conditions. For more secure session generation, this should

+      be set to a long string. This is done automatically if the APR/native

+      library is installed; a random value will be obtained from the APR/native

+      library.</p>

+

+      <p>The class used to generate random session IDs may be changed with

+      the <strong>randomClass</strong> attribute.</p>

+

+      <p>The length of the session ID may be changed with the

+      <strong>sessionIdLength</strong> attribute.</p>

+    </blockquote></td></tr></table>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="System Properties"><!--()--></a><a name="System_Properties"><strong>System Properties</strong></a></font></td></tr><tr><td><blockquote>

+    <p>Setting <strong>org.apache.catalina.connector.RECYCLE_FACADES</strong>

+    system property to <code>true</code> will cause a new facade object to be

+    created for each request. This reduces the chances of a bug in an

+    application exposing data from one request to another.</p>

+

+    <p>The <strong>

+    org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH</strong> and

+    <strong>org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH</strong>

+    system properties allow non-standard parsing of the request URI. Using

+    these options when behind a reverse proxy may enable an attacker to bypass

+    any security constraints enforced by the proxy.</p>

+

+    <p>The <strong>

+    org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER

+    </strong> system property has security implications if disabled. Many user

+    agents, in breach of RFC2616, try to guess the character encoding of text

+    media types when the specification-mandated default of ISO-8859-1 should be

+    used. Some browsers will interpret as UTF-7 a response containing characters

+    that are safe for ISO-8859-1 but trigger an XSS vulnerability if interpreted

+    as UTF-7.</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="web.xml"><strong>web.xml</strong></a></font></td></tr><tr><td><blockquote>

+    <p>This applies to the default <code>conf/web.xml</code> file and

+    <code>WEB-INF/web.xml</code> files in web applications if they define

+    the components mentioned here.</p>

+

+    <p>The <a href="default-servlet.html">DefaultServlet</a> is configured

+    with <strong>readonly</strong> set to

+    <code>true</code>. Changing this to <code>false</code> allows clients to

+    delete or modify static resources on the server and to upload new

+    resources. This should not normally be changed without requiring

+    authentication.</p>

+

+    <p>The DefaultServlet is configured with <strong>listings</strong> set to

+    <code>false</code>. This isn't because allowing directory listings is

+    considered unsafe but because generating listings of directories with

+    thousands of files can consume significant CPU leading to a DOS attack.

+    </p>

+

+    <p><a href="config/filter.html">FailedRequestFilter</a>

+    can be configured and used to reject requests that had errors during

+    request parameter parsing. Without the filter the default behaviour is

+    to ignore invalid or excessive parameters.</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="General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+    <p>BASIC and FORM authentication pass user names and passwords in clear

+    text. Web applications using these authentication mechanisms with clients

+    connecting over untrusted networks should use SSL.</p>

+

+    <p>The session cookie for a session with an authenticated user are nearly

+    as useful as the user's password to an attacker and in nearly all

+    circumstances should be afforded the same level of protection as the

+    password itself. This usually means authenticating over SSL and continuing

+    to use SSL until the session ends.</p>

+  </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="/tomcat-7.0-doc/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/security-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/security-manager-howto.html b/webapps/docs/security-manager-howto.html
new file mode 100644
index 0000000..2172e68
--- /dev/null
+++ b/webapps/docs/security-manager-howto.html
@@ -0,0 +1,511 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Security Manager HOW-TO</title><meta name="author" content="Glenn Nielsen"><meta name="author" content="Jean-Francois Arcand"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Security Manager HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Background">Background</a></li><li><a href="#Permissions">Permissions</a><ol><li><a href="#Standard_Permissions">Standard Permissions</a></li><li><a href="#Tomcat_Custom_Permissions">Tomcat Custom Permissions</a></li></ol></li><li><a href="#Configuring_Tomcat_With_A_SecurityManager">Configuring Tomcat With A SecurityManager</a></li><li><a href="#Configuring_Package_Protection_in_Tomcat">Configuring Package Protection in Tomcat</a></li><li><a href="#Troubleshooting">Troubleshooting</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>The Java <strong>SecurityManager</strong> is what allows a web browser

+  to run an applet in its own sandbox to prevent untrusted code from

+  accessing files on the local file system, connecting to a host other

+  than the one the applet was loaded from, and so on.  In the same way

+  the SecurityManager protects you from an untrusted applet running in

+  your browser, use of a SecurityManager while running Tomcat can protect

+  your server from trojan servlets, JSPs, JSP beans, and tag libraries.

+  Or even inadvertent mistakes.</p>

+

+  <p>Imagine if someone who is authorized to publish JSPs on your site

+  inadvertently included the following in their JSP:</p>

+<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>

+&lt;% System.exit(1); %&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  <p>Every time this JSP was executed by Tomcat, Tomcat would exit.

+  Using the Java SecurityManager is just one more line of defense a

+  system administrator can use to keep the server secure and reliable.</p>

+

+  <p><strong>WARNING</strong> - A security audit

+  have been conducted using the Tomcat codebase. Most of the critical

+  package have been protected and a new security package protection mechanism

+  has been implemented. Still, make sure that you are satisfied with your SecurityManager

+  configuration before allowing untrusted users to publish web applications,

+  JSPs, servlets, beans, or tag libraries.  <strong>However, running with a

+  SecurityManager is definitely better than running without one.</strong></p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Permissions"><strong>Permissions</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Permission classes are used to define what Permissions a class loaded

+  by Tomcat will have.  There are a number of Permission classes that are

+  a standard part of the JDK, and you can create your own Permission class

+  for use in your own web applications.  Both techniques are used in

+  Tomcat.</p>

+

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Permissions"><!--()--></a><a name="Standard_Permissions"><strong>Standard Permissions</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>This is just a short summary of the standard system SecurityManager

+    Permission classes applicable to Tomcat.  See

+    <a href="http://java.sun.com/security/">http://java.sun.com/security/</a>

+    for more information.</p>

+

+    <ul>

+    <li><strong>java.util.PropertyPermission</strong> - Controls read/write

+        access to JVM properties such as <code>java.home</code>.</li>

+    <li><strong>java.lang.RuntimePermission</strong> - Controls use of

+        some System/Runtime functions like <code>exit()</code> and

+        <code>exec()</code>. Also control the package access/definition.</li>

+    <li><strong>java.io.FilePermission</strong> - Controls read/write/execute

+        access to files and directories.</li>

+    <li><strong>java.net.SocketPermission</strong> - Controls use of

+        network sockets.</li>

+    <li><strong>java.net.NetPermission</strong> - Controls use of

+        multicast network connections.</li>

+    <li><strong>java.lang.reflect.ReflectPermission</strong> - Controls

+        use of reflection to do class introspection.</li>

+    <li><strong>java.security.SecurityPermission</strong> - Controls access

+        to Security methods.</li>

+    <li><strong>java.security.AllPermission</strong> - Allows access to all

+        permissions, just as if you were running Tomcat without a

+        SecurityManager.</li>

+    </ul>

+

+  </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 Custom Permissions"><!--()--></a><a name="Tomcat_Custom_Permissions"><strong>Tomcat Custom Permissions</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat utilizes a custom permission class called

+    <strong>org.apache.naming.JndiPermission</strong>.  This permission

+    controls read access to JNDI named file based resources.  The permission

+    name is the JNDI name and there are no actions.  A trailing "*" can be

+    used to do wild card matching for a JNDI named file resource when

+    granting permission.  For example, you might include the following

+    in your policy file:</p>

+<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>

+permission  org.apache.naming.JndiPermission  "jndi://localhost/examples/*";

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>A Permission entry like this is generated dynamically for each web

+    application that is deployed, to allow it to read its own static resources

+    but disallow it from using file access to read any other files (unless

+    permissions for those files are explicitly granted).</p>

+

+    <p>Also, Tomcat always dynamically creates the following file permissions:</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>

+permission java.io.FilePermission "** your application context**", "read";

+

+permission java.io.FilePermission

+  "** application working directory**", "read,write";

+permission java.io.FilePermission

+  "** application working directory**/-", "read,write,delete";

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>Where **your application context** equals the folder (or WAR file) under which

+    your application has been deployed and **application working directory** is the

+    temporary directory provided to your application as required by the

+    Servlet Specification.</p>

+

+  </blockquote></td></tr></table>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Tomcat With A SecurityManager"><!--()--></a><a name="Configuring_Tomcat_With_A_SecurityManager"><strong>Configuring Tomcat With A SecurityManager</strong></a></font></td></tr><tr><td><blockquote>

+

+  <h3>Policy File Format</h3>

+

+  <p>The security policies implemented by the Java SecurityManager are

+  configured in the <code>$CATALINA_BASE/conf/catalina.policy</code> file.

+  This file completely replaces the <code>java.policy</code> file present

+  in your JDK system directories.  The <code>catalina.policy</code> file

+  can be edited by hand, or you can use the

+  <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyGuide.html">policytool</a>

+  application that comes with Java 1.2 or later.</p>

+

+  <p>Entries in the <code>catalina.policy</code> file use the standard

+  <code>java.policy</code> file format, as follows:</p>

+<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>

+// Example policy file entry

+

+grant [signedBy &lt;signer&gt;,] [codeBase &lt;code source&gt;] {

+  permission  &lt;class&gt;  [&lt;name&gt; [, &lt;action list&gt;]];

+};

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  <p>The <strong>signedBy</strong> and <strong>codeBase</strong> entries are

+  optional when granting permissions.  Comment lines begin with "//" and

+  end at the end of the current line.  The <code>codeBase</code> is in the

+  form of a URL, and for a file URL can use the <code>${java.home}</code>

+  and <code>${catalina.home}</code> properties (which are expanded out to

+  the directory paths defined for them by the <code>JAVA_HOME</code>,

+  <code>CATALINA_HOME</code> and <code>CATALINA_BASE</code> environment

+  variables).</p>

+

+  <h3>The Default Policy File</h3>

+

+  <p>The default <code>$CATALINA_BASE/conf/catalina.policy</code> file

+  looks like this:</p>

+

+

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>// Licensed to the Apache Software Foundation (ASF) under one or more

+// contributor license agreements.  See the NOTICE file distributed with

+// this work for additional information regarding copyright ownership.

+// 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.

+

+// ============================================================================

+// catalina.policy - Security Policy Permissions for Tomcat 7

+//

+// This file contains a default set of security policies to be enforced (by the

+// JVM) when Catalina is executed with the "-security" option.  In addition

+// to the permissions granted here, the following additional permissions are

+// granted to each web application:

+//

+// * Read access to the web application's document root directory

+// * Read, write and delete access to the web application's working directory

+//

+// $Id: catalina.policy 1460221 2013-03-23 20:17:29Z kkolinko $

+// ============================================================================

+

+

+// ========== SYSTEM CODE PERMISSIONS =========================================

+

+

+// These permissions apply to javac

+grant codeBase "file:${java.home}/lib/-" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to all shared system extensions

+grant codeBase "file:${java.home}/jre/lib/ext/-" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre

+grant codeBase "file:${java.home}/../lib/-" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to all shared system extensions when

+// ${java.home} points at $JAVA_HOME/jre

+grant codeBase "file:${java.home}/lib/ext/-" {

+        permission java.security.AllPermission;

+};

+

+

+// ========== CATALINA CODE PERMISSIONS =======================================

+

+

+// These permissions apply to the daemon code

+grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to the logging API

+// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},

+// update this section accordingly.

+//  grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}

+grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {

+        permission java.io.FilePermission

+         "${java.home}${file.separator}lib${file.separator}logging.properties", "read";

+

+        permission java.io.FilePermission

+         "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";

+        permission java.io.FilePermission

+         "${catalina.base}${file.separator}logs", "read, write";

+        permission java.io.FilePermission

+         "${catalina.base}${file.separator}logs${file.separator}*", "read, write";

+

+        permission java.lang.RuntimePermission "shutdownHooks";

+        permission java.lang.RuntimePermission "getClassLoader";

+        permission java.lang.RuntimePermission "setContextClassLoader";

+

+        permission java.util.logging.LoggingPermission "control";

+

+        permission java.util.PropertyPermission "java.util.logging.config.class", "read";

+        permission java.util.PropertyPermission "java.util.logging.config.file", "read";

+        permission java.util.PropertyPermission "catalina.base", "read";

+

+        // Note: To enable per context logging configuration, permit read access to

+        // the appropriate file. Be sure that the logging configuration is

+        // secure before enabling such access.

+        // E.g. for the examples web application (uncomment and unwrap

+        // the following to be on a single line):

+        // permission java.io.FilePermission "${catalina.base}${file.separator}

+        //  webapps${file.separator}examples${file.separator}WEB-INF

+        //  ${file.separator}classes${file.separator}logging.properties", "read";

+};

+

+// These permissions apply to the server startup code

+grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {

+        permission java.security.AllPermission;

+};

+

+// These permissions apply to the servlet API classes

+// and those that are shared across all class loaders

+// located in the "lib" directory

+grant codeBase "file:${catalina.home}/lib/-" {

+        permission java.security.AllPermission;

+};

+

+

+// If using a per instance lib directory, i.e. ${catalina.base}/lib,

+// then the following permission will need to be uncommented

+// grant codeBase "file:${catalina.base}/lib/-" {

+//         permission java.security.AllPermission;

+// };

+

+

+// ========== WEB APPLICATION PERMISSIONS =====================================

+

+

+// These permissions are granted by default to all web applications

+// In addition, a web application will be given a read FilePermission

+// and JndiPermission for all files and directories in its document root.

+grant {

+    // Required for JNDI lookup of named JDBC DataSource's and

+    // javamail named MimePart DataSource used to send mail

+    permission java.util.PropertyPermission "java.home", "read";

+    permission java.util.PropertyPermission "java.naming.*", "read";

+    permission java.util.PropertyPermission "javax.sql.*", "read";

+

+    // OS Specific properties to allow read access

+    permission java.util.PropertyPermission "os.name", "read";

+    permission java.util.PropertyPermission "os.version", "read";

+    permission java.util.PropertyPermission "os.arch", "read";

+    permission java.util.PropertyPermission "file.separator", "read";

+    permission java.util.PropertyPermission "path.separator", "read";

+    permission java.util.PropertyPermission "line.separator", "read";

+

+    // JVM properties to allow read access

+    permission java.util.PropertyPermission "java.version", "read";

+    permission java.util.PropertyPermission "java.vendor", "read";

+    permission java.util.PropertyPermission "java.vendor.url", "read";

+    permission java.util.PropertyPermission "java.class.version", "read";

+    permission java.util.PropertyPermission "java.specification.version", "read";

+    permission java.util.PropertyPermission "java.specification.vendor", "read";

+    permission java.util.PropertyPermission "java.specification.name", "read";

+

+    permission java.util.PropertyPermission "java.vm.specification.version", "read";

+    permission java.util.PropertyPermission "java.vm.specification.vendor", "read";

+    permission java.util.PropertyPermission "java.vm.specification.name", "read";

+    permission java.util.PropertyPermission "java.vm.version", "read";

+    permission java.util.PropertyPermission "java.vm.vendor", "read";

+    permission java.util.PropertyPermission "java.vm.name", "read";

+

+    // Required for OpenJMX

+    permission java.lang.RuntimePermission "getAttribute";

+

+    // Allow read of JAXP compliant XML parser debug

+    permission java.util.PropertyPermission "jaxp.debug", "read";

+

+    // All JSPs need to be able to read this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat";

+

+    // Precompiled JSPs need access to these packages.

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";

+    permission java.lang.RuntimePermission

+     "accessClassInPackage.org.apache.jasper.runtime.*";

+

+    // Precompiled JSPs need access to these system properties.

+    permission java.util.PropertyPermission

+     "org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";

+    permission java.util.PropertyPermission

+     "org.apache.el.parser.COERCE_TO_ZERO", "read";

+

+    // The cookie code needs these.

+    permission java.util.PropertyPermission

+     "org.apache.catalina.STRICT_SERVLET_COMPLIANCE", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.STRICT_NAMING", "read";

+    permission java.util.PropertyPermission

+     "org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR", "read";

+

+    // Applications using Comet need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.comet";

+

+    // Applications using WebSocket need to be able to access this package

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.websocket";

+};

+

+

+// The Manager application needs access to the following packages to support the

+// session display functionality. These settings support the following

+// configurations:

+// - default CATALINA_HOME == CATALINA_BASE

+// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE

+// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME

+grant codeBase "file:${catalina.base}/webapps/manager/-" {

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

+};

+grant codeBase "file:${catalina.home}/webapps/manager/-" {

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";

+    permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util";

+};

+

+// You can assign additional permissions to particular web applications by

+// adding additional "grant" entries here, based on the code base for that

+// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.

+//

+// Different permissions can be granted to JSP pages, classes loaded from

+// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/

+// directory, or even to individual jar files in the /WEB-INF/lib/ directory.

+//

+// For instance, assume that the standard "examples" application

+// included a JDBC driver that needed to establish a network connection to the

+// corresponding database and used the scrape taglib to get the weather from

+// the NOAA web server.  You might create a "grant" entries like this:

+//

+// The permissions granted to the context root directory apply to JSP pages.

+// grant codeBase "file:${catalina.base}/webapps/examples/-" {

+//      permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";

+//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";

+// };

+//

+// The permissions granted to the context WEB-INF/classes directory

+// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {

+// };

+//

+// The permission granted to your JDBC driver

+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {

+//      permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";

+// };

+// The permission granted to the scrape taglib

+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {

+//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";

+// };

+

+</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>

+

+  <h3>Starting Tomcat With A SecurityManager</h3>

+

+  <p>Once you have configured the <code>catalina.policy</code> file for use

+  with a SecurityManager, Tomcat can be started with a SecurityManager in

+  place by using the "-security" option:</p>

+<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>

+$CATALINA_HOME/bin/catalina.sh start -security    (Unix)

+%CATALINA_HOME%\bin\catalina start -security      (Windows)

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Package Protection in Tomcat"><!--()--></a><a name="Configuring_Package_Protection_in_Tomcat"><strong>Configuring Package Protection in Tomcat</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Starting with Tomcat 5, it is now possible to configure which Tomcat

+  internal package are protected againts package definition and access. See

+  <a href="http://java.sun.com/security/seccodeguide.html">

+    http://java.sun.com/security/seccodeguide.html</a>

+    for more information.</p>

+

+

+  <p><strong>WARNING</strong>: Be aware that removing the default package protection

+  could possibly open a security hole</p>

+

+  <h3>The Default Properties File</h3>

+

+  <p>The default <code>$CATALINA_BASE/conf/catalina.properties</code> file

+  looks like this:</p>

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+#

+# List of comma-separated packages that start with or equal this string

+# will cause a security exception to be thrown when

+# passed to checkPackageAccess unless the

+# corresponding RuntimePermission ("accessClassInPackage."+package) has

+# been granted.

+package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,

+org.apache.jasper.

+#

+# List of comma-separated packages that start with or equal this string

+# will cause a security exception to be thrown when

+# passed to checkPackageDefinition unless the

+# corresponding RuntimePermission ("defineClassInPackage."+package) has

+# been granted.

+#

+# by default, no packages are restricted for definition, and none of

+# the class loaders supplied with the JDK call checkPackageDefinition.

+#

+package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,

+org.apache.tomcat.,org.apache.jasper.

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  <p>Once you have configured the <code>catalina.properties</code> file for use

+  with a SecurityManager, remember to re-start Tomcat.</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="Troubleshooting"><strong>Troubleshooting</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>If your web application attempts to execute an operation that is

+  prohibited by lack of a required Permission, it will throw an

+  <code>AccessControLException</code> or a <code>SecurityException</code>

+  when the SecurityManager detects the violation.  Debugging the permission

+  that is missing can be challenging, and one option is to turn on debug

+  output of all security decisions that are made during execution.  This

+  is done by setting a system property before starting Tomcat.  The easiest

+  way to do this is via the <code>CATALINA_OPTS</code> environment variable.

+  Execute this command:</p>

+<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>

+export CATALINA_OPTS=-Djava.security.debug=all    (Unix)

+set CATALINA_OPTS=-Djava.security.debug=all       (Windows)

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+  <p>before starting Tomcat.</p>

+

+  <p><strong>WARNING</strong> - This will generate <em>many megabytes</em>

+  of output!  However, it can help you track down problems by searching

+  for the word "FAILED" and determining which permission was being checked

+  for.  See the Java security documentation for more options that you can

+  specify here as well.</p>

+

+</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="/tomcat-7.0-doc/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/security-manager-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/servletapi/index.html b/webapps/docs/servletapi/index.html
new file mode 100644
index 0000000..ab0da83
--- /dev/null
+++ b/webapps/docs/servletapi/index.html
@@ -0,0 +1,34 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en" "http://www.w3.org/TR/REC-html40/strict.dtd">

+<html>

+    <head>

+    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+    <title>API docs</title>

+</head>

+

+<body>

+

+The Servlet Javadoc is not installed by default. Download and install

+the "fulldocs" package to get it.

+

+You can also access the javadoc online in the Tomcat

+<a href="http://tomcat.apache.org/tomcat-7.0-doc/">

+documentation bundle</a>.

+

+</body>

+</html>

diff --git a/webapps/docs/setup.html b/webapps/docs/setup.html
new file mode 100644
index 0000000..6c053de
--- /dev/null
+++ b/webapps/docs/setup.html
@@ -0,0 +1,172 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Tomcat Setup</title><meta name="author" content="Remy Maucherat"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Tomcat Setup</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Windows">Windows</a></li><li><a href="#Unix_daemon">Unix daemon</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      There are several ways to set up Tomcat for running on different

+      platforms. The main documentation for this is a file called

+      <a href="RUNNING.txt">RUNNING.txt</a>. We encourage you to refer to that

+      file if the information below does not answer some of your questions.

+    </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="Windows"><strong>Windows</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>

+      Installing Tomcat on Windows can be done easily using the Windows

+      installer. Its interface and functionality is similar to other wizard

+      based installers, with only a few items of interest.

+    </p>

+

+    <p>

+      <ul>

+        <li><strong>Installation as a service</strong>: Tomcat will be

+            installed as a Windows service no matter what setting is selected.

+            Using the checkbox on the component page sets the service as "auto"

+            startup, so that Tomcat is automatically started when Windows

+            starts. For optimal security, the service should be run as a

+            separate user, with reduced permissions (see the Windows Services

+            administration tool and its documentation).</li>

+        <li><strong>Java location</strong>: The installer will provide a default

+            JRE to use to run the service. The installer uses the registry to

+            determine the base path of a Java 6 or later JRE, including the JRE

+            installed as part of the full JDK. When running on a 64-bit

+            operating system, the installer will first look for a 64-bit JRE and

+            only look for a 32-bit JRE if a 64-bit JRE is not found. It is not

+            mandatory to use the default JRE detected by the installer. Any

+            installed Java 6 or later JRE (32-bit or 64-bit) may be used.</li>

+        <li><strong>Tray icon</strong>: When Tomcat is run as a service, there

+            will not be any tray icon present when Tomcat is running. Note that

+            when choosing to run Tomcat at the end of installation, the tray

+            icon will be used even if Tomcat was installed as a service.</li>

+        <li>Refer to the

+            <a href="windows-service-howto.html">Windows Service HOW-TO</a>

+            for information on how to manage Tomcat as a Windows service.

+            </li>

+      </ul>

+    </p>

+

+    <p>The installer will create shortcuts allowing starting and configuring

+       Tomcat. It is important to note that the Tomcat administration web

+       application can only be used when Tomcat is running.</p>

+

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Unix daemon"><!--()--></a><a name="Unix_daemon"><strong>Unix daemon</strong></a></font></td></tr><tr><td><blockquote>

+

+    <p>Tomcat can be run as a daemon using the jsvc tool from the

+       commons-daemon project. Source tarballs for jsvc are included with the

+       Tomcat binaries, and need to be compiled. Building jsvc requires

+       a C ANSI compiler (such as GCC), GNU Autoconf, and a JDK.</p>

+

+    <p>Before running the script, the <code>JAVA_HOME</code> environment

+       variable should be set to the base path of the JDK. Alternately, when

+       calling the <code>./configure</code> script, the path of the JDK may

+       be specified using the <code>--with-java</code> parameter, such as

+       <code>./configure --with-java=/usr/java</code>.</p>

+

+    <p>Using the following commands should result in a compiled jsvc binary,

+       located in the <code>$CATALINA_HOME/bin</code> folder. This assumes

+       that GNU TAR is used, and that <code>CATALINA_HOME</code> is an

+       environment variable pointing to the base path of the Tomcat

+       installation.</p>

+

+    <p>Please note that you should use the GNU make (gmake) instead of

+       the native BSD make on FreeBSD systems.</p>

+

+<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 $CATALINA_HOME/bin

+    tar xvfz commons-daemon-native.tar.gz

+    cd commons-daemon-1.0.x-native-src/unix

+    ./configure

+    make

+    cp jsvc ../..

+    cd ../..

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>Tomcat can then be run as a daemon using the following commands.</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>

+    CATALINA_BASE=$CATALINA_HOME

+    cd $CATALINA_HOME

+    ./bin/jsvc \

+        -classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \

+        -outfile $CATALINA_BASE/logs/catalina.out \

+        -errfile $CATALINA_BASE/logs/catalina.err \

+        -Dcatalina.home=$CATALINA_HOME \

+        -Dcatalina.base=$CATALINA_BASE \

+        -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \

+        -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \

+        org.apache.catalina.startup.Bootstrap

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+    <p>You may also need to specify <code>-jvm server</code> if the JVM defaults

+       to using a server VM rather than a client VM. This has been observed on

+       OSX.</p>

+

+    <p>jsvc has other useful parameters, such as <code>-user</code> which

+       causes it to switch to another user after the daemon initialization is

+       complete. This allows, for example, running Tomcat as a non privileged

+       user while still being able to use privileged ports. Note that if you

+       use this option and start Tomcat as root, you'll need to disable the

+       <code>org.apache.catalina.security.SecurityListener</code> check that

+       prevents Tomcat starting when running as root.</p>

+

+    <p><code>jsvc --help</code> will return the full jsvc usage

+       information. In particular, the <code>-debug</code> option is useful

+       to debug issues running jsvc.</p>

+

+    <p>The file <code>$CATALINA_HOME/bin/daemon.sh</code> can be used as a

+       template for starting Tomcat automatically at boot time from

+       <code>/etc/init.d</code> with jsvc.</p>

+

+    <p>Note that the Commons-Daemon JAR file must be on your runtime classpath

+       to run Tomcat in this manner.  The Commons-Daemon JAR file is in the

+       Class-Path entry of the bootstrap.jar manifest, but if you get a

+       ClassNotFoundException or a NoClassDefFoundError for a Commons-Daemon

+       class, add the Commons-Daemon JAR to the -cp argument when launching

+       jsvc.</p>

+

+  </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="/tomcat-7.0-doc/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/setup.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/ssi-howto.html b/webapps/docs/ssi-howto.html
new file mode 100644
index 0000000..ddf3909
--- /dev/null
+++ b/webapps/docs/ssi-howto.html
@@ -0,0 +1,397 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - SSI How To</title><meta name="author" content="Glenn L. Nielsen"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>SSI How To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Installation">Installation</a></li><li><a href="#Servlet_Configuration">Servlet Configuration</a></li><li><a href="#Filter_Configuration">Filter Configuration</a></li><li><a href="#Directives">Directives</a></li><li><a href="#Variables">Variables</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="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>SSI (Server Side Includes) are directives that are placed in HTML pages,

+and evaluated on the server while the pages are being served. They let you

+add dynamically generated content to an existing HTML page, without having

+to serve the entire page via a CGI program, or other dynamic technology.

+</p>

+

+<p>Within Tomcat SSI support can be added when using Tomcat as your

+HTTP server and you require SSI support.  Typically this is done

+during development when you don't want to run a web server like Apache.</p>

+

+<p>Tomcat SSI support implements the same SSI directives as Apache.  See the

+<a href="http://httpd.apache.org/docs/howto/ssi.html#basicssidirectives">

+Apache Introduction to SSI</a> for information on using SSI directives.</p>

+

+<p>SSI support is available as a servlet and as a filter. You should use one

+or the other to provide SSI support but not both.</p>

+

+<p>Servlet based SSI support is implemented using the class

+<code>org.apache.catalina.ssi.SSIServlet</code>.  Traditionally, this servlet

+is mapped to the URL pattern "*.shtml".</p>

+

+<p>Filter based SSI support is implemented using the class

+<code>org.apache.catalina.ssi.SSIFilter</code>.  Traditionally, this filter

+is mapped to the URL pattern "*.shtml", though it can be mapped to "*" as

+it will selectively enable/disable SSI processing based on mime types.  The

+contentType init param allows you to apply SSI processing to JSP pages,

+javascript, or any other content you wish.</p>

+<p>By default SSI support is disabled in Tomcat.</p>

+</blockquote></td></tr></table><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><strong>CAUTION</strong> - SSI directives can be used to execute programs

+external to the Tomcat JVM. If you are using the Java SecurityManager this

+will bypass your security policy configuration in <code>catalina.policy.</code>

+</p>

+

+<p>To use the SSI servlet, remove the XML comments from around the SSI servlet

+and servlet-mapping configuration in

+<code>$CATALINA_BASE/conf/web.xml</code>.</p>

+

+<p>To use the SSI filter, remove the XML comments from around the SSI filter

+and filter-mapping configuration in

+<code>$CATALINA_BASE/conf/web.xml</code>.</p>

+

+<p>Only Contexts which are marked as privileged may use SSI features (see the

+privileged property of 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="Servlet Configuration"><!--()--></a><a name="Servlet_Configuration"><strong>Servlet Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>There are several servlet init parameters which can be used to

+configure the behaviour of the SSI servlet.

+<ul>

+<li><strong>buffered</strong> - Should output from this servlet be buffered?

+(0=false, 1=true) Default 0 (false).</li>

+<li><strong>debug</strong> - Debugging detail level for messages logged

+by this servlet. Default 0.</li>

+<li><strong>expires</strong> - The number of seconds before a page with SSI

+directives will expire. Default behaviour is for all SSI directives to be

+evaluated for every request.</li>

+<li><strong>isVirtualWebappRelative</strong> - Should "virtual" SSI directive

+paths be interpreted as relative to the context root, instead of the server

+root? Default false.</li>

+<li><strong>inputEncoding</strong> - The encoding to be assumed for SSI

+resources if one cannot be determined from the resource itself. Default is

+the default platform encoding.</li>

+<li><strong>outputEncoding</strong> - The encoding to be used for the result

+of the SSI processing. Default is UTF-8.</li>

+<li><strong>allowExec</strong> - Is the exec command enabled? Default is

+false.</li>

+</ul>

+</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="Filter Configuration"><!--()--></a><a name="Filter_Configuration"><strong>Filter Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>There are several filter init parameters which can be used to

+configure the behaviour of the SSI filter.

+<ul>

+<li><strong>contentType</strong> - A regex pattern that must be matched before

+SSI processing is applied. When crafting your own pattern, don't forget that a

+mime content type may be followed by an optional character set in the form

+"mime/type; charset=set" that you must take into account.  Default is

+"text/x-server-parsed-html(;.*)?".</li>

+<li><strong>debug</strong> - Debugging detail level for messages logged

+by this servlet. Default 0.</li>

+<li><strong>expires</strong> - The number of seconds before a page with SSI

+directives will expire. Default behaviour is for all SSI directives to be

+evaluated for every request.</li>

+<li><strong>isVirtualWebappRelative</strong> - Should "virtual" SSI directive

+paths be interpreted as relative to the context root, instead of the server

+root? Default false.</li>

+<li><strong>allowExec</strong> - Is the exec command enabled? Default is

+false.</li>

+</ul>

+</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="Directives"><strong>Directives</strong></a></font></td></tr><tr><td><blockquote>

+<p>Server Side Includes are invoked by embedding SSI directives in an HTML document

+ whose type will be processed by the SSI servlet. The directives take the form of an HTML

+ comment. The directive is replaced by the results of interpreting it before sending the

+ page to the client. The general form of a directive is: </p>

+<p> <code>&lt;!--#directive [parm=value] --&gt;</code></p>

+<p>The directives are:

+<ul>

+<li>

+<strong>config</strong> - <code>&lt;!--#config timefmt="%B %Y" --&gt;</code>

+Used to set the format of dates and other items processed by SSI

+</li>

+<li>

+<strong>echo</strong> -   <code>&lt;!--#echo var="VARIABLE_NAME" --&gt;</code>

+will be replaced by the value of the variable.

+</li>

+<li>

+<strong>exec</strong> -  Used to run commands on the host system.

+</li>

+<li>

+<strong>include</strong> -  <code>&lt;!--#include virtual="file-name" --&gt;</code>

+inserts the contents

+</li>

+<li>

+<strong>flastmod</strong> - <code>&lt;!--#flastmod file="filename.shtml" --&gt;</code>

+Returns the time that a file was lost modified.

+</li>

+<li>

+<strong>fsize</strong> - <code>&lt;!--#fsize file="filename.shtml" --&gt;</code>

+Returns the size of a file.

+</li>

+<li>

+<strong>printenv</strong> - <code>&lt;!--#printenv --&gt;</code>

+Returns the list of all the defined variables.

+</li>

+<li>

+<strong>set</strong> - <code>&lt;!--#set var="foo" value="Bar" --&gt;</code>

+is used to assign a value to a user-defind variable.

+</li>

+<li>

+<strong>if elif endif else</strong> - Used to create conditional sections. For example:</li>

+<code>&lt;!--#config timefmt="%A" --&gt;<br>

+  &lt;!--#if expr="$DATE_LOCAL = /Monday/" --&gt;<br>

+  &lt;p&gt;Meeting at 10:00 on Mondays&lt;/p&gt;<br>

+  &lt;!--#elif expr="$DATE_LOCAL = /Friday/" --&gt;<br>

+  &lt;p&gt;Turn in your time card&lt;/p&gt;<br>

+  &lt;!--#else --&gt;<br>

+  &lt;p&gt;Yoga class at noon.&lt;/p&gt;<br>

+  &lt;!--#endif --&gt;</code>

+ </ul>

+</p>

+See the

+<p> <a href="http://httpd.apache.org/docs/howto/ssi.html#basicssidirectives">

+Apache Introduction to SSI</a> for more information on using SSI directives.</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Variables"><strong>Variables</strong></a></font></td></tr><tr><td><blockquote>

+<p>The SSI servlet currently implements the following variables:

+</p>

+<table border="1">

+<tr>

+<th>Variable Name</th>

+<th>Description</th>

+</tr>

+

+<tr>

+<td>AUTH_TYPE</td>

+<td>

+  The type of authentication used for this user: BASIC, FORM, etc.</td>

+</tr>

+

+<tr>

+<td>CONTENT_LENGTH</td>

+<td>

+  The length of the data (in bytes or the number of

+  characters) passed from a form.</td>

+</tr>

+

+<tr>

+<td>CONTENT_TYPE</td>

+<td>

+  The MIME type of the query data, such as "text/html".</td>

+</tr>

+

+<tr>

+<td>DATE_GMT</td>

+<td>

+Current date and time in GMT</td>

+</tr>

+

+<tr>

+<td>DATE_LOCAL</td>

+<td>

+Current date and time in the local time zone</td>

+</tr>

+<tr>

+<td>DOCUMENT_NAME</td>

+<td>

+The current file</td>

+</tr>

+<tr>

+<td>DOCUMENT_URI</td>

+<td>

+Virtual path to the file</td>

+</tr>

+

+<tr>

+<td>GATEWAY_INTERFACE</td>

+<td>

+  The revision of the Common Gateway Interface that the

+  server uses if enabled: "CGI/1.1".</td>

+</tr>

+

+<tr>

+<td>HTTP_ACCEPT</td>

+<td>

+  A list of the MIME types that the client can accept.</td>

+</tr>

+

+<tr>

+<td>HTTP_ACCEPT_ENCODING</td>

+<td>

+  A list of the compression types that the client can accept.</td>

+</tr>

+

+<tr>

+<td>HTTP_ACCEPT_LANGUAGE</td>

+<td>

+  A list of the languages that the client can accept.</td>

+</tr>

+<tr>

+<td>HTTP_CONNECTION</td>

+<td>

+  The way that the connection from the client is being managed:

+  "Close" or "Keep-Alive".</td>

+</tr>

+<tr>

+<td>HTTP_HOST</td>

+<td>

+  The web site that the client requested.</td>

+</tr>

+<tr>

+<td>HTTP_REFERER</td>

+<td>

+  The URL of the document that the client linked from.</td>

+</tr>

+<tr>

+<td>HTTP_USER_AGENT</td>

+<td>

+  The browser the client is using to issue the request.</td>

+</tr>

+<tr>

+<td>LAST_MODIFIED</td>

+<td>

+Last modification date and time for current file</td>

+</tr>

+<tr>

+<td>PATH_INFO</td>

+<td>

+  Extra path information passed to a servlet.</td>

+</tr>

+<tr>

+<td>PATH_TRANSLATED</td>

+<td>

+  The translated version of the path given by the

+  variable PATH_INFO.</td>

+</tr>

+<tr>

+<td>QUERY_STRING</td>

+<td>

+The query string that follows the "?" in the URL.

+</td>

+</tr>

+<tr>

+<td>QUERY_STRING_UNESCAPED</td>

+<td>

+Undecoded query string with all shell metacharacters escaped

+with "\"</td>

+</tr>

+<tr>

+<td>REMOTE_ADDR</td>

+<td>

+  The remote IP address of the user making the request.</td>

+</tr>

+<tr>

+<td>REMOTE_HOST</td>

+<td>

+  The remote hostname of the user making the request.</td>

+</tr>

+<tr>

+<td>REMOTE_PORT</td>

+<td>

+  The port number at remote IP address of the user making the request.</td>

+</tr>

+<tr>

+<td>REMOTE_USER</td>

+<td>

+  The authenticated name of the user.</td>

+</tr>

+<tr>

+<td>REQUEST_METHOD</td>

+<td>

+  The method with which the information request was

+  issued: "GET", "POST" etc.</td>

+</tr>

+<tr>

+<td>REQUEST_URI</td>

+<td>

+  The web page originally requested by the client.</td>

+</tr>

+<tr>

+<td>SCRIPT_FILENAME</td>

+<td>

+  The location of the current web page on the server.</td>

+</tr>

+<tr>

+<td>SCRIPT_NAME</td>

+<td>

+  The name of the web page.</td>

+</tr>

+<tr>

+<td>SERVER_ADDR</td>

+<td>

+  The server's IP address.</td>

+</tr>

+<tr>

+<td>SERVER_NAME</td>

+<td>

+  The server's hostname or IP address.</td>

+</tr>

+<tr>

+<td>SERVER_PORT</td>

+<td>

+  The port on which the server received the request.</td>

+</tr>

+<tr>

+<td>SERVER_PROTOCOL</td>

+<td>

+  The protocol used by the server. E.g. "HTTP/1.1".</td>

+</tr>

+<tr>

+<td>SERVER_SOFTWARE</td>

+<td>

+  The name and version of the server software that is

+  answering the client request.</td>

+</tr>

+<tr>

+<td>UNIQUE_ID</td>

+<td>

+  A token used to identify the current session if one

+  has been established.</td>

+</tr>

+</table>

+</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="/tomcat-7.0-doc/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/ssi-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/ssl-howto.html b/webapps/docs/ssl-howto.html
new file mode 100644
index 0000000..770761c
--- /dev/null
+++ b/webapps/docs/ssl-howto.html
@@ -0,0 +1,606 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - SSL Configuration HOW-TO</title><meta name="author" content="Christopher Cain"><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;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>SSL Configuration HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Quick_Start">Quick Start</a></li><li><a href="#Introduction_to_SSL">Introduction to SSL</a></li><li><a href="#SSL_and_Tomcat">SSL and Tomcat</a></li><li><a href="#Certificates">Certificates</a></li><li><a href="#General_Tips_on_Running_SSL">General Tips on Running SSL</a></li><li><a href="#Configuration">Configuration</a><ol><li><a href="#Prepare_the_Certificate_Keystore">Prepare the Certificate Keystore</a></li><li><a href="#Edit_the_Tomcat_Configuration_File">Edit the Tomcat Configuration File</a></li></ol></li><li><a href="#Installing_a_Certificate_from_a_Certificate_Authority">Installing a Certificate from a Certificate Authority</a><ol><li><a href="#Create_a_local_Certificate_Signing_Request_(CSR)">Create a local Certificate Signing Request (CSR)</a></li><li><a href="#Importing_the_Certificate">Importing the Certificate</a></li></ol></li><li><a href="#Troubleshooting">Troubleshooting</a></li><li><a href="#Using_the_SSL_for_session_tracking_in_your_application">Using the SSL for session tracking in your application</a></li><li><a href="#Miscellaneous_Tips_and_Bits">Miscellaneous Tips and Bits</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="Quick Start"><!--()--></a><a name="Quick_Start"><strong>Quick Start</strong></a></font></td></tr><tr><td><blockquote>

+

+    <blockquote><em>

+    <p>The description below uses the variable name $CATALINA_BASE to refer the

+    base directory against which most relative paths are resolved. If you have

+    not configured Tomcat for multiple instances by setting a CATALINA_BASE

+    directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,

+    the directory into which you have installed Tomcat.</p>

+    </em></blockquote>

+

+<p>To install and configure SSL support on Tomcat, you need to follow

+these simple steps.  For more information, read the rest of this HOW-TO.</p>

+<ol>

+<li>Create a keystore file to store the server's private key and

+self-signed certificate by executing the following command:

+<p>Windows:</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>

+%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>Unix:</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>

+$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p></p>

+    and specify a password value of "changeit".</li><br><br>

+<li>Uncomment the "SSL HTTP/1.1 Connector" entry in

+    <code>$CATALINA_BASE/conf/server.xml</code> and modify as described in

+    the <a href="#Configuration">Configuration section</a> below.</li>

+    <br><br>

+</ol>

+

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction to SSL"><!--()--></a><a name="Introduction_to_SSL"><strong>Introduction to SSL</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>SSL, or Secure Socket Layer, is a technology which allows web browsers and

+web servers to communicate over a secured connection.  This means that the data

+being sent is encrypted by one side, transmitted, then decrypted by the other

+side before processing.  This is a two-way process, meaning that both the

+server AND the browser encrypt all traffic before sending out data.</p>

+

+<p>Another important aspect of the SSL protocol is Authentication.  This means

+that during your initial attempt to communicate with a web server over a secure

+connection, that server will present your web browser with a set of

+credentials, in the form of a "Certificate", as proof the site is who and what

+it claims to be.  In certain cases, the server may also request a Certificate

+from your web browser, asking for proof that <em>you</em> are who you claim

+to be.  This is known as "Client Authentication," although in practice this is

+used more for business-to-business (B2B) transactions than with individual

+users.  Most SSL-enabled web servers do not request Client Authentication.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SSL and Tomcat"><!--()--></a><a name="SSL_and_Tomcat"><strong>SSL and Tomcat</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>It is important to note that configuring Tomcat to take advantage of

+secure sockets is usually only necessary when running it as a stand-alone

+web server.  When running Tomcat primarily as a Servlet/JSP container behind

+another web server, such as Apache or Microsoft IIS, it is usually necessary

+to configure the primary web server to handle the SSL connections from users.

+Typically, this server will negotiate all SSL-related functionality, then

+pass on any requests destined for the Tomcat container only after decrypting

+those requests.  Likewise, Tomcat will return cleartext responses, that will

+be encrypted before being returned to the user's browser.  In this environment,

+Tomcat knows that communications between the primary web server and the

+client are taking place over a secure connection (because your application

+needs to be able to ask about this), but it does not participate in the

+encryption or decryption itself.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Certificates"><strong>Certificates</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>In order to implement SSL, a web server must have an associated Certificate

+for each external interface (IP address) that accepts secure connections.

+The theory behind this design is that a server should provide some kind of

+reasonable assurance that its owner is who you think it is, particularly

+before receiving any sensitive information.  While a broader explanation of

+Certificates is beyond the scope of this document, think of a Certificate

+as a "digital driver's license" for an Internet address.  It states what

+company the site is associated with, along with some basic contact

+information about the site owner or administrator.</p>

+

+<p>This "driver's license" is cryptographically signed by its owner, and is

+therefore extremely difficult for anyone else to forge.  For sites involved

+in e-commerce, or any other business transaction in which authentication of

+identity is important, a Certificate is typically purchased from a well-known

+<em>Certificate Authority</em> (CA) such as VeriSign or Thawte.  Such

+certificates can be electronically verified -- in effect, the Certificate

+Authority will vouch for the authenticity of the certificates that it grants,

+so you can believe that that Certificate is valid if you trust the Certificate

+Authority that granted it.</p>

+

+<p>In many cases, however, authentication is not really a concern.  An

+administrator may simply want to ensure that the data being transmitted and

+received by the server is private and cannot be snooped by anyone who may be

+eavesdropping on the connection.  Fortunately, Java provides a relatively

+simple command-line tool, called <code>keytool</code>, which can easily create

+a "self-signed" Certificate.  Self-signed Certificates are simply user

+generated Certificates which have not been officially registered with any

+well-known CA, and are therefore not really guaranteed to be authentic at all.

+Again, this may or may not even be important, depending on your needs.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="General Tips on Running SSL"><!--()--></a><a name="General_Tips_on_Running_SSL"><strong>General Tips on Running SSL</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>The first time a user attempts to access a secured page on your site,

+he or she is typically presented with a dialog containing the details of

+the certificate (such as the company and contact name), and asked if he or she

+wishes to accept the Certificate as valid and continue with the transaction.

+Some browsers will provide an option for permanently accepting a given

+Certificate as valid, in which case the user will not be bothered with a

+prompt each time they visit your site.  Other browsers do not provide this

+option.  Once approved by the user, a Certificate will be considered valid

+for at least the entire browser session.</p>

+

+<p>Also, while the SSL protocol was designed to be as efficient as securely

+possible, encryption/decryption is a computationally expensive process from

+a performance standpoint.  It is not strictly necessary to run an entire

+web application over SSL, and indeed a developer can pick and choose which

+pages require a secure connection and which do not.  For a reasonably busy

+site, it is customary to only run certain pages under SSL, namely those

+pages where sensitive information could possibly be exchanged.  This would

+include things like login pages, personal information pages, and shopping

+cart checkouts, where credit card information could possibly be transmitted.

+Any page within an application can be requested over a secure socket by

+simply prefixing the address with <code>https:</code> instead of

+<code>http:</code>.  Any pages which absolutely <strong>require</strong>

+a secure connection should check the protocol type associated with the

+page request and take the appropriate action if <code>https</code> is not

+specified.</p>

+

+<p>Finally, using name-based virtual hosts on a secured connection can be

+problematic.  This is a design limitation of the SSL protocol itself.  The SSL

+handshake, where the client browser accepts the server certificate, must occur

+before the HTTP request is accessed.  As a result, the request information

+containing the virtual host name cannot be determined prior to authentication,

+and it is therefore not possible to assign multiple certificates to a single

+IP address.  If all virtual hosts on a single IP address need to authenticate

+against the same certificate, the addition of multiple virtual hosts should not

+interfere with normal SSL operations on the server.  Be aware, however, that

+most client browsers will compare the server's domain name against the domain

+name listed in the certificate, if any (applicable primarily to official,

+CA-signed certificates).  If the domain names do not match, these browsers will

+display a warning to the client user.  In general, only address-based virtual

+hosts are commonly used with SSL in a production environment.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration"><strong>Configuration</strong></a></font></td></tr><tr><td><blockquote>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Prepare the Certificate Keystore"><!--()--></a><a name="Prepare_the_Certificate_Keystore"><strong>Prepare the Certificate Keystore</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Tomcat currently operates only on <code>JKS</code>, <code>PKCS11</code> or

+<code>PKCS12</code> format keystores.  The <code>JKS</code> format

+is Java's standard "Java KeyStore" format, and is the format created by the

+<code>keytool</code> command-line utility.  This tool is included in the JDK.

+The <code>PKCS12</code> format is an internet standard, and can be manipulated

+via (among other things) OpenSSL and Microsoft's Key-Manager.

+</p>

+

+<p>Each entry in a keystore is identified by an alias string. Whilst many

+keystore implementations treat aliases in a case insensitive manner, case

+sensitive implementations are available. The <code>PKCS11</code> specification,

+for example, requires that aliases are case sensitive. To avoid issues related

+to the case sensitivity of aliases, it is not recommended to use aliases that

+differ only in case.

+</p>

+

+<p>To import an existing certificate into a JKS keystore, please read the

+documentation (in your JDK documentation package) about <code>keytool</code>.

+Note that OpenSSL often adds readable comments before the key,

+<code>keytool</code>does not support that, so remove the OpenSSL comments if

+they exist before importing the key using <code>keytool</code>.

+</p>

+<p>To import an existing certificate signed by your own CA into a PKCS12

+keystore using OpenSSL you would execute a command like:

+<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>openssl pkcs12 -export -in mycert.crt -inkey mykey.key \

+                        -out mycert.p12 -name tomcat -CAfile myCA.crt \

+                        -caname root -chain

+</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>

+For more advanced cases, consult the <a href="http://www.openssl.org/">OpenSSL

+documentation</a>.

+</p>

+<p>To create a new keystore from scratch, containing a single self-signed

+Certificate, execute the following from a terminal command line:</p>

+<p>Windows:</p>

+<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>

+%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>Unix:</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>

+$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>(The RSA algorithm should be preferred as a secure algorithm, and this

+also ensures general compatibility with other servers and components.)</p>

+

+<p>This command will create a new file, in the home directory of the user

+under which you run it, named "<code>.keystore</code>".  To specify a

+different location or filename, add the <code>-keystore</code> parameter,

+followed by the complete pathname to your keystore file,

+to the <code>keytool</code> command shown above.  You will also need to

+reflect this new location in the <code>server.xml</code> configuration file,

+as described later.  For example:</p>

+<p>Windows:</p>

+<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>

+%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA \

+  -keystore \path\to\my\keystore

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>Unix:</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>

+$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA \

+  -keystore /path/to/my/keystore

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+<p>After executing this command, you will first be prompted for the keystore

+password.  The default password used by Tomcat is "<code>changeit</code>"

+(all lower case), although you can specify a custom password if you like.

+You will also need to specify the custom password in the

+<code>server.xml</code> configuration file, as described later.</p>

+

+<p>Next, you will be prompted for general information about this Certificate,

+such as company, contact name, and so on.  This information will be displayed

+to users who attempt to access a secure page in your application, so make

+sure that the information provided here matches what they will expect.</p>

+

+<p>Finally, you will be prompted for the <em>key password</em>, which is the

+password specifically for this Certificate (as opposed to any other

+Certificates stored in the same keystore file). The <code>keytool</code> prompt

+will tell you that pressing the ENTER key automatically uses the same password

+for the key as the keystore. You are free to use the same password or to select

+a custom one. If you select a different password to the keystore password, you

+will also need to specify the custom password in the <code>server.xml</code>

+configuration file.</p>

+

+<p>If everything was successful, you now have a keystore file with a

+Certificate that can be used by your server.</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="Edit the Tomcat Configuration File"><!--()--></a><a name="Edit_the_Tomcat_Configuration_File"><strong>Edit the Tomcat Configuration File</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+Tomcat can use two different implementations of SSL:

+<ul>

+<li>the JSSE implementation provided as part of the Java runtime (since 1.4)</li>

+<li>the APR implementation, which uses the OpenSSL engine by default.</li>

+</ul>

+The exact configuration details depend on which implementation is being used.

+The implementation used by Tomcat is chosen automatically unless it is overriden as described below.

+If the installation uses <a href="apr.html">APR</a>

+- i.e. you have installed the Tomcat native library -

+then it will use the APR SSL implementation, otherwise it will use the Java JSSE implementation.

+</p>

+

+<p>

+  To avoid auto configuration you can define which implementation to use by specifying a classname

+  in the <b>protocol</b> attribute of the Connector.<br>

+  To define a Java (JSSE) connector, regardless of whether the APR library is loaded or not do:

+<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>

+&lt;!-- Define a blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+&lt;Connector protocol="org.apache.coyote.http11.Http11Protocol"

+           port="8443" .../&gt;

+

+&lt;!-- Define a non-blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+&lt;Connector protocol="org.apache.coyote.http11.Http11NioProtocol"

+           port="8443" .../&gt;

+</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>

+Alternatively, to specify an APR connector (the APR library must be available) use:

+<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>

+&lt;!-- Define a APR SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+&lt;Connector protocol="org.apache.coyote.http11.Http11AprProtocol"

+           port="8443" .../&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+

+</p>

+

+<p>If you are using APR, you have the option of configuring an alternative engine to OpenSSL.

+<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>

+&lt;Listener className="org.apache.catalina.core.AprLifecycleListener"

+          SSLEngine="someengine" SSLRandomSeed="somedevice" /&gt;

+</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>

+The default value is

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Listener className="org.apache.catalina.core.AprLifecycleListener"

+          SSLEngine="on" SSLRandomSeed="builtin" /&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+So to use SSL under APR, make sure the SSLEngine attribute is set to something other than <code>off</code>.

+The default value is <code>on</code> and if you specify another value, it has to be a valid engine name.

+<br>

+If you haven't compiled in SSL support into your Tomcat Native library, then you can turn this initialization off

+<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>

+&lt;Listener className="org.apache.catalina.core.AprLifecycleListener"

+          SSLEngine="off" /&gt;

+</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>

+SSLRandomSeed allows to specify a source of entropy. Productive system needs a reliable source of entropy

+but entropy may need a lot of time to be collected therefore test systems could use no blocking entropy

+sources like "/dev/urandom" that will allow quicker starts of Tomcat.

+

+</p>

+

+<p>The final step is to configure the Connector in the

+<code>$CATALINA_BASE/conf/server.xml</code> file, where

+<code>$CATALINA_BASE</code> represents the base directory for the

+Tomcat instance.  An example <code>&lt;Connector&gt;</code> element

+for an SSL connector is included in the default <code>server.xml</code>

+file installed with Tomcat.  To configure an SSL connector that uses JSSE, you

+will need to remove the comments and edit it so it looks 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>

+&lt;!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+&lt;Connector

+           protocol="HTTP/1.1"

+           port="8443" maxThreads="200"

+           scheme="https" secure="true" SSLEnabled="true"

+           keystoreFile="${user.home}/.keystore" keystorePass="changeit"

+           clientAuth="false" sslProtocol="TLS"/&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>

+  The example above will throw an error if you have the APR and the Tomcat

+  Native libraries in your path, as Tomcat will try to use the APR connector.

+  The APR connector uses different attributes for many SSL settings,

+  particularly keys and certificates. An example of an APR configuration is:

+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;

+&lt;Connector

+           protocol="HTTP/1.1"

+           port="8443" maxThreads="200"

+           scheme="https" secure="true" SSLEnabled="true"

+           SSLCertificateFile="/usr/local/ssl/server.crt"

+           SSLCertificateKeyFile="/usr/local/ssl/server.pem"

+           SSLVerifyClient="optional" SSLProtocol="TLSv1"/&gt;

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+

+<p>You will note that the example SSL connector elements are commented out by

+default. You can either remove the comment tags from around the the example SSL

+connector you wish to use or add a new Connector element of your own. In either

+case, you will need to configure the SSL Connector for your requirements

+and environment. The configuration options and information on which attributes

+are mandatory, are documented in the SSL Support section of the

+<a href="config/http.html#SSL Support">HTTP connector</a> configuration

+reference. Make sure that you use the correct attributes for the connector you

+are using. The BIO and NIO connectors use JSSE whereas the APR/native connector

+uses APR.</p>

+

+<p>The <code>port</code> attribute (default value is 8443) is the TCP/IP

+port number on which Tomcat will listen for secure connections.  You can

+change this to any port number you wish (such as to the default port for

+<code>https</code> communications, which is 443).  However, special setup

+(outside the scope of this document) is necessary to run Tomcat on port

+numbers lower than 1024 on many operating systems.</p>

+

+  <blockquote><em>

+  <p>If you change the port number here, you should also change the

+  value specified for the <code>redirectPort</code> attribute on the

+  non-SSL connector.  This allows Tomcat to automatically redirect

+  users who attempt to access a page with a security constraint specifying

+  that SSL is required, as required by the Servlet Specification.</p>

+  </em></blockquote>

+

+<p>After completing these configuration changes, you must restart Tomcat as

+you normally do, and you should be in business.  You should be able to access

+any web application supported by Tomcat via SSL.  For example, try:</p>

+<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>

+https://localhost:8443

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+<p>and you should see the usual Tomcat splash page (unless you have modified

+the ROOT web application).  If this does not work, the following section

+contains some troubleshooting tips.</p>

+

+</blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installing a Certificate from a Certificate Authority"><!--()--></a><a name="Installing_a_Certificate_from_a_Certificate_Authority"><strong>Installing a Certificate from a Certificate Authority</strong></a></font></td></tr><tr><td><blockquote>

+<p>To obtain and install a Certificate from a Certificate Authority (like verisign.com, thawte.com

+or trustcenter.de), read the previous section and then follow these instructions:</p>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Create a local Certificate Signing Request (CSR)"><!--()--></a><a name="Create_a_local_Certificate_Signing_Request_(CSR)"><strong>Create a local Certificate Signing Request (CSR)</strong></a></font></td></tr><tr><td><blockquote>

+<p>In order to obtain a Certificate from the Certificate Authority of your choice

+you have to create a so called Certificate Signing Request (CSR). That CSR will be used

+by the Certificate Authority to create a Certificate that will identify your website

+as "secure". To create a CSR follow these steps:</p>

+<ul>

+<li>Create a local Certificate (as described in the previous section):

+    <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>keytool -genkey -alias tomcat -keyalg RSA \

+    -keystore &lt;your_keystore_filename&gt;</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>

+    Note: In some cases you will have to enter the domain of your website (i.e. <code>www.myside.org</code>)

+    in the field "first- and lastname" in order to create a working Certificate.

+</li>

+<li>The CSR is then created with:

+    <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>keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr \

+    -keystore &lt;your_keystore_filename&gt;</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>

+</li>

+</ul>

+<p>Now you have a file called <code>certreq.csr</code> that you can submit to the Certificate Authority (look at the

+documentation of the Certificate Authority website on how to do this). In return you get a Certificate.</p>

+</blockquote></td></tr></table>

+

+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Importing the Certificate"><!--()--></a><a name="Importing_the_Certificate"><strong>Importing the Certificate</strong></a></font></td></tr><tr><td><blockquote>

+<p>Now that you have your Certificate you can import it into you local keystore.

+First of all you have to import a so called Chain Certificate or Root Certificate into your keystore.

+After that you can proceed with importing your Certificate.</p>

+

+<ul>

+<li>Download a Chain Certificate from the Certificate Authority you obtained the Certificate from.<br>

+    For Verisign.com commercial certificates go to:

+            http://www.verisign.com/support/install/intermediate.html<br>

+        For Verisign.com trial certificates go to:

+            http://www.verisign.com/support/verisign-intermediate-ca/Trial_Secure_Server_Root/index.html<br>

+    For Trustcenter.de go to:

+            http://www.trustcenter.de/certservices/cacerts/en/en.htm#server<br>

+    For Thawte.com go to:

+            http://www.thawte.com/certs/trustmap.html<br>

+</li>

+<li>Import the Chain Certificate into your keystore

+    <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>keytool -import -alias root -keystore &lt;your_keystore_filename&gt; \

+    -trustcacerts -file &lt;filename_of_the_chain_certificate&gt;</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>

+</li>

+<li>And finally import your new Certificate

+    <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>keytool -import -alias tomcat -keystore &lt;your_keystore_filename&gt; \

+    -file &lt;your_certificate_filename&gt;</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>

+</li>

+</ul>

+</blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Troubleshooting"><strong>Troubleshooting</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>Here is a list of common problems that you may encounter when setting up

+SSL communications, and what to do about them.</p>

+

+<ul>

+

+<li>When Tomcat starts up, I get an exception like

+    "java.io.FileNotFoundException: {some-directory}/{some-file} not found".

+    <blockquote>

+    <p>A likely explanation is that Tomcat cannot find the keystore file

+    where it is looking.  By default, Tomcat expects the keystore file to

+    be named <code>.keystore</code> in the user home directory under which

+    Tomcat is running (which may or may not be the same as yours :-).  If

+    the keystore file is anywhere else, you will need to add a

+    <code>keystoreFile</code> attribute to the <code>&lt;Factory&gt;</code>

+    element in the <a href="#Edit the Tomcat Configuration File">Tomcat

+    configuration file</a>.</p>

+    </blockquote></li>

+

+<li>When Tomcat starts up, I get an exception like

+    "java.io.FileNotFoundException:  Keystore was tampered with, or

+    password was incorrect".

+    <blockquote>

+    <p>Assuming that someone has not <em>actually</em> tampered with

+    your keystore file, the most likely cause is that Tomcat is using

+    a different password than the one you used when you created the

+    keystore file.  To fix this, you can either go back and

+    <a href="#Prepare the Certificate Keystore">recreate the keystore

+    file</a>, or you can add or update the <code>keystorePass</code>

+    attribute on the <code>&lt;Connector&gt;</code> element in the

+    <a href="#Edit the Tomcat Configuration File">Tomcat configuration

+    file</a>.  <strong>REMINDER</strong> - Passwords are case sensitive!</p>

+    </blockquote></li>

+

+<li>When Tomcat starts up, I get an exception like

+    "java.net.SocketException: SSL handshake errorjavax.net.ssl.SSLException: No

+    available certificate or key corresponds to the SSL cipher suites which are

+    enabled."

+    <blockquote>

+    <p>A likely explanation is that Tomcat cannot find the alias for the server

+    key within the specified keystore. Check that the correct

+    <code>keystoreFile</code> and <code>keyAlias</code> are specified in the

+    <code>&lt;Connector&gt;</code> element in the

+    <a href="#Edit the Tomcat Configuration File">Tomcat configuration file</a>.

+    <strong>REMINDER</strong> - <code>keyAlias</code> values may be case

+    sensitive!</p>

+    </blockquote></li>

+

+</ul>

+

+<p>If you are still having problems, a good source of information is the

+<strong>TOMCAT-USER</strong> mailing list.  You can find pointers to archives

+of previous messages on this list, as well as subscription and unsubscription

+information, at

+<a href="http://tomcat.apache.org/lists.html">http://tomcat.apache.org/lists.html</a>.</p>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the SSL for session tracking in your application"><!--()--></a><a name="Using_the_SSL_for_session_tracking_in_your_application"><strong>Using the SSL for session tracking in your application</strong></a></font></td></tr><tr><td><blockquote>

+  <p>This is a new feature in the Servlet 3.0 specification. Because it uses the

+     SSL session ID associated with the physical client-server connection there

+     are some limitations. They are:

+    <ul>

+      <li>Tomcat must have a connector with the attribute

+          <strong>isSecure</strong> set to <code>true</code>.</li>

+      <li>If SSL connections are managed by a proxy or a hardware accelerator

+          they must populate the SSL request headers (see the SSLValve) so that

+          the SSL session ID is visible to Tomcat.</li>

+      <li>If Tomcat terminates the SSL connection, it will not be possible to use

+          session replication as the SSL session IDs will be different on each

+          node.</li>

+    </ul>

+  </p>

+

+  <p>

+    To enable SSL session tracking you need to use a context listener to set the

+    tracking mode for the context to be just SSL (if any other tracking mode is

+    enabled, it will be used in preference). It might look something like:

+    <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>

+package org.apache.tomcat.example;

+

+import java.util.EnumSet;

+

+import javax.servlet.ServletContext;

+import javax.servlet.ServletContextEvent;

+import javax.servlet.ServletContextListener;

+import javax.servlet.SessionTrackingMode;

+

+public class SessionTrackingModeListener implements ServletContextListener {

+

+    @Override

+    public void contextDestroyed(ServletContextEvent event) {

+        // Do nothing

+    }

+

+    @Override

+    public void contextInitialized(ServletContextEvent event) {

+        ServletContext context = event.getServletContext();

+        EnumSet&lt;SessionTrackingMode&gt; modes =

+            EnumSet.of(SessionTrackingMode.SSL);

+

+        context.setSessionTrackingModes(modes);

+    }

+

+}

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </p>

+  <p>Note: SSL session tracking is implemented for the BIO and NIO connectors.

+     It is not yet implemented for the APR connector.</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="Miscellaneous Tips and Bits"><!--()--></a><a name="Miscellaneous_Tips_and_Bits"><strong>Miscellaneous Tips and Bits</strong></a></font></td></tr><tr><td><blockquote>

+

+<p>To access the SSL session ID from the request, use:<br>

+

+  <code>

+    String sslID = (String)request.getAttribute("javax.servlet.request.ssl_session_id");

+  </code>

+<br>

+For additional discussion on this area, please see

+<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=22679">Bugzilla</a>.

+</p>

+

+  <p>To terminate an SSL session, use:

+    <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>

+// Standard HTTP session invalidation

+session.invalidate();

+

+// Invalidate the SSL Session

+org.apache.tomcat.util.net.SSLSessionManager mgr =

+    (org.apache.tomcat.util.net.SSLSessionManager)

+    request.getAttribute("javax.servlet.request.ssl_session_mgr");

+mgr.invalidateSession();

+

+// Close the connection since the SSL session will be active until the connection

+// is closed

+response.setHeader("Connection", "close");

+    </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>

+    Note that this code is Tomcat specific due to the use of the

+    SSLSessionManager class. This is currently only available for the BIO and

+    NIO connectors, not the APR/native connector.

+  </p>

+</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="/tomcat-7.0-doc/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/ssl-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/developers.html b/webapps/docs/tribes/developers.html
new file mode 100644
index 0000000..e52073c
--- /dev/null
+++ b/webapps/docs/tribes/developers.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Developers</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Developers</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Developers"><strong>Developers</strong></a></font></td></tr><tr><td><blockquote>

+    <p>TODO</p>

+</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="/tomcat-7.0-doc/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/tribes/developers.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/faq.html b/webapps/docs/tribes/faq.html
new file mode 100644
index 0000000..1dbe90a
--- /dev/null
+++ b/webapps/docs/tribes/faq.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Frequently Asked Questions</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Frequently Asked Questions</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Frequently Asked Questions"><!--()--></a><a name="Frequently_Asked_Questions"><strong>Frequently Asked Questions</strong></a></font></td></tr><tr><td><blockquote>

+    <p>TODO</p>

+</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="/tomcat-7.0-doc/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/tribes/faq.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/interceptors.html b/webapps/docs/tribes/interceptors.html
new file mode 100644
index 0000000..19e2766
--- /dev/null
+++ b/webapps/docs/tribes/interceptors.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Interceptors</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Interceptors</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Interceptors"><strong>Interceptors</strong></a></font></td></tr><tr><td><blockquote>

+    <p>TODO</p>

+</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="/tomcat-7.0-doc/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/tribes/interceptors.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/introduction.html b/webapps/docs/tribes/introduction.html
new file mode 100644
index 0000000..f657ed3
--- /dev/null
+++ b/webapps/docs/tribes/introduction.html
@@ -0,0 +1,275 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Introduction</title><meta name="author" content="Filip Hanik"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Introduction</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="#Quick_Start">Quick Start</a></li><li><a href="#What_is_Tribes">What is Tribes</a></li><li><a href="#Why_another_messaging_framework">Why another messaging framework</a></li><li><a href="#Feature_Overview">Feature Overview</a></li><li><a href="#Where_can_I_get_Tribes">Where can I get Tribes</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="Quick Start"><!--()--></a><a name="Quick_Start"><strong>Quick Start</strong></a></font></td></tr><tr><td><blockquote>

+

+  <p>Apache Tribes is a group or peer-to-peer communication framework that enables you to easily connect

+     your remote objects to communicate with each other.

+  </p>

+  <ul>

+    <li>Import: <code>org.apache.catalina.tribes.Channel</code></li>

+    <li>Import: <code>org.apache.catalina.tribes.Member</code></li>

+    <li>Import: <code>org.apache.catalina.tribes.MembershipListener</code></li>

+    <li>Import: <code>org.apache.catalina.tribes.ChannelListener</code></li>

+    <li>Import: <code>org.apache.catalina.tribes.group.GroupChannel</code></li>

+    <li>Create a class that implements: <code>org.apache.catalina.tribes.ChannelListener</code></li>

+    <li>Create a class that implements: <code>org.apache.catalina.tribes.MembershipListener</code></li>

+    <li>Simple class to demonstrate how to send a message:

+      <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>

+        //create a channel

+        Channel myChannel = new GroupChannel();

+

+        //create my listeners

+        ChannelListener msgListener = new MyMessageListener();

+        MembershipListener mbrListener = new MyMemberListener();

+

+        //attach the listeners to the channel

+        myChannel.addMembershipListener(mbrListener);

+        myChannel.addChannelListener(msgListener);

+

+        //start the channel

+        myChannel.start(Channel.DEFAULT);

+

+        //create a message to be sent, message must implement java.io.Serializable

+        //for performance reasons you probably want them to implement java.io.Externalizable

+        Serializable myMsg = new MyMessage();

+

+        //retrieve my current members

+        Member[] group = myChannel.getMembers();

+

+        //send the message

+        channel.send(group,myMsg,Channel.SEND_OPTIONS_DEFAULT);

+      </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>

+    </li>

+  </ul>

+  <p>

+      Simple yeah? There is a lot more to Tribes than we have shown, hopefully the docs will be able

+      to explain more to you. Remember, that we are always interested in suggestions, improvements, bug fixes

+      and anything that you think would help this project.

+  </p>

+  <p>

+      Note: Tribes is currently built for JDK1.5, you can run on JDK1.4 by a small modifications to locks used from the <code>java.util.concurrent</code> package.

+  </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="What is Tribes"><!--()--></a><a name="What_is_Tribes"><strong>What is Tribes</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    Tribes is a messaging framework with group communication abilities. Tribes allows you to send and receive

+    messages over a network, it also allows for dynamic discovery of other nodes in the network.<br>

+    And that is the short story, it really is as simple as that. What makes Tribes useful and unique will be

+    described in the section below.<br>

+  </p>

+  <p>

+    The Tribes module was started early 2006 and a small part of the code base comes from the clustering module

+    that has been existing since 2003 or 2004.

+    The current cluster implementation has several short comings and many workarounds were created due

+    to the complexity in group communication. Long story short, what should have been two modules a long time

+    ago, will be now. Tribes takes out the complexity of messaging from the replication module and becomes

+    a fully independent and highly flexible group communication module.<br>

+  </p>

+  <p>

+    In Tomcat the old <code>modules/cluster</code> has now become <code>modules/groupcom</code>(Tribes) and

+    <code>modules/ha</code> (replication). This will allow development to proceed and let the developers

+    focus on the issues they are actually working on rather than getting boggled down in details of a module

+    they are not interested in. The understanding is that both communication and replication are complex enough,

+    and when trying to develop them in the same module, well you know, it becomes a cluster :)<br>

+  </p>

+  <p>

+    Tribes allows for guaranteed messaging, and can be customized in many ways. Why is this important?<br>

+    Well, you as a developer want to know that the messages you are sending are reaching their destination.

+    More than that, if a message doesn't reach its destination, the application on top of Tribes will be notified

+    that the message was never sent, and what node it failed.

+  </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="Why another messaging framework"><!--()--></a><a name="Why_another_messaging_framework"><strong>Why another messaging framework</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    I am a big fan of reusing code and would never dream of developing something if someone else has already

+    done it and it was available to me and the community I try to serve.<br>

+    When I did my research to improve the clustering module I was constantly faced with a few obstacles:<br>

+    1. The framework wasn't flexible enough<br>

+    2. The framework was licensed in a way that neither I nor the community could use it<br>

+    3. Several features that I needed were missing<br>

+    4. Messaging was guaranteed, but no feedback was reported to me<br>

+    5. The semantics of my message delivery had to be configured before runtime<br>

+    And the list continues...

+  </p>

+  <p>

+    So I came up with Tribes, to address these issues and other issues that came along.

+    When designing Tribes I wanted to make sure I didn't lose any of the flexibility and

+    delivery semantics that the existing frameworks already delivered. The goal was to create a framework

+    that could do everything that the others already did, but to provide more flexibility for the application

+    developer. In the next section will give you the high level overview of what features tribes offers or will offer.

+  </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="Feature Overview"><!--()--></a><a name="Feature_Overview"><strong>Feature Overview</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    To give you an idea of the feature set I will list it out here.

+    Some of the features are not yet completed, if that is the case they are marked accordingly.

+  </p>

+  <p>

+    <b>Pluggable modules</b><br>

+    Tribes is built using interfaces. Any of the modules or components that are part of Tribes can be swapped out

+    to customize your own Tribes implementation.

+  </p>

+  <p>

+    <b>Guaranteed Messaging</b><br>

+    In the default implementation of Tribes uses TCP or UDP for messaging. TCP already has guaranteed message delivery

+    and flow control built in. I believe that the performance of Java TCP, will outperform an implementation of

+    Java/UDP/flow-control/message guarantee since the logic happens further down the stack. UDP messaging has been added in for

+    sending messages over UDP instead of TCP when desired. The same guarantee scenarios as described below are still available

+    over UDP, however, when a UDP message is lost, it's considered failed.<br>

+    Tribes supports both non-blocking and blocking IO operations. The recommended setting is to use non blocking

+    as it promotes better parallelism when sending and receiving messages. The blocking implementation is available

+    for those platforms where NIO is still a trouble child.

+  </p>

+  <p>

+    <b>Different Guarantee Levels</b><br>

+    There are three different levels of delivery guarantee when a message is sent.<br>

+    <ol>

+      <li>IO Based send guarantee. - fastest, least reliable<br>

+          This means that Tribes considers the message transfer to be successful

+          if the message was sent to the socket send buffer and accepted.<br>

+          On blocking IO, this would be <code>socket.getOutputStream().write(msg)</code><br>

+          On non blocking IO, this would be <code>socketChannel.write()</code>, and the buffer byte buffer gets emptied

+          followed by a <code>socketChannel.read()</code> to ensure the channel still open.

+          The <code>read()</code> has been added since <code>write()</code> will succeed if the connection has been "closed"

+          when using NIO.

+      </li>

+      <li>ACK based. - recommended, guaranteed delivery<br>

+          When the message has been received on a remote node, an ACK is sent back to the sender,

+          indicating that the message was received successfully.

+      </li>

+      <li>SYNC_ACK based. - guaranteed delivery, guaranteed processed, slowest<br>

+          When the message has been received on a remote node, the node will process

+          the message and if the message was processed successfully, an ACK is sent back to the sender

+          indicating that the message was received and processed successfully.

+          If the message was received, but processing it failed, an ACK_FAIL will be sent back

+          to the sender. This is a unique feature that adds an incredible amount value to the application

+          developer. Most frameworks here will tell you that the message was delivered, and the application

+          developer has to build in logic on whether the message was actually processed properly by the application

+          on the remote node. If configured, Tribes will throw an exception when it receives an ACK_FAIL

+          and associate that exception with the member that didn't process the message.

+      </li>

+    </ol>

+    You can of course write even more sophisticated guarantee levels, and some of them will be mentioned later on

+    in the documentation. One mentionable level would be a 2-Phase-Commit, where the remote applications don't receive

+    the message until all nodes have received the message. Sort of like a all-or-nothing protocol.

+  </p>

+  <p>

+    <b>Per Message Delivery Attributes</b><br>

+    Perhaps the feature that makes Tribes stand out from the crowd of group communication frameworks.

+    Tribes enables you to send to decide what delivery semantics a message transfer should have on a per

+    message basis. Meaning, that your messages are not delivered based on some static configuration

+    that remains fixed after the message framework has been started.<br>

+    To give you an example of how powerful this feature is, I'll try to illustrate it with a simple example.

+    Imagine you need to send 10 different messages, you could send the the following way:

+    <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>

+      Message_1 - asynchronous and fast, no guarantee required, fire and forget

+      Message_2 - all-or-nothing, either all receivers get it, or none.

+      Message_3 - encrypted and SYNC_ACK based

+      Message_4 - asynchronous, SYNC_ACK and call back when the message is processed on the remote nodes

+      Message_5 - totally ordered, this message should be received in the same order on all nodes that have been

+                  send totally ordered

+      Message_6 - asynchronous and totally ordered

+      Message_7 - RPC message, send a message, wait for all remote nodes to reply before returning

+      Message_8 - RPC message, wait for the first reply

+      Message_9 - RPC message, asynchronous, don't wait for a reply, collect them via a callback

+      Message_10- sent to a member that is not part of this group

+    </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>

+    As you can imagine by now, these are just examples. The number of different semantics you can apply on a

+    per-message-basis is almost limitless. Tribes allows you to set up to 28 different on a message

+    and then configure Tribes to what flag results in what action on the message.<br>

+    Imagine a shared transactional cache, probably &gt;90% are reads, and the dirty reads should be completely

+    unordered and delivered as fast as possible. But transactional writes on the other hand, have to

+    be ordered so that no cache gets corrupted. With tribes you would send the write messages totally ordered,

+    while the read messages you simple fire to achieve highest throughput.<br>

+    There are probably better examples on how this powerful feature can be used, so use your imagination and

+    your experience to think of how this could benefit you in your application.

+  </p>

+  <p>

+    <b>Interceptor based message processing</b><br>

+    Tribes uses a customizable interceptor stack to process messages that are sent and received.<br>

+    <i>So what, all frameworks have this!</i><br>

+    Yes, but in Tribes interceptors can react to a message based on the per-message-attributes

+    that are sent runtime. Meaning, that if you add a encryption interceptor that encrypts message

+    you can decide if this interceptor will encrypt all messages, or only certain messages that are decided

+    by the applications running on top of Tribes.<br>

+    This is how Tribes is able to send some messages totally ordered and others fire and forget style

+    like the example above.<br>

+    The number of interceptors that are available will keep growing, and we would appreciate any contributions

+    that you might have.

+  </p>

+  <p>

+    <b>Threadless Interceptor stack</b>

+    The interceptor don't require any separate threads to perform their message manipulation.<br>

+    Messages that are sent will piggy back on the thread that is sending them all the way through transmission.

+    The exception is the <code>MessageDispatchInterceptor</code> that will queue up the message

+    and send it on a separate thread for asynchronous message delivery.

+    Messages received are controlled by a thread pool in the <code>receiver</code> component.<br>

+    The channel object can send a <code>heartbeat()</code> through the interceptor stack to allow

+    for timeouts, cleanup and other events.<br>

+    The <code>MessageDispatchInterceptor</code> is the only interceptor that is configured by default.

+  </p>

+  <p>

+    <b>Parallel Delivery</b><br>

+    Tribes support parallel delivery of messages. Meaning that node_A could send three messages to node_B in

+    parallel. This feature becomes useful when sending messages with different delivery semantics.

+    Otherwise if Message_1 was sent totally ordered, Message_2 would have to wait for that message to complete.<br>

+    Through NIO, Tribes is also able to send a message to several receivers at the same time on the same thread.

+  </p>

+  <p>

+    <b>Silent Member Messaging</b><br>

+    With Tribes you are able to send messages to members that are not in your group.

+    So by default, you can already send messages over a wide area network, even though the dynamic discover

+    module today is limited to local area networks by using multicast for dynamic node discovery.

+    Of course, the membership component will be expanded to support WAN memberships in the future.

+    But this is very useful, when you want to hide members from the rest of the group and only communicate with them

+  </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="Where can I get Tribes"><!--()--></a><a name="Where_can_I_get_Tribes"><strong>Where can I get Tribes</strong></a></font></td></tr><tr><td><blockquote>

+  <p>

+    Tribes ships as a module with Tomcat, and is released as part of the Apache Tomcat release.

+  </p>

+

+

+</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="/tomcat-7.0-doc/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/tribes/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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/membership.html b/webapps/docs/tribes/membership.html
new file mode 100644
index 0000000..859b1d2
--- /dev/null
+++ b/webapps/docs/tribes/membership.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Membership</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Membership</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Membership"><strong>Membership</strong></a></font></td></tr><tr><td><blockquote>

+    <p>TODO</p>

+</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="/tomcat-7.0-doc/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/tribes/membership.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/setup.html b/webapps/docs/tribes/setup.html
new file mode 100644
index 0000000..18cfc64
--- /dev/null
+++ b/webapps/docs/tribes/setup.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Configuration</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Configuration</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuration Overview"><!--()--></a><a name="Configuration_Overview"><strong>Configuration Overview</strong></a></font></td></tr><tr><td><blockquote>

+    <p>TODO</p>

+</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="/tomcat-7.0-doc/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/tribes/setup.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/status.html b/webapps/docs/tribes/status.html
new file mode 100644
index 0000000..f8ddf58
--- /dev/null
+++ b/webapps/docs/tribes/status.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Status</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Status</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Status"><strong>Status</strong></a></font></td></tr><tr><td><blockquote>

+    <p>TODO</p>

+</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="/tomcat-7.0-doc/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/tribes/status.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/transport.html b/webapps/docs/tribes/transport.html
new file mode 100644
index 0000000..782a4f8
--- /dev/null
+++ b/webapps/docs/tribes/transport.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - Apache Tribes - Transport</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="Apache Tomcat" border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="introduction.html">Tribes Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="faq.html">3) FAQ</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="../api/org/apache/catalina/tribes/package-summary.html">JavaDoc</a></li></ul><p><strong>Apache Tribes Development</strong></p><ul><li><a href="membership.html">Membership</a></li><li><a href="transport.html">Transport</a></li><li><a href="interceptors.html">Interceptors</a></li><li><a href="status.html">Status</a></li><li><a href="developers.html">Developers</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tribes - Transport</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transport"><strong>Transport</strong></a></font></td></tr><tr><td><blockquote>

+    <p>TODO</p>

+</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="/tomcat-7.0-doc/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/tribes/transport.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-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/virtual-hosting-howto.html b/webapps/docs/virtual-hosting-howto.html
new file mode 100644
index 0000000..0d85e4f
--- /dev/null
+++ b/webapps/docs/virtual-hosting-howto.html
@@ -0,0 +1,150 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Virtual Hosting and Tomcat</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Virtual Hosting and Tomcat</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="#Assumptions">Assumptions</a></li><li><a href="#server.xml">server.xml</a></li><li><a href="#Webapps_Directory">Webapps Directory</a></li><li><a href="#Configuring_Your_Contexts">Configuring Your Contexts</a><ol><li><a href="#General">General</a></li><li><a href="#context.xml_-_approach__1">context.xml - approach #1</a></li><li><a href="#context.xml_-_approach__2">context.xml - approach #2</a></li><li><a href="#Further_Information">Further Information</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="Assumptions"><strong>Assumptions</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      For the sake of this how-to, assume you have a development host with two

+      host names, <code>ren</code> and <code>stimpy</code>. Let's also assume

+      one instance of Tomcat running, so <code>$CATALINA_HOME</code> refers to

+      wherever it's installed, perhaps <code>/usr/local/tomcat</code>.

+    </p>

+    <p>

+      Also, this how-to uses Unix-style path separators and commands; if you're

+      on Windows modify accordingly.

+    </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="server.xml"><strong>server.xml</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      At the simplest, edit the <a href="config/engine.html">Engine</a> portion

+      of your <code>server.xml</code> file to look like this:

+    </p>

+    <div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>

+&lt;Engine name="Catalina" defaultHost="ren"&gt;

+    &lt;Host name="ren"    appBase="renapps"/&gt;

+    &lt;Host name="stimpy" appBase="stimpyapps"/&gt;

+&lt;/Engine&gt;

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    <p>

+      Note that the directory structures under the appBase for each host should

+      not overlap each other.

+    </p>

+    <p>

+      Consult the configuration documentation for other attributes of the

+      <a href="config/engine.html">Engine</a> and <a href="config/host.html">

+      Host</a> elements.

+    </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="Webapps Directory"><!--()--></a><a name="Webapps_Directory"><strong>Webapps Directory</strong></a></font></td></tr><tr><td><blockquote>

+    <p>

+      Create directories for each of the virtual hosts:

+    </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>

+mkdir $CATALINA_HOME/renapps

+mkdir $CATALINA_HOME/stimpyapps

+    </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+  </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Your Contexts"><!--()--></a><a name="Configuring_Your_Contexts"><strong>Configuring Your Contexts</strong></a></font></td></tr><tr><td><blockquote>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="General"><strong>General</strong></a></font></td></tr><tr><td><blockquote>

+      <p>Contexts are normally located underneath the appBase directory. For

+       example, to deploy the <code>foobar</code> context as a war file in

+       the <code>ren</code> host, use

+       <code>$CATALINA_HOME/renapps/foobar.war</code>. Note that the

+       default or ROOT context for <code>ren</code> would be deployed as

+       <code>$CATALINA_HOME/renapps/ROOT.war</code> (WAR) or

+       <code>$CATALINA_HOME/renapps/ROOT</code> (directory).

+      </p>

+      <p><strong>NOTE: The <code>docBase</code> for a context should never be

+        the same as the <code>appBase</code> for a host.</strong>

+      </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="context.xml - approach #1"><!--()--></a><a name="context.xml_-_approach__1"><strong>context.xml - approach #1</strong></a></font></td></tr><tr><td><blockquote>

+      <p>

+        Within your Context, create a <code>META-INF</code> directory and then

+        place your Context definition in it in a file named

+        <code>context.xml</code>. i.e.

+        <code>$CATALINA_HOME/renapps/ROOT/META-INF/context.xml</code>

+        This makes deployment easier, particularly if you're distributing a WAR

+        file.

+      </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="context.xml - approach #2"><!--()--></a><a name="context.xml_-_approach__2"><strong>context.xml - approach #2</strong></a></font></td></tr><tr><td><blockquote>

+      <p>

+        Create a structure under <code>$CATALINA_HOME/conf/Catalina</code>

+        corresponding to your virtual hosts, e.g.:

+      </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>

+mkdir $CATALINA_HOME/conf/Catalina/ren

+mkdir $CATALINA_HOME/conf/Catalina/stimpy

+      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      <p>

+        Note that the ending directory name "Catalina" represents the

+        <code>name</code> attribute of the

+        <a href="config/engine.html">Engine</a> element as shown above.

+      </p>

+      <p>

+        Now, for your default webapps, add:

+      </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>

+$CATALINA_HOME/conf/Catalina/ren/ROOT.xml

+$CATALINA_HOME/conf/Catalina/stimpy/ROOT.xml

+      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+      <p>

+        If you want to use the Tomcat manager webapp for each host, you'll also

+        need to add it here:

+      </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 $CATALINA_HOME/conf/Catalina

+cp localhost/manager.xml ren/

+cp localhost/manager.xml stimpy/

+      </pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+    </blockquote></td></tr></table>

+    <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Further Information"><!--()--></a><a name="Further_Information"><strong>Further Information</strong></a></font></td></tr><tr><td><blockquote>

+      <p>

+        Consult the configuration documentation for other attributes of the

+        <a href="config/context.html">Context</a> element.

+      </p>

+    </blockquote></td></tr></table>

+  </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="/tomcat-7.0-doc/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/virtual-hosting-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/web-socket-howto.html b/webapps/docs/web-socket-howto.html
new file mode 100644
index 0000000..b3633b2
--- /dev/null
+++ b/webapps/docs/web-socket-howto.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - WebSocket How-To</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>WebSocket How-To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Overview">Overview</a></li><li><a href="#Application_development">Application development</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+<p>Tomcat provides support for WebSocket as defined by

+   <a href="http://tools.ietf.org/html/rfc6455">RFC 6455</a>. This feature is

+   not yet finalised and you are encouraged to provide feedback in the form

+   of bug reports (via

+   <a href="https://issues.apache.org/bugzilla">Bugzilla</a>), suggested API

+   changes (via the <a href="mailto:dev@tomcat.apache.org">dev list</a>) or

+   other comments (again via the <a href="mailto:dev@tomcat.apache.org">dev

+   list</a>).</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="Application development"><!--()--></a><a name="Application_development"><strong>Application development</strong></a></font></td></tr><tr><td><blockquote>

+<p>The API used for application development has not yet been finalised. Rather

+   than document something here that will quickly be out of date, please see the

+   Javadoc for the

+   <a href="api/index.html?org/apache/catalina/websocket/package-summary.html">

+   <code>org.apache.catalina.websocket</code></a> package. The Javadoc

+   pages are not included with Tomcat binary distributions. To view them

+   locally you would have to download and install "Full documentation"

+   distribution, or build it from sources. You can

+   also read this on the Apache Tomcat web site. Start with the

+   <a href="api/index.html?org/apache/catalina/websocket/WebSocketServlet.html">

+   <code>WebSocketServlet</code></a> class.</p>

+

+<p>There are also several example applications that demonstrate how the

+   WebSocket API can be used. You'll need to look at both the client side <a href="http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/websocket/">

+   html</a> and the server side <a href="http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/examples/WEB-INF/classes/websocket/">

+   code</a>.</p>

+

+<p>Do keep in mind that the API is fluid and is likely to change, possibly

+   significantly, between point releases. The documentation will be updated once

+   the API is considered stable (unlikely to be until JSR 356 is complete).</p>

+</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="/tomcat-7.0-doc/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/web-socket-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/windows-auth-howto.html b/webapps/docs/windows-auth-howto.html
new file mode 100644
index 0000000..e45c5cc
--- /dev/null
+++ b/webapps/docs/windows-auth-howto.html
@@ -0,0 +1,311 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Windows Authentication How-To</title><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Windows Authentication How-To</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Overview">Overview</a></li><li><a href="#Built-in_Tomcat_support">Built-in Tomcat support</a><ol><li><a href="#Domain_Controller">Domain Controller</a></li><li><a href="#Tomcat_instance">Tomcat instance</a></li><li><a href="#Web_application">Web application</a></li><li><a href="#Client">Client</a></li><li><a href="#References">References</a></li></ol></li><li><a href="#Third_party_libraries">Third party libraries</a><ol><li><a href="#Waffle">Waffle</a></li><li><a href="#Spring_Security_-_Kerberos_Extension">Spring Security - Kerberos Extension</a></li><li><a href="#SPNEGO_project_at_SourceForge">SPNEGO project at SourceForge</a></li><li><a href="#Jespa">Jespa</a></li></ol></li><li><a href="#Reverse_proxies">Reverse proxies</a><ol><li><a href="#Microsoft_IIS">Microsoft IIS</a></li><li><a href="#Apache_httpd">Apache httpd</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="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>

+<p>Integrated Windows authentication is most frequently used within intranet

+environments since it requires that the server performing the authentication and

+the user being authenticated are part of the same domain. For the user to be

+authenticated automatically, the client machine used by the user must also be

+part of the domain.</p>

+<p>There are several options for implementing integrated Windows authentication

+with Apache Tomcat. They are:

+<ul>

+<li>Built-in Tomcat support.</li>

+<li>Use a third party library such as Waffle.</li>

+<li>Use a reverse proxy that supports Windows authentication to perform the

+authentication step such as IIS or httpd.</li>

+</ul>

+The configuration of each of these options is discussed in the following

+sections.</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="Built-in Tomcat support"><!--()--></a><a name="Built-in_Tomcat_support"><strong>Built-in Tomcat support</strong></a></font></td></tr><tr><td><blockquote>

+<p><strong>This documentation is a work in progress. There are a number of

+outstanding questions around the edge cases that require further

+testing.</strong> These include:

+</p>

+<ul>

+<li>Does the domain name have to be in upper case?</li>

+<li>Does the SPN have to start with HTTP/...?</li>

+<li>Can a port number be appended to the end of the host in the SPN?</li>

+<li>Can the domain be left off the user in the ktpass command?</li>

+<li>What are the limitations on the account that Tomcat can run as? SPN

+    associated account works, domain admin works, local admin doesn't

+    work</li>

+</ul>

+<p>There are four components to the configuration of the built-in Tomcat

+support for Windows authentication. The domain controller, the server hosting

+Tomcat, the web application wishing to use Windows authentication and the client

+machine. The following sections describe the configuration required for each

+component.</p>

+<p>The names of the three machines used in the configuration examples below are

+win-dc01.dev.local (the domain controller), win-tc01.dev.local (the Tomcat

+instance) and win-pc01.dev.local (client). All are members of the DEV.LOCAL

+domain.</p>

+<p>Note: In order to use the passwords in the steps below, the domain password

+policy had to be relaxed. This is not recommended for production environments.

+</p>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Domain Controller"><!--()--></a><a name="Domain_Controller"><strong>Domain Controller</strong></a></font></td></tr><tr><td><blockquote>

+  <p>These steps assume that the server has already been configured to act as a

+  domain controller. Configuration of a Windows server as a domain controller is

+  outside the scope of this how-to. The steps to configure the domain controller

+  to enable Tomcat to support Windows authentication are as follows:

+  </p>

+  <ul>

+  <li>Create a domain user that will be mapped to the service name used by the

+  Tomcat server. In this how-to, this user is called <code>tc01</code> and has a

+  password of <code>tc01pass</code>.</li>

+  <li>Map the service principal name (SPN) to the user account. SPNs take the

+  form <code>

+  &lt;service class&gt;/&lt;host&gt;:&lt;port&gt;/&lt;service name&gt;</code>.

+  The SPN used in this how-to is <code>HTTP/win-tc01.dev.local</code>. To

+  map the user to the SPN, run the following:

+  <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>setspn -A HTTP/win-tc01.dev.local tc01</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>

+  </li>

+  <li>Generate the keytab file that the Tomcat server will use to authenticate

+  itself to the domain controller. This file contains the Tomcat private key for

+  the service provider account and should be protected accordingly. To generate

+  the file, run the following command (all on a single line):

+  <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>ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL

+          /princ HTTP/win-tc01.dev.local@DEV.LOCAL

+          /pass tc01pass /kvno 0</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div></li>

+  <li>Create a domain user to be used on the client. In this how-to the domain

+  user is <code>test</code> with a password of <code>testpass</code>.</li>

+  </ul>

+  <p>The above steps have been tested on a domain controller running Windows

+  Server 2008 R2 64-bit Standard using the Windows Server 2003 functional level

+  for both the forest and the domain.

+  </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 instance"><!--()--></a><a name="Tomcat_instance"><strong>Tomcat instance</strong></a></font></td></tr><tr><td><blockquote>

+  <p>These steps assume that Tomcat and a Java 6 JDK/JRE have already been

+  installed and configured and that Tomcat is running as the tc01@DEV.LOCAL

+  user. The steps to configure the Tomcat instance for Windows authentication

+  are as follows:

+  </p>

+  <ul>

+  <li>Copy the <code>tomcat.keytab</code> file created on the domain controller

+  to <code>$CATALINA_BASE/conf/tomcat.keytab</code>.</li>

+  <li>Create the kerberos configuration file

+  <code>$CATALINA_BASE/conf/krb5.ini</code>. The file used in this how-to

+  contained:<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>[libdefaults]

+default_realm = DEV.LOCAL

+default_keytab_name = FILE:c:\apache-tomcat-7.0.x\conf\tomcat.keytab

+default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96

+default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96

+forwardable=true

+

+[realms]

+DEV.LOCAL = {

+        kdc = win-dc01.dev.local:88

+}

+

+[domain_realm]

+dev.local= DEV.LOCAL

+.dev.local= DEV.LOCAL</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>

+  The location of this file can be changed by setting the

+  <code>java.security.krb5.conf</code> systm property.</li>

+  <li>Create the JAAS login configuration file

+  <code>$CATALINA_BASE/conf/jaas.conf</code>. The file used in this how-to

+  contained:<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>com.sun.security.jgss.krb5.initiate {

+    com.sun.security.auth.module.Krb5LoginModule required

+    doNotPrompt=true

+    principal="HTTP/win-tc01.dev.local@DEV.LOCAL"

+    useKeyTab=true

+    keyTab="c:/apache-tomcat-7.0.x/conf/tomcat.keytab"

+    storeKey=true;

+};

+

+com.sun.security.jgss.krb5.accept {

+    com.sun.security.auth.module.Krb5LoginModule required

+    doNotPrompt=true

+    principal="HTTP/win-tc01.dev.local@DEV.LOCAL"

+    useKeyTab=true

+    keyTab="c:/apache-tomcat-7.0.x/conf/tomcat.keytab"

+    storeKey=true;

+};</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>

+  The location of this file can be changed by setting the

+  <code>java.security.auth.login.config</code> system property. The LoginModule

+  used is a JVM specific one so ensure that the LoginModule specified matches

+  the JVM being used. The name of the login configuration must match the

+  value used by the <a href="config/valve.html#SPNEGO_Valve">authentication

+  valve</a>.</li>

+  <li>The system property <code>javax.security.auth.useSubjectCredsOnly</code>

+  is automatically set to the required value of false if a web application is

+  configured to use the SPNEGO authentication method.</li>

+  </ul>

+  <p>The SPNEGO authenticator will work with any <a href="config/realm.html">

+  Realm</a> but if used with the JNDI Realm, by default the JNDI Realm will use

+  the user's delegated credentials to connect to the Active Directory.

+  </p>

+  <p>The above steps have been tested on a Tomcat server running Windows Server

+  2008 R2 64-bit Standard with an Oracle 1.6.0_24 64-bit JDK.</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="Web application"><!--()--></a><a name="Web_application"><strong>Web application</strong></a></font></td></tr><tr><td><blockquote>

+  <p>The web application needs to be configured to the use Tomcat specific

+  authentication method of <code>SPNEGO</code> (rather than BASIC etc.) in

+  web.xml. As with the other authenticators, behaviour can be customised by

+  explicitly configuring the <a href="config/valve.html#SPNEGO_Valve">

+  authentication valve</a> and setting attributes on the Valve.</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="Client"><strong>Client</strong></a></font></td></tr><tr><td><blockquote>

+  <p>The client must be configured to use Kerberos authentication. For Internet

+  Explorer this means making sure that the Tomcat instance is in the "Local

+  intranet" security domain and that it is configured (Tools &gt; Internet

+  Options &gt; Advanced) with integrated Windows authentication enabled. Note that

+  this <strong>will not</strong> work if you use the same machine for the client

+  and the Tomcat instance as Internet Explorer will use the unsupported NTLM

+  protocol.</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="References"><strong>References</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Correctly configuring Kerberos authentication can be tricky. The following

+  references may prove helpful. Advice is also always available from the

+  <a href="http://tomcat.apache.org/lists.html#tomcat-users">Tomcat users

+  mailing list</a>.</p>

+  <ol>

+  <li><a href="http://www.adopenstatic.com/cs/blogs/ken/archive/2006/10/19/512.aspx">

+      IIS and Kerberos</a></li>

+  <li><a href="http://spnego.sourceforge.net/index.html">

+      SPNEGO project at SourceForge</a></li>

+  <li><a href="http://docs.oracle.com/javase/1.5.0/docs/guide/security/jgss/tutorials/index.html">

+      Oracle JGSS tutorial</a></li>

+  <li><a href="https://cwiki.apache.org/GMOxDOC21/using-spengo-in-geronimo.html#UsingSpengoingeronimo-SettinguptheActiveDirectoryDomainController">

+      Geronimo configuration for Windows authentication</a></li>

+  <li><a href="http://blogs.msdn.com/b/openspecification/archive/2010/11/17/encryption-type-selection-in-kerberos-exchanges.aspx">

+      Encryption Selection in Kerberos Exchanges</a></li>

+  <li><a href="http://support.microsoft.com/kb/977321">Supported Kerberos Cipher

+      Suites</a></li>

+  </ol>

+  </blockquote></td></tr></table>

+

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Third party libraries"><!--()--></a><a name="Third_party_libraries"><strong>Third party libraries</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Waffle"><strong>Waffle</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://waffle.codeplex.com/">Waffle web site</a>. The

+  key features are:</p>

+  <ul>

+  <li>Drop-in solution</li>

+  <li>Simple configuration (no JAAS or Kerberos keytab configuration required)

+  </li>

+  <li>Uses a native library</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Spring Security - Kerberos Extension"><!--()--></a><a name="Spring_Security_-_Kerberos_Extension"><strong>Spring Security - Kerberos Extension</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://static.springsource.org/spring-security/site/extensions/krb/index.html"> Kerberos extension web site</a>. The key features are:</p>

+  <ul>

+  <li>Extension to Spring Security</li>

+  <li>Requires a Kerberos keytab file to be generated</li>

+  <li>Pure Java solution</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="SPNEGO project at SourceForge"><!--()--></a><a name="SPNEGO_project_at_SourceForge"><strong>SPNEGO project at SourceForge</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://spnego.sourceforge.net/index.html/">project

+  site</a>. The key features are:</p>

+  <ul>

+  <li>Uses Kerberos</li>

+  <li>Pure Java solution</li>

+  </ul>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Jespa"><strong>Jespa</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Full details of this solution can be found through the

+  <a href="http://www.ioplex.com/">project web site</a>The key

+  features are:</p>

+  <ul>

+  <li>Pure Java solution</li>

+  <li>Advanced Active Directory integration</li>

+  </ul>

+  </blockquote></td></tr></table>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reverse proxies"><!--()--></a><a name="Reverse_proxies"><strong>Reverse proxies</strong></a></font></td></tr><tr><td><blockquote>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Microsoft IIS"><!--()--></a><a name="Microsoft_IIS"><strong>Microsoft IIS</strong></a></font></td></tr><tr><td><blockquote>

+  <p>There are three steps to configuring IIS to provide Windows authentication.

+  They are:</p>

+  <ol>

+  <li>Configure IIS as a reverse proxy for Tomcat (see the

+  <a href="http://tomcat.apache.org/connectors-doc/webserver_howto/iis.html">

+  IIS Web Server How-To)</a>.</li>

+  <li>Configure IIS to use Windows authentication</li>

+  <li>Configure Tomcat to use the authentication user information from IIS by

+  setting the tomcatAuthentication attribute on the <a href="config/ajp.html">

+  AJP connector</a> to <code>false</code>.</li>

+  </ol>

+  </blockquote></td></tr></table>

+

+  <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Apache httpd"><!--()--></a><a name="Apache_httpd"><strong>Apache httpd</strong></a></font></td></tr><tr><td><blockquote>

+  <p>Apache httpd does not support Windows authentication out of the box but

+  there are a number of third-party modules that can be used. These include:</p>

+  <ol>

+  <li><a href="http://sourceforge.net/projects/mod-auth-sspi/">mod_auth_sspi</a> for use on Windows platforms.</li>

+  <li><a href="http://adldap.sourceforge.net/wiki/doku.php?id=mod_auth_ntlm_winbind">mod_auth_ntlm_winbind</a> for non-Windows platforms. Known to

+  work with httpd 2.0.x on 32-bit platforms. Some users have reported stability

+  issues with both httpd 2.2.x builds and 64-bit Linux builds.</li>

+  </ol>

+  <p>There are three steps to configuring httpd to provide Windows

+  authentication. They are:</p>

+  <ol>

+  <li>Configure httpd as a reverse proxy for Tomcat (see the

+  <a href="http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html">

+  Apache httpd Web Server How-To)</a>.</li>

+  <li>Configure httpd to use Windows authentication</li>

+  <li>Configure Tomcat to use the authentication user information from httpd by

+  setting the tomcatAuthentication attribute on the <a href="config/ajp.html">

+  AJP connector</a> to <code>false</code>.</li>

+  </ol>

+  </blockquote></td></tr></table>

+

+</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="/tomcat-7.0-doc/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/windows-auth-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/windows-service-howto.html b/webapps/docs/windows-service-howto.html
new file mode 100644
index 0000000..2fb0f63
--- /dev/null
+++ b/webapps/docs/windows-service-howto.html
@@ -0,0 +1,460 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Windows service HOW-TO</title><meta name="author" content="Mladen Turk"><style type="text/css" media="print">

+            .noPrint {display: none;}

+            td#mainBody {width: 100%;}

+        </style><style type="text/css">

+            code {background-color:rgb(224,255,255);padding:0 0.1em;}

+            code.attributeName, code.propertyName {background-color:transparent;}

+        </style><style type="text/css">

+            .wrapped-source code { display: block; background-color: transparent; }

+            .wrapped-source div { margin: 0 0 0 1.25em; }

+            .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }

+        </style><style type="text/css">

+            p.notice {

+                border: 1px solid rgb(255, 0, 0);

+                background-color: rgb(238, 238, 238);

+                color: rgb(0, 51, 102);

+                padding: 0.5em;

+                margin: 1em 2em 1em 1em;

+            }

+        </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="

+      The Apache Tomcat Servlet/JSP Container

+    " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Windows service HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>

+<ul><li><a href="#Tomcat7_service_application">Tomcat7 service application</a></li><li><a href="#Tomcat7w_monitor_application">Tomcat7w monitor application</a></li><li><a href="#Command_line_arguments">Command line arguments</a></li><li><a href="#Command_line_parameters">Command line parameters</a></li><li><a href="#Installing_services">Installing services</a></li><li><a href="#Updating_services">Updating services</a></li><li><a href="#Removing_services">Removing services</a></li><li><a href="#Debugging_services">Debugging services</a></li><li><a href="#Multiple_Instances">Multiple Instances</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="Tomcat7 service application"><!--()--></a><a name="Tomcat7_service_application"><strong>Tomcat7 service application</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+    <b>Tomcat7</b> is a service application for running Tomcat7 as NT service.

+</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="Tomcat7w monitor application"><!--()--></a><a name="Tomcat7w_monitor_application"><strong>Tomcat7w monitor application</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+    <b>Tomcat7w</b> is a GUI application for monitoring and configuring Tomcat

+    services.

+</p>

+    <p>The available command line options are:</p>

+<p>

+    <table>

+    <tr><th>//ES//</th>

+        <td>Edit service configuration</td>

+        <td>This is the default operation. It is called if the no option is

+            provided but the executable is renamed to <b>servicenameW.exe</b></td>

+    </tr>

+    <tr><th>//MS//</th>

+        <td>Monitor service</td>

+        <td>Put the icon in the system tray</td>

+    </tr>

+    </table>

+</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="Command line arguments"><!--()--></a><a name="Command_line_arguments"><strong>Command line arguments</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+    Each command line directive is in the form of <b>//XX//ServiceName</b>

+</p>

+    <p>The available command line options are:</p>

+<p>

+    <table>

+    <tr><th>//TS//</th>

+        <td>Run the service as console application</td>

+        <td>This is the default operation. It is called if the no option is

+            provided. The ServiceName is the name of the executable without

+            exe suffix, meaning Tomcat7</td>

+    </tr>

+    <tr><th>//RS//</th>

+        <td>Run the service</td>

+        <td>Called only from ServiceManager</td>

+    </tr>

+    <tr><th>//SS//</th>

+        <td>Stop the service</td>

+        <td></td>

+    </tr>

+    <tr><th>//US//</th>

+        <td>Update service parameters</td>

+        <td></td>

+    </tr>

+    <tr><th>//IS//</th>

+        <td>Install service</td>

+        <td></td>

+    </tr>

+    <tr><th>//DS//</th>

+        <td>Delete service</td>

+        <td>Stops the service if running</td>

+    </tr>

+    </table>

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Command line parameters"><!--()--></a><a name="Command_line_parameters"><strong>Command line parameters</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+    Each command parameter is prefixed with <b>--</b>.

+    If the command line is prefixed with <b>++</b> then it's value will

+    be appended to the existing option.

+    If the environment variable with the same name as command line parameter but

+    prefixed with <code>PR_</code> exists it will take precedence.

+    For example:

+<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>set PR_CLASSPATH=xx.jar</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>is equivalent to providing

+<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>--Classpath=xx.jar</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p> as command line parameter.</p>

+<p>

+    <table>

+    <tr>

+    <th>ParameterName</th>

+    <th>Default</th>

+    <th>Description</th>

+    </tr>

+    <tr>

+    <td>--Description</td>

+    <td></td>

+    <td>Service name description (maximum 1024 characters)</td>

+    </tr>

+    <tr>

+    <td>--DisplayName</td>

+    <td>ServiceName</td>

+    <td>Service display name</td>

+    </tr>

+    <tr>

+    <td>--Install</td>

+    <td>procrun.exe //RS//ServiceName</td>

+    <td>Install image</td>

+    </tr>

+    <tr>

+    <td>--Startup</td>

+    <td>manual</td>

+    <td>Service startup mode can be either <b>auto</b> or <b>manual</b></td>

+    </tr>

+    <tr>

+    <td>--DependsOn</td>

+    <td></td>

+    <td>List of services that this service depend on. Dependent services

+        are separated using either <b>#</b> or <b>;</b> characters</td>

+    </tr>

+    <tr>

+    <td>--Environment</td>

+    <td></td>

+    <td>List of environment variables that will be provided to the service

+        in the form <b>key=value</b>. They are separated using either

+        <b>#</b> or <b>;</b> characters. If you need to use either the <b>#</b>

+        or <b>;</b> character within a value then the entire value must be

+        enclosed inside single quotes.</td>

+    </tr>

+    <tr>

+    <td>--User</td>

+    <td></td>

+    <td>User account used for running executable. It is used only for

+        StartMode <b>java</b> or <b>exe</b> and enables running applications

+        as service under account without LogonAsService privilege.</td>

+    </tr>

+    <tr>

+    <td>--Password</td>

+    <td></td>

+    <td>Password for user account set by --User parameter</td>

+    </tr>

+    <tr>

+    <td>--JavaHome</td>

+    <td>JAVA_HOME</td>

+    <td>Set a different JAVA_HOME than defined by JAVA_HOME environment

+        variable</td>

+    </tr>

+    <tr>

+    <td>--Jvm</td>

+    <td>auto</td>

+    <td>Use either <b>auto</b> or specify the full path to the <b>jvm.dll</b>.

+        You can use the environment variable expansion here.</td>

+    </tr>

+    <tr>

+    <td>--JvmOptions</td>

+    <td>-Xrs</td>

+    <td>List of options in the form of <b>-D</b> or <b>-X</b> that will be

+        passed to the JVM. The options are separated using either

+        <b>#</b> or <b>;</b> characters.</td>

+    </tr>

+    <tr>

+    <td>--Classpath</td>

+    <td></td>

+    <td>Set the Java classpath</td>

+    </tr>

+    <tr>

+    <td>--JvmMs</td>

+    <td></td>

+    <td>Initial memory pool size in MB</td>

+    </tr>

+    <tr>

+    <td>--JvmMx</td>

+    <td></td>

+    <td>Maximum memory pool size in MB</td>

+    </tr>

+    <tr>

+    <td>--JvmSs</td>

+    <td></td>

+    <td>Thread stack size in KB</td>

+    </tr>

+    <tr>

+    <tr>

+    <td>--StartImage</td>

+    <td></td>

+    <td>Executable that will be run.</td>

+    </tr>

+    <tr>

+    <td>--StartPath</td>

+    <td></td>

+    <td>Working path for the start image executable.</td>

+    </tr>

+    <tr>

+    <td>--StartClass</td>

+    <td></td>

+    <td>Class that will be used for startup.</td>

+    </tr>

+    <tr>

+    <td>--StartParams</td>

+    <td></td>

+    <td>List of parameters that will be passed to either StartImage or

+        StartClass. Parameters are separated using either <b>#</b> or

+        <b>;</b> character.</td>

+    </tr>

+    <tr>

+    <td>--StartMethod</td>

+    <td>Main</td>

+    <td>Method name if differs then main</td>

+    </tr>

+    <tr>

+    <td>--StartMode</td>

+    <td>executable</td>

+    <td>Can one of <b>jvm</b> <b>java</b> or <b>exe</b></td>

+    </tr>

+    <td>--StopImage</td>

+    <td></td>

+    <td>Executable that will be run on Stop service signal.</td>

+    </tr>

+    <tr>

+    <td>--StopPath</td>

+    <td></td>

+    <td>Working path for the stop image executable.</td>

+    </tr>

+    <tr>

+    <td>--StopClass</td>

+    <td></td>

+    <td>Class that will be used on Stop service signal.</td>

+    </tr>

+    <tr>

+    <td>--StopParams</td>

+    <td></td>

+    <td>List of parameters that will be passed to either StopImage or

+        StopClass. Parameters are separated using either <b>#</b> or

+        <b>;</b> character.</td>

+    </tr>

+    <tr>

+    <td>--StopMethod</td>

+    <td>Main</td>

+    <td>Method name if differs then main</td>

+    </tr>

+    <tr>

+    <td>--StopMode</td>

+    <td>executable</td>

+    <td>Can one of <b>jvm</b> <b>java</b> or <b>exe</b></td>

+    </tr>

+    <tr>

+    <td>--StopTimeout</td>

+    <td>No Timeout</td>

+    <td>Defines the timeout in seconds that procrun waits for service to

+        exit gracefully.</td>

+    </tr>

+    <tr>

+    <td>--LogPath</td>

+    <td>working path</td>

+    <td>Defines the path for logging</td>

+    </tr>

+    <tr>

+    <td>--LogPrefix</td>

+    <td>jakarta_service</td>

+    <td>Defines the service log filename</td>

+    </tr>

+    <tr>

+    <td>--LogLevel</td>

+    <td>INFO</td>

+    <td>Defines the logging level and can be either <b>error</b>,

+        <b>info</b>, <b>warn</b> or <b>debug</b></td>

+    </tr>

+    <tr>

+    <td>--StdOutput</td>

+    <td></td>

+    <td>Redirected stdout filename</td>

+    </tr>

+    <tr>

+    <td>--StdError</td>

+    <td></td>

+    <td>Redirected stderr filename</td>

+    </tr>

+    </table>

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installing services"><!--()--></a><a name="Installing_services"><strong>Installing services</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+The safest way to manually install the service is to use the provided

+<b>service.bat</b> script. Administrator privileges are required to run this

+script. If necessary, you can use the <code>/user</code> switch to specify

+a user to use for the installation of the service.

+</p>

+<p>

+<strong>NOTE:</strong> On Windows Vista or any other operating system with User

+Account Control (UAC) you must either disable UAC or right-click on cmd.exe and

+select "Run as administrator" in order to run this script. If UAC is enabled

+neither being logged on with an Administrator account, nor using the

+<code>/user</code> switch is sufficient.

+</p>

+<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>

+Install the service named 'Tomcat7'

+C:\&gt; service.bat install

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>There is a 2nd optional parameter that lets you specify the name of the

+service, as displayed in Windows services.</p>

+<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>

+Install the service named 'MyService'

+C:\&gt; service.bat install MyService

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+If using tomcat7.exe, you need to use the <b>//IS//</b> parameter.</p>

+<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>

+Install the service named 'Tomcat7'

+C:\&gt; tomcat7 //IS//Tomcat7 --DisplayName="Apache Tomcat 7" \

+C:\&gt; --Install="C:\Program Files\Tomcat\bin\tomcat7.exe" --Jvm=auto \

+C:\&gt; --StartMode=jvm --StopMode=jvm \

+C:\&gt; --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start \

+C:\&gt; --StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Updating services"><!--()--></a><a name="Updating_services"><strong>Updating services</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+To update the service parameters, you need to use the <b>//US//</b> parameter.

+</p>

+<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>

+Update the service named 'Tomcat7'

+C:\&gt; tomcat7 //US//Tomcat7 --Description="Apache Tomcat Server - http://tomcat.apache.org/ " \

+C:\&gt; --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>If you gave the service an optional name, you need to specify it like this:

+</p>

+<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>

+Update the service named 'MyService'

+C:\&gt; tomcat7 //US//MyService --Description="Apache Tomcat Server - http://tomcat.apache.org/ " \

+C:\&gt; --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Removing services"><!--()--></a><a name="Removing_services"><strong>Removing services</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+To remove the service, you need to use the <b>//DS//</b> parameter.<br>

+If the service is running it will be stopped and then deleted.</p>

+<p>

+<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>

+Remove the service named 'Tomcat7'

+C:\&gt; tomcat7 //DS//Tomcat7

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>If you gave the service an optional name, you need to specify it like this:

+</p>

+<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>

+Remove the service named 'MyService'

+C:\&gt; tomcat7 //DS//MyService

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Debugging services"><!--()--></a><a name="Debugging_services"><strong>Debugging services</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+To run the service in console mode, you need to use the <b>//TS//</b> parameter.

+The service shutdown can be initiated by pressing <b>CTRL+C</b> or

+<b>CTRL+BREAK</b>.

+If you rename the tomcat7.exe to testservice.exe then you can just execute the

+testservice.exe and this command mode will be executed by default.</p>

+<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>

+Run the service named 'Tomcat7' in console mode

+C:\&gt; tomcat7 //TS//Tomcat7 [additional arguments]

+Or simply execute:

+C:\&gt; tomcat7

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Multiple Instances"><!--()--></a><a name="Multiple_Instances"><strong>Multiple Instances</strong></a></font></td></tr><tr><td><blockquote>

+<p>

+Tomcat supports installation of multiple instances. You can have a single

+installation of Tomcat with multiple instances running on different IP/port

+combinations, or multiple Tomcat versions, each running one or more instances on

+different IP/ports.</p>

+<p>

+Each instance folder will need the following structure:

+</p>

+<ul>

+<li>conf</li>

+<li>logs</li>

+<li>temp</li>

+<li>webapps</li>

+<li>work</li>

+</ul>

+<p>

+At a minimum, conf should contain a copy of the following files from

+CATALINA_HOME\conf\. Any files not copied and edited, will be picked up by

+default from CATALINA_HOME\conf, i.e. CATALINA_BASE\conf files override defaults

+from CATALINA_HOME\conf.</p>

+<ul>

+<li>server.xml</li>

+<li>web.xml</li>

+</ul>

+<p>

+You must edit CATALINA_BASE\conf\server.xml to specify a unique IP/port for the

+instance to listen on. Find the line that contains

+<pre>&lt;Connector port="8080" ...</pre> and add an address attribute and/or

+update the port number so as to specify a unique IP/port combination.</p>

+<p>

+To install an instance, first set the CATALINA_HOME environment variable to the

+name of the Tomcat installation directory. Then create a second environment

+variable CATALINA_BASE and point this to the instance folder. Then run "service

+install" command specifying a service name.</p>

+<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>

+set CATALINA_HOME=c:\tomcat_7

+set CATALINA_BASE=c:\tomcat_7\instances\instance1

+service install instance1

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+<p>

+To modify the service settings, you can run <b>tomcat7w //ES//instance1</b>.

+</p>

+<p>

+For additional instances, create additional instance folder, update the

+CATALINA_BASE environment variable, and run the service install again.</p>

+<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>

+set CATALINA_BASE=c:\tomcat_7\instances\instance2

+service install instance2

+</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>

+</p>

+</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="/tomcat-7.0-doc/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/windows-service-howto.html';

+              (function(w, d) {

+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {

+                      d.write('<div id="comments_thread"><\/div>');

+                      var s = d.createElement('script');

+                      s.type = 'text/javascript';

+                      s.async = true;

+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;

+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);

+                  }

+                  else {

+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');

+                  }

+              })(window, document);

+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>

+        Copyright &copy; 1999-2013, Apache Software Foundation

+        </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/examples/WEB-INF/classes/CookieExample.class b/webapps/examples/WEB-INF/classes/CookieExample.class
new file mode 100644
index 0000000..d4dbc0a
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/CookieExample.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/CookieExample.java b/webapps/examples/WEB-INF/classes/CookieExample.java
new file mode 100644
index 0000000..5a01fa4
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/CookieExample.java
@@ -0,0 +1,134 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+/* $Id: CookieExample.java 1337730 2012-05-12 23:17:21Z kkolinko $

+ *

+ */

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.Cookie;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import util.HTMLFilter;

+

+/**

+ * Example servlet showing request headers

+ *

+ * @author James Duncan Davidson <duncan@eng.sun.com>

+ */

+

+public class CookieExample extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

+    public void doGet(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+

+        String cookieName = request.getParameter("cookiename");

+        String cookieValue = request.getParameter("cookievalue");

+        Cookie aCookie = null;

+        if (cookieName != null && cookieValue != null) {

+            aCookie = new Cookie(cookieName, cookieValue);

+            response.addCookie(aCookie);

+        }

+

+        response.setContentType("text/html");

+

+        PrintWriter out = response.getWriter();

+        out.println("<html>");

+        out.println("<head>");

+

+        String title = RB.getString("cookies.title");

+        out.println("<title>" + title + "</title>");

+        out.println("</head>");

+        out.println("<body bgcolor=\"white\">");

+

+        // relative links

+

+        // XXX

+        // making these absolute till we work out the

+        // addition of a PathInfo issue

+

+        out.println("<a href=\"../cookies.html\">");

+        out.println("<img src=\"../images/code.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"view code\"></a>");

+        out.println("<a href=\"../index.html\">");

+        out.println("<img src=\"../images/return.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"return\"></a>");

+

+        out.println("<h3>" + title + "</h3>");

+

+        Cookie[] cookies = request.getCookies();

+        if ((cookies != null) && (cookies.length > 0)) {

+            out.println(RB.getString("cookies.cookies") + "<br>");

+            for (int i = 0; i < cookies.length; i++) {

+                Cookie cookie = cookies[i];

+                out.print("Cookie Name: " + HTMLFilter.filter(cookie.getName())

+                          + "<br>");

+                out.println("  Cookie Value: "

+                            + HTMLFilter.filter(cookie.getValue())

+                            + "<br><br>");

+            }

+        } else {

+            out.println(RB.getString("cookies.no-cookies"));

+        }

+

+        if (aCookie != null) {

+            out.println("<P>");

+            out.println(RB.getString("cookies.set") + "<br>");

+            out.print(RB.getString("cookies.name") + "  "

+                      + HTMLFilter.filter(cookieName) + "<br>");

+            out.print(RB.getString("cookies.value") + "  "

+                      + HTMLFilter.filter(cookieValue));

+        }

+

+        out.println("<P>");

+        out.println(RB.getString("cookies.make-cookie") + "<br>");

+        out.print("<form action=\"");

+        out.println("CookieExample\" method=POST>");

+        out.print(RB.getString("cookies.name") + "  ");

+        out.println("<input type=text length=20 name=cookiename><br>");

+        out.print(RB.getString("cookies.value") + "  ");

+        out.println("<input type=text length=20 name=cookievalue><br>");

+        out.println("<input type=submit></form>");

+

+

+        out.println("</body>");

+        out.println("</html>");

+    }

+

+    @Override

+    public void doPost(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        doGet(request, response);

+    }

+

+}

+

+

diff --git a/webapps/examples/WEB-INF/classes/HelloWorldExample.class b/webapps/examples/WEB-INF/classes/HelloWorldExample.class
new file mode 100644
index 0000000..41e3c40
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/HelloWorldExample.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/HelloWorldExample.java b/webapps/examples/WEB-INF/classes/HelloWorldExample.java
new file mode 100644
index 0000000..9902e3b
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/HelloWorldExample.java
@@ -0,0 +1,77 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+/**

+ * The simplest possible servlet.

+ *

+ * @author James Duncan Davidson

+ */

+

+public class HelloWorldExample extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    public void doGet(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        ResourceBundle rb =

+            ResourceBundle.getBundle("LocalStrings",request.getLocale());

+        response.setContentType("text/html");

+        PrintWriter out = response.getWriter();

+

+        out.println("<html>");

+        out.println("<head>");

+

+        String title = rb.getString("helloworld.title");

+

+        out.println("<title>" + title + "</title>");

+        out.println("</head>");

+        out.println("<body bgcolor=\"white\">");

+

+        // note that all links are created to be relative. this

+        // ensures that we can move the web application that this

+        // servlet belongs to to a different place in the url

+        // tree and not have any harmful side effects.

+

+        // XXX

+        // making these absolute till we work out the

+        // addition of a PathInfo issue

+

+        out.println("<a href=\"../helloworld.html\">");

+        out.println("<img src=\"../images/code.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"view code\"></a>");

+        out.println("<a href=\"../index.html\">");

+        out.println("<img src=\"../images/return.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"return\"></a>");

+        out.println("<h1>" + title + "</h1>");

+        out.println("</body>");

+        out.println("</html>");

+    }

+}

+

+

+

diff --git a/webapps/examples/WEB-INF/classes/LocalStrings.properties b/webapps/examples/WEB-INF/classes/LocalStrings.properties
new file mode 100644
index 0000000..ad09647
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/LocalStrings.properties
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more

+# contributor license agreements.  See the NOTICE file distributed with

+# this work for additional information regarding copyright ownership.

+# 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.

+

+# $Id: LocalStrings.properties 467217 2006-10-24 03:14:34Z markt $

+

+# Default localized resources for example servlets

+# This locale is en_US

+

+helloworld.title=Hello World!

+

+requestinfo.title=Request Information Example

+requestinfo.label.method=Method:

+requestinfo.label.requesturi=Request URI:

+requestinfo.label.protocol=Protocol:

+requestinfo.label.pathinfo=Path Info:

+requestinfo.label.remoteaddr=Remote Address:

+

+requestheader.title=Request Header Example

+

+requestparams.title=Request Parameters Example

+requestparams.params-in-req=Parameters in this request:

+requestparams.no-params=No Parameters, Please enter some

+requestparams.firstname=First Name:

+requestparams.lastname=Last Name:

+

+cookies.title=Cookies Example

+cookies.cookies=Your browser is sending the following cookies:

+cookies.no-cookies=Your browser isn't sending any cookies

+cookies.make-cookie=Create a cookie to send to your browser

+cookies.name=Name:

+cookies.value=Value:

+cookies.set=You just sent the following cookie to your browser:

+

+sessions.title=Sessions Example

+sessions.id=Session ID:

+sessions.created=Created:

+sessions.lastaccessed=Last Accessed:

+sessions.data=The following data is in your session:

+sessions.adddata=Add data to your session

+sessions.dataname=Name of Session Attribute:

+sessions.datavalue=Value of Session Attribute:

diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_en.properties b/webapps/examples/WEB-INF/classes/LocalStrings_en.properties
new file mode 100644
index 0000000..09ea92c
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_en.properties
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more

+# contributor license agreements.  See the NOTICE file distributed with

+# this work for additional information regarding copyright ownership.

+# 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.

+

+# $Id: LocalStrings_en.properties 467217 2006-10-24 03:14:34Z markt $

+

+# Default localized resources for example servlets

+# This locale is en_US

+

+helloworld.title=Hello World!

+

+requestinfo.title=Request Information Example

+requestinfo.label.method=Method:

+requestinfo.label.requesturi=Request URI:

+requestinfo.label.protocol=Protocol:

+requestinfo.label.pathinfo=Path Info:

+requestinfo.label.remoteaddr=Remote Address:

+

+requestheader.title=Request Header Example

+

+requestparams.title=Request Parameters Example

+requestparams.params-in-req=Parameters in this request:

+requestparams.no-params=No Parameters, Please enter some

+requestparams.firstname=First Name:

+requestparams.lastname=Last Name:

+

+cookies.title=Cookies Example

+cookies.cookies=Your browser is sending the following cookies:

+cookies.no-cookies=Your browser isn't sending any cookies

+cookies.make-cookie=Create a cookie to send to your browser

+cookies.name=Name:

+cookies.value=Value:

+cookies.set=You just sent the following cookie to your browser:

+

+sessions.title=Sessions Example

+sessions.id=Session ID:

+sessions.created=Created:

+sessions.lastaccessed=Last Accessed:

+sessions.data=The following data is in your session:

+sessions.adddata=Add data to your session

+sessions.dataname=Name of Session Attribute:

+sessions.datavalue=Value of Session Attribute:

diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_es.properties b/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
new file mode 100644
index 0000000..009e34d
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_es.properties
@@ -0,0 +1,42 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more

+# contributor license agreements.  See the NOTICE file distributed with

+# this work for additional information regarding copyright ownership.

+# 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.

+helloworld.title = Hola Mundo\!

+requestinfo.title = Ejemplo de Informacion de Requerimiento\:

+requestinfo.label.method = M\u00E9todo\:

+requestinfo.label.requesturi = URI de Requerimiento\:

+requestinfo.label.protocol = Protocolo\:

+requestinfo.label.pathinfo = Info de Ruta\:

+requestinfo.label.remoteaddr = Direccion Remota\:

+requestheader.title = Ejemplo de Cabecera de Requerimiento\:

+requestparams.title = Ejemplo de par\u00E1metros de Requerimiento\:

+requestparams.params-in-req = Par\u00E1metros en este Request\:

+requestparams.no-params = No hay p\u00E1rametro. Por favor, usa alguno

+requestparams.firstname = Nombre\:

+requestparams.lastname = Apellidos\:

+cookies.title = Ejemplo de Cookies

+cookies.cookies = Tu navegador est\u00E1 enviando los siguientes cookies\:

+cookies.no-cookies = Tu navegador no est\u00E1 enviando cookies

+cookies.make-cookie = Crea un cookie para enviarlo a tu navegador

+cookies.name = Nombre\:

+cookies.value = Valor\:

+cookies.set = Acabas de enviar a tu navegador estos cookies\:

+sessions.title = Ejemplo de Sesiones

+sessions.id = ID de Sesi\u00F3n\:

+sessions.created = Creado\:

+sessions.lastaccessed = Ultimo Acceso\:

+sessions.data = Lo siguientes datos est\u00E1n en tu sesi\u00F3n\:

+sessions.adddata = A\u00F1ade datos a tu sesi\u00F3n\:

+sessions.dataname = Nombre del atributo de sesi\u00F3n\:

+sessions.datavalue = Valor del atributo de sesi\u00F3n\:

diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties b/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties
new file mode 100644
index 0000000..0b800ee
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more

+# contributor license agreements.  See the NOTICE file distributed with

+# this work for additional information regarding copyright ownership.

+# 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.

+

+# $Id: LocalStrings_fr.properties 919503 2010-03-05 17:07:14Z jfclere $

+

+# Default localized resources for example servlets

+# This locale is fr_FR

+

+helloworld.title=Salut le Monde!

+

+requestinfo.title=Exemple d''information sur la requ\u00eate

+requestinfo.label.method=M\u00e9thode:

+requestinfo.label.requesturi=URI de requ\u00eate:

+requestinfo.label.protocol=Protocole:

+requestinfo.label.pathinfo=Info de chemin:

+requestinfo.label.remoteaddr=Adresse distante:

+

+requestheader.title=Exemple d''information sur les ent\u00eate de requ\u00eate

+

+requestparams.title=Exemple de requ\u00eate avec param\u00eatres

+requestparams.params-in-req=Param\u00eatres dans la requ\u00eate:

+requestparams.no-params=Pas de param\u00eatre, merci dans saisir quelqu'uns

+requestparams.firstname=Pr\u00e9nom:

+requestparams.lastname=Nom:

+

+cookies.title=Exemple d''utilisation de Cookies

+cookies.cookies=Votre navigateur retourne les cookies suivant:

+cookies.no-cookies=Votre navigateur ne retourne aucun cookie

+cookies.make-cookie=Cr\u00e9ation d''un cookie \u00e0 retourner \u00e0 votre navigateur

+cookies.name=Nom:

+cookies.value=Valeur:

+cookies.set=Vous venez d''envoyer le cookie suivant \u00e0 votre navigateur:

+

+sessions.title=Exemple de Sessions

+sessions.id=ID de Session:

+sessions.created=Cr\u00e9e le:

+sessions.lastaccessed=Dernier acc\u00e8s:

+sessions.data=Les donn\u00e9es existantes dans votre session:

+sessions.adddata=Ajouter des donn\u00e9es \u00e0 votre session

+sessions.dataname=Nom de l''Attribut de Session:

+sessions.datavalue=Valeur de l''Attribut de Session:

diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_pt.properties b/webapps/examples/WEB-INF/classes/LocalStrings_pt.properties
new file mode 100644
index 0000000..8cb6bf0
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_pt.properties
@@ -0,0 +1,53 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more

+# contributor license agreements.  See the NOTICE file distributed with

+# this work for additional information regarding copyright ownership.

+# 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.

+

+# $Id: LocalStrings_pt.properties 467217 2006-10-24 03:14:34Z markt $

+

+# Default localized resources for example servlets

+# This locale is pt_PT

+

+helloworld.title=Ola Mundo!

+

+requestinfo.title=Exemplo da Informacao do Pedido

+requestinfo.label.method=Metodo:

+requestinfo.label.requesturi=URI do Pedido:

+requestinfo.label.protocol=Protocolo:

+requestinfo.label.pathinfo=Informacao do Caminho:

+requestinfo.label.remoteaddr=Endereco Remoto:

+

+requestheader.title=Exemplo da Cebeceira do Pedido

+

+requestparams.title=Examplo de Parametros do Pedido

+requestparams.params-in-req=Parametros neste pedido:

+requestparams.no-params=Sem Parametros, Por favor entre alguns

+requestparams.firstname=Primeiro Nome:

+requestparams.lastname=Apelido:

+

+cookies.title=CExamplo de Cookies

+cookies.cookies=O se browser esta a enviar os seguintes cookies:

+cookies.no-cookies=O seu browser nao esta a enviar nenhuns cookies

+cookies.make-cookie=Crie um cookie para enviar para o seu browser

+cookies.name=Nome:

+cookies.value=Valor:

+cookies.set=Acabou de enviar o seguinte cookie para o seu browser:

+

+sessions.title=Examplo de sessoes

+sessions.id=Identificador da Sessao:

+sessions.created=Criada:

+sessions.lastaccessed=Ultima vez acedida:

+sessions.data=Os seguintes dados fazem parte da sua sessao:

+sessions.adddata=Adicione data a sua sessao

+sessions.dataname=Nome do atributo da sessao:

+sessions.datavalue=Valor do atributo da Sessao:

diff --git a/webapps/examples/WEB-INF/classes/RequestHeaderExample.class b/webapps/examples/WEB-INF/classes/RequestHeaderExample.class
new file mode 100644
index 0000000..b40bedd
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/RequestHeaderExample.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/RequestHeaderExample.java b/webapps/examples/WEB-INF/classes/RequestHeaderExample.java
new file mode 100644
index 0000000..645a94c
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/RequestHeaderExample.java
@@ -0,0 +1,98 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+/* $Id: RequestHeaderExample.java 1337730 2012-05-12 23:17:21Z kkolinko $

+ *

+ */

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.Enumeration;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import util.HTMLFilter;

+

+/**

+ * Example servlet showing request headers

+ *

+ * @author James Duncan Davidson <duncan@eng.sun.com>

+ */

+

+public class RequestHeaderExample extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

+    public void doGet(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        response.setContentType("text/html");

+

+        PrintWriter out = response.getWriter();

+        out.println("<html>");

+        out.println("<head>");

+

+        String title = RB.getString("requestheader.title");

+        out.println("<title>" + title + "</title>");

+        out.println("</head>");

+        out.println("<body bgcolor=\"white\">");

+

+        // all links relative

+

+        // XXX

+        // making these absolute till we work out the

+        // addition of a PathInfo issue

+

+        out.println("<a href=\"../reqheaders.html\">");

+        out.println("<img src=\"../images/code.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"view code\"></a>");

+        out.println("<a href=\"../index.html\">");

+        out.println("<img src=\"../images/return.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"return\"></a>");

+

+        out.println("<h3>" + title + "</h3>");

+        out.println("<table border=0>");

+        Enumeration<String> e = request.getHeaderNames();

+        while (e.hasMoreElements()) {

+            String headerName = e.nextElement();

+            String headerValue = request.getHeader(headerName);

+            out.println("<tr><td bgcolor=\"#CCCCCC\">");

+            out.println(HTMLFilter.filter(headerName));

+            out.println("</td><td>");

+            out.println(HTMLFilter.filter(headerValue));

+            out.println("</td></tr>");

+        }

+        out.println("</table>");

+    }

+

+    @Override

+    public void doPost(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        doGet(request, response);

+    }

+

+}

+

diff --git a/webapps/examples/WEB-INF/classes/RequestInfoExample.class b/webapps/examples/WEB-INF/classes/RequestInfoExample.class
new file mode 100644
index 0000000..e42d042
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/RequestInfoExample.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/RequestInfoExample.java b/webapps/examples/WEB-INF/classes/RequestInfoExample.java
new file mode 100644
index 0000000..2154b6c
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/RequestInfoExample.java
@@ -0,0 +1,119 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+/* $Id: RequestInfoExample.java 1337742 2012-05-12 23:58:37Z kkolinko $

+ *

+ */

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import util.HTMLFilter;

+

+/**

+ * Example servlet showing request information.

+ *

+ * @author James Duncan Davidson <duncan@eng.sun.com>

+ */

+

+public class RequestInfoExample extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

+    public void doGet(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        response.setContentType("text/html");

+

+        PrintWriter out = response.getWriter();

+        out.println("<html>");

+        out.println("<head>");

+

+        String title = RB.getString("requestinfo.title");

+        out.println("<title>" + title + "</title>");

+        out.println("</head>");

+        out.println("<body bgcolor=\"white\">");

+

+        // img stuff not req'd for source code html showing

+        // all links relative!

+

+        // XXX

+        // making these absolute till we work out the

+        // addition of a PathInfo issue

+

+        out.println("<a href=\"../reqinfo.html\">");

+        out.println("<img src=\"../images/code.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"view code\"></a>");

+        out.println("<a href=\"../index.html\">");

+        out.println("<img src=\"../images/return.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"return\"></a>");

+

+        out.println("<h3>" + title + "</h3>");

+        out.println("<table border=0><tr><td>");

+        out.println(RB.getString("requestinfo.label.method"));

+        out.println("</td><td>");

+        out.println(HTMLFilter.filter(request.getMethod()));

+        out.println("</td></tr><tr><td>");

+        out.println(RB.getString("requestinfo.label.requesturi"));

+        out.println("</td><td>");

+        out.println(HTMLFilter.filter(request.getRequestURI()));

+        out.println("</td></tr><tr><td>");

+        out.println(RB.getString("requestinfo.label.protocol"));

+        out.println("</td><td>");

+        out.println(HTMLFilter.filter(request.getProtocol()));

+        out.println("</td></tr><tr><td>");

+        out.println(RB.getString("requestinfo.label.pathinfo"));

+        out.println("</td><td>");

+        out.println(HTMLFilter.filter(request.getPathInfo()));

+        out.println("</td></tr><tr><td>");

+        out.println(RB.getString("requestinfo.label.remoteaddr"));

+        out.println("</td><td>");

+        out.println(HTMLFilter.filter(request.getRemoteAddr()));

+        out.println("</td></tr>");

+

+        String cipherSuite=

+                (String)request.getAttribute("javax.servlet.request.cipher_suite");

+        if(cipherSuite!=null){

+            out.println("<tr><td>");

+            out.println("SSLCipherSuite:");

+            out.println("</td><td>");

+            out.println(HTMLFilter.filter(cipherSuite));

+            out.println("</td></tr>");

+        }

+

+        out.println("</table>");

+    }

+

+    @Override

+    public void doPost(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        doGet(request, response);

+    }

+

+}

+

diff --git a/webapps/examples/WEB-INF/classes/RequestParamExample.class b/webapps/examples/WEB-INF/classes/RequestParamExample.class
new file mode 100644
index 0000000..1abc549
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/RequestParamExample.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/RequestParamExample.java b/webapps/examples/WEB-INF/classes/RequestParamExample.java
new file mode 100644
index 0000000..e77f2ad
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/RequestParamExample.java
@@ -0,0 +1,112 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+/* $Id: RequestParamExample.java 1337730 2012-05-12 23:17:21Z kkolinko $

+ *

+ */

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import util.HTMLFilter;

+

+/**

+ * Example servlet showing request headers

+ *

+ * @author James Duncan Davidson <duncan@eng.sun.com>

+ */

+

+public class RequestParamExample extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

+    public void doGet(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        response.setContentType("text/html");

+

+        PrintWriter out = response.getWriter();

+        out.println("<html>");

+        out.println("<head>");

+

+        String title = RB.getString("requestparams.title");

+        out.println("<title>" + title + "</title>");

+        out.println("</head>");

+        out.println("<body bgcolor=\"white\">");

+

+        // img stuff not req'd for source code html showing

+

+       // all links relative

+

+        // XXX

+        // making these absolute till we work out the

+        // addition of a PathInfo issue

+

+        out.println("<a href=\"../reqparams.html\">");

+        out.println("<img src=\"../images/code.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"view code\"></a>");

+        out.println("<a href=\"../index.html\">");

+        out.println("<img src=\"../images/return.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"return\"></a>");

+

+        out.println("<h3>" + title + "</h3>");

+        String firstName = request.getParameter("firstname");

+        String lastName = request.getParameter("lastname");

+        out.println(RB.getString("requestparams.params-in-req") + "<br>");

+        if (firstName != null || lastName != null) {

+            out.println(RB.getString("requestparams.firstname"));

+            out.println(" = " + HTMLFilter.filter(firstName) + "<br>");

+            out.println(RB.getString("requestparams.lastname"));

+            out.println(" = " + HTMLFilter.filter(lastName));

+        } else {

+            out.println(RB.getString("requestparams.no-params"));

+        }

+        out.println("<P>");

+        out.print("<form action=\"");

+        out.print("RequestParamExample\" ");

+        out.println("method=POST>");

+        out.println(RB.getString("requestparams.firstname"));

+        out.println("<input type=text size=20 name=firstname>");

+        out.println("<br>");

+        out.println(RB.getString("requestparams.lastname"));

+        out.println("<input type=text size=20 name=lastname>");

+        out.println("<br>");

+        out.println("<input type=submit>");

+        out.println("</form>");

+

+        out.println("</body>");

+        out.println("</html>");

+    }

+

+    @Override

+    public void doPost(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        doGet(request, response);

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/ServletToJsp.class b/webapps/examples/WEB-INF/classes/ServletToJsp.class
new file mode 100644
index 0000000..4432239
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/ServletToJsp.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/ServletToJsp.java b/webapps/examples/WEB-INF/classes/ServletToJsp.java
new file mode 100644
index 0000000..f5cd80a
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/ServletToJsp.java
@@ -0,0 +1,39 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+public class ServletToJsp extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    public void doGet (HttpServletRequest request,

+            HttpServletResponse response) {

+

+       try {

+           // Set the attribute and Forward to hello.jsp

+           request.setAttribute ("servletName", "servletToJsp");

+           getServletConfig().getServletContext().getRequestDispatcher(

+                   "/jsp/jsptoserv/hello.jsp").forward(request, response);

+       } catch (Exception ex) {

+           ex.printStackTrace ();

+       }

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/SessionExample.class b/webapps/examples/WEB-INF/classes/SessionExample.class
new file mode 100644
index 0000000..d2e0b84
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/SessionExample.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/SessionExample.java b/webapps/examples/WEB-INF/classes/SessionExample.java
new file mode 100644
index 0000000..9337e8f
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/SessionExample.java
@@ -0,0 +1,147 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+/* $Id: SessionExample.java 1337746 2012-05-13 00:17:51Z kkolinko $

+ *

+ */

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.Date;

+import java.util.Enumeration;

+import java.util.ResourceBundle;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+import javax.servlet.http.HttpSession;

+

+import util.HTMLFilter;

+

+/**

+ * Example servlet showing request headers

+ *

+ * @author James Duncan Davidson <duncan@eng.sun.com>

+ */

+

+public class SessionExample extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final ResourceBundle RB = ResourceBundle.getBundle("LocalStrings");

+

+    @Override

+    public void doGet(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        response.setContentType("text/html");

+

+        PrintWriter out = response.getWriter();

+        out.println("<html>");

+        out.println("<head>");

+

+        String title = RB.getString("sessions.title");

+        out.println("<title>" + title + "</title>");

+        out.println("</head>");

+        out.println("<body bgcolor=\"white\">");

+

+        // img stuff not req'd for source code html showing

+        // relative links everywhere!

+

+        // XXX

+        // making these absolute till we work out the

+        // addition of a PathInfo issue

+

+        out.println("<a href=\"../sessions.html\">");

+        out.println("<img src=\"../images/code.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"view code\"></a>");

+        out.println("<a href=\"../index.html\">");

+        out.println("<img src=\"../images/return.gif\" height=24 " +

+                    "width=24 align=right border=0 alt=\"return\"></a>");

+

+        out.println("<h3>" + title + "</h3>");

+

+        HttpSession session = request.getSession(true);

+        out.println(RB.getString("sessions.id") + " " + session.getId());

+        out.println("<br>");

+        out.println(RB.getString("sessions.created") + " ");

+        out.println(new Date(session.getCreationTime()) + "<br>");

+        out.println(RB.getString("sessions.lastaccessed") + " ");

+        out.println(new Date(session.getLastAccessedTime()));

+

+        String dataName = request.getParameter("dataname");

+        String dataValue = request.getParameter("datavalue");

+        if (dataName != null && dataValue != null) {

+            session.setAttribute(dataName, dataValue);

+        }

+

+        out.println("<P>");

+        out.println(RB.getString("sessions.data") + "<br>");

+        Enumeration<String> names = session.getAttributeNames();

+        while (names.hasMoreElements()) {

+            String name = names.nextElement();

+            String value = session.getAttribute(name).toString();

+            out.println(HTMLFilter.filter(name) + " = "

+                        + HTMLFilter.filter(value) + "<br>");

+        }

+

+        out.println("<P>");

+        out.print("<form action=\"");

+        out.print(response.encodeURL("SessionExample"));

+        out.print("\" ");

+        out.println("method=POST>");

+        out.println(RB.getString("sessions.dataname"));

+        out.println("<input type=text size=20 name=dataname>");

+        out.println("<br>");

+        out.println(RB.getString("sessions.datavalue"));

+        out.println("<input type=text size=20 name=datavalue>");

+        out.println("<br>");

+        out.println("<input type=submit>");

+        out.println("</form>");

+

+        out.println("<P>GET based form:<br>");

+        out.print("<form action=\"");

+        out.print(response.encodeURL("SessionExample"));

+        out.print("\" ");

+        out.println("method=GET>");

+        out.println(RB.getString("sessions.dataname"));

+        out.println("<input type=text size=20 name=dataname>");

+        out.println("<br>");

+        out.println(RB.getString("sessions.datavalue"));

+        out.println("<input type=text size=20 name=datavalue>");

+        out.println("<br>");

+        out.println("<input type=submit>");

+        out.println("</form>");

+

+        out.print("<p><a href=\"");

+        out.print(HTMLFilter.filter(response.encodeURL("SessionExample?dataname=foo&datavalue=bar")));

+        out.println("\" >URL encoded </a>");

+

+        out.println("</body>");

+        out.println("</html>");

+    }

+

+    @Override

+    public void doPost(HttpServletRequest request,

+                      HttpServletResponse response)

+        throws IOException, ServletException

+    {

+        doGet(request, response);

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/async/Async0$1.class b/webapps/examples/WEB-INF/classes/async/Async0$1.class
new file mode 100644
index 0000000..021733f
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async0$1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Async0.class b/webapps/examples/WEB-INF/classes/async/Async0.class
new file mode 100644
index 0000000..050e4e6
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async0.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Async0.java b/webapps/examples/WEB-INF/classes/async/Async0.java
new file mode 100644
index 0000000..41db2a6
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async0.java
@@ -0,0 +1,67 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+public class Async0 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log = LogFactory.getLog(Async0.class);

+

+    @Override

+    protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {

+        if (Boolean.TRUE == req.getAttribute("dispatch")) {

+            log.info("Received dispatch, completing on the worker thread.");

+            log.info("After complete called started:"+req.isAsyncStarted());

+            resp.getWriter().write("Async dispatch worked:+"+System.currentTimeMillis()+"\n");

+        } else {

+            resp.setContentType("text/plain");

+            final AsyncContext actx = req.startAsync();

+            actx.setTimeout(Long.MAX_VALUE);

+            Runnable run = new Runnable() {

+                @Override

+                public void run() {

+                    try {

+                        req.setAttribute("dispatch", Boolean.TRUE);

+                        Thread.currentThread().setName("Async0-Thread");

+                        log.info("Putting AsyncThread to sleep");

+                        Thread.sleep(2*1000);

+                        log.info("Dispatching");

+                        actx.dispatch();

+                    }catch (InterruptedException x) {

+                        log.error("Async1",x);

+                    }catch (IllegalStateException x) {

+                        log.error("Async1",x);

+                    }

+                }

+            };

+            Thread t = new Thread(run);

+            t.start();

+        }

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/async/Async1$1.class b/webapps/examples/WEB-INF/classes/async/Async1$1.class
new file mode 100644
index 0000000..531cadb
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async1$1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Async1.class b/webapps/examples/WEB-INF/classes/async/Async1.class
new file mode 100644
index 0000000..eb85ea0
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Async1.java b/webapps/examples/WEB-INF/classes/async/Async1.java
new file mode 100644
index 0000000..9403a3a
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async1.java
@@ -0,0 +1,62 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+public class Async1 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log = LogFactory.getLog(Async1.class);

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

+        final AsyncContext actx = req.startAsync();

+        actx.setTimeout(30*1000);

+        Runnable run = new Runnable() {

+            @Override

+            public void run() {

+                try {

+                    String path = "/jsp/async/async1.jsp";

+                    Thread.currentThread().setName("Async1-Thread");

+                    log.info("Putting AsyncThread to sleep");

+                    Thread.sleep(2*1000);

+                    log.info("Dispatching to "+path);

+                    actx.dispatch(path);

+                }catch (InterruptedException x) {

+                    log.error("Async1",x);

+                }catch (IllegalStateException x) {

+                    log.error("Async1",x);

+                }

+            }

+        };

+        Thread t = new Thread(run);

+        t.start();

+    }

+

+

+}

diff --git a/webapps/examples/WEB-INF/classes/async/Async2$1.class b/webapps/examples/WEB-INF/classes/async/Async2$1.class
new file mode 100644
index 0000000..10cfa14
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async2$1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Async2.class b/webapps/examples/WEB-INF/classes/async/Async2.class
new file mode 100644
index 0000000..d79bb88
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async2.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Async2.java b/webapps/examples/WEB-INF/classes/async/Async2.java
new file mode 100644
index 0000000..649afbc
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async2.java
@@ -0,0 +1,64 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+public class Async2 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log = LogFactory.getLog(Async2.class);

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

+        final AsyncContext actx = req.startAsync();

+        actx.setTimeout(30*1000);

+        Runnable run = new Runnable() {

+            @Override

+            public void run() {

+                try {

+                    Thread.currentThread().setName("Async2-Thread");

+                    log.info("Putting AsyncThread to sleep");

+                    Thread.sleep(2*1000);

+                    log.info("Writing data.");

+                    actx.getResponse().getWriter().write("Output from background thread. Time:"+System.currentTimeMillis()+"\n");

+                    actx.complete();

+                }catch (InterruptedException x) {

+                    log.error("Async2",x);

+                }catch (IllegalStateException x) {

+                    log.error("Async2",x);

+                }catch (IOException x) {

+                    log.error("Async2",x);

+                }

+            }

+        };

+        Thread t = new Thread(run);

+        t.start();

+    }

+

+

+}

diff --git a/webapps/examples/WEB-INF/classes/async/Async3.class b/webapps/examples/WEB-INF/classes/async/Async3.class
new file mode 100644
index 0000000..bd90d90
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async3.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Async3.java b/webapps/examples/WEB-INF/classes/async/Async3.java
new file mode 100644
index 0000000..39e0fe5
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Async3.java
@@ -0,0 +1,39 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 async;

+

+import java.io.IOException;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+public class Async3 extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

+        final AsyncContext actx = req.startAsync();

+        actx.setTimeout(30*1000);

+        actx.dispatch("/jsp/async/async3.jsp");

+    }

+

+

+}

diff --git a/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class b/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class
new file mode 100644
index 0000000..f1f9c44
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java b/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
new file mode 100644
index 0000000..e172f63
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.java
@@ -0,0 +1,127 @@
+/*

+ *  Licensed to the Apache Software Foundation (ASF) under one or more

+ *  contributor license agreements.  See the NOTICE file distributed with

+ *  this work for additional information regarding copyright ownership.

+ *  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 async;

+

+import java.io.IOException;

+import java.io.PrintWriter;

+import java.util.ArrayList;

+import java.util.Iterator;

+import java.util.concurrent.ConcurrentLinkedQueue;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.servlet.AsyncContext;

+import javax.servlet.AsyncEvent;

+import javax.servlet.AsyncListener;

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import async.Stockticker.Stock;

+import async.Stockticker.TickListener;

+

+public class AsyncStockServlet extends HttpServlet implements TickListener, AsyncListener{

+

+    private static final long serialVersionUID = 1L;

+

+    public static final String POLL = "POLL";

+    public static final String LONG_POLL = "LONG-POLL";

+    public static final String STREAM = "STREAM";

+

+    static ArrayList<Stock> ticks = new ArrayList<Stock>();

+    static ConcurrentLinkedQueue<AsyncContext> clients = new ConcurrentLinkedQueue<AsyncContext>();

+    static AtomicInteger clientcount = new AtomicInteger(0);

+    static Stockticker ticker = new Stockticker();

+

+    public AsyncStockServlet() {

+        System.out.println("AsyncStockServlet created");

+    }

+

+

+    @Override

+    protected void service(HttpServletRequest req, HttpServletResponse resp)

+            throws ServletException, IOException {

+        if (req.isAsyncStarted()) {

+            req.getAsyncContext().complete();

+        } else if (req.isAsyncSupported()) {

+            AsyncContext actx = req.startAsync();

+            actx.addListener(this);

+            resp.setContentType("text/plain");

+            clients.add(actx);

+            if (clientcount.incrementAndGet()==1) {

+                ticker.addTickListener(this);

+            }

+        } else {

+            new Exception("Async Not Supported").printStackTrace();

+            resp.sendError(400,"Async is not supported.");

+        }

+    }

+

+

+    @Override

+    public void tick(Stock stock) {

+        ticks.add((Stock)stock.clone());

+        Iterator<AsyncContext> it = clients.iterator();

+        while (it.hasNext()) {

+            AsyncContext actx = it.next();

+            writeStock(actx, stock);

+        }

+    }

+

+    public void writeStock(AsyncContext actx, Stock stock) {

+        HttpServletResponse response = (HttpServletResponse)actx.getResponse();

+        try {

+            PrintWriter writer = response.getWriter();

+            writer.write("STOCK#");//make client parsing easier

+            writer.write(stock.getSymbol());

+            writer.write("#");

+            writer.write(stock.getValueAsString());

+            writer.write("#");

+            writer.write(stock.getLastChangeAsString());

+            writer.write("#");

+            writer.write(String.valueOf(stock.getCnt()));

+            writer.write("\n");

+            writer.flush();

+            response.flushBuffer();

+        }catch (IOException x) {

+            try {actx.complete();}catch (Exception ignore){/* Ignore */}

+        }

+    }

+

+    @Override

+    public void onComplete(AsyncEvent event) throws IOException {

+        if (clients.remove(event.getAsyncContext()) && clientcount.decrementAndGet()==0) {

+            ticker.removeTickListener(this);

+        }

+    }

+

+    @Override

+    public void onError(AsyncEvent event) throws IOException {

+        event.getAsyncContext().complete();

+    }

+

+    @Override

+    public void onTimeout(AsyncEvent event) throws IOException {

+        event.getAsyncContext().complete();

+    }

+

+

+    @Override

+    public void onStartAsync(AsyncEvent event) throws IOException {

+        // NOOP

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class b/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class
new file mode 100644
index 0000000..bf771c3
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class b/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class
new file mode 100644
index 0000000..928b52f
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Stockticker.class b/webapps/examples/WEB-INF/classes/async/Stockticker.class
new file mode 100644
index 0000000..7a99163
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Stockticker.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/async/Stockticker.java b/webapps/examples/WEB-INF/classes/async/Stockticker.java
new file mode 100644
index 0000000..0bebf86
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/async/Stockticker.java
@@ -0,0 +1,188 @@
+/*

+ *  Licensed to the Apache Software Foundation (ASF) under one or more

+ *  contributor license agreements.  See the NOTICE file distributed with

+ *  this work for additional information regarding copyright ownership.

+ *  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 async;

+

+import java.text.DecimalFormat;

+import java.util.ArrayList;

+import java.util.Random;

+import java.util.concurrent.atomic.AtomicInteger;

+

+public class Stockticker implements Runnable {

+        public volatile boolean run = true;

+        protected AtomicInteger counter = new AtomicInteger(0);

+        ArrayList<TickListener> listeners = new ArrayList<TickListener>();

+        protected volatile Thread ticker = null;

+        protected volatile int ticknr = 0;

+

+        public synchronized void start() {

+            run = true;

+            ticker = new Thread(this);

+            ticker.setName("Ticker Thread");

+            ticker.start();

+        }

+

+        public synchronized void stop() {

+            run = false;

+            try {

+                ticker.join();

+            }catch (InterruptedException x) {

+                Thread.interrupted();

+            }

+

+            ticker = null;

+        }

+

+        public void addTickListener(TickListener listener) {

+            if (listeners.add(listener)) {

+                if (counter.incrementAndGet()==1) start();

+            }

+

+        }

+

+        public void removeTickListener(TickListener listener) {

+            if (listeners.remove(listener)) {

+                if (counter.decrementAndGet()==0) stop();

+            }

+        }

+

+        @Override

+        public void run() {

+            try {

+

+                Stock[] stocks = new Stock[] { new Stock("GOOG", 435.43),

+                        new Stock("YHOO", 27.88), new Stock("ASF", 1015.55), };

+                Random r = new Random(System.currentTimeMillis());

+                while (run) {

+                    for (int j = 0; j < 1; j++) {

+                        int i = r.nextInt() % 3;

+                        if (i < 0)

+                            i = i * (-1);

+                        Stock stock = stocks[i];

+                        double change = r.nextDouble();

+                        boolean plus = r.nextBoolean();

+                        if (plus) {

+                            stock.setValue(stock.getValue() + change);

+                        } else {

+                            stock.setValue(stock.getValue() - change);

+                        }

+                        stock.setCnt(++ticknr);

+                        for (TickListener l : listeners) {

+                            l.tick(stock);

+                        }

+

+                    }

+                    Thread.sleep(850);

+                }

+            } catch (InterruptedException ix) {

+                // Ignore

+            } catch (Exception x) {

+                x.printStackTrace();

+            }

+        }

+

+

+    public static interface TickListener {

+        public void tick(Stock stock);

+    }

+

+    public static final class Stock implements Cloneable {

+        protected static DecimalFormat df = new DecimalFormat("0.00");

+        protected String symbol = "";

+        protected double value = 0.0d;

+        protected double lastchange = 0.0d;

+        protected int cnt = 0;

+

+        public Stock(String symbol, double initvalue) {

+            this.symbol = symbol;

+            this.value = initvalue;

+        }

+

+        public void setCnt(int c) {

+            this.cnt = c;

+        }

+

+        public int getCnt() {

+            return cnt;

+        }

+

+        public String getSymbol() {

+            return symbol;

+        }

+

+        public double getValue() {

+            return value;

+        }

+

+        public void setValue(double value) {

+            double old = this.value;

+            this.value = value;

+            this.lastchange = value - old;

+        }

+

+        public String getValueAsString() {

+            return df.format(value);

+        }

+

+        public double getLastChange() {

+            return this.lastchange;

+        }

+

+        public void setLastChange(double lastchange) {

+            this.lastchange = lastchange;

+        }

+

+        public String getLastChangeAsString() {

+            return df.format(lastchange);

+        }

+

+        @Override

+        public int hashCode() {

+            return symbol.hashCode();

+        }

+

+        @Override

+        public boolean equals(Object other) {

+            if (other instanceof Stock) {

+                return this.symbol.equals(((Stock) other).symbol);

+            }

+

+            return false;

+        }

+

+        @Override

+        public String toString() {

+            StringBuilder buf = new StringBuilder("STOCK#");

+            buf.append(getSymbol());

+            buf.append("#");

+            buf.append(getValueAsString());

+            buf.append("#");

+            buf.append(getLastChangeAsString());

+            buf.append("#");

+            buf.append(String.valueOf(getCnt()));

+            return buf.toString();

+

+        }

+

+        @Override

+        public Object clone() {

+            Stock s = new Stock(this.getSymbol(), this.getValue());

+            s.setLastChange(this.getLastChange());

+            s.setCnt(this.cnt);

+            return s;

+        }

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/cal/Entries.class b/webapps/examples/WEB-INF/classes/cal/Entries.class
new file mode 100644
index 0000000..30bed2f
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/Entries.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/cal/Entries.java b/webapps/examples/WEB-INF/classes/cal/Entries.java
new file mode 100644
index 0000000..443cd60
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/Entries.java
@@ -0,0 +1,60 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 cal;

+

+import java.util.Hashtable;

+

+import javax.servlet.http.HttpServletRequest;

+

+public class Entries {

+

+    private Hashtable<String, Entry> entries;

+    private static final String[] time = { "8am", "9am", "10am", "11am",

+            "12pm", "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", "7pm", "8pm" };

+    public static final int rows = 12;

+

+    public Entries() {

+        entries = new Hashtable<String, Entry>(rows);

+        for (int i = 0; i < rows; i++) {

+            entries.put(time[i], new Entry(time[i]));

+        }

+    }

+

+    public int getRows() {

+        return rows;

+    }

+

+    public Entry getEntry(int index) {

+        return this.entries.get(time[index]);

+    }

+

+    public int getIndex(String tm) {

+        for (int i = 0; i < rows; i++)

+            if (tm.equals(time[i]))

+                return i;

+        return -1;

+    }

+

+    public void processRequest(HttpServletRequest request, String tm) {

+        int index = getIndex(tm);

+        if (index >= 0) {

+            String descr = request.getParameter("description");

+            entries.get(time[index]).setDescription(descr);

+        }

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/cal/Entry.class b/webapps/examples/WEB-INF/classes/cal/Entry.class
new file mode 100644
index 0000000..44c493d
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/Entry.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/cal/Entry.java b/webapps/examples/WEB-INF/classes/cal/Entry.java
new file mode 100644
index 0000000..e6403b2
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/Entry.java
@@ -0,0 +1,53 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 cal;

+

+public class Entry {

+

+    String hour;

+    String description;

+

+    public Entry(String hour) {

+        this.hour = hour;

+        this.description = "";

+

+    }

+

+    public String getHour() {

+        return this.hour;

+    }

+

+    public String getColor() {

+        if (description.equals("")) {

+            return "lightblue";

+        }

+        return "red";

+    }

+

+    public String getDescription() {

+        if (description.equals("")) {

+            return "None";

+        }

+        return this.description;

+    }

+

+    public void setDescription(String descr) {

+        description = descr;

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/cal/JspCalendar.class b/webapps/examples/WEB-INF/classes/cal/JspCalendar.class
new file mode 100644
index 0000000..e1c6efa
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/JspCalendar.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/cal/JspCalendar.java b/webapps/examples/WEB-INF/classes/cal/JspCalendar.java
new file mode 100644
index 0000000..dff319c
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/JspCalendar.java
@@ -0,0 +1,151 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 cal;

+

+import java.util.Calendar;

+import java.util.Date;

+

+public class JspCalendar {

+    Calendar  calendar = null;

+

+    public JspCalendar() {

+        calendar = Calendar.getInstance();

+        Date trialTime = new Date();

+        calendar.setTime(trialTime);

+    }

+

+

+    public int getYear() {

+        return calendar.get(Calendar.YEAR);

+    }

+

+    public String getMonth() {

+        int m = getMonthInt();

+        String[] months = new String [] { "January", "February", "March",

+                                        "April", "May", "June",

+                                        "July", "August", "September",

+                                        "October", "November", "December" };

+        if (m > 12)

+            return "Unknown to Man";

+

+        return months[m - 1];

+

+    }

+

+    public String getDay() {

+        int x = getDayOfWeek();

+        String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",

+                                      "Thursday", "Friday", "Saturday"};

+

+        if (x > 7)

+            return "Unknown to Man";

+

+        return days[x - 1];

+

+    }

+

+    public int getMonthInt() {

+        return 1 + calendar.get(Calendar.MONTH);

+    }

+

+    public String getDate() {

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+    }

+

+    public String getCurrentDate() {

+        Date dt = new Date ();

+        calendar.setTime (dt);

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+

+    }

+

+    public String getNextDate() {

+        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1);

+        return getDate ();

+    }

+

+    public String getPrevDate() {

+        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1);

+        return getDate ();

+    }

+

+    public String getTime() {

+        return getHour() + ":" + getMinute() + ":" + getSecond();

+    }

+

+    public int getDayOfMonth() {

+        return calendar.get(Calendar.DAY_OF_MONTH);

+    }

+

+    public int getDayOfYear() {

+        return calendar.get(Calendar.DAY_OF_YEAR);

+    }

+

+    public int getWeekOfYear() {

+        return calendar.get(Calendar.WEEK_OF_YEAR);

+    }

+

+    public int getWeekOfMonth() {

+        return calendar.get(Calendar.WEEK_OF_MONTH);

+    }

+

+    public int getDayOfWeek() {

+        return calendar.get(Calendar.DAY_OF_WEEK);

+    }

+

+    public int getHour() {

+        return calendar.get(Calendar.HOUR_OF_DAY);

+    }

+

+    public int getMinute() {

+        return calendar.get(Calendar.MINUTE);

+    }

+

+

+    public int getSecond() {

+        return calendar.get(Calendar.SECOND);

+    }

+

+

+    public int getEra() {

+        return calendar.get(Calendar.ERA);

+    }

+

+    public String getUSTimeZone() {

+        String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

+                                       "Mountain", "Central", "Eastern"};

+

+        return zones[10 + getZoneOffset()];

+    }

+

+    public int getZoneOffset() {

+        return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

+    }

+

+

+    public int getDSTOffset() {

+        return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

+    }

+

+

+    public int getAMPM() {

+        return calendar.get(Calendar.AM_PM);

+    }

+}

+

+

diff --git a/webapps/examples/WEB-INF/classes/cal/TableBean.class b/webapps/examples/WEB-INF/classes/cal/TableBean.class
new file mode 100644
index 0000000..fdd37a8
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/TableBean.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/cal/TableBean.java b/webapps/examples/WEB-INF/classes/cal/TableBean.java
new file mode 100644
index 0000000..1c32e68
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/cal/TableBean.java
@@ -0,0 +1,101 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 cal;

+

+import java.util.Hashtable;

+

+import javax.servlet.http.HttpServletRequest;

+

+public class TableBean {

+

+    Hashtable<String, Entries> table;

+    JspCalendar JspCal;

+    Entries entries;

+    String date;

+    String name = null;

+    String email = null;

+    boolean processError = false;

+

+    public TableBean() {

+        this.table = new Hashtable<String, Entries>(10);

+        this.JspCal = new JspCalendar();

+        this.date = JspCal.getCurrentDate();

+    }

+

+    public void setName(String nm) {

+        this.name = nm;

+    }

+

+    public String getName() {

+        return this.name;

+    }

+

+    public void setEmail(String mail) {

+        this.email = mail;

+    }

+

+    public String getEmail() {

+        return this.email;

+    }

+

+    public String getDate() {

+        return this.date;

+    }

+

+    public Entries getEntries() {

+        return this.entries;

+    }

+

+    public void processRequest(HttpServletRequest request) {

+

+        // Get the name and e-mail.

+        this.processError = false;

+        if (name == null || name.equals(""))

+            setName(request.getParameter("name"));

+        if (email == null || email.equals(""))

+            setEmail(request.getParameter("email"));

+        if (name == null || email == null || name.equals("")

+                || email.equals("")) {

+            this.processError = true;

+            return;

+        }

+

+        // Get the date.

+        String dateR = request.getParameter("date");

+        if (dateR == null)

+            date = JspCal.getCurrentDate();

+        else if (dateR.equalsIgnoreCase("next"))

+            date = JspCal.getNextDate();

+        else if (dateR.equalsIgnoreCase("prev"))

+            date = JspCal.getPrevDate();

+

+        entries = table.get(date);

+        if (entries == null) {

+            entries = new Entries();

+            table.put(date, entries);

+        }

+

+        // If time is provided add the event.

+        String time = request.getParameter("time");

+        if (time != null)

+            entries.processRequest(request, time);

+    }

+

+    public boolean getProcessError() {

+        return this.processError;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class b/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class
new file mode 100644
index 0000000..fc19228
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/chat/ChatServlet.class b/webapps/examples/WEB-INF/classes/chat/ChatServlet.class
new file mode 100644
index 0000000..ea047bd
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/chat/ChatServlet.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/chat/ChatServlet.java b/webapps/examples/WEB-INF/classes/chat/ChatServlet.java
new file mode 100644
index 0000000..9aa6984
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/chat/ChatServlet.java
@@ -0,0 +1,292 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 chat;

+

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.PrintWriter;

+import java.util.ArrayList;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+import org.apache.catalina.comet.CometEvent;

+import org.apache.catalina.comet.CometProcessor;

+

+

+/**

+ * Helper class to implement Comet functionality.

+ */

+public class ChatServlet

+    extends HttpServlet implements CometProcessor {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final String CHARSET = "UTF-8";

+

+    protected ArrayList<HttpServletResponse> connections =

+        new ArrayList<HttpServletResponse>();

+    protected transient MessageSender messageSender = null;

+

+    @Override

+    public void init() throws ServletException {

+        messageSender = new MessageSender();

+        Thread messageSenderThread =

+            new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() + "]");

+        messageSenderThread.setDaemon(true);

+        messageSenderThread.start();

+    }

+

+    @Override

+    public void destroy() {

+        connections.clear();

+        messageSender.stop();

+        messageSender = null;

+    }

+

+    /**

+     * Process the given Comet event.

+     *

+     * @param event The Comet event that will be processed

+     * @throws IOException

+     * @throws ServletException

+     */

+    @Override

+    public void event(CometEvent event)

+        throws IOException, ServletException {

+

+        // Note: There should really be two servlets in this example, to avoid

+        // mixing Comet stuff with regular connection processing

+        HttpServletRequest request = event.getHttpServletRequest();

+        HttpServletResponse response = event.getHttpServletResponse();

+

+        if (event.getEventType() == CometEvent.EventType.BEGIN) {

+            String action = request.getParameter("action");

+            if (action != null) {

+                if ("login".equals(action)) {

+                    String nickname = request.getParameter("nickname");

+                    request.getSession(true).setAttribute("nickname", nickname);

+                    response.sendRedirect("index.jsp");

+                    event.close();

+                    return;

+                }

+                String nickname = (String) request.getSession(true).getAttribute("nickname");

+                String message = request.getParameter("message");

+                messageSender.send(nickname, message);

+                response.sendRedirect("post.jsp");

+                event.close();

+                return;

+            }

+            if (request.getSession(true).getAttribute("nickname") == null) {

+                // Redirect to "login"

+                log("Redirect to login for session: " + request.getSession(true).getId());

+                response.sendRedirect("login.jsp");

+                event.close();

+                return;

+            }

+            begin(event, request, response);

+        } else if (event.getEventType() == CometEvent.EventType.ERROR) {

+            error(event, request, response);

+        } else if (event.getEventType() == CometEvent.EventType.END) {

+            end(event, request, response);

+        } else if (event.getEventType() == CometEvent.EventType.READ) {

+            read(event, request, response);

+        }

+    }

+

+    protected void begin(@SuppressWarnings("unused") CometEvent event,

+            HttpServletRequest request, HttpServletResponse response)

+        throws IOException {

+        log("Begin for session: " + request.getSession(true).getId());

+

+        response.setContentType("text/html; charset=" + CHARSET);

+

+        PrintWriter writer = response.getWriter();

+        writer.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

+        writer.println("<html><head><title>JSP Chat</title></head><body bgcolor=\"#FFFFFF\">");

+        writer.println("<div>Welcome to the chat. <a href='chat'>Click here to reload this window</a></div>");

+        writer.flush();

+

+        synchronized(connections) {

+            connections.add(response);

+        }

+

+        messageSender.send("Tomcat", request.getSession(true).getAttribute("nickname") + " joined the chat.");

+    }

+

+    protected void end(CometEvent event, HttpServletRequest request, HttpServletResponse response)

+        throws IOException {

+        log("End for session: " + request.getSession(true).getId());

+        synchronized(connections) {

+            connections.remove(response);

+        }

+

+        PrintWriter writer = response.getWriter();

+        writer.println("</body></html>");

+

+        event.close();

+    }

+

+    protected void error(CometEvent event, HttpServletRequest request, HttpServletResponse response)

+        throws IOException {

+        log("Error for session: " + request.getSession(true).getId());

+        synchronized(connections) {

+            connections.remove(response);

+        }

+        event.close();

+    }

+

+    protected void read(CometEvent event, HttpServletRequest request, HttpServletResponse response)

+        throws IOException {

+        InputStream is = request.getInputStream();

+        byte[] buf = new byte[512];

+        while (is.available() > 0) {

+            log("Available: " + is.available());

+            int n = is.read(buf);

+            if (n > 0) {

+                log("Read " + n + " bytes: " + new String(buf, 0, n)

+                        + " for session: " + request.getSession(true).getId());

+            } else if (n < 0) {

+                log("End of file: " + n);

+                end(event, request, response);

+                return;

+            }

+        }

+    }

+

+    @Override

+    protected void service(HttpServletRequest request, HttpServletResponse response)

+        throws IOException, ServletException {

+        // Compatibility method: equivalent method using the regular connection model

+        response.setContentType("text/html; charset=" + CHARSET);

+        PrintWriter writer = response.getWriter();

+        writer.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");

+        writer.println("<html><head><title>JSP Chat</title></head><body bgcolor=\"#FFFFFF\">");

+        writer.println("Chat example only supports Comet processing. ");

+        writer.println("Configure a connector that supports Comet and try again.");

+        writer.println("</body></html>");

+    }

+

+

+    /**

+     * Poller class.

+     */

+    public class MessageSender implements Runnable {

+

+        protected boolean running = true;

+        protected ArrayList<String> messages = new ArrayList<String>();

+

+        public MessageSender() {

+            // Default contructor

+        }

+

+        public void stop() {

+            running = false;

+            synchronized (messages) {

+                messages.notify();

+            }

+        }

+

+        public void send(String user, String message) {

+            synchronized (messages) {

+                messages.add("[" + user + "]: " + message);

+                messages.notify();

+            }

+        }

+

+        /**

+         * The background thread that listens for incoming TCP/IP connections and

+         * hands them off to an appropriate processor.

+         */

+        @Override

+        public void run() {

+

+            // Loop until we receive a shutdown command

+            while (running) {

+                String[] pendingMessages;

+                synchronized (messages) {

+                    try {

+                        if (messages.size() == 0) {

+                            messages.wait();

+                        }

+                    } catch (InterruptedException e) {

+                        // Ignore

+                    }

+                    pendingMessages = messages.toArray(new String[0]);

+                    messages.clear();

+                }

+

+                synchronized (connections) {

+                    for (int i = 0; i < connections.size(); i++) {

+                        try {

+                            PrintWriter writer = connections.get(i).getWriter();

+                            for (int j = 0; j < pendingMessages.length; j++) {

+                                writer.println("<div>"+filter(pendingMessages[j]) + "</div>");

+                            }

+                            writer.flush();

+                        } catch (IOException e) {

+                            log("IOException sending message", e);

+                        }

+                    }

+                }

+

+            }

+

+        }

+

+    }

+

+    /**

+     * Filter the specified message string for characters that are sensitive

+     * in HTML.

+     *

+     * @param message The message string to be filtered

+     * @author Copied from org.apache.catalina.util.RequestUtil#filter(String)

+     */

+    protected static String filter(String message) {

+        if (message == null)

+            return (null);

+

+        char content[] = new char[message.length()];

+        message.getChars(0, message.length(), content, 0);

+        StringBuilder result = new StringBuilder(content.length + 50);

+        for (int i = 0; i < content.length; i++) {

+            switch (content[i]) {

+            case '<':

+                result.append("&lt;");

+                break;

+            case '>':

+                result.append("&gt;");

+                break;

+            case '&':

+                result.append("&amp;");

+                break;

+            case '"':

+                result.append("&quot;");

+                break;

+            default:

+                result.append(content[i]);

+            }

+        }

+        return (result.toString());

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class b/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class
new file mode 100644
index 0000000..e5fc31c
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java b/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java
new file mode 100644
index 0000000..c25448b
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/checkbox/CheckTest.java
@@ -0,0 +1,31 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 checkbox;

+

+public class CheckTest {

+

+    String b[] = new String[] { "1", "2", "3", "4" };

+

+    public String[] getFruit() {

+        return b;

+    }

+

+    public void setFruit(String [] b) {

+        this.b = b;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class b/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class
new file mode 100644
index 0000000..bed4bf3
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java b/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java
new file mode 100644
index 0000000..6e2d741
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/colors/ColorGameBean.java
@@ -0,0 +1,113 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 colors;

+

+public class ColorGameBean {

+

+    private String background = "yellow";

+    private String foreground = "red";

+    private String color1 = foreground;

+    private String color2 = background;

+    private String hint = "no";

+    private int attempts = 0;

+        private int intval = 0;

+    private boolean tookHints = false;

+

+    public void processRequest() {

+

+        // background = "yellow";

+        // foreground = "red";

+

+        if (! color1.equals(foreground)) {

+            if (color1.equalsIgnoreCase("black") ||

+                        color1.equalsIgnoreCase("cyan")) {

+                        background = color1;

+                }

+        }

+

+        if (! color2.equals(background)) {

+            if (color2.equalsIgnoreCase("black") ||

+                        color2.equalsIgnoreCase("cyan")) {

+                        foreground = color2;

+            }

+        }

+

+        attempts++;

+    }

+

+    public void setColor2(String x) {

+        color2 = x;

+    }

+

+    public void setColor1(String x) {

+        color1 = x;

+    }

+

+    public void setAction(String x) {

+        if (!tookHints)

+            tookHints = x.equalsIgnoreCase("Hint");

+        hint = x;

+    }

+

+    public String getColor2() {

+         return background;

+    }

+

+    public String getColor1() {

+         return foreground;

+    }

+

+    public int getAttempts() {

+        return attempts;

+    }

+

+    public boolean getHint() {

+        return hint.equalsIgnoreCase("Hint");

+    }

+

+    public boolean getSuccess() {

+        if (background.equalsIgnoreCase("black") ||

+            background.equalsIgnoreCase("cyan")) {

+

+            if (foreground.equalsIgnoreCase("black") ||

+                foreground.equalsIgnoreCase("cyan")) {

+                return true;

+            }

+            return false;

+        }

+

+        return false;

+    }

+

+    public boolean getHintTaken() {

+        return tookHints;

+    }

+

+    public void reset() {

+        foreground = "red";

+        background = "yellow";

+    }

+

+    public void setIntval(int value) {

+        intval = value;

+        }

+

+    public int getIntval() {

+        return intval;

+        }

+}

+

diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class
new file mode 100644
index 0000000..b4d0c88
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
new file mode 100644
index 0000000..2c4a8c0
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
@@ -0,0 +1,266 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 compressionFilters;

+

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Enumeration;

+import java.util.List;

+import java.util.StringTokenizer;

+

+import javax.servlet.Filter;

+import javax.servlet.FilterChain;

+import javax.servlet.FilterConfig;

+import javax.servlet.ServletException;

+import javax.servlet.ServletRequest;

+import javax.servlet.ServletResponse;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+/**

+ * Implementation of <code>javax.servlet.Filter</code> used to compress

+ * the ServletResponse if it is bigger than a threshold.

+ *

+ * @author Amy Roh

+ * @author Dmitri Valdin

+ */

+public class CompressionFilter implements Filter {

+

+    /**

+     * The filter configuration object we are associated with.  If this value

+     * is null, this filter instance is not currently configured.

+     */

+    private FilterConfig config = null;

+

+    /**

+     * Minimal reasonable threshold.

+     */

+    private int minThreshold = 128;

+

+    /**

+     * The threshold number to compress.

+     */

+    protected int compressionThreshold = 0;

+

+    /**

+     * Minimal reasonable buffer.

+     */

+    private int minBuffer = 8192;  // 8KB is what tomcat would use by default anyway

+

+    /**

+     * The compression buffer size to avoid chunking.

+     */

+    protected int compressionBuffer = 0;

+

+    /**

+     * The mime types to compress.

+     */

+    protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"};

+

+    /**

+     * Debug level for this filter.

+     */

+    private int debug = 0;

+

+    /**

+     * Place this filter into service.

+     *

+     * @param filterConfig The filter configuration object

+     */

+    @Override

+    public void init(FilterConfig filterConfig) {

+

+        config = filterConfig;

+        if (filterConfig != null) {

+            String value = filterConfig.getInitParameter("debug");

+            if (value!=null) {

+                debug = Integer.parseInt(value);

+            }

+

+            String str = filterConfig.getInitParameter("compressionThreshold");

+            if (str!=null) {

+                compressionThreshold = Integer.parseInt(str);

+                if (compressionThreshold != 0 && compressionThreshold < minThreshold) {

+                    if (debug > 0) {

+                        System.out.println("compressionThreshold should be either 0 - no compression or >= " + minThreshold);

+                        System.out.println("compressionThreshold set to " + minThreshold);

+                    }

+                    compressionThreshold = minThreshold;

+                }

+            }

+

+            str = filterConfig.getInitParameter("compressionBuffer");

+            if (str!=null) {

+                compressionBuffer = Integer.parseInt(str);

+                if (compressionBuffer < minBuffer) {

+                    if (debug > 0) {

+                        System.out.println("compressionBuffer should be >= " + minBuffer);

+                        System.out.println("compressionBuffer set to " + minBuffer);

+                    }

+                    compressionBuffer = minBuffer;

+                }

+            }

+

+            str = filterConfig.getInitParameter("compressionMimeTypes");

+            if (str!=null) {

+                List<String> values = new ArrayList<String>();

+                StringTokenizer st = new StringTokenizer(str, ",");

+

+                while (st.hasMoreTokens()) {

+                    String token = st.nextToken().trim();

+                    if (token.length() > 0) {

+                        values.add(token);

+                    }

+                }

+

+                if (values.size() > 0) {

+                    compressionMimeTypes = values.toArray(

+                            new String[values.size()]);

+                } else {

+                    compressionMimeTypes = null;

+                }

+

+                if (debug > 0) {

+                    System.out.println("compressionMimeTypes set to " + compressionMimeTypes);

+                }

+            }

+        }

+

+    }

+

+    /**

+    * Take this filter out of service.

+    */

+    @Override

+    public void destroy() {

+

+        this.config = null;

+

+    }

+

+    /**

+     * The <code>doFilter</code> method of the Filter is called by the container

+     * each time a request/response pair is passed through the chain due

+     * to a client request for a resource at the end of the chain.

+     * The FilterChain passed into this method allows the Filter to pass on the

+     * request and response to the next entity in the chain.<p>

+     * This method first examines the request to check whether the client support

+     * compression. <br>

+     * It simply just pass the request and response if there is no support for

+     * compression.<br>

+     * If the compression support is available, it creates a

+     * CompressionServletResponseWrapper object which compresses the content and

+     * modifies the header if the content length is big enough.

+     * It then invokes the next entity in the chain using the FilterChain object

+     * (<code>chain.doFilter()</code>), <br>

+     **/

+    @Override

+    public void doFilter ( ServletRequest request, ServletResponse response,

+                        FilterChain chain ) throws IOException, ServletException {

+

+        if (debug > 0) {

+            System.out.println("@doFilter");

+        }

+

+        if (compressionThreshold == 0) {

+            if (debug > 0) {

+                System.out.println("doFilter got called, but compressionTreshold is set to 0 - no compression");

+            }

+            chain.doFilter(request, response);

+            return;

+        }

+

+        boolean supportCompression = false;

+        if (request instanceof HttpServletRequest) {

+            if (debug > 1) {

+                System.out.println("requestURI = " + ((HttpServletRequest)request).getRequestURI());

+            }

+

+            // Are we allowed to compress ?

+            String s = ((HttpServletRequest)request).getParameter("gzip");

+            if ("false".equals(s)) {

+                if (debug > 0) {

+                    System.out.println("got parameter gzip=false --> don't compress, just chain filter");

+                }

+                chain.doFilter(request, response);

+                return;

+            }

+

+            Enumeration<String> e =

+                ((HttpServletRequest)request).getHeaders("Accept-Encoding");

+            while (e.hasMoreElements()) {

+                String name = e.nextElement();

+                if (name.indexOf("gzip") != -1) {

+                    if (debug > 0) {

+                        System.out.println("supports compression");

+                    }

+                    supportCompression = true;

+                } else {

+                    if (debug > 0) {

+                        System.out.println("no support for compression");

+                    }

+                }

+            }

+        }

+

+        if (supportCompression) {

+            if (response instanceof HttpServletResponse) {

+                CompressionServletResponseWrapper wrappedResponse =

+                    new CompressionServletResponseWrapper((HttpServletResponse)response);

+                wrappedResponse.setDebugLevel(debug);

+                wrappedResponse.setCompressionThreshold(compressionThreshold);

+                wrappedResponse.setCompressionBuffer(compressionBuffer);

+                wrappedResponse.setCompressionMimeTypes(compressionMimeTypes);

+                if (debug > 0) {

+                    System.out.println("doFilter gets called with compression");

+                }

+                try {

+                    chain.doFilter(request, wrappedResponse);

+                } finally {

+                    wrappedResponse.finishResponse();

+                }

+                return;

+            }

+        } else {

+            if (debug > 0) {

+                System.out.println("doFilter gets called w/o compression");

+            }

+            chain.doFilter(request, response);

+            return;

+        }

+    }

+

+    /**

+     * Set filter config

+     * This function is equivalent to init. Required by Weblogic 6.1

+     *

+     * @param filterConfig The filter configuration object

+     */

+    public void setFilterConfig(FilterConfig filterConfig) {

+        init(filterConfig);

+    }

+

+    /**

+     * Return filter config

+     * Required by Weblogic 6.1

+     */

+    public FilterConfig getFilterConfig() {

+        return config;

+    }

+

+}

+

diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class
new file mode 100644
index 0000000..ce695cb
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
new file mode 100644
index 0000000..700cd1f
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java
@@ -0,0 +1,66 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 compressionFilters;

+

+import java.io.IOException;

+import java.util.Enumeration;

+

+import javax.servlet.ServletException;

+import javax.servlet.ServletOutputStream;

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+/**

+ * Very Simple test servlet to test compression filter

+ * @author Amy Roh

+ */

+public class CompressionFilterTestServlet extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    public void doGet(HttpServletRequest request, HttpServletResponse response)

+        throws ServletException, IOException {

+

+        ServletOutputStream out = response.getOutputStream();

+        response.setContentType("text/plain");

+

+        Enumeration<String> e = request.getHeaders("Accept-Encoding");

+        while (e.hasMoreElements()) {

+            String name = e.nextElement();

+            out.println(name);

+            if (name.indexOf("gzip") != -1) {

+                out.println("gzip supported -- able to compress");

+            }

+            else {

+                out.println("gzip not supported");

+            }

+        }

+

+

+        out.println("Compression Filter Test Servlet");

+        out.println("Minimum content length for compression is 128 bytes");

+        out.println("**********  32 bytes  **********");

+        out.println("**********  32 bytes  **********");

+        out.println("**********  32 bytes  **********");

+        out.println("**********  32 bytes  **********");

+        out.close();

+    }

+

+}

+

diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class
new file mode 100644
index 0000000..3d05f19
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
new file mode 100644
index 0000000..a79027a
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java
@@ -0,0 +1,412 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 compressionFilters;

+

+import java.io.IOException;

+import java.io.OutputStream;

+import java.util.zip.GZIPOutputStream;

+

+import javax.servlet.ServletOutputStream;

+

+/**

+ * Implementation of <b>ServletOutputStream</b> that works with

+ * the CompressionServletResponseWrapper implementation.

+ *

+ * @author Amy Roh

+ * @author Dmitri Valdin

+ */

+public class CompressionResponseStream extends ServletOutputStream {

+

+    // ----------------------------------------------------------- Constructors

+

+    /**

+     * Construct a servlet output stream associated with the specified Response.

+     *

+     * @param responseWrapper The associated response wrapper

+     * @param originalOutput the output stream

+     */

+    public CompressionResponseStream(

+            CompressionServletResponseWrapper responseWrapper,

+            ServletOutputStream originalOutput) {

+

+        super();

+        closed = false;

+        this.response = responseWrapper;

+        this.output = originalOutput;

+    }

+

+

+    // ----------------------------------------------------- Instance Variables

+

+

+    /**

+     * The threshold number which decides to compress or not.

+     * Users can configure in web.xml to set it to fit their needs.

+     */

+    protected int compressionThreshold = 0;

+

+    /**

+     * The compression buffer size to avoid chunking

+     */

+    protected int compressionBuffer = 0;

+

+    /**

+     * The mime types to compress

+     */

+    protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"};

+

+    /**

+     * Debug level

+     */

+    private int debug = 0;

+

+    /**

+     * The buffer through which all of our output bytes are passed.

+     */

+    protected byte[] buffer = null;

+

+    /**

+     * The number of data bytes currently in the buffer.

+     */

+    protected int bufferCount = 0;

+

+    /**

+     * The underlying gzip output stream to which we should write data.

+     */

+    protected OutputStream gzipstream = null;

+

+    /**

+     * Has this stream been closed?

+     */

+    protected boolean closed = false;

+

+    /**

+     * The content length past which we will not write, or -1 if there is

+     * no defined content length.

+     */

+    protected int length = -1;

+

+    /**

+     * The response with which this servlet output stream is associated.

+     */

+    protected CompressionServletResponseWrapper response = null;

+

+    /**

+     * The underlying servlet output stream to which we should write data.

+     */

+    protected ServletOutputStream output = null;

+

+

+    // --------------------------------------------------------- Public Methods

+

+    /**

+     * Set debug level

+     */

+    public void setDebugLevel(int debug) {

+        this.debug = debug;

+    }

+

+

+    /**

+     * Set the compressionThreshold number and create buffer for this size

+     */

+    protected void setCompressionThreshold(int compressionThreshold) {

+        this.compressionThreshold = compressionThreshold;

+        buffer = new byte[this.compressionThreshold];

+        if (debug > 1) {

+            System.out.println("compressionThreshold is set to "+ this.compressionThreshold);

+        }

+    }

+

+    /**

+     * The compression buffer size to avoid chunking

+     */

+    protected void setCompressionBuffer(int compressionBuffer) {

+        this.compressionBuffer = compressionBuffer;

+        if (debug > 1) {

+            System.out.println("compressionBuffer is set to "+ this.compressionBuffer);

+        }

+    }

+

+    /**

+     * Set supported mime types

+     */

+    public void setCompressionMimeTypes(String[] compressionMimeTypes) {

+        this.compressionMimeTypes = compressionMimeTypes;

+        if (debug > 1) {

+            System.out.println("compressionMimeTypes is set to " + this.compressionMimeTypes);

+        }

+    }

+

+    /**

+     * Close this output stream, causing any buffered data to be flushed and

+     * any further output data to throw an IOException.

+     */

+    @Override

+    public void close() throws IOException {

+

+        if (debug > 1) {

+            System.out.println("close() @ CompressionResponseStream");

+        }

+        if (closed)

+            throw new IOException("This output stream has already been closed");

+

+        if (gzipstream != null) {

+            flushToGZip();

+            gzipstream.close();

+            gzipstream = null;

+        } else {

+            if (bufferCount > 0) {

+                if (debug > 2) {

+                    System.out.print("output.write(");

+                    System.out.write(buffer, 0, bufferCount);

+                    System.out.println(")");

+                }

+                output.write(buffer, 0, bufferCount);

+                bufferCount = 0;

+            }

+        }

+

+        output.close();

+        closed = true;

+

+    }

+

+

+    /**

+     * Flush any buffered data for this output stream, which also causes the

+     * response to be committed.

+     */

+    @Override

+    public void flush() throws IOException {

+

+        if (debug > 1) {

+            System.out.println("flush() @ CompressionResponseStream");

+        }

+        if (closed) {

+            throw new IOException("Cannot flush a closed output stream");

+        }

+

+        if (gzipstream != null) {

+            gzipstream.flush();

+        }

+

+    }

+

+    public void flushToGZip() throws IOException {

+

+        if (debug > 1) {

+            System.out.println("flushToGZip() @ CompressionResponseStream");

+        }

+        if (bufferCount > 0) {

+            if (debug > 1) {

+                System.out.println("flushing out to GZipStream, bufferCount = " + bufferCount);

+            }

+            writeToGZip(buffer, 0, bufferCount);

+            bufferCount = 0;

+        }

+

+    }

+

+    /**

+     * Write the specified byte to our output stream.

+     *

+     * @param b The byte to be written

+     *

+     * @exception IOException if an input/output error occurs

+     */

+    @Override

+    public void write(int b) throws IOException {

+

+        if (debug > 1) {

+            System.out.println("write "+b+" in CompressionResponseStream ");

+        }

+        if (closed)

+            throw new IOException("Cannot write to a closed output stream");

+

+        if (bufferCount >= buffer.length) {

+            flushToGZip();

+        }

+

+        buffer[bufferCount++] = (byte) b;

+

+    }

+

+

+    /**

+     * Write <code>b.length</code> bytes from the specified byte array

+     * to our output stream.

+     *

+     * @param b The byte array to be written

+     *

+     * @exception IOException if an input/output error occurs

+     */

+    @Override

+    public void write(byte b[]) throws IOException {

+

+        write(b, 0, b.length);

+

+    }

+

+

+    /**

+     * Write <code>len</code> bytes from the specified byte array, starting

+     * at the specified offset, to our output stream.

+     *

+     * @param b The byte array containing the bytes to be written

+     * @param off Zero-relative starting offset of the bytes to be written

+     * @param len The number of bytes to be written

+     *

+     * @exception IOException if an input/output error occurs

+     */

+    @Override

+    public void write(byte b[], int off, int len) throws IOException {

+

+        if (debug > 1) {

+            System.out.println("write, bufferCount = " + bufferCount + " len = " + len + " off = " + off);

+        }

+        if (debug > 2) {

+            System.out.print("write(");

+            System.out.write(b, off, len);

+            System.out.println(")");

+        }

+

+        if (closed)

+            throw new IOException("Cannot write to a closed output stream");

+

+        if (len == 0)

+            return;

+

+        // Can we write into buffer ?

+        if (len <= (buffer.length - bufferCount)) {

+            System.arraycopy(b, off, buffer, bufferCount, len);

+            bufferCount += len;

+            return;

+        }

+

+        // There is not enough space in buffer. Flush it ...

+        flushToGZip();

+

+        // ... and try again. Note, that bufferCount = 0 here !

+        if (len <= (buffer.length - bufferCount)) {

+            System.arraycopy(b, off, buffer, bufferCount, len);

+            bufferCount += len;

+            return;

+        }

+

+        // write direct to gzip

+        writeToGZip(b, off, len);

+    }

+

+    public void writeToGZip(byte b[], int off, int len) throws IOException {

+

+        if (debug > 1) {

+            System.out.println("writeToGZip, len = " + len);

+        }

+        if (debug > 2) {

+            System.out.print("writeToGZip(");

+            System.out.write(b, off, len);

+            System.out.println(")");

+        }

+        if (gzipstream == null) {

+            if (debug > 1) {

+                System.out.println("new GZIPOutputStream");

+            }

+

+            boolean alreadyCompressed = false;

+            String contentEncoding = response.getHeader("Content-Encoding");

+            if (contentEncoding != null) {

+                if (contentEncoding.contains("gzip")) {

+                    alreadyCompressed = true;

+                    if (debug > 0) {

+                        System.out.println("content is already compressed");

+                    }

+                } else {

+                    if (debug > 0) {

+                        System.out.println("content is not compressed yet");

+                    }

+                }

+            }

+

+            boolean compressibleMimeType = false;

+            // Check for compatible MIME-TYPE

+            if (compressionMimeTypes != null) {

+                if (startsWithStringArray(compressionMimeTypes, response.getContentType())) {

+                    compressibleMimeType = true;

+                    if (debug > 0) {

+                        System.out.println("mime type " + response.getContentType() + " is compressible");

+                    }

+                } else {

+                    if (debug > 0) {

+                        System.out.println("mime type " + response.getContentType() + " is not compressible");

+                    }

+                }

+            }

+

+            if (response.isCommitted()) {

+                if (debug > 1)

+                    System.out.print("Response already committed. Using original output stream");

+                gzipstream = output;

+            } else if (alreadyCompressed) {

+                if (debug > 1)

+                    System.out.print("Response already compressed. Using original output stream");

+                gzipstream = output;

+            } else if (!compressibleMimeType) {

+                if (debug > 1)

+                    System.out.print("Response mime type is not compressible. Using original output stream");

+                gzipstream = output;

+            } else {

+                response.addHeader("Content-Encoding", "gzip");

+                response.setContentLength(-1);  // don't use any preset content-length as it will be wrong after gzipping

+                response.setBufferSize(compressionBuffer);

+                gzipstream = new GZIPOutputStream(output);

+            }

+        }

+        gzipstream.write(b, off, len);

+

+    }

+

+

+    // -------------------------------------------------------- Package Methods

+

+

+    /**

+     * Has this response stream been closed?

+     */

+    public boolean closed() {

+

+        return (this.closed);

+

+    }

+

+    /**

+     * Checks if any entry in the string array starts with the specified value

+     *

+     * @param sArray the StringArray

+     * @param value string

+     */

+    private boolean startsWithStringArray(String sArray[], String value) {

+        if (value == null)

+           return false;

+        for (int i = 0; i < sArray.length; i++) {

+            if (value.startsWith(sArray[i])) {

+                return true;

+            }

+        }

+        return false;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class
new file mode 100644
index 0000000..1198e42
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java
new file mode 100644
index 0000000..1e28d44
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java
@@ -0,0 +1,285 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 compressionFilters;

+

+import java.io.IOException;

+import java.io.OutputStreamWriter;

+import java.io.PrintWriter;

+import java.util.HashMap;

+import java.util.Map;

+

+import javax.servlet.ServletOutputStream;

+import javax.servlet.http.HttpServletResponse;

+import javax.servlet.http.HttpServletResponseWrapper;

+

+/**

+ * Implementation of <b>HttpServletResponseWrapper</b> that works with

+ * the CompressionServletResponseStream implementation..

+ *

+ * @author Amy Roh

+ * @author Dmitri Valdin

+ */

+public class CompressionServletResponseWrapper

+        extends HttpServletResponseWrapper {

+

+    // ----------------------------------------------------- Constructor

+

+    /**

+     * Calls the parent constructor which creates a ServletResponse adaptor

+     * wrapping the given response object.

+     */

+    public CompressionServletResponseWrapper(HttpServletResponse response) {

+        super(response);

+        origResponse = response;

+        if (debug > 1) {

+            System.out.println("CompressionServletResponseWrapper constructor gets called");

+        }

+    }

+

+

+    // ----------------------------------------------------- Instance Variables

+

+    /**

+     * Original response

+     */

+

+    protected HttpServletResponse origResponse = null;

+

+    /**

+     * Descriptive information about this Response implementation.

+     */

+

+    protected static final String info = "CompressionServletResponseWrapper";

+

+    /**

+     * The ServletOutputStream that has been returned by

+     * <code>getOutputStream()</code>, if any.

+     */

+

+    protected ServletOutputStream stream = null;

+

+

+    /**

+     * The PrintWriter that has been returned by

+     * <code>getWriter()</code>, if any.

+     */

+

+    protected PrintWriter writer = null;

+

+    /**

+     * The threshold number to compress

+     */

+    protected int compressionThreshold = 0;

+

+    /**

+     * The compression buffer size

+     */

+    protected int compressionBuffer = 8192;  // 8KB default

+

+    /**

+     * The mime types to compress

+     */

+    protected String[] compressionMimeTypes = {"text/html", "text/xml", "text/plain"};

+

+    /**

+     * Debug level

+     */

+    protected int debug = 0;

+

+    /**

+     * keeps a copy of all headers set

+     */

+    private Map<String,String> headerCopies = new HashMap<String,String>();

+

+

+    // --------------------------------------------------------- Public Methods

+

+

+    /**

+     * Set threshold number

+     */

+    public void setCompressionThreshold(int threshold) {

+        if (debug > 1) {

+            System.out.println("setCompressionThreshold to " + threshold);

+        }

+        this.compressionThreshold = threshold;

+    }

+

+    /**

+     * Set compression buffer

+     */

+    public void setCompressionBuffer(int buffer) {

+        if (debug > 1) {

+            System.out.println("setCompressionBuffer to " + buffer);

+        }

+        this.compressionBuffer = buffer;

+    }

+

+    /**

+     * Set compressible mime types

+     */

+    public void setCompressionMimeTypes(String[] mimeTypes) {

+        if (debug > 1) {

+            System.out.println("setCompressionMimeTypes to " + mimeTypes);

+        }

+        this.compressionMimeTypes = mimeTypes;

+    }

+

+    /**

+     * Set debug level

+     */

+    public void setDebugLevel(int debug) {

+        this.debug = debug;

+    }

+

+

+    /**

+     * Create and return a ServletOutputStream to write the content

+     * associated with this Response.

+     *

+     * @exception IOException if an input/output error occurs

+     */

+    public ServletOutputStream createOutputStream() throws IOException {

+        if (debug > 1) {

+            System.out.println("createOutputStream gets called");

+        }

+

+        CompressionResponseStream stream = new CompressionResponseStream(

+                this, origResponse.getOutputStream());

+        stream.setDebugLevel(debug);

+        stream.setCompressionThreshold(compressionThreshold);

+        stream.setCompressionBuffer(compressionBuffer);

+        stream.setCompressionMimeTypes(compressionMimeTypes);

+

+        return stream;

+    }

+

+

+    /**

+     * Finish a response.

+     */

+    public void finishResponse() {

+        try {

+            if (writer != null) {

+                writer.close();

+            } else {

+                if (stream != null)

+                    stream.close();

+            }

+        } catch (IOException e) {

+            // Ignore

+        }

+    }

+

+

+    // ------------------------------------------------ ServletResponse Methods

+

+

+    /**

+     * Flush the buffer and commit this response.

+     *

+     * @exception IOException if an input/output error occurs

+     */

+    @Override

+    public void flushBuffer() throws IOException {

+        if (debug > 1) {

+            System.out.println("flush buffer @ GZipServletResponseWrapper");

+        }

+        ((CompressionResponseStream)stream).flush();

+

+    }

+

+    /**

+     * Return the servlet output stream associated with this Response.

+     *

+     * @exception IllegalStateException if <code>getWriter</code> has

+     *  already been called for this response

+     * @exception IOException if an input/output error occurs

+     */

+    @Override

+    public ServletOutputStream getOutputStream() throws IOException {

+

+        if (writer != null)

+            throw new IllegalStateException("getWriter() has already been called for this response");

+

+        if (stream == null)

+            stream = createOutputStream();

+        if (debug > 1) {

+            System.out.println("stream is set to "+stream+" in getOutputStream");

+        }

+

+        return (stream);

+

+    }

+

+    /**

+     * Return the writer associated with this Response.

+     *

+     * @exception IllegalStateException if <code>getOutputStream</code> has

+     *  already been called for this response

+     * @exception IOException if an input/output error occurs

+     */

+    @Override

+    public PrintWriter getWriter() throws IOException {

+

+        if (writer != null)

+            return (writer);

+

+        if (stream != null)

+            throw new IllegalStateException("getOutputStream() has already been called for this response");

+

+        stream = createOutputStream();

+        if (debug > 1) {

+            System.out.println("stream is set to "+stream+" in getWriter");

+        }

+        String charEnc = origResponse.getCharacterEncoding();

+        if (debug > 1) {

+            System.out.println("character encoding is " + charEnc);

+        }

+        // HttpServletResponse.getCharacterEncoding() shouldn't return null

+        // according the spec, so feel free to remove that "if"

+        if (charEnc != null) {

+            writer = new PrintWriter(new OutputStreamWriter(stream, charEnc));

+        } else {

+            writer = new PrintWriter(stream);

+        }

+

+        return (writer);

+    }

+

+    @Override

+    public String getHeader(String name) {

+        return headerCopies.get(name);

+    }

+

+    @Override

+    public void addHeader(String name, String value) {

+        if (headerCopies.containsKey(name)) {

+            String existingValue = headerCopies.get(name);

+            if ((existingValue != null) && (existingValue.length() > 0)) headerCopies.put(name, existingValue + "," + value);

+            else headerCopies.put(name, value);

+        } else headerCopies.put(name, value);

+        super.addHeader(name, value);

+    }

+

+

+    @Override

+    public void setHeader(String name, String value) {

+        headerCopies.put(name, value);

+        super.setHeader(name, value);

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/dates/JspCalendar.class b/webapps/examples/WEB-INF/classes/dates/JspCalendar.class
new file mode 100644
index 0000000..56cd2b5
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/dates/JspCalendar.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/dates/JspCalendar.java b/webapps/examples/WEB-INF/classes/dates/JspCalendar.java
new file mode 100644
index 0000000..9c90bbd
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/dates/JspCalendar.java
@@ -0,0 +1,153 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 dates;

+

+import java.util.Calendar;

+import java.util.Date;

+

+public class JspCalendar {

+    Calendar  calendar = null;

+

+    public JspCalendar() {

+        calendar = Calendar.getInstance();

+        Date trialTime = new Date();

+        calendar.setTime(trialTime);

+    }

+

+    public int getYear() {

+        return calendar.get(Calendar.YEAR);

+    }

+

+    public String getMonth() {

+        int m = getMonthInt();

+        String[] months = new String [] { "January", "February", "March",

+                                        "April", "May", "June",

+                                        "July", "August", "September",

+                                        "October", "November", "December" };

+        if (m > 12)

+            return "Unknown to Man";

+

+        return months[m - 1];

+

+    }

+

+    public String getDay() {

+        int x = getDayOfWeek();

+        String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",

+                                      "Thursday", "Friday", "Saturday"};

+

+        if (x > 7)

+            return "Unknown to Man";

+

+        return days[x - 1];

+

+    }

+

+    public int getMonthInt() {

+        return 1 + calendar.get(Calendar.MONTH);

+    }

+

+    public String getDate() {

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+

+    }

+

+    public String getTime() {

+        return getHour() + ":" + getMinute() + ":" + getSecond();

+    }

+

+    public int getDayOfMonth() {

+        return calendar.get(Calendar.DAY_OF_MONTH);

+    }

+

+    public int getDayOfYear() {

+        return calendar.get(Calendar.DAY_OF_YEAR);

+    }

+

+    public int getWeekOfYear() {

+        return calendar.get(Calendar.WEEK_OF_YEAR);

+    }

+

+    public int getWeekOfMonth() {

+        return calendar.get(Calendar.WEEK_OF_MONTH);

+    }

+

+    public int getDayOfWeek() {

+        return calendar.get(Calendar.DAY_OF_WEEK);

+    }

+

+    public int getHour() {

+        return calendar.get(Calendar.HOUR_OF_DAY);

+    }

+

+    public int getMinute() {

+        return calendar.get(Calendar.MINUTE);

+    }

+

+

+    public int getSecond() {

+        return calendar.get(Calendar.SECOND);

+    }

+

+    public static void main(String args[]) {

+        JspCalendar db = new JspCalendar();

+        p("date: " + db.getDayOfMonth());

+        p("year: " + db.getYear());

+        p("month: " + db.getMonth());

+        p("time: " + db.getTime());

+        p("date: " + db.getDate());

+        p("Day: " + db.getDay());

+        p("DayOfYear: " + db.getDayOfYear());

+        p("WeekOfYear: " + db.getWeekOfYear());

+        p("era: " + db.getEra());

+        p("ampm: " + db.getAMPM());

+        p("DST: " + db.getDSTOffset());

+        p("ZONE Offset: " + db.getZoneOffset());

+        p("TIMEZONE: " + db.getUSTimeZone());

+    }

+

+    private static void p(String x) {

+        System.out.println(x);

+    }

+

+

+    public int getEra() {

+        return calendar.get(Calendar.ERA);

+    }

+

+    public String getUSTimeZone() {

+        String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

+                                       "Mountain", "Central", "Eastern"};

+

+        return zones[10 + getZoneOffset()];

+    }

+

+    public int getZoneOffset() {

+        return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

+    }

+

+

+    public int getDSTOffset() {

+        return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

+    }

+

+

+    public int getAMPM() {

+        return calendar.get(Calendar.AM_PM);

+    }

+}

+

diff --git a/webapps/examples/WEB-INF/classes/error/Smart.class b/webapps/examples/WEB-INF/classes/error/Smart.class
new file mode 100644
index 0000000..fd96ee2
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/error/Smart.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/error/Smart.java b/webapps/examples/WEB-INF/classes/error/Smart.java
new file mode 100644
index 0000000..67aff03
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/error/Smart.java
@@ -0,0 +1,30 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 error;

+

+public class Smart {

+

+    String name = "JSP";

+

+    public String getName() {

+        return name;

+    }

+

+    public void setName(String name) {

+        this.name = name;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class b/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class
new file mode 100644
index 0000000..4ac9330
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java b/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java
new file mode 100644
index 0000000..d339adb
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.java
@@ -0,0 +1,74 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 examples;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.BodyContent;

+import javax.servlet.jsp.tagext.BodyTagSupport;

+import javax.servlet.jsp.tagext.Tag;

+

+public abstract class ExampleTagBase extends BodyTagSupport {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    public void setParent(Tag parent) {

+        this.parent = parent;

+    }

+

+    @Override

+    public void setBodyContent(BodyContent bodyOut) {

+        this.bodyOut = bodyOut;

+    }

+

+    @Override

+    public Tag getParent() {

+        return this.parent;

+    }

+

+    @Override

+    public int doStartTag() throws JspException {

+        return SKIP_BODY;

+    }

+

+    @Override

+    public int doEndTag() throws JspException {

+        return EVAL_PAGE;

+    }

+

+

+    @Override

+    public void doInitBody() throws JspException {

+        // Default implementations for BodyTag methods as well

+        // just in case a tag decides to implement BodyTag.

+    }

+

+    @Override

+    public int doAfterBody() throws JspException {

+        return SKIP_BODY;

+    }

+

+    @Override

+    public void release() {

+        bodyOut = null;

+        pageContext = null;

+        parent = null;

+    }

+

+    protected BodyContent bodyOut;

+    protected Tag parent;

+}

diff --git a/webapps/examples/WEB-INF/classes/examples/FooTag.class b/webapps/examples/WEB-INF/classes/examples/FooTag.class
new file mode 100644
index 0000000..3d6d760
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/FooTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/examples/FooTag.java b/webapps/examples/WEB-INF/classes/examples/FooTag.java
new file mode 100644
index 0000000..c8fdb0a
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/FooTag.java
@@ -0,0 +1,87 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 examples;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+

+/**

+ * Example1: the simplest tag

+ * Collect attributes and call into some actions

+ *

+ * <foo att1="..." att2="...." att3="...." />

+ */

+

+public class FooTag extends ExampleTagBase {

+

+    private static final long serialVersionUID = 1L;

+

+    private String atts[] = new String[3];

+    int i = 0;

+

+    private final void setAtt(int index, String value) {

+        atts[index] = value;

+    }

+

+    public void setAtt1(String value) {

+        setAtt(0, value);

+    }

+

+    public void setAtt2(String value) {

+        setAtt(1, value);

+    }

+

+    public void setAtt3(String value) {

+        setAtt(2, value);

+    }

+

+    /**

+     * Process start tag

+     *

+     * @return EVAL_BODY_INCLUDE

+     */

+    @Override

+    public int doStartTag() throws JspException {

+        i = 0;

+        return EVAL_BODY_BUFFERED;

+    }

+

+    @Override

+    public void doInitBody() throws JspException {

+        pageContext.setAttribute("member", atts[i]);

+        i++;

+    }

+

+    @Override

+    public int doAfterBody() throws JspException {

+        try {

+            if (i == 3) {

+                bodyOut.writeOut(bodyOut.getEnclosingWriter());

+                return SKIP_BODY;

+            }

+

+            pageContext.setAttribute("member", atts[i]);

+            i++;

+            return EVAL_BODY_BUFFERED;

+        } catch (IOException ex) {

+            throw new JspTagException(ex.toString());

+        }

+    }

+}

+

diff --git a/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class b/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class
new file mode 100644
index 0000000..ead843e
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java b/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java
new file mode 100644
index 0000000..1ae0492
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.java
@@ -0,0 +1,36 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 examples;

+

+import javax.servlet.jsp.tagext.TagData;

+import javax.servlet.jsp.tagext.TagExtraInfo;

+import javax.servlet.jsp.tagext.VariableInfo;

+

+public class FooTagExtraInfo extends TagExtraInfo {

+    @Override

+    public VariableInfo[] getVariableInfo(TagData data) {

+        return new VariableInfo[]

+            {

+                new VariableInfo("member",

+                                 "String",

+                                 true,

+                                 VariableInfo.NESTED)

+            };

+    }

+}

+

+

diff --git a/webapps/examples/WEB-INF/classes/examples/LogTag.class b/webapps/examples/WEB-INF/classes/examples/LogTag.class
new file mode 100644
index 0000000..7b62ca8
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/LogTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/examples/LogTag.java b/webapps/examples/WEB-INF/classes/examples/LogTag.java
new file mode 100644
index 0000000..32584fd
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/LogTag.java
@@ -0,0 +1,61 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 examples;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+

+/**

+ * Log the contents of the body. Could be used to handle errors etc.

+ */

+public class LogTag extends ExampleTagBase {

+

+    private static final long serialVersionUID = 1L;

+

+    boolean toBrowser = false;

+

+    public void setToBrowser(String value) {

+        if (value == null)

+            toBrowser = false;

+        else if (value.equalsIgnoreCase("true"))

+            toBrowser = true;

+        else

+            toBrowser = false;

+    }

+

+    @Override

+    public int doStartTag() throws JspException {

+        return EVAL_BODY_BUFFERED;

+    }

+

+    @Override

+    public int doAfterBody() throws JspException {

+        try {

+            String s = bodyOut.getString();

+            System.err.println(s);

+            if (toBrowser)

+                bodyOut.writeOut(bodyOut.getEnclosingWriter());

+            return SKIP_BODY;

+        } catch (IOException ex) {

+            throw new JspTagException(ex.toString());

+        }

+    }

+}

+

+

diff --git a/webapps/examples/WEB-INF/classes/examples/ShowSource.class b/webapps/examples/WEB-INF/classes/examples/ShowSource.class
new file mode 100644
index 0000000..2ddb218
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/ShowSource.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/examples/ShowSource.java b/webapps/examples/WEB-INF/classes/examples/ShowSource.java
new file mode 100644
index 0000000..6aa6965
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/ShowSource.java
@@ -0,0 +1,74 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 examples;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.util.Locale;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.TagSupport;

+

+/**

+ * Display the sources of the JSP file.

+ */

+public class ShowSource extends TagSupport {

+

+    private static final long serialVersionUID = 1L;

+

+    String jspFile;

+

+    public void setJspFile(String jspFile) {

+        this.jspFile = jspFile;

+    }

+

+    @Override

+    public int doEndTag() throws JspException {

+        if ((jspFile.indexOf( ".." ) >= 0) ||

+            (jspFile.toUpperCase(Locale.ENGLISH).indexOf("/WEB-INF/") != 0) ||

+            (jspFile.toUpperCase(Locale.ENGLISH).indexOf("/META-INF/") != 0))

+            throw new JspTagException("Invalid JSP file " + jspFile);

+

+        InputStream in

+            = pageContext.getServletContext().getResourceAsStream(jspFile);

+

+        if (in == null)

+            throw new JspTagException("Unable to find JSP file: "+jspFile);

+

+        JspWriter out = pageContext.getOut();

+

+

+        try {

+            out.println("<body>");

+            out.println("<pre>");

+            for(int ch = in.read(); ch != -1; ch = in.read())

+                if (ch == '<')

+                    out.print("&lt;");

+                else

+                    out.print((char) ch);

+            out.println("</pre>");

+            out.println("</body>");

+        } catch (IOException ex) {

+            throw new JspTagException("IOException: "+ex.toString());

+        }

+        return super.doEndTag();

+    }

+}

+

+

diff --git a/webapps/examples/WEB-INF/classes/examples/ValuesTag.class b/webapps/examples/WEB-INF/classes/examples/ValuesTag.class
new file mode 100644
index 0000000..cc4d3ff
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/ValuesTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/examples/ValuesTag.java b/webapps/examples/WEB-INF/classes/examples/ValuesTag.java
new file mode 100644
index 0000000..20468dc
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/examples/ValuesTag.java
@@ -0,0 +1,79 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 examples;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.TagSupport;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesTag extends TagSupport {

+

+    private static final long serialVersionUID = 1L;

+

+    // Using "-1" as the default value,

+    // in the assumption that it won't be used as the value.

+    // Cannot use null here, because null is an important case

+    // that should be present in the tests.

+    private Object objectValue = "-1";

+    private String stringValue = "-1";

+    private long longValue = -1;

+    private double doubleValue = -1;

+

+    public void setObject(Object objectValue) {

+        this.objectValue = objectValue;

+    }

+

+    public void setString(String stringValue) {

+        this.stringValue = stringValue;

+    }

+

+    public void setLong(long longValue) {

+        this.longValue = longValue;

+    }

+

+    public void setDouble(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    @Override

+    public int doEndTag() throws JspException {

+        JspWriter out = pageContext.getOut();

+

+        try {

+            if (!"-1".equals(objectValue)) {

+                out.print(objectValue);

+            } else if (!"-1".equals(stringValue)) {

+                out.print(stringValue);

+            } else if (longValue != -1) {

+                out.print(longValue);

+            } else if (doubleValue != -1) {

+                out.print(doubleValue);

+            } else {

+                out.print("-1");

+            }

+        } catch (IOException ex) {

+            throw new JspTagException("IOException: " + ex.toString(), ex);

+        }

+        return super.doEndTag();

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class b/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class
new file mode 100644
index 0000000..3eb0999
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java b/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java
new file mode 100644
index 0000000..a9f5076
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/filters/ExampleFilter.java
@@ -0,0 +1,144 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 filters;

+

+

+import java.io.IOException;

+

+import javax.servlet.Filter;

+import javax.servlet.FilterChain;

+import javax.servlet.FilterConfig;

+import javax.servlet.ServletException;

+import javax.servlet.ServletRequest;

+import javax.servlet.ServletResponse;

+

+

+/**

+ * Example filter that can be attached to either an individual servlet

+ * or to a URL pattern.  This filter performs the following functions:

+ * <ul>

+ * <li>Attaches itself as a request attribute, under the attribute name

+ *     defined by the value of the <code>attribute</code> initialization

+ *     parameter.</li>

+ * <li>Calculates the number of milliseconds required to perform the

+ *     servlet processing required by this request, including any

+ *     subsequently defined filters, and logs the result to the servlet

+ *     context log for this application.

+ * </ul>

+ *

+ * @author Craig McClanahan

+ * @version $Id: ExampleFilter.java 987920 2010-08-22 15:34:34Z markt $

+ */

+

+public final class ExampleFilter implements Filter {

+

+

+    // ----------------------------------------------------- Instance Variables

+

+

+    /**

+     * The request attribute name under which we store a reference to ourself.

+     */

+    private String attribute = null;

+

+

+    /**

+     * The filter configuration object we are associated with.  If this value

+     * is null, this filter instance is not currently configured.

+     */

+    private FilterConfig filterConfig = null;

+

+

+    // --------------------------------------------------------- Public Methods

+

+

+    /**

+     * Take this filter out of service.

+     */

+    @Override

+    public void destroy() {

+

+        this.attribute = null;

+        this.filterConfig = null;

+

+    }

+

+

+    /**

+     * Time the processing that is performed by all subsequent filters in the

+     * current filter stack, including the ultimately invoked servlet.

+     *

+     * @param request The servlet request we are processing

+     * @param response The servlet response we are creating

+     * @param chain The filter chain we are processing

+     *

+     * @exception IOException if an input/output error occurs

+     * @exception ServletException if a servlet error occurs

+     */

+    @Override

+    public void doFilter(ServletRequest request, ServletResponse response,

+                         FilterChain chain)

+        throws IOException, ServletException {

+

+        // Store ourselves as a request attribute (if requested)

+        if (attribute != null)

+            request.setAttribute(attribute, this);

+

+        // Time and log the subsequent processing

+        long startTime = System.currentTimeMillis();

+        chain.doFilter(request, response);

+        long stopTime = System.currentTimeMillis();

+        filterConfig.getServletContext().log

+            (this.toString() + ": " + (stopTime - startTime) +

+             " milliseconds");

+

+    }

+

+

+    /**

+     * Place this filter into service.

+     *

+     * @param fConfig The filter configuration object

+     */

+    @Override

+    public void init(FilterConfig fConfig) throws ServletException {

+

+        this.filterConfig = fConfig;

+        this.attribute = fConfig.getInitParameter("attribute");

+

+    }

+

+

+    /**

+     * Return a String representation of this object.

+     */

+    @Override

+    public String toString() {

+

+        if (filterConfig == null)

+            return ("TimingFilter()");

+        StringBuilder sb = new StringBuilder("TimingFilter(");

+        sb.append(filterConfig);

+        sb.append(")");

+        return (sb.toString());

+

+    }

+

+

+}

+

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class b/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class
new file mode 100644
index 0000000..e817362
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java b/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java
new file mode 100644
index 0000000..cc7e805
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.java
@@ -0,0 +1,44 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples;

+

+public class BookBean {

+    private String title;

+    private String author;

+    private String isbn;

+

+    public BookBean( String title, String author, String isbn ) {

+        this.title = title;

+        this.author = author;

+        this.isbn = isbn;

+    }

+

+    public String getTitle() {

+        return this.title;

+    }

+

+    public String getAuthor() {

+        return this.author;

+    }

+

+    public String getIsbn() {

+        return this.isbn;

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class b/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class
new file mode 100644
index 0000000..f624400
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java b/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java
new file mode 100644
index 0000000..057a581
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.java
@@ -0,0 +1,36 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples;

+

+public class FooBean {

+    private String bar;

+

+    public FooBean() {

+        bar = "Initial value";

+    }

+

+    public String getBar() {

+        return this.bar;

+    }

+

+    public void setBar(String bar) {

+        this.bar = bar;

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class b/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class
new file mode 100644
index 0000000..1ae6315
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java b/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java
new file mode 100644
index 0000000..b7ff056
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.java
@@ -0,0 +1,52 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesBean {

+    private String string;

+    private double doubleValue;

+    private long longValue;

+

+    public String getStringValue() {

+        return this.string;

+    }

+

+    public void setStringValue(String string) {

+        this.string = string;

+    }

+

+    public double getDoubleValue() {

+        return doubleValue;

+    }

+

+    public void setDoubleValue(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    public long getLongValue() {

+        return longValue;

+    }

+

+    public void setLongValue(long longValue) {

+        this.longValue = longValue;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class b/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class
new file mode 100644
index 0000000..54f11ef
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java b/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java
new file mode 100644
index 0000000..cc15bf3
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.java
@@ -0,0 +1,45 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.el;

+

+import java.util.Locale;

+

+/**

+ * Defines the functions for the jsp2 example tag library.

+ *

+ * <p>Each function is defined as a static method.</p>

+ */

+public class Functions {

+    public static String reverse( String text ) {

+        return new StringBuilder( text ).reverse().toString();

+    }

+

+    public static int numVowels( String text ) {

+        String vowels = "aeiouAEIOU";

+        int result = 0;

+        for( int i = 0; i < text.length(); i++ ) {

+            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

+                result++;

+            }

+        }

+        return result;

+    }

+

+    public static String caps( String text ) {

+        return text.toUpperCase(Locale.ENGLISH);

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class
new file mode 100644
index 0000000..f1ca8cd
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java
new file mode 100644
index 0000000..4dd5322
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.java
@@ -0,0 +1,57 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+import java.util.ArrayList;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.DynamicAttributes;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that echoes all its attributes

+ */

+public class EchoAttributesTag

+    extends SimpleTagSupport

+    implements DynamicAttributes

+{

+    private ArrayList<String> keys = new ArrayList<String>();

+    private ArrayList<Object> values = new ArrayList<Object>();

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        JspWriter out = getJspContext().getOut();

+        for( int i = 0; i < keys.size(); i++ ) {

+            String key = keys.get( i );

+            Object value = values.get( i );

+            out.println( "<li>" + key + " = " + value + "</li>" );

+        }

+    }

+

+    @Override

+    public void setDynamicAttribute( String uri, String localName,

+        Object value )

+        throws JspException

+    {

+        keys.add( localName );

+        values.add( value );

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class
new file mode 100644
index 0000000..4b3a691
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java
new file mode 100644
index 0000000..7554558
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.java
@@ -0,0 +1,46 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+import jsp2.examples.BookBean;

+

+/**

+ * SimpleTag handler that pretends to search for a book, and stores

+ * the result in a scoped variable.

+ */

+public class FindBookSimpleTag extends SimpleTagSupport {

+    private String var;

+

+    private static final String BOOK_TITLE = "The Lord of the Rings";

+    private static final String BOOK_AUTHOR = "J. R. R. Tolkein";

+    private static final String BOOK_ISBN = "0618002251";

+

+    @Override

+    public void doTag() throws JspException {

+        BookBean book = new BookBean( BOOK_TITLE, BOOK_AUTHOR, BOOK_ISBN );

+        getJspContext().setAttribute( this.var, book );

+    }

+

+    public void setVar( String var ) {

+        this.var = var;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class
new file mode 100644
index 0000000..21450f5
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java
new file mode 100644
index 0000000..e068b65
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.java
@@ -0,0 +1,34 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that prints "Hello, world!"

+ */

+public class HelloWorldSimpleTag extends SimpleTagSupport {

+    @Override

+    public void doTag() throws JspException, IOException {

+        getJspContext().getOut().write( "Hello, world!" );

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class
new file mode 100644
index 0000000..6307468
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java
new file mode 100644
index 0000000..a9dda90
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.java
@@ -0,0 +1,44 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that accepts a num attribute and

+ * invokes its body 'num' times.

+ */

+public class RepeatSimpleTag extends SimpleTagSupport {

+    private int num;

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        for (int i=0; i<num; i++) {

+            getJspContext().setAttribute("count", String.valueOf( i + 1 ) );

+            getJspBody().invoke(null);

+        }

+    }

+

+    public void setNum(int num) {

+        this.num = num;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class
new file mode 100644
index 0000000..3ba23ed
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.java b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.java
new file mode 100644
index 0000000..e796af2
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.java
@@ -0,0 +1,87 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+import java.util.Random;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.JspFragment;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that accepts takes three attributes of type

+ * JspFragment and invokes then in a random order.

+ */

+public class ShuffleSimpleTag extends SimpleTagSupport {

+    // No need for this to use SecureRandom

+    private static Random random = new Random();

+

+    private JspFragment fragment1;

+    private JspFragment fragment2;

+    private JspFragment fragment3;

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        switch(random.nextInt(6)) {

+            case 0:

+                fragment1.invoke( null );

+                fragment2.invoke( null );

+                fragment3.invoke( null );

+                break;

+            case 1:

+                fragment1.invoke( null );

+                fragment3.invoke( null );

+                fragment2.invoke( null );

+                break;

+            case 2:

+                fragment2.invoke( null );

+                fragment1.invoke( null );

+                fragment3.invoke( null );

+                break;

+            case 3:

+                fragment2.invoke( null );

+                fragment3.invoke( null );

+                fragment1.invoke( null );

+                break;

+            case 4:

+                fragment3.invoke( null );

+                fragment1.invoke( null );

+                fragment2.invoke( null );

+                break;

+            case 5:

+                fragment3.invoke( null );

+                fragment2.invoke( null );

+                fragment1.invoke( null );

+                break;

+        }

+    }

+

+    public void setFragment1( JspFragment fragment1 ) {

+        this.fragment1 = fragment1;

+    }

+

+    public void setFragment2( JspFragment fragment2 ) {

+        this.fragment2 = fragment2;

+    }

+

+    public void setFragment3( JspFragment fragment3 ) {

+        this.fragment3 = fragment3;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class
new file mode 100644
index 0000000..d2162fe
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.java b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.java
new file mode 100644
index 0000000..b95cc31
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.java
@@ -0,0 +1,48 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * Displays a tile as a single cell in a table.

+ */

+public class TileSimpleTag extends SimpleTagSupport {

+    private String color;

+    private String label;

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        getJspContext().getOut().write(

+                "<td width=\"32\" height=\"32\" bgcolor=\"" + this.color +

+                "\"><font color=\"#ffffff\"><center>" + this.label +

+                "</center></font></td>" );

+    }

+

+    public void setColor( String color ) {

+        this.color = color;

+    }

+

+    public void setLabel( String label ) {

+        this.label = label;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/listeners/ContextListener.class b/webapps/examples/WEB-INF/classes/listeners/ContextListener.class
new file mode 100644
index 0000000..4c28065
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/listeners/ContextListener.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/listeners/ContextListener.java b/webapps/examples/WEB-INF/classes/listeners/ContextListener.java
new file mode 100644
index 0000000..9e0ec51
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/listeners/ContextListener.java
@@ -0,0 +1,140 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 listeners;

+

+

+import javax.servlet.ServletContext;

+import javax.servlet.ServletContextAttributeEvent;

+import javax.servlet.ServletContextAttributeListener;

+import javax.servlet.ServletContextEvent;

+import javax.servlet.ServletContextListener;

+

+

+/**

+ * Example listener for context-related application events, which were

+ * introduced in the 2.3 version of the Servlet API.  This listener

+ * merely documents the occurrence of such events in the application log

+ * associated with our servlet context.

+ *

+ * @author Craig R. McClanahan

+ * @version $Id: ContextListener.java 982399 2010-08-04 20:52:23Z markt $

+ */

+

+public final class ContextListener

+    implements ServletContextAttributeListener, ServletContextListener {

+

+

+    // ----------------------------------------------------- Instance Variables

+

+

+    /**

+     * The servlet context with which we are associated.

+     */

+    private ServletContext context = null;

+

+

+    // --------------------------------------------------------- Public Methods

+

+

+    /**

+     * Record the fact that a servlet context attribute was added.

+     *

+     * @param event The servlet context attribute event

+     */

+    @Override

+    public void attributeAdded(ServletContextAttributeEvent event) {

+

+        log("attributeAdded('" + event.getName() + "', '" +

+                event.getValue() + "')");

+

+    }

+

+

+    /**

+     * Record the fact that a servlet context attribute was removed.

+     *

+     * @param event The servlet context attribute event

+     */

+    @Override

+    public void attributeRemoved(ServletContextAttributeEvent event) {

+

+        log("attributeRemoved('" + event.getName() + "', '" +

+                event.getValue() + "')");

+

+    }

+

+

+    /**

+     * Record the fact that a servlet context attribute was replaced.

+     *

+     * @param event The servlet context attribute event

+     */

+    @Override

+    public void attributeReplaced(ServletContextAttributeEvent event) {

+

+        log("attributeReplaced('" + event.getName() + "', '" +

+                event.getValue() + "')");

+

+    }

+

+

+    /**

+     * Record the fact that this web application has been destroyed.

+     *

+     * @param event The servlet context event

+     */

+    @Override

+    public void contextDestroyed(ServletContextEvent event) {

+

+        log("contextDestroyed()");

+        this.context = null;

+

+    }

+

+

+    /**

+     * Record the fact that this web application has been initialized.

+     *

+     * @param event The servlet context event

+     */

+    @Override

+    public void contextInitialized(ServletContextEvent event) {

+

+        this.context = event.getServletContext();

+        log("contextInitialized()");

+

+    }

+

+

+    // -------------------------------------------------------- Private Methods

+

+

+    /**

+     * Log a message to the servlet context application log.

+     *

+     * @param message Message to be logged

+     */

+    private void log(String message) {

+

+        if (context != null)

+            context.log("ContextListener: " + message);

+        else

+            System.out.println("ContextListener: " + message);

+

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/listeners/SessionListener.class b/webapps/examples/WEB-INF/classes/listeners/SessionListener.class
new file mode 100644
index 0000000..c31d0f2
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/listeners/SessionListener.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/listeners/SessionListener.java b/webapps/examples/WEB-INF/classes/listeners/SessionListener.java
new file mode 100644
index 0000000..d45b2f5
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/listeners/SessionListener.java
@@ -0,0 +1,162 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 listeners;

+

+import javax.servlet.ServletContext;

+import javax.servlet.ServletContextEvent;

+import javax.servlet.ServletContextListener;

+import javax.servlet.http.HttpSessionAttributeListener;

+import javax.servlet.http.HttpSessionBindingEvent;

+import javax.servlet.http.HttpSessionEvent;

+import javax.servlet.http.HttpSessionListener;

+

+/**

+ * Example listener for context-related application events, which were

+ * introduced in the 2.3 version of the Servlet API. This listener merely

+ * documents the occurrence of such events in the application log associated

+ * with our servlet context.

+ *

+ * @author Craig R. McClanahan

+ * @version $Id: SessionListener.java 1200123 2011-11-10 04:03:27Z kkolinko $

+ */

+

+public final class SessionListener implements ServletContextListener,

+        HttpSessionAttributeListener, HttpSessionListener {

+

+    // ----------------------------------------------------- Instance Variables

+

+    /**

+     * The servlet context with which we are associated.

+     */

+    private ServletContext context = null;

+

+    // --------------------------------------------------------- Public Methods

+

+    /**

+     * Record the fact that a servlet context attribute was added.

+     *

+     * @param event

+     *            The session attribute event

+     */

+    @Override

+    public void attributeAdded(HttpSessionBindingEvent event) {

+

+        log("attributeAdded('" + event.getSession().getId() + "', '"

+                + event.getName() + "', '" + event.getValue() + "')");

+

+    }

+

+    /**

+     * Record the fact that a servlet context attribute was removed.

+     *

+     * @param event

+     *            The session attribute event

+     */

+    @Override

+    public void attributeRemoved(HttpSessionBindingEvent event) {

+

+        log("attributeRemoved('" + event.getSession().getId() + "', '"

+                + event.getName() + "', '" + event.getValue() + "')");

+

+    }

+

+    /**

+     * Record the fact that a servlet context attribute was replaced.

+     *

+     * @param event

+     *            The session attribute event

+     */

+    @Override

+    public void attributeReplaced(HttpSessionBindingEvent event) {

+

+        log("attributeReplaced('" + event.getSession().getId() + "', '"

+                + event.getName() + "', '" + event.getValue() + "')");

+

+    }

+

+    /**

+     * Record the fact that this web application has been destroyed.

+     *

+     * @param event

+     *            The servlet context event

+     */

+    @Override

+    public void contextDestroyed(ServletContextEvent event) {

+

+        log("contextDestroyed()");

+        this.context = null;

+

+    }

+

+    /**

+     * Record the fact that this web application has been initialized.

+     *

+     * @param event

+     *            The servlet context event

+     */

+    @Override

+    public void contextInitialized(ServletContextEvent event) {

+

+        this.context = event.getServletContext();

+        log("contextInitialized()");

+

+    }

+

+    /**

+     * Record the fact that a session has been created.

+     *

+     * @param event

+     *            The session event

+     */

+    @Override

+    public void sessionCreated(HttpSessionEvent event) {

+

+        log("sessionCreated('" + event.getSession().getId() + "')");

+

+    }

+

+    /**

+     * Record the fact that a session has been destroyed.

+     *

+     * @param event

+     *            The session event

+     */

+    @Override

+    public void sessionDestroyed(HttpSessionEvent event) {

+

+        log("sessionDestroyed('" + event.getSession().getId() + "')");

+

+    }

+

+    // -------------------------------------------------------- Private Methods

+

+    /**

+     * Log a message to the servlet context application log.

+     *

+     * @param message

+     *            Message to be logged

+     */

+    private void log(String message) {

+

+        if (context != null)

+            context.log("SessionListener: " + message);

+        else

+            System.out.println("SessionListener: " + message);

+

+    }

+

+}

diff --git a/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class b/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class
new file mode 100644
index 0000000..e2051e9
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java b/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java
new file mode 100644
index 0000000..a619edb
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/num/NumberGuessBean.java
@@ -0,0 +1,99 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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.

+ */

+

+/*

+ * Originally written by Jason Hunter, http://www.servlets.com.

+ */

+

+package num;

+

+import java.io.Serializable;

+import java.util.Random;

+

+public class NumberGuessBean implements Serializable {

+

+    private static final long serialVersionUID = 1L;

+

+    private int answer;

+    private String hint;

+    private int numGuesses;

+    private boolean success;

+    private Random random = new Random();

+

+    public NumberGuessBean() {

+        reset();

+    }

+

+    public int getAnswer() {

+        return answer;

+    }

+

+    public void setAnswer(int answer) {

+        this.answer = answer;

+    }

+

+    public String getHint() {

+        return "" + hint;

+    }

+

+    public void setHint(String hint) {

+        this.hint = hint;

+    }

+

+    public void setNumGuesses(int numGuesses) {

+        this.numGuesses = numGuesses;

+    }

+

+    public int getNumGuesses() {

+        return numGuesses;

+    }

+

+    public boolean getSuccess() {

+        return success;

+    }

+

+    public void setSuccess(boolean success) {

+        this.success = success;

+    }

+

+    public void setGuess(String guess) {

+        numGuesses++;

+

+        int g;

+        try {

+            g = Integer.parseInt(guess);

+        } catch (NumberFormatException e) {

+            g = -1;

+        }

+

+        if (g == answer) {

+            success = true;

+        } else if (g == -1) {

+            hint = "a number next time";

+        } else if (g < answer) {

+            hint = "higher";

+        } else if (g > answer) {

+            hint = "lower";

+        }

+    }

+

+    public void reset() {

+        answer = Math.abs(random.nextInt() % 100) + 1;

+        success = false;

+        numGuesses = 0;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/sessions/DummyCart.class b/webapps/examples/WEB-INF/classes/sessions/DummyCart.class
new file mode 100644
index 0000000..2ad60c0
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/sessions/DummyCart.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/sessions/DummyCart.java b/webapps/examples/WEB-INF/classes/sessions/DummyCart.java
new file mode 100644
index 0000000..01480a0
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/sessions/DummyCart.java
@@ -0,0 +1,65 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 sessions;

+

+import java.util.Vector;

+

+public class DummyCart {

+    Vector<String> v = new Vector<String>();

+    String submit = null;

+    String item = null;

+

+    private void addItem(String name) {

+        v.addElement(name);

+    }

+

+    private void removeItem(String name) {

+        v.removeElement(name);

+    }

+

+    public void setItem(String name) {

+        item = name;

+    }

+

+    public void setSubmit(String s) {

+        submit = s;

+    }

+

+    public String[] getItems() {

+        String[] s = new String[v.size()];

+        v.copyInto(s);

+        return s;

+    }

+

+    public void processRequest() {

+        // null value for submit - user hit enter instead of clicking on

+        // "add" or "remove"

+        if (submit == null || submit.equals("add"))

+            addItem(item);

+        else if (submit.equals("remove"))

+            removeItem(item);

+

+        // reset at the end of the request

+        reset();

+    }

+

+    // reset

+    private void reset() {

+        submit = null;

+        item = null;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/util/HTMLFilter.class b/webapps/examples/WEB-INF/classes/util/HTMLFilter.class
new file mode 100644
index 0000000..952c8bf
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/util/HTMLFilter.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/util/HTMLFilter.java b/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
new file mode 100644
index 0000000..3032610
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/util/HTMLFilter.java
@@ -0,0 +1,69 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 util;

+

+/**

+ * HTML filter utility.

+ *

+ * @author Craig R. McClanahan

+ * @author Tim Tye

+ * @version $Id: HTMLFilter.java 939315 2010-04-29 14:11:01Z kkolinko $

+ */

+

+public final class HTMLFilter {

+

+

+    /**

+     * Filter the specified message string for characters that are sensitive

+     * in HTML.  This avoids potential attacks caused by including JavaScript

+     * codes in the request URL that is often reported in error messages.

+     *

+     * @param message The message string to be filtered

+     */

+    public static String filter(String message) {

+

+        if (message == null)

+            return (null);

+

+        char content[] = new char[message.length()];

+        message.getChars(0, message.length(), content, 0);

+        StringBuilder result = new StringBuilder(content.length + 50);

+        for (int i = 0; i < content.length; i++) {

+            switch (content[i]) {

+            case '<':

+                result.append("&lt;");

+                break;

+            case '>':

+                result.append("&gt;");

+                break;

+            case '&':

+                result.append("&amp;");

+                break;

+            case '"':

+                result.append("&quot;");

+                break;

+            default:

+                result.append(content[i]);

+            }

+        }

+        return (result.toString());

+

+    }

+

+

+}

+

diff --git a/webapps/examples/WEB-INF/classes/validators/DebugValidator.class b/webapps/examples/WEB-INF/classes/validators/DebugValidator.class
new file mode 100644
index 0000000..fe7b153
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/validators/DebugValidator.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/validators/DebugValidator.java b/webapps/examples/WEB-INF/classes/validators/DebugValidator.java
new file mode 100644
index 0000000..e1cdf58
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/validators/DebugValidator.java
@@ -0,0 +1,86 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 validators;

+

+

+import java.io.IOException;

+import java.io.InputStream;

+

+import javax.servlet.jsp.tagext.PageData;

+import javax.servlet.jsp.tagext.TagLibraryValidator;

+import javax.servlet.jsp.tagext.ValidationMessage;

+

+

+/**

+ * Example tag library validator that simply dumps the XML version of each

+ * page to standard output (which will typically be sent to the file

+ * <code>$CATALINA_HOME/logs/catalina.out</code>).  To utilize it, simply

+ * include a <code>taglib</code> directive for this tag library at the top

+ * of your JSP page.

+ *

+ * @author Craig McClanahan

+ * @version $Id: DebugValidator.java 987920 2010-08-22 15:34:34Z markt $

+ */

+

+public class DebugValidator extends TagLibraryValidator {

+

+

+    // ----------------------------------------------------- Instance Variables

+

+

+    // --------------------------------------------------------- Public Methods

+

+

+    /**

+     * Validate a JSP page.  This will get invoked once per directive in the

+     * JSP page.  This method will return <code>null</code> if the page is

+     * valid; otherwise the method should return an array of

+     * <code>ValidationMessage</code> objects.  An array of length zero is

+     * also interpreted as no errors.

+     *

+     * @param prefix The value of the prefix argument in this directive

+     * @param uri The value of the URI argument in this directive

+     * @param page The page data for this page

+     */

+    @Override

+    public ValidationMessage[] validate(String prefix, String uri,

+                                        PageData page) {

+

+        System.out.println("---------- Prefix=" + prefix + " URI=" + uri +

+                           "----------");

+

+        InputStream is = page.getInputStream();

+        while (true) {

+            try {

+                int ch = is.read();

+                if (ch < 0)

+                    break;

+                System.out.print((char) ch);

+            } catch (IOException e) {

+                break;

+            }

+        }

+        System.out.println();

+        System.out.println("-----------------------------------------------");

+        return (null);

+

+    }

+

+

+}

diff --git a/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$1.class b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$1.class
new file mode 100644
index 0000000..953ecbd
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$ChatMessageInbound.class b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$ChatMessageInbound.class
new file mode 100644
index 0000000..9a451c4
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$ChatMessageInbound.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.class b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.class
new file mode 100644
index 0000000..801af94
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java
new file mode 100644
index 0000000..d263106
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.java
@@ -0,0 +1,103 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 websocket.chat;

+

+import java.io.IOException;

+import java.nio.ByteBuffer;

+import java.nio.CharBuffer;

+import java.util.Set;

+import java.util.concurrent.CopyOnWriteArraySet;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.MessageInbound;

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+import org.apache.catalina.websocket.WsOutbound;

+

+import util.HTMLFilter;

+

+/**

+ * Example web socket servlet for chat.

+ */

+public class ChatWebSocketServlet extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final String GUEST_PREFIX = "Guest";

+

+    private final AtomicInteger connectionIds = new AtomicInteger(0);

+    private final Set<ChatMessageInbound> connections =

+            new CopyOnWriteArraySet<ChatMessageInbound>();

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new ChatMessageInbound(connectionIds.incrementAndGet());

+    }

+

+    private final class ChatMessageInbound extends MessageInbound {

+

+        private final String nickname;

+

+        private ChatMessageInbound(int id) {

+            this.nickname = GUEST_PREFIX + id;

+        }

+

+        @Override

+        protected void onOpen(WsOutbound outbound) {

+            connections.add(this);

+            String message = String.format("* %s %s",

+                    nickname, "has joined.");

+            broadcast(message);

+        }

+

+        @Override

+        protected void onClose(int status) {

+            connections.remove(this);

+            String message = String.format("* %s %s",

+                    nickname, "has disconnected.");

+            broadcast(message);

+        }

+

+        @Override

+        protected void onBinaryMessage(ByteBuffer message) throws IOException {

+            throw new UnsupportedOperationException(

+                    "Binary message not supported.");

+        }

+

+        @Override

+        protected void onTextMessage(CharBuffer message) throws IOException {

+            // Never trust the client

+            String filteredMessage = String.format("%s: %s",

+                    nickname, HTMLFilter.filter(message.toString()));

+            broadcast(filteredMessage);

+        }

+

+        private void broadcast(String message) {

+            for (ChatMessageInbound connection : connections) {

+                try {

+                    CharBuffer buffer = CharBuffer.wrap(message);

+                    connection.getWsOutbound().writeTextMessage(buffer);

+                } catch (IOException ignore) {

+                    // Ignore

+                }

+            }

+        }

+    }

+}
\ No newline at end of file
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage$EchoMessageInbound.class b/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage$EchoMessageInbound.class
new file mode 100644
index 0000000..d0893ef
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage$EchoMessageInbound.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.class b/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.class
new file mode 100644
index 0000000..a5e630c
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java b/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java
new file mode 100644
index 0000000..d1fe084
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.java
@@ -0,0 +1,86 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 websocket.echo;

+

+import java.io.IOException;

+import java.nio.ByteBuffer;

+import java.nio.CharBuffer;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.MessageInbound;

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+

+

+public class EchoMessage extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+    private volatile int byteBufSize;

+    private volatile int charBufSize;

+

+    @Override

+    public void init() throws ServletException {

+        super.init();

+        byteBufSize = getInitParameterIntValue("byteBufferMaxSize", 2097152);

+        charBufSize = getInitParameterIntValue("charBufferMaxSize", 2097152);

+    }

+

+    public int getInitParameterIntValue(String name, int defaultValue) {

+        String val = this.getInitParameter(name);

+        int result;

+        if(null != val) {

+            try {

+                result = Integer.parseInt(val);

+            }catch (Exception x) {

+                result = defaultValue;

+            }

+        } else {

+            result = defaultValue;

+        }

+

+        return result;

+    }

+

+

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new EchoMessageInbound(byteBufSize,charBufSize);

+    }

+

+    private static final class EchoMessageInbound extends MessageInbound {

+

+        public EchoMessageInbound(int byteBufferMaxSize, int charBufferMaxSize) {

+            super();

+            setByteBufferMaxSize(byteBufferMaxSize);

+            setCharBufferMaxSize(charBufferMaxSize);

+        }

+

+        @Override

+        protected void onBinaryMessage(ByteBuffer message) throws IOException {

+            getWsOutbound().writeBinaryMessage(message);

+        }

+

+        @Override

+        protected void onTextMessage(CharBuffer message) throws IOException {

+            getWsOutbound().writeTextMessage(message);

+        }

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$1.class b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$1.class
new file mode 100644
index 0000000..c266a11
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$EchoStreamInbound.class b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$EchoStreamInbound.class
new file mode 100644
index 0000000..556fa40
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$EchoStreamInbound.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.class b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.class
new file mode 100644
index 0000000..58d2ae9
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java
new file mode 100644
index 0000000..693424e
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.java
@@ -0,0 +1,70 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 websocket.echo;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.io.Reader;

+

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+import org.apache.catalina.websocket.WsOutbound;

+

+

+public class EchoStream extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new EchoStreamInbound();

+    }

+

+    private static final class EchoStreamInbound extends StreamInbound {

+

+        @Override

+        protected void onBinaryData(InputStream is) throws IOException {

+            // Simply echo the data to back to the client.

+            WsOutbound outbound = getWsOutbound();

+

+            int i = is.read();

+            while (i != -1) {

+                outbound.writeBinaryData(i);

+                i = is.read();

+            }

+

+            outbound.flush();

+        }

+

+        @Override

+        protected void onTextData(Reader r) throws IOException {

+            // Simply echo the data to back to the client.

+            WsOutbound outbound = getWsOutbound();

+

+            int c = r.read();

+            while (c != -1) {

+                outbound.writeTextData((char) c);

+                c = r.read();

+            }

+

+            outbound.flush();

+        }

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class b/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class
new file mode 100644
index 0000000..b6f4494
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java b/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java
new file mode 100644
index 0000000..b36c7a2
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java
@@ -0,0 +1,21 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 websocket.snake;

+

+public enum Direction {

+    NONE, NORTH, SOUTH, EAST, WEST

+}

diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class b/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class
new file mode 100644
index 0000000..2b42186
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Location.class b/webapps/examples/WEB-INF/classes/websocket/snake/Location.class
new file mode 100644
index 0000000..e9db638
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Location.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Location.java b/webapps/examples/WEB-INF/classes/websocket/snake/Location.java
new file mode 100644
index 0000000..3e21bdf
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Location.java
@@ -0,0 +1,65 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 websocket.snake;

+

+public class Location {

+

+    public int x;

+    public int y;

+

+    public Location(int x, int y) {

+        this.x = x;

+        this.y = y;

+    }

+

+    public Location getAdjacentLocation(Direction direction) {

+        switch (direction) {

+            case NORTH:

+                return new Location(x, y - SnakeWebSocketServlet.GRID_SIZE);

+            case SOUTH:

+                return new Location(x, y + SnakeWebSocketServlet.GRID_SIZE);

+            case EAST:

+                return new Location(x + SnakeWebSocketServlet.GRID_SIZE, y);

+            case WEST:

+                return new Location(x - SnakeWebSocketServlet.GRID_SIZE, y);

+            case NONE:

+                // fall through

+            default:

+                return this;

+        }

+    }

+

+    @Override

+    public boolean equals(Object o) {

+        if (this == o) return true;

+        if (o == null || getClass() != o.getClass()) return false;

+

+        Location location = (Location) o;

+

+        if (x != location.x) return false;

+        if (y != location.y) return false;

+

+        return true;

+    }

+

+    @Override

+    public int hashCode() {

+        int result = x;

+        result = 31 * result + y;

+        return result;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class b/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class
new file mode 100644
index 0000000..bfd7af0
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java b/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java
new file mode 100644
index 0000000..bce4dee
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/Snake.java
@@ -0,0 +1,144 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 websocket.snake;

+

+import java.io.IOException;

+import java.nio.CharBuffer;

+import java.util.ArrayDeque;

+import java.util.Collection;

+import java.util.Deque;

+

+import org.apache.catalina.websocket.WsOutbound;

+

+public class Snake {

+

+    private static final int DEFAULT_LENGTH = 5;

+

+    private final int id;

+    private final WsOutbound outbound;

+

+    private Direction direction;

+    private int length = DEFAULT_LENGTH;

+    private Location head;

+    private Deque<Location> tail = new ArrayDeque<Location>();

+    private String hexColor;

+

+    public Snake(int id, WsOutbound outbound) {

+        this.id = id;

+        this.outbound = outbound;

+        this.hexColor = SnakeWebSocketServlet.getRandomHexColor();

+        resetState();

+    }

+

+    private void resetState() {

+        this.direction = Direction.NONE;

+        this.head = SnakeWebSocketServlet.getRandomLocation();

+        this.tail.clear();

+        this.length = DEFAULT_LENGTH;

+    }

+

+    private synchronized void kill() {

+        resetState();

+        try {

+            CharBuffer response = CharBuffer.wrap("{'type': 'dead'}");

+            outbound.writeTextMessage(response);

+        } catch (IOException ioe) {

+            // Ignore

+        }

+    }

+

+    private synchronized void reward() {

+        length++;

+        try {

+            CharBuffer response = CharBuffer.wrap("{'type': 'kill'}");

+            outbound.writeTextMessage(response);

+        } catch (IOException ioe) {

+            // Ignore

+        }

+    }

+

+    public synchronized void update(Collection<Snake> snakes) {

+        Location nextLocation = head.getAdjacentLocation(direction);

+        if (nextLocation.x >= SnakeWebSocketServlet.PLAYFIELD_WIDTH) {

+            nextLocation.x = 0;

+        }

+        if (nextLocation.y >= SnakeWebSocketServlet.PLAYFIELD_HEIGHT) {

+            nextLocation.y = 0;

+        }

+        if (nextLocation.x < 0) {

+            nextLocation.x = SnakeWebSocketServlet.PLAYFIELD_WIDTH;

+        }

+        if (nextLocation.y < 0) {

+            nextLocation.y = SnakeWebSocketServlet.PLAYFIELD_HEIGHT;

+        }

+        if (direction != Direction.NONE) {

+            tail.addFirst(head);

+            if (tail.size() > length) {

+                tail.removeLast();

+            }

+            head = nextLocation;

+        }

+

+        handleCollisions(snakes);

+    }

+

+    private void handleCollisions(Collection<Snake> snakes) {

+        for (Snake snake : snakes) {

+            boolean headCollision = id != snake.id && snake.getHead().equals(head);

+            boolean tailCollision = snake.getTail().contains(head);

+            if (headCollision || tailCollision) {

+                kill();

+                if (id != snake.id) {

+                    snake.reward();

+                }

+            }

+        }

+    }

+

+    public synchronized Location getHead() {

+        return head;

+    }

+

+    public synchronized Collection<Location> getTail() {

+        return tail;

+    }

+

+    public synchronized void setDirection(Direction direction) {

+        this.direction = direction;

+    }

+

+    public synchronized String getLocationsJson() {

+        StringBuilder sb = new StringBuilder();

+        sb.append(String.format("{x: %d, y: %d}",

+                Integer.valueOf(head.x), Integer.valueOf(head.y)));

+        for (Location location : tail) {

+            sb.append(',');

+            sb.append(String.format("{x: %d, y: %d}",

+                    Integer.valueOf(location.x), Integer.valueOf(location.y)));

+        }

+        return String.format("{'id':%d,'body':[%s]}",

+                Integer.valueOf(id), sb.toString());

+    }

+

+    public int getId() {

+        return id;

+    }

+

+    public String getHexColor() {

+        return hexColor;

+    }

+}

diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$1.class b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$1.class
new file mode 100644
index 0000000..1c37fbb
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$1.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$SnakeMessageInbound.class b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$SnakeMessageInbound.class
new file mode 100644
index 0000000..5b63446
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$SnakeMessageInbound.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.class b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.class
new file mode 100644
index 0000000..5157260
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.class
Binary files differ
diff --git a/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java
new file mode 100644
index 0000000..d66bbe3
--- /dev/null
+++ b/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.java
@@ -0,0 +1,213 @@
+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 websocket.snake;

+

+import java.awt.Color;

+import java.io.IOException;

+import java.nio.ByteBuffer;

+import java.nio.CharBuffer;

+import java.util.Collection;

+import java.util.Collections;

+import java.util.Iterator;

+import java.util.Random;

+import java.util.Timer;

+import java.util.TimerTask;

+import java.util.concurrent.ConcurrentHashMap;

+import java.util.concurrent.atomic.AtomicInteger;

+

+import javax.servlet.ServletException;

+import javax.servlet.http.HttpServletRequest;

+

+import org.apache.catalina.websocket.MessageInbound;

+import org.apache.catalina.websocket.StreamInbound;

+import org.apache.catalina.websocket.WebSocketServlet;

+import org.apache.catalina.websocket.WsOutbound;

+import org.apache.juli.logging.Log;

+import org.apache.juli.logging.LogFactory;

+

+/**

+ * Example web socket servlet for simple multiplayer snake.

+ */

+public class SnakeWebSocketServlet extends WebSocketServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    private static final Log log =

+            LogFactory.getLog(SnakeWebSocketServlet.class);

+

+    public static final int PLAYFIELD_WIDTH = 640;

+    public static final int PLAYFIELD_HEIGHT = 480;

+    public static final int GRID_SIZE = 10;

+

+    private static final long TICK_DELAY = 100;

+

+    private static final Random random = new Random();

+

+    private final Timer gameTimer =

+            new Timer(SnakeWebSocketServlet.class.getSimpleName() + " Timer");

+

+    private final AtomicInteger connectionIds = new AtomicInteger(0);

+    private final ConcurrentHashMap<Integer, Snake> snakes =

+            new ConcurrentHashMap<Integer, Snake>();

+    private final ConcurrentHashMap<Integer, SnakeMessageInbound> connections =

+            new ConcurrentHashMap<Integer, SnakeMessageInbound>();

+

+    @Override

+    public void init() throws ServletException {

+        super.init();

+        gameTimer.scheduleAtFixedRate(new TimerTask() {

+            @Override

+            public void run() {

+                try {

+                    tick();

+                } catch (RuntimeException e) {

+                    log.error("Caught to prevent timer from shutting down", e);

+                }

+            }

+        }, TICK_DELAY, TICK_DELAY);

+    }

+

+    private void tick() {

+        StringBuilder sb = new StringBuilder();

+        for (Iterator<Snake> iterator = getSnakes().iterator();

+                iterator.hasNext();) {

+            Snake snake = iterator.next();

+            snake.update(getSnakes());

+            sb.append(snake.getLocationsJson());

+            if (iterator.hasNext()) {

+                sb.append(',');

+            }

+        }

+        broadcast(String.format("{'type': 'update', 'data' : [%s]}",

+                sb.toString()));

+    }

+

+    private void broadcast(String message) {

+        for (SnakeMessageInbound connection : getConnections()) {

+            try {

+                CharBuffer buffer = CharBuffer.wrap(message);

+                connection.getWsOutbound().writeTextMessage(buffer);

+            } catch (IOException ignore) {

+                // Ignore

+            }

+        }

+    }

+

+    private Collection<SnakeMessageInbound> getConnections() {

+        return Collections.unmodifiableCollection(connections.values());

+    }

+

+    private Collection<Snake> getSnakes() {

+        return Collections.unmodifiableCollection(snakes.values());

+    }

+

+    public static String getRandomHexColor() {

+        float hue = random.nextFloat();

+        // sat between 0.1 and 0.3

+        float saturation = (random.nextInt(2000) + 1000) / 10000f;

+        float luminance = 0.9f;

+        Color color = Color.getHSBColor(hue, saturation, luminance);

+        return '#' + Integer.toHexString(

+                (color.getRGB() & 0xffffff) | 0x1000000).substring(1);

+    }

+

+    public static Location getRandomLocation() {

+        int x = roundByGridSize(

+                random.nextInt(SnakeWebSocketServlet.PLAYFIELD_WIDTH));

+        int y = roundByGridSize(

+                random.nextInt(SnakeWebSocketServlet.PLAYFIELD_HEIGHT));

+        return new Location(x, y);

+    }

+

+    private static int roundByGridSize(int value) {

+        value = value + (SnakeWebSocketServlet.GRID_SIZE / 2);

+        value = value / SnakeWebSocketServlet.GRID_SIZE;

+        value = value * SnakeWebSocketServlet.GRID_SIZE;

+        return value;

+    }

+

+    @Override

+    public void destroy() {

+        super.destroy();

+        if (gameTimer != null) {

+            gameTimer.cancel();

+        }

+    }

+

+    @Override

+    protected StreamInbound createWebSocketInbound(String subProtocol,

+            HttpServletRequest request) {

+        return new SnakeMessageInbound(connectionIds.incrementAndGet());

+    }

+

+    private final class SnakeMessageInbound extends MessageInbound {

+

+        private final int id;

+        private Snake snake;

+

+        private SnakeMessageInbound(int id) {

+            this.id = id;

+        }

+

+        @Override

+        protected void onOpen(WsOutbound outbound) {

+            this.snake = new Snake(id, outbound);

+            snakes.put(Integer.valueOf(id), snake);

+            connections.put(Integer.valueOf(id), this);

+            StringBuilder sb = new StringBuilder();

+            for (Iterator<Snake> iterator = getSnakes().iterator();

+                    iterator.hasNext();) {

+                Snake snake = iterator.next();

+                sb.append(String.format("{id: %d, color: '%s'}",

+                        Integer.valueOf(snake.getId()), snake.getHexColor()));

+                if (iterator.hasNext()) {

+                    sb.append(',');

+                }

+            }

+            broadcast(String.format("{'type': 'join','data':[%s]}",

+                    sb.toString()));

+        }

+

+        @Override

+        protected void onClose(int status) {

+            connections.remove(Integer.valueOf(id));

+            snakes.remove(Integer.valueOf(id));

+            broadcast(String.format("{'type': 'leave', 'id': %d}",

+                    Integer.valueOf(id)));

+        }

+

+        @Override

+        protected void onBinaryMessage(ByteBuffer message) throws IOException {

+            throw new UnsupportedOperationException(

+                    "Binary message not supported.");

+        }

+

+        @Override

+        protected void onTextMessage(CharBuffer charBuffer) throws IOException {

+            String message = charBuffer.toString();

+            if ("west".equals(message)) {

+                snake.setDirection(Direction.WEST);

+            } else if ("north".equals(message)) {

+                snake.setDirection(Direction.NORTH);

+            } else if ("east".equals(message)) {

+                snake.setDirection(Direction.EAST);

+            } else if ("south".equals(message)) {

+                snake.setDirection(Direction.SOUTH);

+            }

+        }

+    }

+}

diff --git a/webapps/examples/WEB-INF/jsp/applet/Clock2.java b/webapps/examples/WEB-INF/jsp/applet/Clock2.java
new file mode 100644
index 0000000..ccc96d1
--- /dev/null
+++ b/webapps/examples/WEB-INF/jsp/applet/Clock2.java
@@ -0,0 +1,224 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+

+import java.applet.Applet;

+import java.awt.Color;

+import java.awt.Font;

+import java.awt.Graphics;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+import java.util.Locale;

+

+/**

+ * Time!

+ *

+ * @author Rachel Gollub

+ */

+

+public class Clock2 extends Applet implements Runnable {

+    private static final long serialVersionUID = 1L;

+    Thread timer;                // The thread that displays clock

+    int lastxs, lastys, lastxm,

+        lastym, lastxh, lastyh;  // Dimensions used to draw hands

+    SimpleDateFormat formatter;  // Formats the date displayed

+    String lastdate;             // String to hold date displayed

+    Font clockFaceFont;          // Font for number display on clock

+    Date currentDate;            // Used to get date to display

+    Color handColor;             // Color of main hands and dial

+    Color numberColor;           // Color of second hand and numbers

+

+    @Override

+    public void init() {

+        lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;

+        formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault());

+        currentDate = new Date();

+        lastdate = formatter.format(currentDate);

+        clockFaceFont = new Font("Serif", Font.PLAIN, 14);

+        handColor = Color.blue;

+        numberColor = Color.darkGray;

+

+        try {

+            setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));

+        } catch (Exception E) { }

+        try {

+            handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16));

+        } catch (Exception E) { }

+        try {

+            numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16));

+        } catch (Exception E) { }

+        resize(300,300);              // Set clock window size

+    }

+

+    // Plotpoints allows calculation to only cover 45 degrees of the circle,

+    // and then mirror

+    public void plotpoints(int x0, int y0, int x, int y, Graphics g) {

+        g.drawLine(x0+x,y0+y,x0+x,y0+y);

+        g.drawLine(x0+y,y0+x,x0+y,y0+x);

+        g.drawLine(x0+y,y0-x,x0+y,y0-x);

+        g.drawLine(x0+x,y0-y,x0+x,y0-y);

+        g.drawLine(x0-x,y0-y,x0-x,y0-y);

+        g.drawLine(x0-y,y0-x,x0-y,y0-x);

+        g.drawLine(x0-y,y0+x,x0-y,y0+x);

+        g.drawLine(x0-x,y0+y,x0-x,y0+y);

+    }

+

+    // Circle is just Bresenham's algorithm for a scan converted circle

+    public void circle(int x0, int y0, int r, Graphics g) {

+        int x,y;

+        float d;

+        x=0;

+        y=r;

+        d=5/4-r;

+        plotpoints(x0,y0,x,y,g);

+

+        while (y>x){

+            if (d<0) {

+                d=d+2*x+3;

+                x++;

+            }

+            else {

+                d=d+2*(x-y)+5;

+                x++;

+                y--;

+            }

+            plotpoints(x0,y0,x,y,g);

+        }

+    }

+

+    // Paint is the main part of the program

+    @Override

+    public void paint(Graphics g) {

+        int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter;

+        String today;

+

+        currentDate = new Date();

+        SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault());

+        try {

+            s = Integer.parseInt(formatter.format(currentDate));

+        } catch (NumberFormatException n) {

+            s = 0;

+        }

+        formatter.applyPattern("m");

+        try {

+            m = Integer.parseInt(formatter.format(currentDate));

+        } catch (NumberFormatException n) {

+            m = 10;

+        }

+        formatter.applyPattern("h");

+        try {

+            h = Integer.parseInt(formatter.format(currentDate));

+        } catch (NumberFormatException n) {

+            h = 10;

+        }

+        formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");

+        today = formatter.format(currentDate);

+        xcenter=80;

+        ycenter=55;

+

+    // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)

+    // x = r(cos a) + xcenter, y = r(sin a) + ycenter

+

+        xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter);

+        ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter);

+        xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter);

+        ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter);

+        xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter);

+        yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter);

+

+    // Draw the circle and numbers

+

+        g.setFont(clockFaceFont);

+        g.setColor(handColor);

+        circle(xcenter,ycenter,50,g);

+        g.setColor(numberColor);

+        g.drawString("9",xcenter-45,ycenter+3);

+        g.drawString("3",xcenter+40,ycenter+3);

+        g.drawString("12",xcenter-5,ycenter-37);

+        g.drawString("6",xcenter-3,ycenter+45);

+

+    // Erase if necessary, and redraw

+

+        g.setColor(getBackground());

+        if (xs != lastxs || ys != lastys) {

+            g.drawLine(xcenter, ycenter, lastxs, lastys);

+            g.drawString(lastdate, 5, 125);

+        }

+        if (xm != lastxm || ym != lastym) {

+            g.drawLine(xcenter, ycenter-1, lastxm, lastym);

+            g.drawLine(xcenter-1, ycenter, lastxm, lastym); }

+        if (xh != lastxh || yh != lastyh) {

+            g.drawLine(xcenter, ycenter-1, lastxh, lastyh);

+            g.drawLine(xcenter-1, ycenter, lastxh, lastyh); }

+        g.setColor(numberColor);

+        g.drawString("", 5, 125);

+        g.drawString(today, 5, 125);

+        g.drawLine(xcenter, ycenter, xs, ys);

+        g.setColor(handColor);

+        g.drawLine(xcenter, ycenter-1, xm, ym);

+        g.drawLine(xcenter-1, ycenter, xm, ym);

+        g.drawLine(xcenter, ycenter-1, xh, yh);

+        g.drawLine(xcenter-1, ycenter, xh, yh);

+        lastxs=xs; lastys=ys;

+        lastxm=xm; lastym=ym;

+        lastxh=xh; lastyh=yh;

+        lastdate = today;

+        currentDate=null;

+    }

+

+    @Override

+    public void start() {

+        timer = new Thread(this);

+        timer.start();

+    }

+

+    @Override

+    public void stop() {

+        timer = null;

+    }

+

+    @Override

+    public void run() {

+        Thread me = Thread.currentThread();

+        while (timer == me) {

+            try {

+                Thread.sleep(100);

+            } catch (InterruptedException e) {

+            }

+            repaint();

+        }

+    }

+

+    @Override

+    public void update(Graphics g) {

+        paint(g);

+    }

+

+    @Override

+    public String getAppletInfo() {

+        return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock.";

+    }

+

+    @Override

+    public String[][] getParameterInfo() {

+        String[][] info = {

+            {"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."},

+            {"fgcolor1", "hexadecimal RGB number", "The color of the hands and dial. Default is blue."},

+            {"fgcolor2", "hexadecimal RGB number", "The color of the seconds hand and numbers. Default is dark gray."}

+        };

+        return info;

+    }

+}

diff --git a/webapps/examples/WEB-INF/jsp/debug-taglib.tld b/webapps/examples/WEB-INF/jsp/debug-taglib.tld
new file mode 100644
index 0000000..d56027c
--- /dev/null
+++ b/webapps/examples/WEB-INF/jsp/debug-taglib.tld
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE taglib

+        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

+        "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

+

+<!-- a tag library descriptor -->

+

+<taglib>

+  <tlib-version>1.0</tlib-version>

+  <jsp-version>1.2</jsp-version>

+  <short-name>debug</short-name>

+  <uri>http://tomcat.apache.org/debug-taglib</uri>

+  <description>

+    This tag library defines no tags.  Instead, its purpose is encapsulated

+    in the TagLibraryValidator implementation that simply outputs the XML

+    version of a JSP page to standard output, whenever this tag library is

+    referenced in a "taglib" directive in a JSP page.

+  </description>

+  <validator>

+    <validator-class>validators.DebugValidator</validator-class>

+  </validator>

+

+  <!-- This is a dummy tag solely to satisfy DTD requirements -->

+  <tag>

+    <name>log</name>

+    <tag-class>examples.LogTag</tag-class>

+    <body-content>TAGDEPENDENT</body-content>

+    <description>

+        Perform a server side action; Log the message.

+    </description>

+    <attribute>

+        <name>toBrowser</name>

+        <required>false</required>

+    </attribute>

+  </tag>

+

+

+</taglib>

diff --git a/webapps/examples/WEB-INF/jsp/example-taglib.tld b/webapps/examples/WEB-INF/jsp/example-taglib.tld
new file mode 100644
index 0000000..906ba00
--- /dev/null
+++ b/webapps/examples/WEB-INF/jsp/example-taglib.tld
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE taglib

+        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

+        "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">

+

+<taglib>

+

+  <tlib-version>1.0</tlib-version>

+  <jsp-version>1.2</jsp-version>

+  <short-name>simple</short-name>

+  <uri>http://tomcat.apache.org/example-taglib</uri>

+  <description>

+    A simple tab library for the examples

+  </description>

+

+  <tag>

+    <name>ShowSource</name>

+    <tag-class>examples.ShowSource</tag-class>

+    <description> Display JSP sources </description>

+    <attribute>

+       <name>jspFile</name>

+       <required>true</required>

+       <rtexprvalue>true</rtexprvalue>

+    </attribute>

+  </tag>

+

+  <!-- A simple Tag -->

+  <!-- foo tag -->

+  <tag>

+    <name>foo</name>

+    <tag-class>examples.FooTag</tag-class>

+    <tei-class>examples.FooTagExtraInfo</tei-class>

+    <body-content>JSP</body-content>

+    <description>

+      Perform a server side action; uses 3 mandatory attributes

+    </description>

+

+    <attribute>

+      <name>att1</name>

+      <required>true</required>

+    </attribute>

+    <attribute>

+      <name>att2</name>

+      <required>true</required>

+    </attribute>

+    <attribute>

+      <name>att3</name>

+      <required>true</required>

+    </attribute>

+  </tag>

+

+  <!-- Another simple tag -->

+  <!-- log tag -->

+  <tag>

+    <name>log</name>

+    <tag-class>examples.LogTag</tag-class>

+    <body-content>TAGDEPENDENT</body-content>

+    <description>

+      Perform a server side action; Log the message.

+    </description>

+    <attribute>

+      <name>toBrowser</name>

+      <required>false</required>

+    </attribute>

+  </tag>

+

+  <!-- Another simple Tag -->

+  <!-- values tag -->

+  <tag>

+    <name>values</name>

+    <tag-class>examples.ValuesTag</tag-class>

+    <body-content>empty</body-content>

+    <description>

+        Accept and return values of different types. This tag is used

+        to illustrate type coercions.

+    </description>

+    <attribute>

+      <name>object</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>java.lang.Object</type>

+    </attribute>

+    <attribute>

+      <name>string</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>java.lang.String</type>

+    </attribute>

+    <attribute>

+      <name>long</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>long</type>

+    </attribute>

+    <attribute>

+      <name>double</name>

+      <required>false</required>

+      <rtexprvalue>true</rtexprvalue>

+      <type>double</type>

+    </attribute>

+  </tag>

+</taglib>

diff --git a/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld b/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld
new file mode 100644
index 0000000..d3a2563
--- /dev/null
+++ b/webapps/examples/WEB-INF/jsp2/jsp2-example-taglib.tld
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" ?>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

+    version="2.0">

+    <description>A tag library exercising SimpleTag handlers.</description>

+    <tlib-version>1.0</tlib-version>

+    <short-name>SimpleTagLibrary</short-name>

+    <uri>http://tomcat.apache.org/jsp2-example-taglib</uri>

+    <tag>

+        <description>Outputs Hello, World</description>

+        <name>helloWorld</name>

+        <tag-class>jsp2.examples.simpletag.HelloWorldSimpleTag</tag-class>

+        <body-content>empty</body-content>

+    </tag>

+    <tag>

+        <description>Repeats the body of the tag 'num' times</description>

+        <name>repeat</name>

+        <tag-class>jsp2.examples.simpletag.RepeatSimpleTag</tag-class>

+        <body-content>scriptless</body-content>

+        <variable>

+            <description>Current invocation count (1 to num)</description>

+            <name-given>count</name-given>

+        </variable>

+        <attribute>

+            <name>num</name>

+            <required>true</required>

+            <rtexprvalue>true</rtexprvalue>

+        </attribute>

+    </tag>

+    <tag>

+        <description>Populates the page context with a BookBean</description>

+        <name>findBook</name>

+        <tag-class>jsp2.examples.simpletag.FindBookSimpleTag</tag-class>

+        <body-content>empty</body-content>

+        <attribute>

+            <name>var</name>

+            <required>true</required>

+            <rtexprvalue>true</rtexprvalue>

+        </attribute>

+    </tag>

+    <tag>

+        <description>

+            Takes 3 fragments and invokes them in a random order

+        </description>

+        <name>shuffle</name>

+        <tag-class>jsp2.examples.simpletag.ShuffleSimpleTag</tag-class>

+        <body-content>empty</body-content>

+        <attribute>

+            <name>fragment1</name>

+            <required>true</required>

+            <fragment>true</fragment>

+        </attribute>

+        <attribute>

+            <name>fragment2</name>

+            <required>true</required>

+            <fragment>true</fragment>

+        </attribute>

+        <attribute>

+            <name>fragment3</name>

+            <required>true</required>

+            <fragment>true</fragment>

+        </attribute>

+    </tag>

+    <tag>

+        <description>Outputs a colored tile</description>

+        <name>tile</name>

+        <tag-class>jsp2.examples.simpletag.TileSimpleTag</tag-class>

+        <body-content>empty</body-content>

+        <attribute>

+            <name>color</name>

+            <required>true</required>

+        </attribute>

+        <attribute>

+            <name>label</name>

+            <required>true</required>

+        </attribute>

+    </tag>

+    <tag>

+        <description>

+          Tag that echoes all its attributes and body content

+        </description>

+        <name>echoAttributes</name>

+        <tag-class>jsp2.examples.simpletag.EchoAttributesTag</tag-class>

+        <body-content>empty</body-content>

+        <dynamic-attributes>true</dynamic-attributes>

+    </tag>

+    <function>

+        <description>Reverses the characters in the given String</description>

+        <name>reverse</name>

+        <function-class>jsp2.examples.el.Functions</function-class>

+        <function-signature>java.lang.String reverse( java.lang.String )</function-signature>

+    </function>

+    <function>

+        <description>Counts the number of vowels (a,e,i,o,u) in the given String</description>

+        <name>countVowels</name>

+        <function-class>jsp2.examples.el.Functions</function-class>

+        <function-signature>java.lang.String numVowels( java.lang.String )</function-signature>

+    </function>

+    <function>

+        <description>Converts the string to all caps</description>

+        <name>caps</name>

+        <function-class>jsp2.examples.el.Functions</function-class>

+        <function-signature>java.lang.String caps( java.lang.String )</function-signature>

+    </function>

+</taglib>

+

diff --git a/webapps/examples/WEB-INF/lib/jstl.jar b/webapps/examples/WEB-INF/lib/jstl.jar
new file mode 100644
index 0000000..a02abec
--- /dev/null
+++ b/webapps/examples/WEB-INF/lib/jstl.jar
Binary files differ
diff --git a/webapps/examples/WEB-INF/lib/standard.jar b/webapps/examples/WEB-INF/lib/standard.jar
new file mode 100644
index 0000000..bc528ac
--- /dev/null
+++ b/webapps/examples/WEB-INF/lib/standard.jar
Binary files differ
diff --git a/webapps/examples/WEB-INF/tags/displayProducts.tag b/webapps/examples/WEB-INF/tags/displayProducts.tag
new file mode 100644
index 0000000..b2702a3
--- /dev/null
+++ b/webapps/examples/WEB-INF/tags/displayProducts.tag
@@ -0,0 +1,55 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

+<%@ attribute name="normalPrice" fragment="true" %>

+<%@ attribute name="onSale" fragment="true" %>

+<%@ variable name-given="name" %>

+<%@ variable name-given="price" %>

+<%@ variable name-given="origPrice" %>

+<%@ variable name-given="salePrice" %>

+

+<table border="1">

+  <tr>

+    <td>

+      <c:set var="name" value="Hand-held Color PDA"/>

+      <c:set var="price" value="$298.86"/>

+      <jsp:invoke fragment="normalPrice"/>

+    </td>

+    <td>

+      <c:set var="name" value="4-Pack 150 Watt Light Bulbs"/>

+      <c:set var="origPrice" value="$2.98"/>

+      <c:set var="salePrice" value="$2.32"/>

+      <jsp:invoke fragment="onSale"/>

+    </td>

+    <td>

+      <c:set var="name" value="Digital Cellular Phone"/>

+      <c:set var="price" value="$68.74"/>

+      <jsp:invoke fragment="normalPrice"/>

+    </td>

+    <td>

+      <c:set var="name" value="Baby Grand Piano"/>

+      <c:set var="price" value="$10,800.00"/>

+      <jsp:invoke fragment="normalPrice"/>

+    </td>

+    <td>

+      <c:set var="name" value="Luxury Car w/ Leather Seats"/>

+      <c:set var="origPrice" value="$23,980.00"/>

+      <c:set var="salePrice" value="$21,070.00"/>

+      <jsp:invoke fragment="onSale"/>

+    </td>

+  </tr>

+</table>

diff --git a/webapps/examples/WEB-INF/tags/helloWorld.tag b/webapps/examples/WEB-INF/tags/helloWorld.tag
new file mode 100644
index 0000000..f52e823
--- /dev/null
+++ b/webapps/examples/WEB-INF/tags/helloWorld.tag
@@ -0,0 +1,17 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+Hello, world!

diff --git a/webapps/examples/WEB-INF/tags/panel.tag b/webapps/examples/WEB-INF/tags/panel.tag
new file mode 100644
index 0000000..90aaf91
--- /dev/null
+++ b/webapps/examples/WEB-INF/tags/panel.tag
@@ -0,0 +1,29 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<%@ attribute name="color" %>

+<%@ attribute name="bgcolor" %>

+<%@ attribute name="title" %>

+<table border="1" bgcolor="${color}">

+  <tr>

+    <td><b>${title}</b></td>

+  </tr>

+  <tr>

+    <td bgcolor="${bgcolor}">

+      <jsp:doBody/>

+    </td>

+  </tr>

+</table>

diff --git a/webapps/examples/WEB-INF/tags/xhtmlbasic.tag b/webapps/examples/WEB-INF/tags/xhtmlbasic.tag
new file mode 100644
index 0000000..d8af5e5
--- /dev/null
+++ b/webapps/examples/WEB-INF/tags/xhtmlbasic.tag
@@ -0,0 +1,21 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"

+"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml">

+<jsp:doBody/>

+</html>

diff --git a/webapps/examples/WEB-INF/web.xml b/webapps/examples/WEB-INF/web.xml
new file mode 100644
index 0000000..f6d24b2
--- /dev/null
+++ b/webapps/examples/WEB-INF/web.xml
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<web-app xmlns="http://java.sun.com/xml/ns/javaee"

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

+

+    <description>

+      Servlet and JSP Examples.

+    </description>

+    <display-name>Servlet and JSP Examples</display-name>

+

+    <!-- Define example filters -->

+    <filter>

+        <filter-name>Timing filter</filter-name>

+        <filter-class>filters.ExampleFilter</filter-class>

+        <init-param>

+            <param-name>attribute</param-name>

+            <param-value>filters.ExampleFilter</param-value>

+        </init-param>

+    </filter>

+

+    <filter>

+        <filter-name>Request Dumper Filter</filter-name>

+        <filter-class>org.apache.catalina.filters.RequestDumperFilter</filter-class>

+    </filter>

+

+    <!-- Example filter to set character encoding on each request -->

+    <filter>

+        <filter-name>Set Character Encoding</filter-name>

+        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>

+        <init-param>

+            <param-name>encoding</param-name>

+            <param-value>EUC_JP</param-value>

+        </init-param>

+        <init-param>

+            <param-name>ignore</param-name>

+            <param-value>true</param-value>

+        </init-param>

+    </filter>

+

+    <filter>

+        <filter-name>Compression Filter</filter-name>

+        <filter-class>compressionFilters.CompressionFilter</filter-class>

+        <init-param>

+            <param-name>compressionThreshold</param-name>

+            <param-value>128</param-value>

+        </init-param>

+        <init-param>

+            <param-name>compressionBuffer</param-name>

+            <param-value>8192</param-value>

+        </init-param>

+        <init-param>

+            <param-name>compressionMimeTypes</param-name>

+            <param-value>text/html,text/plain,text/xml</param-value>

+        </init-param>

+        <init-param>

+          <param-name>debug</param-name>

+          <param-value>0</param-value>

+        </init-param>

+    </filter>

+

+    <!-- Define filter mappings for the timing filters -->

+    <!--

+    <filter-mapping>

+        <filter-name>Timing Filter</filter-name>

+        <url-pattern>/*</url-pattern>

+    </filter-mapping>

+    -->

+

+<!-- Example filter mapping to apply the "Set Character Encoding" filter

+     to *all* requests processed by this web application -->

+<!--

+    <filter-mapping>

+        <filter-name>Set Character Encoding</filter-name>

+        <url-pattern>/*</url-pattern>

+    </filter-mapping>

+-->

+

+<!--

+    <filter-mapping>

+      <filter-name>Compression Filter</filter-name>

+      <url-pattern>/CompressionTest</url-pattern>

+    </filter-mapping>

+-->

+

+<!--

+    <filter-mapping>

+        <filter-name>Request Dumper Filter</filter-name>

+        <url-pattern>/*</url-pattern>

+    </filter-mapping>

+-->

+

+    <!-- Define example application events listeners -->

+    <listener>

+        <listener-class>listeners.ContextListener</listener-class>

+    </listener>

+    <listener>

+        <listener-class>listeners.SessionListener</listener-class>

+    </listener>

+

+    <!-- Define servlets that are included in the example application -->

+

+    <servlet>

+      <servlet-name>ServletToJsp</servlet-name>

+      <servlet-class>ServletToJsp</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>ChatServlet</servlet-name>

+        <servlet-class>chat.ChatServlet</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>CompressionFilterTestServlet</servlet-name>

+        <servlet-class>compressionFilters.CompressionFilterTestServlet</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>HelloWorldExample</servlet-name>

+        <servlet-class>HelloWorldExample</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>RequestInfoExample</servlet-name>

+        <servlet-class>RequestInfoExample</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>RequestHeaderExample</servlet-name>

+        <servlet-class>RequestHeaderExample</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>RequestParamExample</servlet-name>

+        <servlet-class>RequestParamExample</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>CookieExample</servlet-name>

+        <servlet-class>CookieExample</servlet-class>

+    </servlet>

+    <servlet>

+        <servlet-name>SessionExample</servlet-name>

+        <servlet-class>SessionExample</servlet-class>

+    </servlet>

+

+    <servlet-mapping>

+        <servlet-name>ChatServlet</servlet-name>

+        <url-pattern>/jsp/chat/chat</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>CompressionFilterTestServlet</servlet-name>

+        <url-pattern>/CompressionTest</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>HelloWorldExample</servlet-name>

+        <url-pattern>/servlets/servlet/HelloWorldExample</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>RequestInfoExample</servlet-name>

+        <url-pattern>/servlets/servlet/RequestInfoExample/*</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>RequestHeaderExample</servlet-name>

+        <url-pattern>/servlets/servlet/RequestHeaderExample</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>RequestParamExample</servlet-name>

+        <url-pattern>/servlets/servlet/RequestParamExample</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>CookieExample</servlet-name>

+        <url-pattern>/servlets/servlet/CookieExample</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>SessionExample</servlet-name>

+        <url-pattern>/servlets/servlet/SessionExample</url-pattern>

+    </servlet-mapping>

+    <servlet-mapping>

+        <servlet-name>ServletToJsp</servlet-name>

+        <url-pattern>/servletToJsp</url-pattern>

+    </servlet-mapping>

+

+    <jsp-config>

+        <taglib>

+            <taglib-uri>

+               http://tomcat.apache.org/debug-taglib

+            </taglib-uri>

+            <taglib-location>

+               /WEB-INF/jsp/debug-taglib.tld

+            </taglib-location>

+        </taglib>

+

+        <taglib>

+            <taglib-uri>

+               http://tomcat.apache.org/example-taglib

+            </taglib-uri>

+            <taglib-location>

+               /WEB-INF/jsp/example-taglib.tld

+            </taglib-location>

+        </taglib>

+

+        <taglib>

+            <taglib-uri>

+               http://tomcat.apache.org/jsp2-example-taglib

+            </taglib-uri>

+            <taglib-location>

+               /WEB-INF/jsp2/jsp2-example-taglib.tld

+            </taglib-location>

+        </taglib>

+

+        <jsp-property-group>

+            <description>

+                Special property group for JSP Configuration JSP example.

+            </description>

+            <display-name>JSPConfiguration</display-name>

+            <url-pattern>/jsp/jsp2/misc/config.jsp</url-pattern>

+            <el-ignored>true</el-ignored>

+            <page-encoding>ISO-8859-1</page-encoding>

+            <scripting-invalid>true</scripting-invalid>

+            <include-prelude>/jsp/jsp2/misc/prelude.jspf</include-prelude>

+            <include-coda>/jsp/jsp2/misc/coda.jspf</include-coda>

+        </jsp-property-group>

+    </jsp-config>

+

+   <security-constraint>

+      <display-name>Example Security Constraint</display-name>

+      <web-resource-collection>

+         <web-resource-name>Protected Area</web-resource-name>

+         <!-- Define the context-relative URL(s) to be protected -->

+         <url-pattern>/jsp/security/protected/*</url-pattern>

+         <!-- If you list http methods, only those methods are protected -->

+         <http-method>DELETE</http-method>

+         <http-method>GET</http-method>

+         <http-method>POST</http-method>

+         <http-method>PUT</http-method>

+      </web-resource-collection>

+      <auth-constraint>

+         <!-- Anyone with one of the listed roles may access this area -->

+         <role-name>tomcat</role-name>

+         <role-name>role1</role-name>

+      </auth-constraint>

+    </security-constraint>

+

+    <!-- Default login configuration uses form-based authentication -->

+    <login-config>

+      <auth-method>FORM</auth-method>

+      <realm-name>Example Form-Based Authentication Area</realm-name>

+      <form-login-config>

+        <form-login-page>/jsp/security/protected/login.jsp</form-login-page>

+        <form-error-page>/jsp/security/protected/error.jsp</form-error-page>

+      </form-login-config>

+    </login-config>

+

+    <!-- Security roles referenced by this web application -->

+    <security-role>

+      <role-name>role1</role-name>

+    </security-role>

+    <security-role>

+      <role-name>tomcat</role-name>

+    </security-role>

+

+    <!-- Environment entry examples -->

+    <!--env-entry>

+      <env-entry-description>

+         The maximum number of tax exemptions allowed to be set.

+      </env-entry-description>

+      <env-entry-name>maxExemptions</env-entry-name>

+      <env-entry-type>java.lang.Integer</env-entry-type>

+      <env-entry-value>15</env-entry-value>

+    </env-entry-->

+    <env-entry>

+      <env-entry-name>minExemptions</env-entry-name>

+      <env-entry-type>java.lang.Integer</env-entry-type>

+      <env-entry-value>1</env-entry-value>

+    </env-entry>

+    <env-entry>

+      <env-entry-name>foo/name1</env-entry-name>

+      <env-entry-type>java.lang.String</env-entry-type>

+      <env-entry-value>value1</env-entry-value>

+    </env-entry>

+    <env-entry>

+      <env-entry-name>foo/bar/name2</env-entry-name>

+      <env-entry-type>java.lang.Boolean</env-entry-type>

+      <env-entry-value>true</env-entry-value>

+    </env-entry>

+    <env-entry>

+      <env-entry-name>name3</env-entry-name>

+      <env-entry-type>java.lang.Integer</env-entry-type>

+      <env-entry-value>1</env-entry-value>

+    </env-entry>

+    <env-entry>

+      <env-entry-name>foo/name4</env-entry-name>

+      <env-entry-type>java.lang.Integer</env-entry-type>

+      <env-entry-value>10</env-entry-value>

+    </env-entry>

+

+    <!-- Async examples -->

+    <servlet>

+      <servlet-name>async0</servlet-name>

+      <servlet-class>async.Async0</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async0</servlet-name>

+      <url-pattern>/async/async0</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>async1</servlet-name>

+      <servlet-class>async.Async1</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async1</servlet-name>

+      <url-pattern>/async/async1</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>async2</servlet-name>

+      <servlet-class>async.Async2</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async2</servlet-name>

+      <url-pattern>/async/async2</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>async3</servlet-name>

+      <servlet-class>async.Async3</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>async3</servlet-name>

+      <url-pattern>/async/async3</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>stock</servlet-name>

+      <servlet-class>async.AsyncStockServlet</servlet-class>

+      <async-supported>true</async-supported>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>stock</servlet-name>

+      <url-pattern>/async/stockticker</url-pattern>

+    </servlet-mapping>

+

+    <!-- WebSocket Examples -->

+    <servlet>

+      <servlet-name>wsEchoStream</servlet-name>

+      <servlet-class>websocket.echo.EchoStream</servlet-class>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>wsEchoStream</servlet-name>

+      <url-pattern>/websocket/echoStream</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>wsEchoMessage</servlet-name>

+      <servlet-class>websocket.echo.EchoMessage</servlet-class>

+      <!-- Uncomment the following block to increase the default maximum

+           WebSocket buffer size from 2MB to 20MB which is required for the

+           Autobahn test suite to pass fully. -->

+      <!--

+      <init-param>

+        <param-name>byteBufferMaxSize</param-name>

+        <param-value>20971520</param-value>

+      </init-param>

+      <init-param>

+        <param-name>charBufferMaxSize</param-name>

+        <param-value>20971520</param-value>

+      </init-param>

+      -->

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>wsEchoMessage</servlet-name>

+      <url-pattern>/websocket/echoMessage</url-pattern>

+    </servlet-mapping>

+    <servlet>

+        <servlet-name>wsChat</servlet-name>

+        <servlet-class>websocket.chat.ChatWebSocketServlet</servlet-class>

+    </servlet>

+    <servlet-mapping>

+        <servlet-name>wsChat</servlet-name>

+        <url-pattern>/websocket/chat</url-pattern>

+    </servlet-mapping>

+    <servlet>

+      <servlet-name>wsSnake</servlet-name>

+      <servlet-class>websocket.snake.SnakeWebSocketServlet</servlet-class>

+    </servlet>

+    <servlet-mapping>

+      <servlet-name>wsSnake</servlet-name>

+      <url-pattern>/websocket/snake</url-pattern>

+    </servlet-mapping>

+

+</web-app>

diff --git a/webapps/examples/index.html b/webapps/examples/index.html
new file mode 100644
index 0000000..96e5a20
--- /dev/null
+++ b/webapps/examples/index.html
@@ -0,0 +1,30 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<HTML><HEAD><TITLE>Apache Tomcat Examples</TITLE>

+<META http-equiv=Content-Type content="text/html">

+</HEAD>

+<BODY>

+<P>

+<H3>Apache Tomcat Examples</H3>

+<P></P>

+<ul>

+<li><a href="servlets">Servlets examples</a></li>

+<li><a href="jsp">JSP Examples</a></li>

+<li><a href="websocket">WebSocket Examples</a></li>

+</ul>

+</BODY></HTML>

diff --git a/webapps/examples/jsp/async/async1.jsp b/webapps/examples/jsp/async/async1.jsp
new file mode 100644
index 0000000..fb6fa2d
--- /dev/null
+++ b/webapps/examples/jsp/async/async1.jsp
@@ -0,0 +1,26 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@page session="false"%>

+Output from async1.jsp

+Type is <%=request.getDispatcherType()%>

+<%

+System.out.println("Inside Async 1");

+  if (request.isAsyncStarted()) {

+    request.getAsyncContext().complete();

+  }

+%>

+Completed async request at <%=new java.sql.Date(System.currentTimeMillis())%>
\ No newline at end of file
diff --git a/webapps/examples/jsp/async/async1.jsp.html b/webapps/examples/jsp/async/async1.jsp.html
new file mode 100644
index 0000000..4c460b8
--- /dev/null
+++ b/webapps/examples/jsp/async/async1.jsp.html
@@ -0,0 +1,28 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@page session="false"%>

+Output from async1.jsp

+Type is &lt;%=request.getDispatcherType()%>

+&lt;%

+System.out.println("Inside Async 1");

+  if (request.isAsyncStarted()) {

+    request.getAsyncContext().complete();

+  }

+%>

+Completed async request at &lt;%=new java.sql.Date(System.currentTimeMillis())%>

+</pre></body></html>

diff --git a/webapps/examples/jsp/async/async3.jsp b/webapps/examples/jsp/async/async3.jsp
new file mode 100644
index 0000000..c16d5d7
--- /dev/null
+++ b/webapps/examples/jsp/async/async3.jsp
@@ -0,0 +1,20 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@page session="false"%>

+Output from async3.jsp

+Type is <%=request.getDispatcherType()%>

+Completed async 3 request at <%=new java.sql.Date(System.currentTimeMillis())%>
\ No newline at end of file
diff --git a/webapps/examples/jsp/async/async3.jsp.html b/webapps/examples/jsp/async/async3.jsp.html
new file mode 100644
index 0000000..ad77ae9
--- /dev/null
+++ b/webapps/examples/jsp/async/async3.jsp.html
@@ -0,0 +1,22 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@page session="false"%>

+Output from async3.jsp

+Type is &lt;%=request.getDispatcherType()%>

+Completed async 3 request at &lt;%=new java.sql.Date(System.currentTimeMillis())%>

+</pre></body></html>

diff --git a/webapps/examples/jsp/async/index.jsp b/webapps/examples/jsp/async/index.jsp
new file mode 100644
index 0000000..28af9ac
--- /dev/null
+++ b/webapps/examples/jsp/async/index.jsp
@@ -0,0 +1,69 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@page session="false"%>

+

+<pre>

+Use cases:

+

+1. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls ctx.dispatch()

+   <a href="<%=response.encodeURL("/examples/async/async0")%>"> Async 0 </a>

+

+2. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls dispatch(/path/to/jsp)

+   <a href="<%=response.encodeURL("/examples/async/async1")%>"> Async 1 </a>

+

+3. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls writes and calls complete()

+   <a href="<%=response.encodeURL("/examples/async/async2")%>"> Async 2 </a>

+

+4. Simple dispatch

+ - servlet does a startAsync()

+ - servlet calls dispatch(/path/to/jsp)

+ - servlet calls complete()

+   <a href="<%=response.encodeURL("/examples/async/async3")%>"> Async 3 </a>

+

+3. Timeout s1

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - returns - waits for timeout to happen should return error page

+

+4. Timeout s2

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - servlet does a addAsyncListener

+ - returns - waits for timeout to happen and listener invoked

+

+5. Dispatch to asyncSupported=false servlet

+ - servlet1 does a startAsync()

+ - servlet1 dispatches to dispatch(/servlet2)

+ - the container calls complete() after servlet2 is complete

+ - TODO

+

+6. Chained dispatch

+ - servlet1 does a startAsync

+ - servlet1 does a dispatch to servlet2 (asyncsupported=true)

+ - servlet2 does a dispatch to servlet3 (asyncsupported=true)

+ - servlet3 does a dispatch to servlet4 (asyncsupported=false)

+

+

+7. Stock ticker

+   <a href="<%=response.encodeURL("/examples/async/stockticker")%>"> StockTicker </a>

+</pre>
\ No newline at end of file
diff --git a/webapps/examples/jsp/async/index.jsp.html b/webapps/examples/jsp/async/index.jsp.html
new file mode 100644
index 0000000..6f124b5
--- /dev/null
+++ b/webapps/examples/jsp/async/index.jsp.html
@@ -0,0 +1,71 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@page session="false"%>

+

+&lt;pre>

+Use cases:

+

+1. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls ctx.dispatch()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async0")%>"> Async 0 &lt;/a>

+

+2. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls dispatch(/path/to/jsp)

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async1")%>"> Async 1 &lt;/a>

+

+3. Simple dispatch

+ - servlet does startAsync()

+ - background thread calls writes and calls complete()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async2")%>"> Async 2 &lt;/a>

+

+4. Simple dispatch

+ - servlet does a startAsync()

+ - servlet calls dispatch(/path/to/jsp)

+ - servlet calls complete()

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/async3")%>"> Async 3 &lt;/a>

+

+3. Timeout s1

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - returns - waits for timeout to happen should return error page

+

+4. Timeout s2

+ - servlet does a startAsync()

+ - servlet does a setAsyncTimeout

+ - servlet does a addAsyncListener

+ - returns - waits for timeout to happen and listener invoked

+

+5. Dispatch to asyncSupported=false servlet

+ - servlet1 does a startAsync()

+ - servlet1 dispatches to dispatch(/servlet2)

+ - the container calls complete() after servlet2 is complete

+ - TODO

+

+6. Chained dispatch

+ - servlet1 does a startAsync

+ - servlet1 does a dispatch to servlet2 (asyncsupported=true)

+ - servlet2 does a dispatch to servlet3 (asyncsupported=true)

+ - servlet3 does a dispatch to servlet4 (asyncsupported=false)

+

+

+7. Stock ticker

+   &lt;a href="&lt;%=response.encodeURL("/examples/async/stockticker")%>"> StockTicker &lt;/a>

+&lt;/pre>

+</pre></body></html>

diff --git a/webapps/examples/jsp/cal/Entries.java.html b/webapps/examples/jsp/cal/Entries.java.html
new file mode 100644
index 0000000..289363b
--- /dev/null
+++ b/webapps/examples/jsp/cal/Entries.java.html
@@ -0,0 +1,62 @@
+<html><body><pre>

+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 cal;

+

+import java.util.Hashtable;

+

+import javax.servlet.http.HttpServletRequest;

+

+public class Entries {

+

+    private Hashtable&lt;String, Entry> entries;

+    private static final String[] time = { "8am", "9am", "10am", "11am",

+            "12pm", "1pm", "2pm", "3pm", "4pm", "5pm", "6pm", "7pm", "8pm" };

+    public static final int rows = 12;

+

+    public Entries() {

+        entries = new Hashtable&lt;String, Entry>(rows);

+        for (int i = 0; i &lt; rows; i++) {

+            entries.put(time[i], new Entry(time[i]));

+        }

+    }

+

+    public int getRows() {

+        return rows;

+    }

+

+    public Entry getEntry(int index) {

+        return this.entries.get(time[index]);

+    }

+

+    public int getIndex(String tm) {

+        for (int i = 0; i &lt; rows; i++)

+            if (tm.equals(time[i]))

+                return i;

+        return -1;

+    }

+

+    public void processRequest(HttpServletRequest request, String tm) {

+        int index = getIndex(tm);

+        if (index >= 0) {

+            String descr = request.getParameter("description");

+            entries.get(time[index]).setDescription(descr);

+        }

+    }

+

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/cal/Entry.java.html b/webapps/examples/jsp/cal/Entry.java.html
new file mode 100644
index 0000000..4e97bc1
--- /dev/null
+++ b/webapps/examples/jsp/cal/Entry.java.html
@@ -0,0 +1,55 @@
+<html><body><pre>

+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 cal;

+

+public class Entry {

+

+    String hour;

+    String description;

+

+    public Entry(String hour) {

+        this.hour = hour;

+        this.description = "";

+

+    }

+

+    public String getHour() {

+        return this.hour;

+    }

+

+    public String getColor() {

+        if (description.equals("")) {

+            return "lightblue";

+        }

+        return "red";

+    }

+

+    public String getDescription() {

+        if (description.equals("")) {

+            return "None";

+        }

+        return this.description;

+    }

+

+    public void setDescription(String descr) {

+        description = descr;

+    }

+

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/cal/JspCalendar.java.html b/webapps/examples/jsp/cal/JspCalendar.java.html
new file mode 100644
index 0000000..3c04fd1
--- /dev/null
+++ b/webapps/examples/jsp/cal/JspCalendar.java.html
@@ -0,0 +1,153 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 cal;

+

+import java.util.Calendar;

+import java.util.Date;

+

+public class JspCalendar {

+    Calendar  calendar = null;

+

+    public JspCalendar() {

+        calendar = Calendar.getInstance();

+        Date trialTime = new Date();

+        calendar.setTime(trialTime);

+    }

+

+

+    public int getYear() {

+        return calendar.get(Calendar.YEAR);

+    }

+

+    public String getMonth() {

+        int m = getMonthInt();

+        String[] months = new String [] { "January", "February", "March",

+                                        "April", "May", "June",

+                                        "July", "August", "September",

+                                        "October", "November", "December" };

+        if (m > 12)

+            return "Unknown to Man";

+

+        return months[m - 1];

+

+    }

+

+    public String getDay() {

+        int x = getDayOfWeek();

+        String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday",

+                                      "Thursday", "Friday", "Saturday"};

+

+        if (x > 7)

+            return "Unknown to Man";

+

+        return days[x - 1];

+

+    }

+

+    public int getMonthInt() {

+        return 1 + calendar.get(Calendar.MONTH);

+    }

+

+    public String getDate() {

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+    }

+

+    public String getCurrentDate() {

+        Date dt = new Date ();

+        calendar.setTime (dt);

+        return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();

+

+    }

+

+    public String getNextDate() {

+        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1);

+        return getDate ();

+    }

+

+    public String getPrevDate() {

+        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1);

+        return getDate ();

+    }

+

+    public String getTime() {

+        return getHour() + ":" + getMinute() + ":" + getSecond();

+    }

+

+    public int getDayOfMonth() {

+        return calendar.get(Calendar.DAY_OF_MONTH);

+    }

+

+    public int getDayOfYear() {

+        return calendar.get(Calendar.DAY_OF_YEAR);

+    }

+

+    public int getWeekOfYear() {

+        return calendar.get(Calendar.WEEK_OF_YEAR);

+    }

+

+    public int getWeekOfMonth() {

+        return calendar.get(Calendar.WEEK_OF_MONTH);

+    }

+

+    public int getDayOfWeek() {

+        return calendar.get(Calendar.DAY_OF_WEEK);

+    }

+

+    public int getHour() {

+        return calendar.get(Calendar.HOUR_OF_DAY);

+    }

+

+    public int getMinute() {

+        return calendar.get(Calendar.MINUTE);

+    }

+

+

+    public int getSecond() {

+        return calendar.get(Calendar.SECOND);

+    }

+

+

+    public int getEra() {

+        return calendar.get(Calendar.ERA);

+    }

+

+    public String getUSTimeZone() {

+        String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",

+                                       "Mountain", "Central", "Eastern"};

+

+        return zones[10 + getZoneOffset()];

+    }

+

+    public int getZoneOffset() {

+        return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);

+    }

+

+

+    public int getDSTOffset() {

+        return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);

+    }

+

+

+    public int getAMPM() {

+        return calendar.get(Calendar.AM_PM);

+    }

+}

+

+

+</pre></body></html>

diff --git a/webapps/examples/jsp/cal/TableBean.java.html b/webapps/examples/jsp/cal/TableBean.java.html
new file mode 100644
index 0000000..78c0e7f
--- /dev/null
+++ b/webapps/examples/jsp/cal/TableBean.java.html
@@ -0,0 +1,103 @@
+<html><body><pre>

+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 cal;

+

+import java.util.Hashtable;

+

+import javax.servlet.http.HttpServletRequest;

+

+public class TableBean {

+

+    Hashtable&lt;String, Entries> table;

+    JspCalendar JspCal;

+    Entries entries;

+    String date;

+    String name = null;

+    String email = null;

+    boolean processError = false;

+

+    public TableBean() {

+        this.table = new Hashtable&lt;String, Entries>(10);

+        this.JspCal = new JspCalendar();

+        this.date = JspCal.getCurrentDate();

+    }

+

+    public void setName(String nm) {

+        this.name = nm;

+    }

+

+    public String getName() {

+        return this.name;

+    }

+

+    public void setEmail(String mail) {

+        this.email = mail;

+    }

+

+    public String getEmail() {

+        return this.email;

+    }

+

+    public String getDate() {

+        return this.date;

+    }

+

+    public Entries getEntries() {

+        return this.entries;

+    }

+

+    public void processRequest(HttpServletRequest request) {

+

+        // Get the name and e-mail.

+        this.processError = false;

+        if (name == null || name.equals(""))

+            setName(request.getParameter("name"));

+        if (email == null || email.equals(""))

+            setEmail(request.getParameter("email"));

+        if (name == null || email == null || name.equals("")

+                || email.equals("")) {

+            this.processError = true;

+            return;

+        }

+

+        // Get the date.

+        String dateR = request.getParameter("date");

+        if (dateR == null)

+            date = JspCal.getCurrentDate();

+        else if (dateR.equalsIgnoreCase("next"))

+            date = JspCal.getNextDate();

+        else if (dateR.equalsIgnoreCase("prev"))

+            date = JspCal.getPrevDate();

+

+        entries = table.get(date);

+        if (entries == null) {

+            entries = new Entries();

+            table.put(date, entries);

+        }

+

+        // If time is provided add the event.

+        String time = request.getParameter("time");

+        if (time != null)

+            entries.processRequest(request, time);

+    }

+

+    public boolean getProcessError() {

+        return this.processError;

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/cal/cal1.jsp b/webapps/examples/jsp/cal/cal1.jsp
new file mode 100644
index 0000000..db78a03
--- /dev/null
+++ b/webapps/examples/jsp/cal/cal1.jsp
@@ -0,0 +1,93 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<HTML>

+<HEAD><TITLE>

+    Calendar: A JSP APPLICATION

+</TITLE></HEAD>

+

+

+<BODY BGCOLOR="white">

+

+<%@ page language="java" import="cal.*" %>

+<jsp:useBean id="table" scope="session" class="cal.TableBean" />

+

+<%

+    table.processRequest(request);

+    if (table.getProcessError() == false) {

+%>

+

+<!-- html table goes here -->

+<CENTER>

+<TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>

+<TR>

+<TD ALIGN=CENTER> <A HREF=cal1.jsp?date=prev> prev </A>

+<TD ALIGN=CENTER> Calendar:<%= table.getDate() %></TD>

+<TD ALIGN=CENTER> <A HREF=cal1.jsp?date=next> next </A>

+</TR>

+</TABLE>

+

+<!-- the main table -->

+<TABLE WIDTH=60% BGCOLOR=lightblue BORDER=1 CELLPADDING=10>

+<TR>

+<TH> Time </TH>

+<TH> Appointment </TH>

+</TR>

+<FORM METHOD=POST ACTION=cal1.jsp>

+<%

+    for(int i=0; i<table.getEntries().getRows(); i++) {

+       cal.Entry entr = table.getEntries().getEntry(i);

+%>

+    <TR>

+    <TD>

+    <A HREF=cal2.jsp?time=<%= entr.getHour() %>>

+        <%= entr.getHour() %> </A>

+    </TD>

+    <TD BGCOLOR=<%= entr.getColor() %>>

+    <% out.print(util.HTMLFilter.filter(entr.getDescription())); %>

+    </TD>

+    </TR>

+<%

+    }

+%>

+</FORM>

+</TABLE>

+<BR>

+

+<!-- footer -->

+<TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>

+<TR>

+<TD ALIGN=CENTER>  <% out.print(util.HTMLFilter.filter(table.getName())); %> :

+             <% out.print(util.HTMLFilter.filter(table.getEmail())); %> </TD>

+</TR>

+</TABLE>

+</CENTER>

+

+<%

+    } else {

+%>

+<font size=5>

+    You must enter your name and email address correctly.

+</font>

+<%

+    }

+%>

+

+

+</BODY>

+</HTML>

+

+

diff --git a/webapps/examples/jsp/cal/cal1.jsp.html b/webapps/examples/jsp/cal/cal1.jsp.html
new file mode 100644
index 0000000..e83627c
--- /dev/null
+++ b/webapps/examples/jsp/cal/cal1.jsp.html
@@ -0,0 +1,95 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;HTML>

+&lt;HEAD>&lt;TITLE>

+    Calendar: A JSP APPLICATION

+&lt;/TITLE>&lt;/HEAD>

+

+

+&lt;BODY BGCOLOR="white">

+

+&lt;%@ page language="java" import="cal.*" %>

+&lt;jsp:useBean id="table" scope="session" class="cal.TableBean" />

+

+&lt;%

+    table.processRequest(request);

+    if (table.getProcessError() == false) {

+%>

+

+&lt;!-- html table goes here -->

+&lt;CENTER>

+&lt;TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>

+&lt;TR>

+&lt;TD ALIGN=CENTER> &lt;A HREF=cal1.jsp?date=prev> prev &lt;/A>

+&lt;TD ALIGN=CENTER> Calendar:&lt;%= table.getDate() %>&lt;/TD>

+&lt;TD ALIGN=CENTER> &lt;A HREF=cal1.jsp?date=next> next &lt;/A>

+&lt;/TR>

+&lt;/TABLE>

+

+&lt;!-- the main table -->

+&lt;TABLE WIDTH=60% BGCOLOR=lightblue BORDER=1 CELLPADDING=10>

+&lt;TR>

+&lt;TH> Time &lt;/TH>

+&lt;TH> Appointment &lt;/TH>

+&lt;/TR>

+&lt;FORM METHOD=POST ACTION=cal1.jsp>

+&lt;%

+    for(int i=0; i&lt;table.getEntries().getRows(); i++) {

+       cal.Entry entr = table.getEntries().getEntry(i);

+%>

+    &lt;TR>

+    &lt;TD>

+    &lt;A HREF=cal2.jsp?time=&lt;%= entr.getHour() %>>

+        &lt;%= entr.getHour() %> &lt;/A>

+    &lt;/TD>

+    &lt;TD BGCOLOR=&lt;%= entr.getColor() %>>

+    &lt;% out.print(util.HTMLFilter.filter(entr.getDescription())); %>

+    &lt;/TD>

+    &lt;/TR>

+&lt;%

+    }

+%>

+&lt;/FORM>

+&lt;/TABLE>

+&lt;BR>

+

+&lt;!-- footer -->

+&lt;TABLE WIDTH=60% BGCOLOR=yellow CELLPADDING=15>

+&lt;TR>

+&lt;TD ALIGN=CENTER>  &lt;% out.print(util.HTMLFilter.filter(table.getName())); %> :

+             &lt;% out.print(util.HTMLFilter.filter(table.getEmail())); %> &lt;/TD>

+&lt;/TR>

+&lt;/TABLE>

+&lt;/CENTER>

+

+&lt;%

+    } else {

+%>

+&lt;font size=5>

+    You must enter your name and email address correctly.

+&lt;/font>

+&lt;%

+    }

+%>

+

+

+&lt;/BODY>

+&lt;/HTML>

+

+

+</pre></body></html>

diff --git a/webapps/examples/jsp/cal/cal2.jsp b/webapps/examples/jsp/cal/cal2.jsp
new file mode 100644
index 0000000..b508870
--- /dev/null
+++ b/webapps/examples/jsp/cal/cal2.jsp
@@ -0,0 +1,44 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<HTML>

+<HEAD><TITLE>

+    Calendar: A JSP APPLICATION

+</TITLE></HEAD>

+

+

+<BODY BGCOLOR="white">

+<jsp:useBean id="table" scope="session" class="cal.TableBean" />

+

+<%

+    String time = request.getParameter ("time");

+%>

+

+<FONT SIZE=5> Please add the following event:

+<BR> <h3> Date <%= table.getDate() %>

+<BR> Time <%= util.HTMLFilter.filter(time) %> </h3>

+</FONT>

+<FORM METHOD=POST ACTION=cal1.jsp>

+<BR>

+<BR> <INPUT NAME="date" TYPE=HIDDEN VALUE="current">

+<BR> <INPUT NAME="time" TYPE=HIDDEN VALUE="<%= util.HTMLFilter.filter(time) %>">

+<BR> <h2> Description of the event <INPUT NAME="description" TYPE=TEXT SIZE=20> </h2>

+<BR> <INPUT TYPE=SUBMIT VALUE="submit">

+</FORM>

+

+</BODY>

+</HTML>

+

diff --git a/webapps/examples/jsp/cal/cal2.jsp.html b/webapps/examples/jsp/cal/cal2.jsp.html
new file mode 100644
index 0000000..270c8b0
--- /dev/null
+++ b/webapps/examples/jsp/cal/cal2.jsp.html
@@ -0,0 +1,46 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;HTML>

+&lt;HEAD>&lt;TITLE>

+    Calendar: A JSP APPLICATION

+&lt;/TITLE>&lt;/HEAD>

+

+

+&lt;BODY BGCOLOR="white">

+&lt;jsp:useBean id="table" scope="session" class="cal.TableBean" />

+

+&lt;%

+    String time = request.getParameter ("time");

+%>

+

+&lt;FONT SIZE=5> Please add the following event:

+&lt;BR> &lt;h3> Date &lt;%= table.getDate() %>

+&lt;BR> Time &lt;%= util.HTMLFilter.filter(time) %> &lt;/h3>

+&lt;/FONT>

+&lt;FORM METHOD=POST ACTION=cal1.jsp>

+&lt;BR>

+&lt;BR> &lt;INPUT NAME="date" TYPE=HIDDEN VALUE="current">

+&lt;BR> &lt;INPUT NAME="time" TYPE=HIDDEN VALUE="&lt;%= util.HTMLFilter.filter(time) %>">

+&lt;BR> &lt;h2> Description of the event &lt;INPUT NAME="description" TYPE=TEXT SIZE=20> &lt;/h2>

+&lt;BR> &lt;INPUT TYPE=SUBMIT VALUE="submit">

+&lt;/FORM>

+

+&lt;/BODY>

+&lt;/HTML>

+

+</pre></body></html>

diff --git a/webapps/examples/jsp/cal/calendar.html b/webapps/examples/jsp/cal/calendar.html
new file mode 100644
index 0000000..d77cea5
--- /dev/null
+++ b/webapps/examples/jsp/cal/calendar.html
@@ -0,0 +1,43 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="login.html"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h2> Source Code for Calendar Example. <br>

+<h3><a href="cal1.jsp.html">cal1.jsp<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="cal2.jsp.html">cal2.jsp<font color="#0000FF"></a>

+  </font> </h3>

+

+<br>

+<h2> Beans.

+<h3><a href="TableBean.java.html">TableBean<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="Entries.java.html">Entries<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="Entry.java.html">Entry<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/cal/login.html b/webapps/examples/jsp/cal/login.html
new file mode 100644
index 0000000..b1105d5
--- /dev/null
+++ b/webapps/examples/jsp/cal/login.html
@@ -0,0 +1,47 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+    <title> Login page for the calendar. </title>

+</head>

+

+<body bgcolor="white">

+<center>

+

+    <font size=7 color="red"> Please Enter the following information: </font>

+

+<br>

+    <form method=GET action=cal1.jsp>

+

+        <font size=5> Name <input type=text name="name" size=20>

+        </font>

+        <br>

+        <font size=5> Email <input type=text name="email" size=20>

+        </font>

+        <br>

+        <input type=submit name=action value="Submit">

+

+    </form>

+<hr>

+<font size=3 color="red"> Note: This application does not implement the complete

+functionality of a typical calendar application. It demonstrates a way JSP can

+be used with html tables and forms.</font>

+

+</center>

+</body>

+</html>

diff --git a/webapps/examples/jsp/chat/index.jsp b/webapps/examples/jsp/chat/index.jsp
new file mode 100644
index 0000000..5a33fcd
--- /dev/null
+++ b/webapps/examples/jsp/chat/index.jsp
@@ -0,0 +1,32 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@page contentType="text/html; charset=UTF-8" %>

+<% if (session.getAttribute("nickname") == null) {

+    response.sendRedirect("login.jsp");

+    return;

+}

+%>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

+<html>

+<head>

+   <title>JSP Chat</title>

+</head>

+<frameset rows="1*,4*">

+  <frame name="post" src="post.jsp" scrolling="no" title="Post message">

+  <frame name="chat" src="chat" scrolling="yes" title="Chat">

+</frameset>

+</html>

diff --git a/webapps/examples/jsp/chat/index.jsp.html b/webapps/examples/jsp/chat/index.jsp.html
new file mode 100644
index 0000000..250c249
--- /dev/null
+++ b/webapps/examples/jsp/chat/index.jsp.html
@@ -0,0 +1,34 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@page contentType="text/html; charset=UTF-8" %>

+&lt;% if (session.getAttribute("nickname") == null) {

+    response.sendRedirect("login.jsp");

+    return;

+}

+%>

+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

+&lt;html>

+&lt;head>

+   &lt;title>JSP Chat&lt;/title>

+&lt;/head>

+&lt;frameset rows="1*,4*">

+  &lt;frame name="post" src="post.jsp" scrolling="no" title="Post message">

+  &lt;frame name="chat" src="chat" scrolling="yes" title="Chat">

+&lt;/frameset>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/chat/login.jsp b/webapps/examples/jsp/chat/login.jsp
new file mode 100644
index 0000000..8578ac9
--- /dev/null
+++ b/webapps/examples/jsp/chat/login.jsp
@@ -0,0 +1,33 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<%@page contentType="text/html; charset=UTF-8" %>

+<html>

+<head>

+   <title>JSP Chat</title>

+</head>

+

+<body bgcolor="#FFFFFF">

+

+<form method="POST" action='chat' target="_top" name="loginForm">

+<input type="hidden" name="action" value="login">

+Nickname: <input type="text" name="nickname">

+<input type="submit">

+</form>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/chat/login.jsp.html b/webapps/examples/jsp/chat/login.jsp.html
new file mode 100644
index 0000000..699a939
--- /dev/null
+++ b/webapps/examples/jsp/chat/login.jsp.html
@@ -0,0 +1,35 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+&lt;%@page contentType="text/html; charset=UTF-8" %>

+&lt;html>

+&lt;head>

+   &lt;title>JSP Chat&lt;/title>

+&lt;/head>

+

+&lt;body bgcolor="#FFFFFF">

+

+&lt;form method="POST" action='chat' target="_top" name="loginForm">

+&lt;input type="hidden" name="action" value="login">

+Nickname: &lt;input type="text" name="nickname">

+&lt;input type="submit">

+&lt;/form>

+

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/chat/post.jsp b/webapps/examples/jsp/chat/post.jsp
new file mode 100644
index 0000000..91fee7b
--- /dev/null
+++ b/webapps/examples/jsp/chat/post.jsp
@@ -0,0 +1,55 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+<%@page contentType="text/html; charset=UTF-8" %>

+<html>

+<head>

+   <title>JSP Chat</title>

+</head>

+

+<body bgcolor="#FFFFFF">

+

+<form method="POST" action='chat' name="postForm">

+<input type="hidden" name="action" value="post">

+Message: <input type="text" name="message">

+<input type="submit">

+</form>

+

+<br>

+<%

+  String serverName = request.getServerName();

+  if ("localhost".equals(serverName)) {

+      serverName = "127.0.0.1";

+  } else if ("127.0.0.1".equals(serverName)) {

+      serverName = "localhost";

+  }

+

+  String chatUrl = request.getScheme() + "://" + serverName + ":"

+    + request.getServerPort() + request.getContextPath()

+    + request.getServletPath();

+

+  // strip "post.jsp" from the address

+  chatUrl = chatUrl.substring(0, chatUrl.lastIndexOf("/") + 1);

+%>

+<a target="_blank" href="<%=chatUrl %>">Click to open a new chat window</a>

+<em>Note</em>: To avoid hitting the limit on the count of simultaneous

+connections to the same host, imposed by the

+<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4">HTTP specification</a>,

+the second chat window should be opened using a different URL, e.g. with

+an IP address instead of the host name.

+</body>

+</html>

diff --git a/webapps/examples/jsp/chat/post.jsp.html b/webapps/examples/jsp/chat/post.jsp.html
new file mode 100644
index 0000000..2ccfcbc
--- /dev/null
+++ b/webapps/examples/jsp/chat/post.jsp.html
@@ -0,0 +1,57 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+&lt;%@page contentType="text/html; charset=UTF-8" %>

+&lt;html>

+&lt;head>

+   &lt;title>JSP Chat&lt;/title>

+&lt;/head>

+

+&lt;body bgcolor="#FFFFFF">

+

+&lt;form method="POST" action='chat' name="postForm">

+&lt;input type="hidden" name="action" value="post">

+Message: &lt;input type="text" name="message">

+&lt;input type="submit">

+&lt;/form>

+

+&lt;br>

+&lt;%

+  String serverName = request.getServerName();

+  if ("localhost".equals(serverName)) {

+      serverName = "127.0.0.1";

+  } else if ("127.0.0.1".equals(serverName)) {

+      serverName = "localhost";

+  }

+

+  String chatUrl = request.getScheme() + "://" + serverName + ":"

+    + request.getServerPort() + request.getContextPath()

+    + request.getServletPath();

+

+  // strip "post.jsp" from the address

+  chatUrl = chatUrl.substring(0, chatUrl.lastIndexOf("/") + 1);

+%>

+&lt;a target="_blank" href="&lt;%=chatUrl %>">Click to open a new chat window&lt;/a>

+&lt;em>Note&lt;/em>: To avoid hitting the limit on the count of simultaneous

+connections to the same host, imposed by the

+&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.1.4">HTTP specification&lt;/a>,

+the second chat window should be opened using a different URL, e.g. with

+an IP address instead of the host name.

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/checkbox/CheckTest.html b/webapps/examples/jsp/checkbox/CheckTest.html
new file mode 100644
index 0000000..e950ff4
--- /dev/null
+++ b/webapps/examples/jsp/checkbox/CheckTest.html
@@ -0,0 +1,56 @@
+<HTML>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<HEAD>

+<title>

+checkbox.CheckTest Bean Properties

+</title>

+<BODY BGCOLOR="white">

+<H2>

+checkbox.CheckTest Bean Properties

+</H2>

+<HR>

+<DL>

+<DT>public class <B>CheckTest</B><DT>extends Object</DL>

+

+<P>

+<HR>

+

+<P>

+

+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0">

+<TR BGCOLOR="#EEEEFF">

+<TD COLSPAN=3><FONT SIZE="+2">

+<B>Properties Summary</B></FONT></TD>

+</TR>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+String

+</FONT></TD>

+<TD><B>CheckTest:fruit</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Multi

+</FONT></TD>

+</TABLE>

+<HR>

+</BODY>

+</HTML>

diff --git a/webapps/examples/jsp/checkbox/check.html b/webapps/examples/jsp/checkbox/check.html
new file mode 100644
index 0000000..148fe40
--- /dev/null
+++ b/webapps/examples/jsp/checkbox/check.html
@@ -0,0 +1,38 @@
+<HTML>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<BODY bgcolor="white">

+

+

+<FORM TYPE=POST ACTION=checkresult.jsp>

+<BR>

+<font size=5 color="red">

+Check all Favorite fruits: <br>

+

+<input TYPE=checkbox name=fruit VALUE=apples> Apples <BR>

+<input TYPE=checkbox name=fruit VALUE=grapes> Grapes <BR>

+<input TYPE=checkbox name=fruit VALUE=oranges> Oranges <BR>

+<input TYPE=checkbox name=fruit VALUE=melons> Melons <BR>

+

+

+<br> <INPUT TYPE=submit name=submit Value="Submit">

+

+</font>

+</FORM>

+</BODY>

+</HTML>

diff --git a/webapps/examples/jsp/checkbox/checkresult.jsp b/webapps/examples/jsp/checkbox/checkresult.jsp
new file mode 100644
index 0000000..5df7b66
--- /dev/null
+++ b/webapps/examples/jsp/checkbox/checkresult.jsp
@@ -0,0 +1,63 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<body bgcolor="white">

+<font size=5 color="red">

+<%! String[] fruits; %>

+<jsp:useBean id="foo" scope="page" class="checkbox.CheckTest" />

+

+<jsp:setProperty name="foo" property="fruit" param="fruit" />

+<hr>

+The checked fruits (got using request) are: <br>

+<%

+    fruits = request.getParameterValues("fruit");

+%>

+<ul>

+<%

+    if (fruits != null) {

+      for (int i = 0; i < fruits.length; i++) {

+%>

+<li>

+<%

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

+%>

+</ul>

+<br>

+<hr>

+

+The checked fruits (got using beans) are <br>

+

+<%

+        fruits = foo.getFruit();

+%>

+<ul>

+<%

+    if (!fruits[0].equals("1")) {

+      for (int i = 0; i < fruits.length; i++) {

+%>

+<li>

+<%

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

+%>

+</ul>

+</font>

+</body>

+</html>

diff --git a/webapps/examples/jsp/checkbox/checkresult.jsp.html b/webapps/examples/jsp/checkbox/checkresult.jsp.html
new file mode 100644
index 0000000..5daab63
--- /dev/null
+++ b/webapps/examples/jsp/checkbox/checkresult.jsp.html
@@ -0,0 +1,65 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;body bgcolor="white">

+&lt;font size=5 color="red">

+&lt;%! String[] fruits; %>

+&lt;jsp:useBean id="foo" scope="page" class="checkbox.CheckTest" />

+

+&lt;jsp:setProperty name="foo" property="fruit" param="fruit" />

+&lt;hr>

+The checked fruits (got using request) are: &lt;br>

+&lt;%

+    fruits = request.getParameterValues("fruit");

+%>

+&lt;ul>

+&lt;%

+    if (fruits != null) {

+      for (int i = 0; i &lt; fruits.length; i++) {

+%>

+&lt;li>

+&lt;%

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

+%>

+&lt;/ul>

+&lt;br>

+&lt;hr>

+

+The checked fruits (got using beans) are &lt;br>

+

+&lt;%

+        fruits = foo.getFruit();

+%>

+&lt;ul>

+&lt;%

+    if (!fruits[0].equals("1")) {

+      for (int i = 0; i &lt; fruits.length; i++) {

+%>

+&lt;li>

+&lt;%

+          out.println (util.HTMLFilter.filter(fruits[i]));

+      }

+    } else out.println ("none selected");

+%>

+&lt;/ul>

+&lt;/font>

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/checkbox/cresult.html b/webapps/examples/jsp/checkbox/cresult.html
new file mode 100644
index 0000000..c7eabce
--- /dev/null
+++ b/webapps/examples/jsp/checkbox/cresult.html
@@ -0,0 +1,34 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="check.html"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="checkresult.jsp.html">Source Code for Checkbox Example<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="CheckTest.html">Property Sheet for CheckTest

+<font color="#0000FF"></a> </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/colors/ColorGameBean.html b/webapps/examples/jsp/colors/ColorGameBean.html
new file mode 100644
index 0000000..dcfc5c8
--- /dev/null
+++ b/webapps/examples/jsp/colors/ColorGameBean.html
@@ -0,0 +1,116 @@
+<HTML>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<HEAD>

+<title>

+colors.ColorGameBean Bean Properties

+</title>

+<BODY BGCOLOR="white">

+<H2>

+colors.ColorGameBean Bean Properties

+</H2>

+<HR>

+<DL>

+<DT>public class <B>ColorGameBean</B><DT>extends Object</DL>

+

+<P>

+<HR>

+

+<P>

+

+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0">

+<TR BGCOLOR="#EEEEFF">

+<TD COLSPAN=3><FONT SIZE="+2">

+<B>Properties Summary</B></FONT></TD>

+</TR>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+String

+</FONT></TD>

+<TD><B>ColorGameBean:color2</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Single

+</FONT></TD>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+String

+</FONT></TD>

+<TD><B>ColorGameBean:color1</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Single

+</FONT></TD>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+int

+</FONT></TD>

+<TD><B>ColorGameBean:attempts</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Single

+</FONT></TD>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+boolean

+</FONT></TD>

+<TD><B>ColorGameBean:hint</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Single

+</FONT></TD>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+boolean

+</FONT></TD>

+<TD><B>ColorGameBean:success</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Single

+</FONT></TD>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+boolean

+</FONT></TD>

+<TD><B>ColorGameBean:hintTaken</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Single

+</FONT></TD>

+</TABLE>

+<HR>

+</BODY>

+</HTML>

diff --git a/webapps/examples/jsp/colors/clr.html b/webapps/examples/jsp/colors/clr.html
new file mode 100644
index 0000000..58107bc
--- /dev/null
+++ b/webapps/examples/jsp/colors/clr.html
@@ -0,0 +1,34 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="colors.html"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="colrs.jsp.html">Source Code for Color Example<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="ColorGameBean.html">Property Sheet for ColorGameBean

+<font color="#0000FF"></a> </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/colors/colors.html b/webapps/examples/jsp/colors/colors.html
new file mode 100644
index 0000000..76ec2b9
--- /dev/null
+++ b/webapps/examples/jsp/colors/colors.html
@@ -0,0 +1,47 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<body bgcolor= white>

+<font size=6 color=red>

+

+<hr>

+This web page is an example using JSP and BEANs.

+<p>

+Guess my favorite two colors

+

+<p> If you fail to guess both of them - you get yellow on red.

+

+<p> If you guess one of them right, either your foreground or

+    your background will change to the color that was guessed right.

+

+<p> Guess them both right and your browser foreground/background

+    will change to my two favorite colors to display this page.

+

+<hr>

+<form method=GET action=colrs.jsp>

+Color #1: <input type=text name= color1 size=16>

+<br>

+Color #2: <input type=text name= color2 size=16>

+<p>

+<input type=submit name=action value="Submit">

+<input type=submit name=action value="Hint">

+</form>

+

+</font>

+</body>

+</html>

diff --git a/webapps/examples/jsp/colors/colrs.jsp b/webapps/examples/jsp/colors/colrs.jsp
new file mode 100644
index 0000000..90e1afe
--- /dev/null
+++ b/webapps/examples/jsp/colors/colrs.jsp
@@ -0,0 +1,70 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+

+<jsp:useBean id="cb" scope="session" class="colors.ColorGameBean" />

+<jsp:setProperty name="cb" property="*" />

+

+<%

+    cb.processRequest();

+%>

+

+<body bgcolor=<%= cb.getColor1() %>>

+<font size=6 color=<%= cb.getColor2() %>>

+<p>

+

+<% if (cb.getHint()==true) { %>

+

+    <p> Hint #1: Vampires prey at night!

+    <p>  <p> Hint #2: Nancy without the n.

+

+<% } %>

+

+<% if  (cb.getSuccess()==true) { %>

+

+    <p> CONGRATULATIONS!!

+    <% if  (cb.getHintTaken()==true) { %>

+

+        <p> ( although I know you cheated and peeked into the hints)

+

+    <% } %>

+

+<% } %>

+

+<p> Total attempts so far: <%= cb.getAttempts() %>

+<p>

+

+<p>

+

+<form method=POST action=colrs.jsp>

+

+Color #1: <input type=text name= color1 size=16>

+

+<br>

+

+Color #2: <input type=text name= color2 size=16>

+

+<p>

+

+<input type=submit name=action value="Submit">

+<input type=submit name=action value="Hint">

+

+</form>

+

+</font>

+</body>

+</html>

diff --git a/webapps/examples/jsp/colors/colrs.jsp.html b/webapps/examples/jsp/colors/colrs.jsp.html
new file mode 100644
index 0000000..fda1bd7
--- /dev/null
+++ b/webapps/examples/jsp/colors/colrs.jsp.html
@@ -0,0 +1,72 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+

+&lt;jsp:useBean id="cb" scope="session" class="colors.ColorGameBean" />

+&lt;jsp:setProperty name="cb" property="*" />

+

+&lt;%

+    cb.processRequest();

+%>

+

+&lt;body bgcolor=&lt;%= cb.getColor1() %>>

+&lt;font size=6 color=&lt;%= cb.getColor2() %>>

+&lt;p>

+

+&lt;% if (cb.getHint()==true) { %>

+

+    &lt;p> Hint #1: Vampires prey at night!

+    &lt;p>  &lt;p> Hint #2: Nancy without the n.

+

+&lt;% } %>

+

+&lt;% if  (cb.getSuccess()==true) { %>

+

+    &lt;p> CONGRATULATIONS!!

+    &lt;% if  (cb.getHintTaken()==true) { %>

+

+        &lt;p> ( although I know you cheated and peeked into the hints)

+

+    &lt;% } %>

+

+&lt;% } %>

+

+&lt;p> Total attempts so far: &lt;%= cb.getAttempts() %>

+&lt;p>

+

+&lt;p>

+

+&lt;form method=POST action=colrs.jsp>

+

+Color #1: &lt;input type=text name= color1 size=16>

+

+&lt;br>

+

+Color #2: &lt;input type=text name= color2 size=16>

+

+&lt;p>

+

+&lt;input type=submit name=action value="Submit">

+&lt;input type=submit name=action value="Hint">

+

+&lt;/form>

+

+&lt;/font>

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/dates/date.html b/webapps/examples/jsp/dates/date.html
new file mode 100644
index 0000000..b779181
--- /dev/null
+++ b/webapps/examples/jsp/dates/date.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="date.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="date.jsp.html">Source Code for Date Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/dates/date.jsp b/webapps/examples/jsp/dates/date.jsp
new file mode 100644
index 0000000..7f47dc9
--- /dev/null
+++ b/webapps/examples/jsp/dates/date.jsp
@@ -0,0 +1,41 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+

+<%@ page session="false"%>

+

+<body bgcolor="white">

+<jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />

+

+<font size=4>

+<ul>

+<li>    Day of month: is  <jsp:getProperty name="clock" property="dayOfMonth"/>

+<li>    Year: is  <jsp:getProperty name="clock" property="year"/>

+<li>    Month: is  <jsp:getProperty name="clock" property="month"/>

+<li>    Time: is  <jsp:getProperty name="clock" property="time"/>

+<li>    Date: is  <jsp:getProperty name="clock" property="date"/>

+<li>    Day: is  <jsp:getProperty name="clock" property="day"/>

+<li>    Day Of Year: is  <jsp:getProperty name="clock" property="dayOfYear"/>

+<li>    Week Of Year: is  <jsp:getProperty name="clock" property="weekOfYear"/>

+<li>    era: is  <jsp:getProperty name="clock" property="era"/>

+<li>    DST Offset: is  <jsp:getProperty name="clock" property="DSTOffset"/>

+<li>    Zone Offset: is  <jsp:getProperty name="clock" property="zoneOffset"/>

+</ul>

+</font>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/dates/date.jsp.html b/webapps/examples/jsp/dates/date.jsp.html
new file mode 100644
index 0000000..c7eb8d5
--- /dev/null
+++ b/webapps/examples/jsp/dates/date.jsp.html
@@ -0,0 +1,43 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+

+&lt;%@ page session="false"%>

+

+&lt;body bgcolor="white">

+&lt;jsp:useBean id='clock' scope='page' class='dates.JspCalendar' type="dates.JspCalendar" />

+

+&lt;font size=4>

+&lt;ul>

+&lt;li>    Day of month: is  &lt;jsp:getProperty name="clock" property="dayOfMonth"/>

+&lt;li>    Year: is  &lt;jsp:getProperty name="clock" property="year"/>

+&lt;li>    Month: is  &lt;jsp:getProperty name="clock" property="month"/>

+&lt;li>    Time: is  &lt;jsp:getProperty name="clock" property="time"/>

+&lt;li>    Date: is  &lt;jsp:getProperty name="clock" property="date"/>

+&lt;li>    Day: is  &lt;jsp:getProperty name="clock" property="day"/>

+&lt;li>    Day Of Year: is  &lt;jsp:getProperty name="clock" property="dayOfYear"/>

+&lt;li>    Week Of Year: is  &lt;jsp:getProperty name="clock" property="weekOfYear"/>

+&lt;li>    era: is  &lt;jsp:getProperty name="clock" property="era"/>

+&lt;li>    DST Offset: is  &lt;jsp:getProperty name="clock" property="DSTOffset"/>

+&lt;li>    Zone Offset: is  &lt;jsp:getProperty name="clock" property="zoneOffset"/>

+&lt;/ul>

+&lt;/font>

+

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/error/er.html b/webapps/examples/jsp/error/er.html
new file mode 100644
index 0000000..523f7e3
--- /dev/null
+++ b/webapps/examples/jsp/error/er.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="error.html"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="err.jsp.html">Source Code for Error Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/error/err.jsp b/webapps/examples/jsp/error/err.jsp
new file mode 100644
index 0000000..956da8e
--- /dev/null
+++ b/webapps/examples/jsp/error/err.jsp
@@ -0,0 +1,44 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<body bgcolor="lightblue">

+

+    <%@ page errorPage="errorpge.jsp" %>

+    <jsp:useBean id="foo" scope="request" class="error.Smart" />

+    <%

+        String name = null;

+

+        if (request.getParameter("name") == null) {

+    %>

+    <%@ include file="error.html" %>

+    <%

+        } else {

+          foo.setName(request.getParameter("name"));

+          if (foo.getName().equalsIgnoreCase("integra"))

+              name = "acura";

+          if (name.equalsIgnoreCase("acura")) {

+    %>

+

+    <H1> Yes!!! <a href="http://www.acura.com">Acura</a> is my favorite car.

+

+    <%

+          }

+        }

+    %>

+</body>

+</html>

+

diff --git a/webapps/examples/jsp/error/err.jsp.html b/webapps/examples/jsp/error/err.jsp.html
new file mode 100644
index 0000000..8f0727d
--- /dev/null
+++ b/webapps/examples/jsp/error/err.jsp.html
@@ -0,0 +1,46 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;body bgcolor="lightblue">

+

+    &lt;%@ page errorPage="errorpge.jsp" %>

+    &lt;jsp:useBean id="foo" scope="request" class="error.Smart" />

+    &lt;%

+        String name = null;

+

+        if (request.getParameter("name") == null) {

+    %>

+    &lt;%@ include file="error.html" %>

+    &lt;%

+        } else {

+          foo.setName(request.getParameter("name"));

+          if (foo.getName().equalsIgnoreCase("integra"))

+              name = "acura";

+          if (name.equalsIgnoreCase("acura")) {

+    %>

+

+    &lt;H1> Yes!!! &lt;a href="http://www.acura.com">Acura&lt;/a> is my favorite car.

+

+    &lt;%

+          }

+        }

+    %>

+&lt;/body>

+&lt;/html>

+

+</pre></body></html>

diff --git a/webapps/examples/jsp/error/error.html b/webapps/examples/jsp/error/error.html
new file mode 100644
index 0000000..635346f
--- /dev/null
+++ b/webapps/examples/jsp/error/error.html
@@ -0,0 +1,37 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<body bgcolor="white">

+

+<h1> This example uses <b>errorpage</b> directive </h1>

+<br>

+<h3> Select my favourite car.</h3>

+<form method=get action=err.jsp>

+<!-- <br> Make a guess: -->

+<SELECT NAME="name" SIZE=5>

+<OPTION VALUE="integra"> Acura Integra <BR>

+<OPTION VALUE="bmw328i"> BMW 328I <BR>

+<OPTION VALUE="z3"> BMW Z3 <BR>

+<OPTION VALUE="infiniti"> InfinitiQ3 <BR>

+<OPTION VALUE="audi"> Audi A8 <BR>

+</SELECT>

+<br> <INPUT TYPE=submit name=submit Value="Submit">

+</form>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/error/errorpge.jsp b/webapps/examples/jsp/error/errorpge.jsp
new file mode 100644
index 0000000..dda6fbd
--- /dev/null
+++ b/webapps/examples/jsp/error/errorpge.jsp
@@ -0,0 +1,25 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+

+<body bgcolor="red">

+

+    <%@ page isErrorPage="true" %>

+    <h1> The exception <%= exception.getMessage() %> tells me you

+         made a wrong choice.

+</body>

+</html>

diff --git a/webapps/examples/jsp/error/errorpge.jsp.html b/webapps/examples/jsp/error/errorpge.jsp.html
new file mode 100644
index 0000000..cfb6fcf
--- /dev/null
+++ b/webapps/examples/jsp/error/errorpge.jsp.html
@@ -0,0 +1,27 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+

+&lt;body bgcolor="red">

+

+    &lt;%@ page isErrorPage="true" %>

+    &lt;h1> The exception &lt;%= exception.getMessage() %> tells me you

+         made a wrong choice.

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/forward/forward.jsp b/webapps/examples/jsp/forward/forward.jsp
new file mode 100644
index 0000000..4ee56a2
--- /dev/null
+++ b/webapps/examples/jsp/forward/forward.jsp
@@ -0,0 +1,33 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<%

+   double freeMem = Runtime.getRuntime().freeMemory();

+   double totlMem = Runtime.getRuntime().totalMemory();

+   double percent = freeMem/totlMem;

+   if (percent < 0.5) {

+%>

+

+<jsp:forward page="one.jsp"/>

+

+<% } else { %>

+

+<jsp:forward page="two.html"/>

+

+<% } %>

+

+</html>

diff --git a/webapps/examples/jsp/forward/forward.jsp.html b/webapps/examples/jsp/forward/forward.jsp.html
new file mode 100644
index 0000000..904ea8a
--- /dev/null
+++ b/webapps/examples/jsp/forward/forward.jsp.html
@@ -0,0 +1,35 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;%

+   double freeMem = Runtime.getRuntime().freeMemory();

+   double totlMem = Runtime.getRuntime().totalMemory();

+   double percent = freeMem/totlMem;

+   if (percent &lt; 0.5) {

+%>

+

+&lt;jsp:forward page="one.jsp"/>

+

+&lt;% } else { %>

+

+&lt;jsp:forward page="two.html"/>

+

+&lt;% } %>

+

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/forward/fwd.html b/webapps/examples/jsp/forward/fwd.html
new file mode 100644
index 0000000..e4a701e
--- /dev/null
+++ b/webapps/examples/jsp/forward/fwd.html
@@ -0,0 +1,30 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="forward.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="forward.jsp.html">Source Code for Forward Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/forward/one.jsp b/webapps/examples/jsp/forward/one.jsp
new file mode 100644
index 0000000..dff42cc
--- /dev/null
+++ b/webapps/examples/jsp/forward/one.jsp
@@ -0,0 +1,23 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+

+<body bgcolor="white">

+<font color="red">

+

+VM Memory usage < 50%.

+</html>
\ No newline at end of file
diff --git a/webapps/examples/jsp/forward/one.jsp.html b/webapps/examples/jsp/forward/one.jsp.html
new file mode 100644
index 0000000..ac9b6f5
--- /dev/null
+++ b/webapps/examples/jsp/forward/one.jsp.html
@@ -0,0 +1,25 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+

+&lt;body bgcolor="white">

+&lt;font color="red">

+

+VM Memory usage &lt; 50%.

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/forward/two.html b/webapps/examples/jsp/forward/two.html
new file mode 100644
index 0000000..4bc9402
--- /dev/null
+++ b/webapps/examples/jsp/forward/two.html
@@ -0,0 +1,23 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<body bgcolor="white">

+<font color="red">

+

+VM Memory usage > 50%.

+</html>
\ No newline at end of file
diff --git a/webapps/examples/jsp/images/code.gif b/webapps/examples/jsp/images/code.gif
new file mode 100644
index 0000000..93af2cd
--- /dev/null
+++ b/webapps/examples/jsp/images/code.gif
Binary files differ
diff --git a/webapps/examples/jsp/images/execute.gif b/webapps/examples/jsp/images/execute.gif
new file mode 100644
index 0000000..f64d70f
--- /dev/null
+++ b/webapps/examples/jsp/images/execute.gif
Binary files differ
diff --git a/webapps/examples/jsp/images/read.gif b/webapps/examples/jsp/images/read.gif
new file mode 100644
index 0000000..66cb4e9
--- /dev/null
+++ b/webapps/examples/jsp/images/read.gif
Binary files differ
diff --git a/webapps/examples/jsp/images/return.gif b/webapps/examples/jsp/images/return.gif
new file mode 100644
index 0000000..af4f68f
--- /dev/null
+++ b/webapps/examples/jsp/images/return.gif
Binary files differ
diff --git a/webapps/examples/jsp/include/foo.html b/webapps/examples/jsp/include/foo.html
new file mode 100644
index 0000000..11acc0e
--- /dev/null
+++ b/webapps/examples/jsp/include/foo.html
@@ -0,0 +1,17 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+To get the current time in ms

diff --git a/webapps/examples/jsp/include/foo.jsp b/webapps/examples/jsp/include/foo.jsp
new file mode 100644
index 0000000..7d3565e
--- /dev/null
+++ b/webapps/examples/jsp/include/foo.jsp
@@ -0,0 +1,21 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+

+<body bgcolor="white">

+<font color="red">

+

+<%= System.currentTimeMillis() %>

diff --git a/webapps/examples/jsp/include/foo.jsp.html b/webapps/examples/jsp/include/foo.jsp.html
new file mode 100644
index 0000000..7e562a6
--- /dev/null
+++ b/webapps/examples/jsp/include/foo.jsp.html
@@ -0,0 +1,23 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+

+&lt;body bgcolor="white">

+&lt;font color="red">

+

+&lt;%= System.currentTimeMillis() %>

+</pre></body></html>

diff --git a/webapps/examples/jsp/include/inc.html b/webapps/examples/jsp/include/inc.html
new file mode 100644
index 0000000..d2971bb
--- /dev/null
+++ b/webapps/examples/jsp/include/inc.html
@@ -0,0 +1,30 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="include.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="include.jsp.html">Source Code for Include Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/include/include.jsp b/webapps/examples/jsp/include/include.jsp
new file mode 100644
index 0000000..e1d83e4
--- /dev/null
+++ b/webapps/examples/jsp/include/include.jsp
@@ -0,0 +1,35 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+

+<body bgcolor="white">

+

+<font color="red">

+

+<%@ page buffer="5kb" autoFlush="false" %>

+

+<p>In place evaluation of another JSP which gives you the current time:

+

+<%@ include file="foo.jsp" %>

+

+<p> <jsp:include page="foo.html" flush="true"/> by including the output of another JSP:

+

+<jsp:include page="foo.jsp" flush="true"/>

+

+:-)

+

+</html>

diff --git a/webapps/examples/jsp/include/include.jsp.html b/webapps/examples/jsp/include/include.jsp.html
new file mode 100644
index 0000000..0ae4129
--- /dev/null
+++ b/webapps/examples/jsp/include/include.jsp.html
@@ -0,0 +1,37 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+

+&lt;body bgcolor="white">

+

+&lt;font color="red">

+

+&lt;%@ page buffer="5kb" autoFlush="false" %>

+

+&lt;p>In place evaluation of another JSP which gives you the current time:

+

+&lt;%@ include file="foo.jsp" %>

+

+&lt;p> &lt;jsp:include page="foo.html" flush="true"/> by including the output of another JSP:

+

+&lt;jsp:include page="foo.jsp" flush="true"/>

+

+:-)

+

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/index.html b/webapps/examples/jsp/index.html
new file mode 100644
index 0000000..712d54a
--- /dev/null
+++ b/webapps/examples/jsp/index.html
@@ -0,0 +1,454 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+   <meta name="GENERATOR" content="Mozilla/4.61 [en] (WinNT; I) [Netscape]">

+   <meta name="Author" content="Anil K. Vijendran">

+   <title>JSP Examples</title>

+</head>

+<body bgcolor="#FFFFFF">

+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>JSP

+Samples</font></font></b>

+<p>This is a collection of samples demonstrating the usage of different

+parts of the Java Server Pages (JSP) specification.  Both JSP 2.0 and

+JSP 1.2 examples are presented below.

+<p>These examples will only work when these pages are being served by a

+servlet engine; of course, we recommend

+<a href="http://tomcat.apache.org/">Tomcat</a>.

+They will not work if you are viewing these pages via a

+"file://..." URL.

+<p>To navigate your way through the examples, the following icons will

+help:

+<br>&nbsp;

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+<tr VALIGN=TOP>

+<td WIDTH="30"><img SRC="images/execute.gif" ></td>

+

+<td>Execute the example</td>

+</tr>

+

+<tr VALIGN=TOP>

+<td WIDTH="30"><img SRC="images/code.gif" height=24 width=24></td>

+

+<td>Look at the source code for the example</td>

+</tr>

+

+<!--<tr VALIGN=TOP>

+<td WIDTH="30"><img SRC="images/read.gif" height=24 width=24></td>

+

+<td>Read more about this feature</td>

+-->

+

+</tr>

+<tr VALIGN=TOP>

+<td WIDTH="30"><img SRC="images/return.gif" height=24 width=24></td>

+

+<td>Return to this screen</td>

+</tr>

+</table>

+

+<p>Tip: For session scoped beans to work, the cookies must be enabled.

+This can be done using browser options.

+<br>&nbsp;

+<br>

+<b><u><font size="+1">JSP 2.0 Examples</font></u></b><br>

+

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+<tr valign=TOP>

+<td><b>Expression Language</b></td>

+</tr>

+

+<tr valign=TOP>

+<td>Basic Arithmetic</td>

+<td valign=TOP width="30%"><a href="jsp2/el/basic-arithmetic.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/el/basic-arithmetic.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/el/basic-arithmetic.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/el/basic-arithmetic.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Basic Comparisons</td>

+<td valign=TOP width="30%"><a href="jsp2/el/basic-comparisons.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/el/basic-comparisons.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/el/basic-comparisons.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/el/basic-comparisons.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Implicit Objects</td>

+<td valign=TOP width="30%"><a href="jsp2/el/implicit-objects.jsp?foo=bar"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/el/implicit-objects.jsp?foo=bar">Execute</a></td>

+

+<td width="30%"><a href="jsp2/el/implicit-objects.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/el/implicit-objects.html">Source</a></td>

+</tr>

+<tr valign=TOP>

+

+<td>Functions</td>

+<td valign=TOP width="30%"><a href="jsp2/el/functions.jsp?foo=JSP+2.0"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/el/functions.jsp?foo=JSP+2.0">Execute</a></td>

+

+<td width="30%"><a href="jsp2/el/functions.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/el/functions.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Composite Expressions</td>

+<td valign=TOP width="30%"><a href="jsp2/el/composite.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/el/composite.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/el/composite.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/el/composite.html">Source</a></td>

+</tr>

+

+

+<tr valign=TOP>

+<td><br><b>SimpleTag Handlers and JSP Fragments</b></td>

+</tr>

+

+<tr valign=TOP>

+<td>Hello World Tag</td>

+<td valign=TOP width="30%"><a href="jsp2/simpletag/hello.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/simpletag/hello.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/simpletag/hello.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/simpletag/hello.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Repeat Tag</td>

+<td valign=TOP width="30%"><a href="jsp2/simpletag/repeat.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/simpletag/repeat.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/simpletag/repeat.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/simpletag/repeat.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Book Example</td>

+<td valign=TOP width="30%"><a href="jsp2/simpletag/book.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/simpletag/book.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/simpletag/book.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/simpletag/book.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td><br><b>Tag Files</b></td>

+</tr>

+

+<tr valign=TOP>

+<td>Hello World Tag File</td>

+<td valign=TOP width="30%"><a href="jsp2/tagfiles/hello.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/tagfiles/hello.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/tagfiles/hello.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/tagfiles/hello.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Panel Tag File</td>

+<td valign=TOP width="30%"><a href="jsp2/tagfiles/panel.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/tagfiles/panel.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/tagfiles/panel.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/tagfiles/panel.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Display Products Example</td>

+<td valign=TOP width="30%"><a href="jsp2/tagfiles/products.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/tagfiles/products.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/tagfiles/products.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/tagfiles/products.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td><br><b>New JSP XML Syntax (.jspx)</b></td>

+</tr>

+

+<tr valign=TOP>

+<td>XHTML Basic Example</td>

+<td valign=TOP width="30%"><a href="jsp2/jspx/basic.jspx"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/jspx/basic.jspx">Execute</a></td>

+

+<td width="30%"><a href="jsp2/jspx/basic.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/jspx/basic.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>SVG (Scalable Vector Graphics)</td>

+<td valign=TOP width="30%"><a href="jsp2/jspx/svgexample.html"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/jspx/svgexample.html">Execute</a></td>

+

+<td width="30%"><a href="jsp2/jspx/textRotate.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/jspx/textRotate.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td><br><b>Other JSP 2.0 Features</b></td>

+</tr>

+

+<tr valign=TOP>

+<td>&lt;jsp:attribute&gt; and &lt;jsp:body&gt;</td>

+<td valign=TOP width="30%"><a href="jsp2/jspattribute/jspattribute.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/jspattribute/jspattribute.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/jspattribute/jspattribute.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/jspattribute/jspattribute.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Shuffle Example</td>

+<td valign=TOP width="30%"><a href="jsp2/jspattribute/shuffle.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/jspattribute/shuffle.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/jspattribute/shuffle.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/jspattribute/shuffle.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>Attributes With Dynamic Names</td>

+<td valign=TOP width="30%"><a href="jsp2/misc/dynamicattrs.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/misc/dynamicattrs.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/misc/dynamicattrs.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/misc/dynamicattrs.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>JSP Configuration</td>

+<td valign=TOP width="30%"><a href="jsp2/misc/config.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="jsp2/misc/config.jsp">Execute</a></td>

+

+<td width="30%"><a href="jsp2/misc/config.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsp2/misc/config.html">Source</a></td>

+</tr>

+

+</table>

+

+<br>

+<b><u><font size="+1">JSP 1.2 Examples</font></u></b><br>

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+<tr VALIGN=TOP>

+<td>Numberguess&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="num/numguess.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="num/numguess.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="num/numguess.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="num/numguess.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Date&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="dates/date.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="dates/date.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="dates/date.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="dates/date.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Snoop</td>

+

+<td WIDTH="30%"><a href="snp/snoop.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="snp/snoop.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="snp/snoop.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="snp/snoop.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>ErrorPage&nbsp;</td>

+

+<td WIDTH="30%"><a href="error/error.html"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="error/error.html">Execute</a></td>

+

+<td WIDTH="30%"><a href="error/er.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="error/er.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Carts&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="sessions/carts.html"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="sessions/carts.html">Execute</a></td>

+

+<td WIDTH="30%"><a href="sessions/crt.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="sessions/crt.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Checkbox&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="checkbox/check.html"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="checkbox/check.html">Execute</a></td>

+

+<td WIDTH="30%"><a href="checkbox/cresult.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="checkbox/cresult.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Color&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="colors/colors.html"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="colors/colors.html">Execute</a></td>

+

+<td WIDTH="30%"><a href="colors/clr.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="colors/clr.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Calendar&nbsp;</td>

+

+<td WIDTH="30%"><a href="cal/login.html"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="cal/login.html">Execute</a></td>

+

+<td WIDTH="30%"><a href="cal/calendar.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="cal/calendar.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Include&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="include/include.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="include/include.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="include/inc.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="include/inc.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Forward&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="forward/forward.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="forward/forward.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="forward/fwd.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="forward/fwd.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Plugin&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="plugin/plugin.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="plugin/plugin.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="plugin/plugin.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="plugin/plugin.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>JSP-Servlet-JSP&nbsp;</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="jsptoserv/jsptoservlet.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="jsptoserv/jsptoservlet.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="jsptoserv/jts.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="jsptoserv/jts.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Custom tag example</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="simpletag/foo.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="simpletag/foo.jsp">Execute</a></td>

+

+<td WIDTH="30%"><a href="simpletag/foo.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="simpletag/foo.html">Source</a></td>

+</tr>

+

+<tr valign=TOP>

+<td>XML syntax example</td>

+<td valign=TOP width="30%"><a href="xml/xml.jsp"><img src="images/execute.gif" hspace=4 border=0  align=top></a><a href="xml/xml.jsp">Execute</a></td>

+

+<td width="30%"><a href="xml/xml.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="xml/xml.html">Source</a></td>

+</tr>

+

+</table>

+

+<br/>

+<b><u><font size="+1">Tag Plugins</font></u></b><br>

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+

+<tr VALIGN=TOP>

+  <td>If&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="tagplugin/if.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0

+align=TOP></a>

+    <a href="tagplugin/if.jsp">Execute</a>

+  </td>

+  <td WIDTH="30%">

+    <a href="tagplugin/if.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 hei

+ght=24 width=24 align=TOP></a>

+    <a href="tagplugin/if.html">Source</a>

+  </td>

+</tr>

+

+<tr VALIGN=TOP>

+  <td>ForEach&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="tagplugin/foreach.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0

+align=TOP></a>

+    <a href="tagplugin/foreach.jsp">Execute</a>

+  </td>

+  <td WIDTH="30%">

+    <a href="tagplugin/foreach.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 hei

+ght=24 width=24 align=TOP></a>

+    <a href="tagplugin/foreach.html">Source</a>

+  </td>

+</tr>

+

+<tr VALIGN=TOP>

+  <td>Choose&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="tagplugin/choose.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a>

+    <a href="tagplugin/choose.jsp">Execute</a>

+  </td>

+  <td WIDTH="30%">

+    <a href="tagplugin/choose.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a>

+    <a href="tagplugin/choose.html">Source</a>

+  </td>

+</tr>

+

+</table>

+

+<br/>

+<b><u><font size="+1">Other Examples</font></u></b><br>

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+

+<tr VALIGN=TOP>

+  <td>FORM Authentication&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="security/protected/index.jsp"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr>

+  <td colspan="3">Example that demonstrates protecting a resource and

+    using Form-Based authentication. To access the page the user must

+    have role of either "tomcat" or "role1". By default no user

+    is configured to have these roles.</td>

+</tr>

+

+<tr>

+  <td colspan="3">Servlet 3.0 Asynchronous processing examples&nbsp;<br />

+    Examples that demonstrate using Servlet 3.0 asynchronous

+    request processing API.</td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async0&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async0"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async1&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async1"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async2&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async2"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>async3&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/async3"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+<tr VALIGN=TOP>

+  <td>stockticker&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="../async/stockticker"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+

+<tr>

+  <td colspan="3">Comet processing example&nbsp;<br />

+    Example that demonstrates asynchronous request processing

+    using Comet API. See <strong>"Advanced IO"</strong> chapter in the

+    User Guide for details. It works only with connectors that support

+    Comet processing (<strong>APR</strong> or <strong>NIO</strong>

+    <strong>HTTP</strong> connectors).</td>

+</tr>

+<tr VALIGN=TOP>

+  <td>Comet Chat&nbsp;</td>

+  <td VALIGN=TOP WIDTH="30%">

+    <a href="chat/"><img SRC="images/execute.gif" HSPACE=4 BORDER=0 align=TOP> Execute</a>

+  </td>

+  <td WIDTH="30%"></td>

+</tr>

+

+</table>

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/Functions.java.html b/webapps/examples/jsp/jsp2/el/Functions.java.html
new file mode 100644
index 0000000..91abc75
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/Functions.java.html
@@ -0,0 +1,47 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.el;

+

+import java.util.Locale;

+

+/**

+ * Defines the functions for the jsp2 example tag library.

+ *

+ * &lt;p>Each function is defined as a static method.&lt;/p>

+ */

+public class Functions {

+    public static String reverse( String text ) {

+        return new StringBuilder( text ).reverse().toString();

+    }

+

+    public static int numVowels( String text ) {

+        String vowels = "aeiouAEIOU";

+        int result = 0;

+        for( int i = 0; i &lt; text.length(); i++ ) {

+            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

+                result++;

+            }

+        }

+        return result;

+    }

+

+    public static String caps( String text ) {

+        return text.toUpperCase(Locale.ENGLISH);

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/el/ValuesBean.java.html b/webapps/examples/jsp/jsp2/el/ValuesBean.java.html
new file mode 100644
index 0000000..beadf72
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/ValuesBean.java.html
@@ -0,0 +1,54 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesBean {

+    private String string;

+    private double doubleValue;

+    private long longValue;

+

+    public String getStringValue() {

+        return this.string;

+    }

+

+    public void setStringValue(String string) {

+        this.string = string;

+    }

+

+    public double getDoubleValue() {

+        return doubleValue;

+    }

+

+    public void setDoubleValue(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    public long getLongValue() {

+        return longValue;

+    }

+

+    public void setLongValue(long longValue) {

+        this.longValue = longValue;

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/el/ValuesTag.java.html b/webapps/examples/jsp/jsp2/el/ValuesTag.java.html
new file mode 100644
index 0000000..16f62ab
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/ValuesTag.java.html
@@ -0,0 +1,81 @@
+<html><body><pre>

+/*

+ * Licensed to the Apache Software Foundation (ASF) under one or more

+ * contributor license agreements.  See the NOTICE file distributed with

+ * this work for additional information regarding copyright ownership.

+ * 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 examples;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspTagException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.TagSupport;

+

+/**

+ * Accept and display a value.

+ */

+public class ValuesTag extends TagSupport {

+

+    private static final long serialVersionUID = 1L;

+

+    // Using "-1" as the default value,

+    // in the assumption that it won't be used as the value.

+    // Cannot use null here, because null is an important case

+    // that should be present in the tests.

+    private Object objectValue = "-1";

+    private String stringValue = "-1";

+    private long longValue = -1;

+    private double doubleValue = -1;

+

+    public void setObject(Object objectValue) {

+        this.objectValue = objectValue;

+    }

+

+    public void setString(String stringValue) {

+        this.stringValue = stringValue;

+    }

+

+    public void setLong(long longValue) {

+        this.longValue = longValue;

+    }

+

+    public void setDouble(double doubleValue) {

+        this.doubleValue = doubleValue;

+    }

+

+    @Override

+    public int doEndTag() throws JspException {

+        JspWriter out = pageContext.getOut();

+

+        try {

+            if (!"-1".equals(objectValue)) {

+                out.print(objectValue);

+            } else if (!"-1".equals(stringValue)) {

+                out.print(stringValue);

+            } else if (longValue != -1) {

+                out.print(longValue);

+            } else if (doubleValue != -1) {

+                out.print(doubleValue);

+            } else {

+                out.print("-1");

+            }

+        } catch (IOException ex) {

+            throw new JspTagException("IOException: " + ex.toString(), ex);

+        }

+        return super.doEndTag();

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/el/basic-arithmetic.html b/webapps/examples/jsp/jsp2/el/basic-arithmetic.html
new file mode 100644
index 0000000..ca88b7f
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/basic-arithmetic.html
@@ -0,0 +1,30 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="basic-arithmetic.jsp"><img src="../../images/execute.gif" align="right" border="0"></a><a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="basic-arithmetic.jsp.html">Source Code for Basic Arithmetic Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp b/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp
new file mode 100644
index 0000000..a3b3e7a
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp
@@ -0,0 +1,88 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+  <head>

+    <title>JSP 2.0 Expression Language - Basic Arithmetic</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Expression Language - Basic Arithmetic</h1>

+    <hr>

+    This example illustrates basic Expression Language arithmetic.

+    Addition (+), subtraction (-), multiplication (*), division (/ or div),

+    and modulus (% or mod) are all supported.  Error conditions, like

+    division by zero, are handled gracefully.

+    <br>

+    <blockquote>

+      <code>

+        <table border="1">

+          <thead>

+        <td><b>EL Expression</b></td>

+        <td><b>Result</b></td>

+      </thead>

+      <tr>

+        <td>\${1}</td>

+        <td>${1}</td>

+      </tr>

+      <tr>

+        <td>\${1 + 2}</td>

+        <td>${1 + 2}</td>

+      </tr>

+      <tr>

+        <td>\${1.2 + 2.3}</td>

+        <td>${1.2 + 2.3}</td>

+      </tr>

+      <tr>

+        <td>\${1.2E4 + 1.4}</td>

+        <td>${1.2E4 + 1.4}</td>

+      </tr>

+      <tr>

+        <td>\${-4 - 2}</td>

+        <td>${-4 - 2}</td>

+      </tr>

+      <tr>

+        <td>\${21 * 2}</td>

+        <td>${21 * 2}</td>

+      </tr>

+      <tr>

+        <td>\${3/4}</td>

+        <td>${3/4}</td>

+      </tr>

+      <tr>

+        <td>\${3 div 4}</td>

+        <td>${3 div 4}</td>

+      </tr>

+      <tr>

+        <td>\${3/0}</td>

+        <td>${3/0}</td>

+      </tr>

+      <tr>

+        <td>\${10%4}</td>

+        <td>${10%4}</td>

+      </tr>

+      <tr>

+        <td>\${10 mod 4}</td>

+        <td>${10 mod 4}</td>

+      </tr>

+    <tr>

+      <td>\${(1==2) ? 3 : 4}</td>

+      <td>${(1==2) ? 3 : 4}</td>

+    </tr>

+    </table>

+      </code>

+    </blockquote>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html b/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html
new file mode 100644
index 0000000..e703cde
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/basic-arithmetic.jsp.html
@@ -0,0 +1,90 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Expression Language - Basic Arithmetic&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Expression Language - Basic Arithmetic&lt;/h1>

+    &lt;hr>

+    This example illustrates basic Expression Language arithmetic.

+    Addition (+), subtraction (-), multiplication (*), division (/ or div),

+    and modulus (% or mod) are all supported.  Error conditions, like

+    division by zero, are handled gracefully.

+    &lt;br>

+    &lt;blockquote>

+      &lt;code>

+        &lt;table border="1">

+          &lt;thead>

+        &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+      &lt;/thead>

+      &lt;tr>

+        &lt;td>\${1}&lt;/td>

+        &lt;td>${1}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 + 2}&lt;/td>

+        &lt;td>${1 + 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1.2 + 2.3}&lt;/td>

+        &lt;td>${1.2 + 2.3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1.2E4 + 1.4}&lt;/td>

+        &lt;td>${1.2E4 + 1.4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${-4 - 2}&lt;/td>

+        &lt;td>${-4 - 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${21 * 2}&lt;/td>

+        &lt;td>${21 * 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${3/4}&lt;/td>

+        &lt;td>${3/4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${3 div 4}&lt;/td>

+        &lt;td>${3 div 4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${3/0}&lt;/td>

+        &lt;td>${3/0}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${10%4}&lt;/td>

+        &lt;td>${10%4}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${10 mod 4}&lt;/td>

+        &lt;td>${10 mod 4}&lt;/td>

+      &lt;/tr>

+    &lt;tr>

+      &lt;td>\${(1==2) ? 3 : 4}&lt;/td>

+      &lt;td>${(1==2) ? 3 : 4}&lt;/td>

+    &lt;/tr>

+    &lt;/table>

+      &lt;/code>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/el/basic-comparisons.html b/webapps/examples/jsp/jsp2/el/basic-comparisons.html
new file mode 100644
index 0000000..0102232
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/basic-comparisons.html
@@ -0,0 +1,30 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="basic-comparisons.jsp"><img src="../../images/execute.gif" align="right" border="0"></a><a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="basic-comparisons.jsp.html">Source Code for Basic Comparisons Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp b/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp
new file mode 100644
index 0000000..ce63d5a
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp
@@ -0,0 +1,116 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+  <head>

+    <title>JSP 2.0 Expression Language - Basic Comparisons</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Expression Language - Basic Comparisons</h1>

+    <hr>

+    This example illustrates basic Expression Language comparisons.

+    The following comparison operators are supported:

+    <ul>

+      <li>Less-than (&lt; or lt)</li>

+      <li>Greater-than (&gt; or gt)</li>

+      <li>Less-than-or-equal (&lt;= or le)</li>

+      <li>Greater-than-or-equal (&gt;= or ge)</li>

+      <li>Equal (== or eq)</li>

+      <li>Not Equal (!= or ne)</li>

+    </ul>

+    <blockquote>

+      <u><b>Numeric</b></u>

+      <code>

+        <table border="1">

+          <thead>

+        <td><b>EL Expression</b></td>

+        <td><b>Result</b></td>

+      </thead>

+      <tr>

+        <td>\${1 &lt; 2}</td>

+        <td>${1 < 2}</td>

+      </tr>

+      <tr>

+        <td>\${1 lt 2}</td>

+        <td>${1 lt 2}</td>

+      </tr>

+      <tr>

+        <td>\${1 &gt; (4/2)}</td>

+        <td>${1 > (4/2)}</td>

+      </tr>

+      <tr>

+        <td>\${1 gt (4/2)}</td>

+        <td>${1 gt (4/2)}</td>

+      </tr>

+      <tr>

+        <td>\${4.0 &gt;= 3}</td>

+        <td>${4.0 >= 3}</td>

+      </tr>

+      <tr>

+        <td>\${4.0 ge 3}</td>

+        <td>${4.0 ge 3}</td>

+      </tr>

+      <tr>

+        <td>\${4 &lt;= 3}</td>

+        <td>${4 <= 3}</td>

+      </tr>

+      <tr>

+        <td>\${4 le 3}</td>

+        <td>${4 le 3}</td>

+      </tr>

+      <tr>

+        <td>\${100.0 == 100}</td>

+        <td>${100.0 == 100}</td>

+      </tr>

+      <tr>

+        <td>\${100.0 eq 100}</td>

+        <td>${100.0 eq 100}</td>

+      </tr>

+      <tr>

+        <td>\${(10*10) != 100}</td>

+        <td>${(10*10) != 100}</td>

+      </tr>

+      <tr>

+        <td>\${(10*10) ne 100}</td>

+        <td>${(10*10) ne 100}</td>

+      </tr>

+    </table>

+      </code>

+      <br>

+      <u><b>Alphabetic</b></u>

+      <code>

+        <table border="1">

+          <thead>

+            <td><b>EL Expression</b></td>

+            <td><b>Result</b></td>

+          </thead>

+          <tr>

+            <td>\${'a' &lt; 'b'}</td>

+            <td>${'a' < 'b'}</td>

+          </tr>

+          <tr>

+            <td>\${'hip' &gt; 'hit'}</td>

+            <td>${'hip' > 'hit'}</td>

+          </tr>

+          <tr>

+            <td>\${'4' &gt; 3}</td>

+            <td>${'4' > 3}</td>

+          </tr>

+        </table>

+      </code>

+    </blockquote>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html b/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html
new file mode 100644
index 0000000..c5db858
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/basic-comparisons.jsp.html
@@ -0,0 +1,118 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Expression Language - Basic Comparisons&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Expression Language - Basic Comparisons&lt;/h1>

+    &lt;hr>

+    This example illustrates basic Expression Language comparisons.

+    The following comparison operators are supported:

+    &lt;ul>

+      &lt;li>Less-than (&amp;lt; or lt)&lt;/li>

+      &lt;li>Greater-than (&amp;gt; or gt)&lt;/li>

+      &lt;li>Less-than-or-equal (&amp;lt;= or le)&lt;/li>

+      &lt;li>Greater-than-or-equal (&amp;gt;= or ge)&lt;/li>

+      &lt;li>Equal (== or eq)&lt;/li>

+      &lt;li>Not Equal (!= or ne)&lt;/li>

+    &lt;/ul>

+    &lt;blockquote>

+      &lt;u>&lt;b>Numeric&lt;/b>&lt;/u>

+      &lt;code>

+        &lt;table border="1">

+          &lt;thead>

+        &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+      &lt;/thead>

+      &lt;tr>

+        &lt;td>\${1 &amp;lt; 2}&lt;/td>

+        &lt;td>${1 &lt; 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 lt 2}&lt;/td>

+        &lt;td>${1 lt 2}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 &amp;gt; (4/2)}&lt;/td>

+        &lt;td>${1 > (4/2)}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1 gt (4/2)}&lt;/td>

+        &lt;td>${1 gt (4/2)}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4.0 &amp;gt;= 3}&lt;/td>

+        &lt;td>${4.0 >= 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4.0 ge 3}&lt;/td>

+        &lt;td>${4.0 ge 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4 &amp;lt;= 3}&lt;/td>

+        &lt;td>${4 &lt;= 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${4 le 3}&lt;/td>

+        &lt;td>${4 le 3}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${100.0 == 100}&lt;/td>

+        &lt;td>${100.0 == 100}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${100.0 eq 100}&lt;/td>

+        &lt;td>${100.0 eq 100}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${(10*10) != 100}&lt;/td>

+        &lt;td>${(10*10) != 100}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${(10*10) ne 100}&lt;/td>

+        &lt;td>${(10*10) ne 100}&lt;/td>

+      &lt;/tr>

+    &lt;/table>

+      &lt;/code>

+      &lt;br>

+      &lt;u>&lt;b>Alphabetic&lt;/b>&lt;/u>

+      &lt;code>

+        &lt;table border="1">

+          &lt;thead>

+            &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+            &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+          &lt;/thead>

+          &lt;tr>

+            &lt;td>\${'a' &amp;lt; 'b'}&lt;/td>

+            &lt;td>${'a' &lt; 'b'}&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${'hip' &amp;gt; 'hit'}&lt;/td>

+            &lt;td>${'hip' > 'hit'}&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${'4' &amp;gt; 3}&lt;/td>

+            &lt;td>${'4' > 3}&lt;/td>

+          &lt;/tr>

+        &lt;/table>

+      &lt;/code>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/el/composite.html b/webapps/examples/jsp/jsp2/el/composite.html
new file mode 100644
index 0000000..b8bfa0e
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/composite.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="composite.jsp"><img src="../../images/execute.gif" align="right" border="0"></a><a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="composite.jsp.html">Source Code for composite.jsp</a></h3>

+<h3><a href="ValuesTag.java.html">Source Code for ValuesTag.java</a></h3>

+<h3><a href="ValuesBean.java.html">Source Code for ValuesBean.java</a></h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/composite.jsp b/webapps/examples/jsp/jsp2/el/composite.jsp
new file mode 100644
index 0000000..a882495
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/composite.jsp
@@ -0,0 +1,110 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/example-taglib" %>

+

+<html>

+  <head>

+    <title>JSP 2.0 Expression Language - Composite Expressions</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Expression Language - Composite Expressions</h1>

+    <hr>

+    This example illustrates EL composite expressions. Composite expressions

+    are formed by grouping together multiple EL expressions. Each of them is

+    evaluated from left to right, coerced to String, all those strings are

+    concatenated, and the result is coerced to the expected type.

+

+    <jsp:useBean id="values" class="jsp2.examples.ValuesBean" />

+

+    <blockquote>

+      <code>

+        <table border="1">

+          <thead>

+        <td><b>EL Expression</b></td>

+        <td><b>Type</b></td>

+        <td><b>Result</b></td>

+      </thead>

+      <tr>

+        <td>\${'hello'} wo\${'rld'}</td>

+        <td>String</td>

+        <td><jsp:setProperty name="values" property="stringValue" value="${'hello'} wo${'rld'}"/>${values.stringValue}</td>

+      </tr>

+      <tr>

+        <td>\${'hello'} wo\${'rld'}</td>

+        <td>String</td>

+        <td><my:values string="${'hello'} wo${'rld'}"/></td>

+      </tr>

+      <tr>

+        <td>\${1+2}.\${220}</td>

+        <td>Double</td>

+        <td><jsp:setProperty name="values" property="doubleValue" value="${1+2}.${220}"/>${values.doubleValue}</td>

+      </tr>

+      <tr>

+        <td>\${1+2}.\${220}</td>

+        <td>Double</td>

+        <td><my:values double="${1+2}.${220}"/></td>

+      </tr>

+      <tr>

+        <td>000\${1}\${7}</td>

+        <td>Long</td>

+        <td><jsp:setProperty name="values" property="longValue" value="000${1}${7}"/>${values.longValue}</td>

+      </tr>

+      <tr>

+        <td>000\${1}\${7}</td>

+        <td>Long</td>

+        <td><my:values long="000${1}${7}"/></td>

+      </tr>

+      <!--

+         Undefined values are to be coerced to String, to be "",

+         https://issues.apache.org/bugzilla/show_bug.cgi?id=47413

+       -->

+      <tr>

+        <td>\${undefinedFoo}hello world\${undefinedBar}</td>

+        <td>String</td>

+        <td><jsp:setProperty name="values" property="stringValue" value="${undefinedFoo}hello world${undefinedBar}"/>${values.stringValue}</td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}hello world\${undefinedBar}</td>

+        <td>String</td>

+        <td><my:values string="${undefinedFoo}hello world${undefinedBar}"/></td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Double</td>

+        <td><jsp:setProperty name="values" property="doubleValue" value="${undefinedFoo}${undefinedBar}"/>${values.doubleValue}</td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Double</td>

+        <td><my:values double="${undefinedFoo}${undefinedBar}"/></td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Long</td>

+        <td><jsp:setProperty name="values" property="longValue" value="${undefinedFoo}${undefinedBar}"/>${values.longValue}</td>

+      </tr>

+      <tr>

+        <td>\${undefinedFoo}\${undefinedBar}</td>

+        <td>Long</td>

+        <td><my:values long="${undefinedFoo}${undefinedBar}"/></td>

+      </tr>

+    </table>

+      </code>

+    </blockquote>

+  </body>

+</html>

+

diff --git a/webapps/examples/jsp/jsp2/el/composite.jsp.html b/webapps/examples/jsp/jsp2/el/composite.jsp.html
new file mode 100644
index 0000000..46cae1c
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/composite.jsp.html
@@ -0,0 +1,112 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/example-taglib" %>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Expression Language - Composite Expressions&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Expression Language - Composite Expressions&lt;/h1>

+    &lt;hr>

+    This example illustrates EL composite expressions. Composite expressions

+    are formed by grouping together multiple EL expressions. Each of them is

+    evaluated from left to right, coerced to String, all those strings are

+    concatenated, and the result is coerced to the expected type.

+

+    &lt;jsp:useBean id="values" class="jsp2.examples.ValuesBean" />

+

+    &lt;blockquote>

+      &lt;code>

+        &lt;table border="1">

+          &lt;thead>

+        &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Type&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+      &lt;/thead>

+      &lt;tr>

+        &lt;td>\${'hello'} wo\${'rld'}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="stringValue" value="${'hello'} wo${'rld'}"/>${values.stringValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${'hello'} wo\${'rld'}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;my:values string="${'hello'} wo${'rld'}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1+2}.\${220}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="doubleValue" value="${1+2}.${220}"/>${values.doubleValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${1+2}.\${220}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;my:values double="${1+2}.${220}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>000\${1}\${7}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="longValue" value="000${1}${7}"/>${values.longValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>000\${1}\${7}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;my:values long="000${1}${7}"/>&lt;/td>

+      &lt;/tr>

+      &lt;!--

+         Undefined values are to be coerced to String, to be "",

+         https://issues.apache.org/bugzilla/show_bug.cgi?id=47413

+       -->

+      &lt;tr>

+        &lt;td>\${undefinedFoo}hello world\${undefinedBar}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="stringValue" value="${undefinedFoo}hello world${undefinedBar}"/>${values.stringValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}hello world\${undefinedBar}&lt;/td>

+        &lt;td>String&lt;/td>

+        &lt;td>&lt;my:values string="${undefinedFoo}hello world${undefinedBar}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="doubleValue" value="${undefinedFoo}${undefinedBar}"/>${values.doubleValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Double&lt;/td>

+        &lt;td>&lt;my:values double="${undefinedFoo}${undefinedBar}"/>&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;jsp:setProperty name="values" property="longValue" value="${undefinedFoo}${undefinedBar}"/>${values.longValue}&lt;/td>

+      &lt;/tr>

+      &lt;tr>

+        &lt;td>\${undefinedFoo}\${undefinedBar}&lt;/td>

+        &lt;td>Long&lt;/td>

+        &lt;td>&lt;my:values long="${undefinedFoo}${undefinedBar}"/>&lt;/td>

+      &lt;/tr>

+    &lt;/table>

+      &lt;/code>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/el/functions.html b/webapps/examples/jsp/jsp2/el/functions.html
new file mode 100644
index 0000000..0fdb080
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/functions.html
@@ -0,0 +1,32 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="functions.jsp?foo=JSP+2.0"><img src="../../images/execute.gif" align="right" border="0"></a><a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="functions.jsp.html">Source Code for functions.jsp<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="Functions.java.html">Source Code for Functions.java<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/functions.jsp b/webapps/examples/jsp/jsp2/el/functions.jsp
new file mode 100644
index 0000000..90895aa
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/functions.jsp
@@ -0,0 +1,66 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+<html>

+  <head>

+    <title>JSP 2.0 Expression Language - Functions</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Expression Language - Functions</h1>

+    <hr>

+    An upgrade from the JSTL expression language, the JSP 2.0 EL also

+    allows for simple function invocation.  Functions are defined

+    by tag libraries and are implemented by a Java programmer as

+    static methods.

+

+    <blockquote>

+      <u><b>Change Parameter</b></u>

+      <form action="functions.jsp" method="GET">

+          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          <input type="submit">

+      </form>

+      <br>

+      <code>

+        <table border="1">

+          <thead>

+            <td><b>EL Expression</b></td>

+            <td><b>Result</b></td>

+          </thead>

+          <tr>

+            <td>\${param["foo"]}</td>

+            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${my:reverse(param["foo"])}</td>

+            <td>${my:reverse(fn:escapeXml(param["foo"]))}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${my:reverse(my:reverse(param["foo"]))}</td>

+            <td>${my:reverse(my:reverse(fn:escapeXml(param["foo"])))}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${my:countVowels(param["foo"])}</td>

+            <td>${my:countVowels(fn:escapeXml(param["foo"]))}&nbsp;</td>

+          </tr>

+        </table>

+      </code>

+    </blockquote>

+  </body>

+</html>

+

diff --git a/webapps/examples/jsp/jsp2/el/functions.jsp.html b/webapps/examples/jsp/jsp2/el/functions.jsp.html
new file mode 100644
index 0000000..ecb761b
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/functions.jsp.html
@@ -0,0 +1,68 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Expression Language - Functions&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Expression Language - Functions&lt;/h1>

+    &lt;hr>

+    An upgrade from the JSTL expression language, the JSP 2.0 EL also

+    allows for simple function invocation.  Functions are defined

+    by tag libraries and are implemented by a Java programmer as

+    static methods.

+

+    &lt;blockquote>

+      &lt;u>&lt;b>Change Parameter&lt;/b>&lt;/u>

+      &lt;form action="functions.jsp" method="GET">

+          foo = &lt;input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          &lt;input type="submit">

+      &lt;/form>

+      &lt;br>

+      &lt;code>

+        &lt;table border="1">

+          &lt;thead>

+            &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+            &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+          &lt;/thead>

+          &lt;tr>

+            &lt;td>\${param["foo"]}&lt;/td>

+            &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${my:reverse(param["foo"])}&lt;/td>

+            &lt;td>${my:reverse(fn:escapeXml(param["foo"]))}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${my:reverse(my:reverse(param["foo"]))}&lt;/td>

+            &lt;td>${my:reverse(my:reverse(fn:escapeXml(param["foo"])))}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${my:countVowels(param["foo"])}&lt;/td>

+            &lt;td>${my:countVowels(fn:escapeXml(param["foo"]))}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+        &lt;/table>

+      &lt;/code>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/el/implicit-objects.html b/webapps/examples/jsp/jsp2/el/implicit-objects.html
new file mode 100644
index 0000000..2046603
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/implicit-objects.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="implicit-objects.jsp?foo=bar"><img src="../../images/execute.gif" align="right" border="0"></a><a href="../../index.html">

+<img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="implicit-objects.jsp.html">Source Code for Implicit Objects Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/implicit-objects.jsp b/webapps/examples/jsp/jsp2/el/implicit-objects.jsp
new file mode 100644
index 0000000..999ad13
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/implicit-objects.jsp
@@ -0,0 +1,89 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

+

+<html>

+  <head>

+    <title>JSP 2.0 Expression Language - Implicit Objects</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Expression Language - Implicit Objects</h1>

+    <hr>

+    This example illustrates some of the implicit objects available

+    in the Expression Language.  The following implicit objects are

+    available (not all illustrated here):

+    <ul>

+      <li>pageContext - the PageContext object</li>

+      <li>pageScope - a Map that maps page-scoped attribute names to

+          their values</li>

+      <li>requestScope - a Map that maps request-scoped attribute names

+          to their values</li>

+      <li>sessionScope - a Map that maps session-scoped attribute names

+          to their values</li>

+      <li>applicationScope - a Map that maps application-scoped attribute

+          names to their values</li>

+      <li>param - a Map that maps parameter names to a single String

+          parameter value</li>

+      <li>paramValues - a Map that maps parameter names to a String[] of

+          all values for that parameter</li>

+      <li>header - a Map that maps header names to a single String

+          header value</li>

+      <li>headerValues - a Map that maps header names to a String[] of

+          all values for that header</li>

+      <li>initParam - a Map that maps context initialization parameter

+          names to their String parameter value</li>

+      <li>cookie - a Map that maps cookie names to a single Cookie object.</li>

+    </ul>

+

+    <blockquote>

+      <u><b>Change Parameter</b></u>

+      <form action="implicit-objects.jsp" method="GET">

+          foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          <input type="submit">

+      </form>

+      <br>

+      <code>

+        <table border="1">

+          <thead>

+            <td><b>EL Expression</b></td>

+            <td><b>Result</b></td>

+          </thead>

+          <tr>

+            <td>\${param.foo}</td>

+            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${param["foo"]}</td>

+            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${header["host"]}</td>

+            <td>${fn:escapeXml(header["host"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${header["accept"]}</td>

+            <td>${fn:escapeXml(header["accept"])}&nbsp;</td>

+          </tr>

+          <tr>

+            <td>\${header["user-agent"]}</td>

+            <td>${fn:escapeXml(header["user-agent"])}&nbsp;</td>

+          </tr>

+        </table>

+      </code>

+    </blockquote>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html b/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html
new file mode 100644
index 0000000..a036a07
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/el/implicit-objects.jsp.html
@@ -0,0 +1,91 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Expression Language - Implicit Objects&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Expression Language - Implicit Objects&lt;/h1>

+    &lt;hr>

+    This example illustrates some of the implicit objects available

+    in the Expression Language.  The following implicit objects are

+    available (not all illustrated here):

+    &lt;ul>

+      &lt;li>pageContext - the PageContext object&lt;/li>

+      &lt;li>pageScope - a Map that maps page-scoped attribute names to

+          their values&lt;/li>

+      &lt;li>requestScope - a Map that maps request-scoped attribute names

+          to their values&lt;/li>

+      &lt;li>sessionScope - a Map that maps session-scoped attribute names

+          to their values&lt;/li>

+      &lt;li>applicationScope - a Map that maps application-scoped attribute

+          names to their values&lt;/li>

+      &lt;li>param - a Map that maps parameter names to a single String

+          parameter value&lt;/li>

+      &lt;li>paramValues - a Map that maps parameter names to a String[] of

+          all values for that parameter&lt;/li>

+      &lt;li>header - a Map that maps header names to a single String

+          header value&lt;/li>

+      &lt;li>headerValues - a Map that maps header names to a String[] of

+          all values for that header&lt;/li>

+      &lt;li>initParam - a Map that maps context initialization parameter

+          names to their String parameter value&lt;/li>

+      &lt;li>cookie - a Map that maps cookie names to a single Cookie object.&lt;/li>

+    &lt;/ul>

+

+    &lt;blockquote>

+      &lt;u>&lt;b>Change Parameter&lt;/b>&lt;/u>

+      &lt;form action="implicit-objects.jsp" method="GET">

+          foo = &lt;input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">

+          &lt;input type="submit">

+      &lt;/form>

+      &lt;br>

+      &lt;code>

+        &lt;table border="1">

+          &lt;thead>

+            &lt;td>&lt;b>EL Expression&lt;/b>&lt;/td>

+            &lt;td>&lt;b>Result&lt;/b>&lt;/td>

+          &lt;/thead>

+          &lt;tr>

+            &lt;td>\${param.foo}&lt;/td>

+            &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${param["foo"]}&lt;/td>

+            &lt;td>${fn:escapeXml(param["foo"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${header["host"]}&lt;/td>

+            &lt;td>${fn:escapeXml(header["host"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${header["accept"]}&lt;/td>

+            &lt;td>${fn:escapeXml(header["accept"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+          &lt;tr>

+            &lt;td>\${header["user-agent"]}&lt;/td>

+            &lt;td>${fn:escapeXml(header["user-agent"])}&amp;nbsp;&lt;/td>

+          &lt;/tr>

+        &lt;/table>

+      &lt;/code>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html b/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html
new file mode 100644
index 0000000..2711b30
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/FooBean.java.html
@@ -0,0 +1,38 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples;

+

+public class FooBean {

+    private String bar;

+

+    public FooBean() {

+        bar = "Initial value";

+    }

+

+    public String getBar() {

+        return this.bar;

+    }

+

+    public void setBar(String bar) {

+        this.bar = bar;

+    }

+

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html b/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html
new file mode 100644
index 0000000..6fb9b0d
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/HelloWorldSimpleTag.java.html
@@ -0,0 +1,36 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that prints "Hello, world!"

+ */

+public class HelloWorldSimpleTag extends SimpleTagSupport {

+    @Override

+    public void doTag() throws JspException, IOException {

+        getJspContext().getOut().write( "Hello, world!" );

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html b/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html
new file mode 100644
index 0000000..806cf7b
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/ShuffleSimpleTag.java.html
@@ -0,0 +1,89 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+import java.util.Random;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.JspFragment;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that accepts takes three attributes of type

+ * JspFragment and invokes then in a random order.

+ */

+public class ShuffleSimpleTag extends SimpleTagSupport {

+    // No need for this to use SecureRandom

+    private static Random random = new Random();

+

+    private JspFragment fragment1;

+    private JspFragment fragment2;

+    private JspFragment fragment3;

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        switch(random.nextInt(6)) {

+            case 0:

+                fragment1.invoke( null );

+                fragment2.invoke( null );

+                fragment3.invoke( null );

+                break;

+            case 1:

+                fragment1.invoke( null );

+                fragment3.invoke( null );

+                fragment2.invoke( null );

+                break;

+            case 2:

+                fragment2.invoke( null );

+                fragment1.invoke( null );

+                fragment3.invoke( null );

+                break;

+            case 3:

+                fragment2.invoke( null );

+                fragment3.invoke( null );

+                fragment1.invoke( null );

+                break;

+            case 4:

+                fragment3.invoke( null );

+                fragment1.invoke( null );

+                fragment2.invoke( null );

+                break;

+            case 5:

+                fragment3.invoke( null );

+                fragment2.invoke( null );

+                fragment1.invoke( null );

+                break;

+        }

+    }

+

+    public void setFragment1( JspFragment fragment1 ) {

+        this.fragment1 = fragment1;

+    }

+

+    public void setFragment2( JspFragment fragment2 ) {

+        this.fragment2 = fragment2;

+    }

+

+    public void setFragment3( JspFragment fragment3 ) {

+        this.fragment3 = fragment3;

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html b/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html
new file mode 100644
index 0000000..2cd454b
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/TileSimpleTag.java.html
@@ -0,0 +1,50 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * Displays a tile as a single cell in a table.

+ */

+public class TileSimpleTag extends SimpleTagSupport {

+    private String color;

+    private String label;

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        getJspContext().getOut().write(

+                "&lt;td width=\"32\" height=\"32\" bgcolor=\"" + this.color +

+                "\">&lt;font color=\"#ffffff\">&lt;center>" + this.label +

+                "&lt;/center>&lt;/font>&lt;/td>" );

+    }

+

+    public void setColor( String color ) {

+        this.color = color;

+    }

+

+    public void setLabel( String label ) {

+        this.label = label;

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html b/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html
new file mode 100644
index 0000000..b949da9
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/jspattribute.html
@@ -0,0 +1,37 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="jspattribute.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="jspattribute.jsp.html">Source Code for jspattribute.jsp<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="HelloWorldSimpleTag.java.html">Source Code for HelloWorldSimpleTag.java<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="FooBean.java.html">Source Code for FooBean.java<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp b/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp
new file mode 100644
index 0000000..02abbd1
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp
@@ -0,0 +1,46 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+<html>

+  <head>

+    <title>JSP 2.0 Examples - jsp:attribute and jsp:body</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - jsp:attribute and jsp:body</h1>

+    <hr>

+    <p>The new &lt;jsp:attribute&gt; and &lt;jsp:body&gt;

+    standard actions can be used to specify the value of any standard

+    action or custom action attribute.</p>

+    <p>This example uses the &lt;jsp:attribute&gt;

+    standard action to use the output of a custom action invocation

+    (one that simply outputs "Hello, World!") to set the value of a

+    bean property.  This would normally require an intermediary

+    step, such as using JSTL's &lt;c:set&gt; action.</p>

+    <br>

+    <jsp:useBean id="foo" class="jsp2.examples.FooBean">

+      Bean created!  Setting foo.bar...<br>

+      <jsp:setProperty name="foo" property="bar">

+        <jsp:attribute name="value">

+          <my:helloWorld/>

+        </jsp:attribute>

+      </jsp:setProperty>

+    </jsp:useBean>

+    <br>

+    Result: ${foo.bar}

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html b/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html
new file mode 100644
index 0000000..088ed20
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/jspattribute.jsp.html
@@ -0,0 +1,48 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - jsp:attribute and jsp:body&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - jsp:attribute and jsp:body&lt;/h1>

+    &lt;hr>

+    &lt;p>The new &amp;lt;jsp:attribute&amp;gt; and &amp;lt;jsp:body&amp;gt;

+    standard actions can be used to specify the value of any standard

+    action or custom action attribute.&lt;/p>

+    &lt;p>This example uses the &amp;lt;jsp:attribute&amp;gt;

+    standard action to use the output of a custom action invocation

+    (one that simply outputs "Hello, World!") to set the value of a

+    bean property.  This would normally require an intermediary

+    step, such as using JSTL's &amp;lt;c:set&amp;gt; action.&lt;/p>

+    &lt;br>

+    &lt;jsp:useBean id="foo" class="jsp2.examples.FooBean">

+      Bean created!  Setting foo.bar...&lt;br>

+      &lt;jsp:setProperty name="foo" property="bar">

+        &lt;jsp:attribute name="value">

+          &lt;my:helloWorld/>

+        &lt;/jsp:attribute>

+      &lt;/jsp:setProperty>

+    &lt;/jsp:useBean>

+    &lt;br>

+    Result: ${foo.bar}

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/shuffle.html b/webapps/examples/jsp/jsp2/jspattribute/shuffle.html
new file mode 100644
index 0000000..b7a4cb6
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/shuffle.html
@@ -0,0 +1,37 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="shuffle.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="shuffle.jsp.html">Source Code for shuffle.jsp<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="ShuffleSimpleTag.java.html">Source Code for ShuffleSimpleTag.java<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="TileSimpleTag.java.html">Source Code for TileSimpleTag.java<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp b/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp
new file mode 100644
index 0000000..424af35
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp
@@ -0,0 +1,90 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Shuffle Example</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Shuffle Example</h1>

+    <hr>

+    <p>Try reloading the page a few times.  Both the rows and the columns

+    are shuffled and appear different each time.</p>

+    <p>Here's how the code works.  The SimpleTag handler called

+    &lt;my:shuffle&gt; accepts three attributes.  Each attribute is a

+    JSP Fragment, meaning it is a fragment of JSP code that can be

+    dynamically executed by the shuffle tag handler on demand.  The

+    shuffle tag handler executes the three fragments in a random order.

+    To shuffle both the rows and the columns, the shuffle tag is used

+    with itself as a parameter.</p>

+    <hr>

+    <blockquote>

+     <font color="#ffffff">

+      <table>

+        <my:shuffle>

+          <jsp:attribute name="fragment1">

+            <tr>

+              <my:shuffle>

+                <jsp:attribute name="fragment1">

+                  <my:tile color="#ff0000" label="A"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment2">

+                  <my:tile color="#00ff00" label="B"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment3">

+                  <my:tile color="#0000ff" label="C"/>

+                </jsp:attribute>

+              </my:shuffle>

+            </tr>

+          </jsp:attribute>

+          <jsp:attribute name="fragment2">

+            <tr>

+              <my:shuffle>

+                <jsp:attribute name="fragment1">

+                  <my:tile color="#ff0000" label="1"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment2">

+                  <my:tile color="#00ff00" label="2"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment3">

+                  <my:tile color="#0000ff" label="3"/>

+                </jsp:attribute>

+              </my:shuffle>

+            </tr>

+          </jsp:attribute>

+          <jsp:attribute name="fragment3">

+            <tr>

+              <my:shuffle>

+                <jsp:attribute name="fragment1">

+                  <my:tile color="#ff0000" label="!"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment2">

+                  <my:tile color="#00ff00" label="@"/>

+                </jsp:attribute>

+                <jsp:attribute name="fragment3">

+                  <my:tile color="#0000ff" label="#"/>

+                </jsp:attribute>

+              </my:shuffle>

+            </tr>

+          </jsp:attribute>

+        </my:shuffle>

+      </table>

+     </font>

+    </blockquote>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html b/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html
new file mode 100644
index 0000000..231eba6
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspattribute/shuffle.jsp.html
@@ -0,0 +1,92 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Shuffle Example&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Shuffle Example&lt;/h1>

+    &lt;hr>

+    &lt;p>Try reloading the page a few times.  Both the rows and the columns

+    are shuffled and appear different each time.&lt;/p>

+    &lt;p>Here's how the code works.  The SimpleTag handler called

+    &amp;lt;my:shuffle&amp;gt; accepts three attributes.  Each attribute is a

+    JSP Fragment, meaning it is a fragment of JSP code that can be

+    dynamically executed by the shuffle tag handler on demand.  The

+    shuffle tag handler executes the three fragments in a random order.

+    To shuffle both the rows and the columns, the shuffle tag is used

+    with itself as a parameter.&lt;/p>

+    &lt;hr>

+    &lt;blockquote>

+     &lt;font color="#ffffff">

+      &lt;table>

+        &lt;my:shuffle>

+          &lt;jsp:attribute name="fragment1">

+            &lt;tr>

+              &lt;my:shuffle>

+                &lt;jsp:attribute name="fragment1">

+                  &lt;my:tile color="#ff0000" label="A"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment2">

+                  &lt;my:tile color="#00ff00" label="B"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment3">

+                  &lt;my:tile color="#0000ff" label="C"/>

+                &lt;/jsp:attribute>

+              &lt;/my:shuffle>

+            &lt;/tr>

+          &lt;/jsp:attribute>

+          &lt;jsp:attribute name="fragment2">

+            &lt;tr>

+              &lt;my:shuffle>

+                &lt;jsp:attribute name="fragment1">

+                  &lt;my:tile color="#ff0000" label="1"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment2">

+                  &lt;my:tile color="#00ff00" label="2"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment3">

+                  &lt;my:tile color="#0000ff" label="3"/>

+                &lt;/jsp:attribute>

+              &lt;/my:shuffle>

+            &lt;/tr>

+          &lt;/jsp:attribute>

+          &lt;jsp:attribute name="fragment3">

+            &lt;tr>

+              &lt;my:shuffle>

+                &lt;jsp:attribute name="fragment1">

+                  &lt;my:tile color="#ff0000" label="!"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment2">

+                  &lt;my:tile color="#00ff00" label="@"/>

+                &lt;/jsp:attribute>

+                &lt;jsp:attribute name="fragment3">

+                  &lt;my:tile color="#0000ff" label="#"/>

+                &lt;/jsp:attribute>

+              &lt;/my:shuffle>

+            &lt;/tr>

+          &lt;/jsp:attribute>

+        &lt;/my:shuffle>

+      &lt;/table>

+     &lt;/font>

+    &lt;/blockquote>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspx/basic.html b/webapps/examples/jsp/jsp2/jspx/basic.html
new file mode 100644
index 0000000..2e58dff
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/basic.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="basic.jspx"><img src="../../images/execute.gif" align="right" border="0"></a><a

+href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="basic.jspx.html">Source Code for XHTML Basic Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/jspx/basic.jspx b/webapps/examples/jsp/jsp2/jspx/basic.jspx
new file mode 100644
index 0000000..ba53d8d
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/basic.jspx
@@ -0,0 +1,46 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<tags:xhtmlbasic xmlns:tags="urn:jsptagdir:/WEB-INF/tags"

+                 xmlns:jsp="http://java.sun.com/JSP/Page"

+                 xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"

+                 xmlns="http://www.w3.org/1999/xhtml">

+  <jsp:directive.page contentType="text/html" />

+  <head>

+    <title>JSPX - XHTML Basic Example</title>

+  </head>

+  <body>

+    <h1>JSPX - XHTML Basic Example</h1>

+    <hr/>

+    This example illustrates how to use JSPX to produce an XHTML basic

+    document suitable for use with mobile phones, televisions,

+    PDAs, vending machines, pagers, car navigation systems,

+    mobile game machines, digital book readers, smart watches, etc.

+    <p/>

+    JSPX lets you create dynamic documents in a pure XML syntax compatible

+    with existing XML tools.  The XML syntax in JSP 1.2 was awkward and

+    required &amp;lt;jsp:root&amp;gt; to be the root element of the document.

+    This is no longer the case in JSP 2.0.

+    <p/>

+    This particular example uses a tag file to produce the DOCTYPE and

+    namespace declarations to make the output of this page a valid XHTML

+    Basic document.

+    <p/>

+    Just to prove this is live, here's some dynamic content:

+    <jsp:useBean id="now" class="java.util.Date" />

+    <fmt:formatDate value="${now}" pattern="MMMM d, yyyy, H:mm:ss"/>

+  </body>

+</tags:xhtmlbasic>

diff --git a/webapps/examples/jsp/jsp2/jspx/basic.jspx.html b/webapps/examples/jsp/jsp2/jspx/basic.jspx.html
new file mode 100644
index 0000000..2116538
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/basic.jspx.html
@@ -0,0 +1,48 @@
+<html><body><pre>

+&lt;!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;tags:xhtmlbasic xmlns:tags="urn:jsptagdir:/WEB-INF/tags"

+                 xmlns:jsp="http://java.sun.com/JSP/Page"

+                 xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"

+                 xmlns="http://www.w3.org/1999/xhtml">

+  &lt;jsp:directive.page contentType="text/html" />

+  &lt;head>

+    &lt;title>JSPX - XHTML Basic Example&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSPX - XHTML Basic Example&lt;/h1>

+    &lt;hr/>

+    This example illustrates how to use JSPX to produce an XHTML basic

+    document suitable for use with mobile phones, televisions,

+    PDAs, vending machines, pagers, car navigation systems,

+    mobile game machines, digital book readers, smart watches, etc.

+    &lt;p/>

+    JSPX lets you create dynamic documents in a pure XML syntax compatible

+    with existing XML tools.  The XML syntax in JSP 1.2 was awkward and

+    required &amp;amp;lt;jsp:root&amp;amp;gt; to be the root element of the document.

+    This is no longer the case in JSP 2.0.

+    &lt;p/>

+    This particular example uses a tag file to produce the DOCTYPE and

+    namespace declarations to make the output of this page a valid XHTML

+    Basic document.

+    &lt;p/>

+    Just to prove this is live, here's some dynamic content:

+    &lt;jsp:useBean id="now" class="java.util.Date" />

+    &lt;fmt:formatDate value="${now}" pattern="MMMM d, yyyy, H:mm:ss"/>

+  &lt;/body>

+&lt;/tags:xhtmlbasic>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/jspx/svgexample.html b/webapps/examples/jsp/jsp2/jspx/svgexample.html
new file mode 100644
index 0000000..6ef1b44
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/svgexample.html
@@ -0,0 +1,52 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+  <head>

+    <title>JSP 2.0 SVG Example</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 SVG Example</h1>

+    <hr>

+    This example uses JSP 2.0's new, simplified JSPX syntax to render a

+    Scalable Vector Graphics (SVG) document.  When you view the source,

+    notice the lack of a &lt;jsp:root&gt; element!  The text to be rendered

+    can be modified by changing the value of the name parameter.

+    <p>

+    SVG has many potential uses, such as searchable images, or images

+    customized with the name of your site's visitor (e.g. a "Susan's Store"

+    tab image).  JSPX is a natural fit for generating dynamic XML content

+    such as SVG.

+    <p>

+    To execute this example, follow these steps:

+    <ol>

+      <li>Download <a href="http://xmlgraphics.apache.org/batik/index.html">Apache Batik</a>,

+          or any other SVG viewer.</li>

+      <li>Copy the following URL:

+      <a href="http://localhost:8080/examples/jsp/jsp2/jspx/textRotate.jspx?name=JSPX">

+      http://localhost:8080/examples/jsp/jsp2/jspx/textRotate.jspx?name=JSPX</a>

+      </li>

+      <li>Paste the URL into Batik's Location field and press Enter</li>

+      <li>Customize by changing the name=JSPX parameter</li>

+    </ol>

+    <br>

+    The following is a screenshot of the resulting image, for those that

+    don't have an SVG viewer:

+    <blockquote>

+      <img src="textRotate.jpg" border="1">

+    </blockquote>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/jspx/textRotate.html b/webapps/examples/jsp/jsp2/jspx/textRotate.html
new file mode 100644
index 0000000..e54588f
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/textRotate.html
@@ -0,0 +1,32 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="textRotate.jspx"><img src="../../images/execute.gif" align="right" border="0"></a><a

+href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="textRotate.jspx.html">Source Code for SVG (Scalable Vector Graphics)

+Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/jspx/textRotate.jpg b/webapps/examples/jsp/jsp2/jspx/textRotate.jpg
new file mode 100644
index 0000000..9e98736
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/textRotate.jpg
Binary files differ
diff --git a/webapps/examples/jsp/jsp2/jspx/textRotate.jspx b/webapps/examples/jsp/jsp2/jspx/textRotate.jspx
new file mode 100644
index 0000000..2ade5d1
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/textRotate.jspx
@@ -0,0 +1,52 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!--

+  - This example is based off the textRotate.svg example that comes

+  - with Apache Batik.  The original example was written by Bill Haneman.

+  - This version by Mark Roth.

+  -->

+<svg xmlns="http://www.w3.org/2000/svg"

+     width="450" height="500" viewBox="0 0 450 500"

+     xmlns:c="http://java.sun.com/jsp/jstl/core"

+     xmlns:fn="http://java.sun.com/jsp/jstl/functions"

+     xmlns:jsp="http://java.sun.com/JSP/Page">

+  <jsp:directive.page contentType="image/svg+xml" />

+  <title>JSP 2.0 JSPX</title>

+  <!-- select name parameter, or default to JSPX -->

+  <c:set var="name" value='${empty fn:escapeXml(param["name"]) ? "JSPX" : fn:escapeXml(param["name"])}'/>

+  <g id="testContent">

+    <text class="title" x="50%" y="10%" font-size="15" text-anchor="middle" >

+            JSP 2.0 XML Syntax (.jspx) Demo</text>

+    <text class="title" x="50%" y="15%" font-size="15" text-anchor="middle" >

+            Try changing the name parameter!</text>

+    <g opacity="1.0" transform="translate(225, 250)" id="rotatedText">

+      <c:forEach var="i" begin="1" end="24">

+        <jsp:text>

+          <![CDATA[<g opacity="0.95" transform="scale(1.05) rotate(15)">]]>

+        </jsp:text>

+        <text x="0" y="0" transform="scale(1.6, 1.6)" fill="DarkSlateBlue"

+              text-anchor="middle" font-size="40" font-family="Serif"

+              id="words">${name}</text>

+      </c:forEach>

+      <c:forEach var="i" begin="1" end="24">

+        <jsp:text><![CDATA[</g>]]></jsp:text>

+      </c:forEach>

+      <text style="font-size:75;font-family:Serif;fill:white"

+            text-anchor="middle">${name}</text>

+    </g>

+  </g>

+</svg>

diff --git a/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html b/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html
new file mode 100644
index 0000000..0313838
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/jspx/textRotate.jspx.html
@@ -0,0 +1,54 @@
+<html><body><pre>

+&lt;!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;!--

+  - This example is based off the textRotate.svg example that comes

+  - with Apache Batik.  The original example was written by Bill Haneman.

+  - This version by Mark Roth.

+  -->

+&lt;svg xmlns="http://www.w3.org/2000/svg"

+     width="450" height="500" viewBox="0 0 450 500"

+     xmlns:c="http://java.sun.com/jsp/jstl/core"

+     xmlns:fn="http://java.sun.com/jsp/jstl/functions"

+     xmlns:jsp="http://java.sun.com/JSP/Page">

+  &lt;jsp:directive.page contentType="image/svg+xml" />

+  &lt;title>JSP 2.0 JSPX&lt;/title>

+  &lt;!-- select name parameter, or default to JSPX -->

+  &lt;c:set var="name" value='${empty fn:escapeXml(param["name"]) ? "JSPX" : fn:escapeXml(param["name"])}'/>

+  &lt;g id="testContent">

+    &lt;text class="title" x="50%" y="10%" font-size="15" text-anchor="middle" >

+            JSP 2.0 XML Syntax (.jspx) Demo&lt;/text>

+    &lt;text class="title" x="50%" y="15%" font-size="15" text-anchor="middle" >

+            Try changing the name parameter!&lt;/text>

+    &lt;g opacity="1.0" transform="translate(225, 250)" id="rotatedText">

+      &lt;c:forEach var="i" begin="1" end="24">

+        &lt;jsp:text>

+          &lt;![CDATA[&lt;g opacity="0.95" transform="scale(1.05) rotate(15)">]]>

+        &lt;/jsp:text>

+        &lt;text x="0" y="0" transform="scale(1.6, 1.6)" fill="DarkSlateBlue"

+              text-anchor="middle" font-size="40" font-family="Serif"

+              id="words">${name}&lt;/text>

+      &lt;/c:forEach>

+      &lt;c:forEach var="i" begin="1" end="24">

+        &lt;jsp:text>&lt;![CDATA[&lt;/g>]]>&lt;/jsp:text>

+      &lt;/c:forEach>

+      &lt;text style="font-size:75;font-family:Serif;fill:white"

+            text-anchor="middle">${name}&lt;/text>

+    &lt;/g>

+  &lt;/g>

+&lt;/svg>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html b/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html
new file mode 100644
index 0000000..9b25ba0
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/EchoAttributesTag.java.html
@@ -0,0 +1,59 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+import java.util.ArrayList;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.JspWriter;

+import javax.servlet.jsp.tagext.DynamicAttributes;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that echoes all its attributes

+ */

+public class EchoAttributesTag

+    extends SimpleTagSupport

+    implements DynamicAttributes

+{

+    private ArrayList&lt;String> keys = new ArrayList&lt;String>();

+    private ArrayList&lt;Object> values = new ArrayList&lt;Object>();

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        JspWriter out = getJspContext().getOut();

+        for( int i = 0; i &lt; keys.size(); i++ ) {

+            String key = keys.get( i );

+            Object value = values.get( i );

+            out.println( "&lt;li>" + key + " = " + value + "&lt;/li>" );

+        }

+    }

+

+    @Override

+    public void setDynamicAttribute( String uri, String localName,

+        Object value )

+        throws JspException

+    {

+        keys.add( localName );

+        values.add( value );

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/misc/coda.jspf b/webapps/examples/jsp/jsp2/misc/coda.jspf
new file mode 100644
index 0000000..20de7f6
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/coda.jspf
@@ -0,0 +1,21 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<hr>

+<center>

+This banner included with &lt;include-coda&gt;

+</center>

+<hr>

diff --git a/webapps/examples/jsp/jsp2/misc/coda.jspf.html b/webapps/examples/jsp/jsp2/misc/coda.jspf.html
new file mode 100644
index 0000000..ef5a1b3
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/coda.jspf.html
@@ -0,0 +1,23 @@
+<html><body><pre>

+&lt;!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;hr>

+&lt;center>

+This banner included with &amp;lt;include-coda&amp;gt;

+&lt;/center>

+&lt;hr>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/misc/config.html b/webapps/examples/jsp/jsp2/misc/config.html
new file mode 100644
index 0000000..ebd2f4c
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/config.html
@@ -0,0 +1,35 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="config.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="config.jsp.html">Source Code for config.jsp<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="prelude.jspf.html">Source Code for prelude.jspf<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="coda.jspf.html">Source Code for coda.jspf<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/misc/config.jsp b/webapps/examples/jsp/jsp2/misc/config.jsp
new file mode 100644
index 0000000..51608c7
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/config.jsp
@@ -0,0 +1,32 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+    <h1>JSP 2.0 Examples - JSP Configuration</h1>

+    <hr>

+    <p>Using a &lt;jsp-property-group&gt; element in the web.xml

+    deployment descriptor, this JSP page has been configured in the

+    following ways:</p>

+    <ul>

+      <li>Uses &lt;include-prelude&gt; to include the top banner.</li>

+      <li>Uses &lt;include-coda&gt; to include the bottom banner.</li>

+      <li>Uses &lt;scripting-invalid&gt; true to disable

+          &lt;% scripting %&gt; elements</li>

+      <li>Uses &lt;el-ignored&gt; true to disable ${EL} elements</li>

+      <li>Uses &lt;page-encoding&gt; ISO-8859-1 to set the page encoding (though this is the default anyway)</li>

+    </ul>

+    There are various other configuration options that can be used.

+

diff --git a/webapps/examples/jsp/jsp2/misc/config.jsp.html b/webapps/examples/jsp/jsp2/misc/config.jsp.html
new file mode 100644
index 0000000..dbfc450
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/config.jsp.html
@@ -0,0 +1,34 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+    &lt;h1>JSP 2.0 Examples - JSP Configuration&lt;/h1>

+    &lt;hr>

+    &lt;p>Using a &amp;lt;jsp-property-group&amp;gt; element in the web.xml

+    deployment descriptor, this JSP page has been configured in the

+    following ways:&lt;/p>

+    &lt;ul>

+      &lt;li>Uses &amp;lt;include-prelude&amp;gt; to include the top banner.&lt;/li>

+      &lt;li>Uses &amp;lt;include-coda&amp;gt; to include the bottom banner.&lt;/li>

+      &lt;li>Uses &amp;lt;scripting-invalid&amp;gt; true to disable

+          &amp;lt;% scripting %&amp;gt; elements&lt;/li>

+      &lt;li>Uses &amp;lt;el-ignored&amp;gt; true to disable ${EL} elements&lt;/li>

+      &lt;li>Uses &amp;lt;page-encoding&amp;gt; ISO-8859-1 to set the page encoding (though this is the default anyway)&lt;/li>

+    &lt;/ul>

+    There are various other configuration options that can be used.

+

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/misc/dynamicattrs.html b/webapps/examples/jsp/jsp2/misc/dynamicattrs.html
new file mode 100644
index 0000000..a02a987
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/dynamicattrs.html
@@ -0,0 +1,33 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="dynamicattrs.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="dynamicattrs.jsp.html">Source Code for dynamicattrs.jsp<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="EchoAttributesTag.java.html">Source Code for EchoAttributesTag.java<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp b/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp
new file mode 100644
index 0000000..b351741
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp
@@ -0,0 +1,44 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Dynamic Attributes</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Dynamic Attributes</h1>

+    <hr>

+    <p>This JSP page invokes a custom tag that accepts a dynamic set

+    of attributes.  The tag echoes the name and value of all attributes

+    passed to it.</p>

+    <hr>

+    <h2>Invocation 1 (six attributes)</h2>

+    <ul>

+      <my:echoAttributes x="1" y="2" z="3" r="red" g="green" b="blue"/>

+    </ul>

+    <h2>Invocation 2 (zero attributes)</h2>

+    <ul>

+      <my:echoAttributes/>

+    </ul>

+    <h2>Invocation 3 (three attributes)</h2>

+    <ul>

+      <my:echoAttributes dogName="Scruffy"

+                         catName="Fluffy"

+                         blowfishName="Puffy"/>

+    </ul>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html b/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html
new file mode 100644
index 0000000..1179f82
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/dynamicattrs.jsp.html
@@ -0,0 +1,46 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="my" uri="http://tomcat.apache.org/jsp2-example-taglib"%>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Dynamic Attributes&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Dynamic Attributes&lt;/h1>

+    &lt;hr>

+    &lt;p>This JSP page invokes a custom tag that accepts a dynamic set

+    of attributes.  The tag echoes the name and value of all attributes

+    passed to it.&lt;/p>

+    &lt;hr>

+    &lt;h2>Invocation 1 (six attributes)&lt;/h2>

+    &lt;ul>

+      &lt;my:echoAttributes x="1" y="2" z="3" r="red" g="green" b="blue"/>

+    &lt;/ul>

+    &lt;h2>Invocation 2 (zero attributes)&lt;/h2>

+    &lt;ul>

+      &lt;my:echoAttributes/>

+    &lt;/ul>

+    &lt;h2>Invocation 3 (three attributes)&lt;/h2>

+    &lt;ul>

+      &lt;my:echoAttributes dogName="Scruffy"

+                         catName="Fluffy"

+                         blowfishName="Puffy"/>

+    &lt;/ul>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/misc/prelude.jspf b/webapps/examples/jsp/jsp2/misc/prelude.jspf
new file mode 100644
index 0000000..9772e1c
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/prelude.jspf
@@ -0,0 +1,21 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<hr>

+<center>

+This banner included with &lt;include-prelude&gt;

+</center>

+<hr>

diff --git a/webapps/examples/jsp/jsp2/misc/prelude.jspf.html b/webapps/examples/jsp/jsp2/misc/prelude.jspf.html
new file mode 100644
index 0000000..f928f18
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/misc/prelude.jspf.html
@@ -0,0 +1,23 @@
+<html><body><pre>

+&lt;!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;hr>

+&lt;center>

+This banner included with &amp;lt;include-prelude&amp;gt;

+&lt;/center>

+&lt;hr>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html b/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html
new file mode 100644
index 0000000..143d754
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/BookBean.java.html
@@ -0,0 +1,46 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples;

+

+public class BookBean {

+    private String title;

+    private String author;

+    private String isbn;

+

+    public BookBean( String title, String author, String isbn ) {

+        this.title = title;

+        this.author = author;

+        this.isbn = isbn;

+    }

+

+    public String getTitle() {

+        return this.title;

+    }

+

+    public String getAuthor() {

+        return this.author;

+    }

+

+    public String getIsbn() {

+        return this.isbn;

+    }

+

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html b/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html
new file mode 100644
index 0000000..246df1f
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/FindBookSimpleTag.java.html
@@ -0,0 +1,48 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+import jsp2.examples.BookBean;

+

+/**

+ * SimpleTag handler that pretends to search for a book, and stores

+ * the result in a scoped variable.

+ */

+public class FindBookSimpleTag extends SimpleTagSupport {

+    private String var;

+

+    private static final String BOOK_TITLE = "The Lord of the Rings";

+    private static final String BOOK_AUTHOR = "J. R. R. Tolkein";

+    private static final String BOOK_ISBN = "0618002251";

+

+    @Override

+    public void doTag() throws JspException {

+        BookBean book = new BookBean( BOOK_TITLE, BOOK_AUTHOR, BOOK_ISBN );

+        getJspContext().setAttribute( this.var, book );

+    }

+

+    public void setVar( String var ) {

+        this.var = var;

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/Functions.java.html b/webapps/examples/jsp/jsp2/simpletag/Functions.java.html
new file mode 100644
index 0000000..91abc75
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/Functions.java.html
@@ -0,0 +1,47 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.el;

+

+import java.util.Locale;

+

+/**

+ * Defines the functions for the jsp2 example tag library.

+ *

+ * &lt;p>Each function is defined as a static method.&lt;/p>

+ */

+public class Functions {

+    public static String reverse( String text ) {

+        return new StringBuilder( text ).reverse().toString();

+    }

+

+    public static int numVowels( String text ) {

+        String vowels = "aeiouAEIOU";

+        int result = 0;

+        for( int i = 0; i &lt; text.length(); i++ ) {

+            if( vowels.indexOf( text.charAt( i ) ) != -1 ) {

+                result++;

+            }

+        }

+        return result;

+    }

+

+    public static String caps( String text ) {

+        return text.toUpperCase(Locale.ENGLISH);

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html b/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html
new file mode 100644
index 0000000..6fb9b0d
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/HelloWorldSimpleTag.java.html
@@ -0,0 +1,36 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that prints "Hello, world!"

+ */

+public class HelloWorldSimpleTag extends SimpleTagSupport {

+    @Override

+    public void doTag() throws JspException, IOException {

+        getJspContext().getOut().write( "Hello, world!" );

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html b/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html
new file mode 100644
index 0000000..852ac2a
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/RepeatSimpleTag.java.html
@@ -0,0 +1,46 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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 jsp2.examples.simpletag;

+

+import java.io.IOException;

+

+import javax.servlet.jsp.JspException;

+import javax.servlet.jsp.tagext.SimpleTagSupport;

+

+/**

+ * SimpleTag handler that accepts a num attribute and

+ * invokes its body 'num' times.

+ */

+public class RepeatSimpleTag extends SimpleTagSupport {

+    private int num;

+

+    @Override

+    public void doTag() throws JspException, IOException {

+        for (int i=0; i&lt;num; i++) {

+            getJspContext().setAttribute("count", String.valueOf( i + 1 ) );

+            getJspBody().invoke(null);

+        }

+    }

+

+    public void setNum(int num) {

+        this.num = num;

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/book.html b/webapps/examples/jsp/jsp2/simpletag/book.html
new file mode 100644
index 0000000..62cf284
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/book.html
@@ -0,0 +1,37 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="book.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="book.jsp.html">Source Code for the Book Example JSP<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="FindBookSimpleTag.java.html">Source Code for the FindBook SimpleTag Handler<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="BookBean.java.html">Source Code for BookBean<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="Functions.java.html">Source Code for the EL Functions<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/book.jsp b/webapps/examples/jsp/jsp2/simpletag/book.jsp
new file mode 100644
index 0000000..069bd37
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/book.jsp
@@ -0,0 +1,55 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="my" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Book SimpleTag Handler</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Book SimpleTag Handler</h1>

+    <hr>

+    <p>Illustrates a semi-realistic use of SimpleTag and the Expression

+    Language.  First, a &lt;my:findBook&gt; tag is invoked to populate

+    the page context with a BookBean.  Then, the books fields are printed

+    in all caps.</p>

+    <br>

+    <b><u>Result:</u></b><br>

+    <my:findBook var="book"/>

+    <table border="1">

+        <thead>

+        <td><b>Field</b></td>

+        <td><b>Value</b></td>

+        <td><b>Capitalized</b></td>

+    </thead>

+    <tr>

+        <td>Title</td>

+        <td>${book.title}</td>

+        <td>${my:caps(book.title)}</td>

+    </tr>

+    <tr>

+        <td>Author</td>

+        <td>${book.author}</td>

+        <td>${my:caps(book.author)}</td>

+    </tr>

+    <tr>

+        <td>ISBN</td>

+        <td>${book.isbn}</td>

+        <td>${my:caps(book.isbn)}</td>

+    </tr>

+    </table>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/book.jsp.html b/webapps/examples/jsp/jsp2/simpletag/book.jsp.html
new file mode 100644
index 0000000..4d242ab
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/book.jsp.html
@@ -0,0 +1,57 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="my" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Book SimpleTag Handler&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Book SimpleTag Handler&lt;/h1>

+    &lt;hr>

+    &lt;p>Illustrates a semi-realistic use of SimpleTag and the Expression

+    Language.  First, a &amp;lt;my:findBook&amp;gt; tag is invoked to populate

+    the page context with a BookBean.  Then, the books fields are printed

+    in all caps.&lt;/p>

+    &lt;br>

+    &lt;b>&lt;u>Result:&lt;/u>&lt;/b>&lt;br>

+    &lt;my:findBook var="book"/>

+    &lt;table border="1">

+        &lt;thead>

+        &lt;td>&lt;b>Field&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Value&lt;/b>&lt;/td>

+        &lt;td>&lt;b>Capitalized&lt;/b>&lt;/td>

+    &lt;/thead>

+    &lt;tr>

+        &lt;td>Title&lt;/td>

+        &lt;td>${book.title}&lt;/td>

+        &lt;td>${my:caps(book.title)}&lt;/td>

+    &lt;/tr>

+    &lt;tr>

+        &lt;td>Author&lt;/td>

+        &lt;td>${book.author}&lt;/td>

+        &lt;td>${my:caps(book.author)}&lt;/td>

+    &lt;/tr>

+    &lt;tr>

+        &lt;td>ISBN&lt;/td>

+        &lt;td>${book.isbn}&lt;/td>

+        &lt;td>${my:caps(book.isbn)}&lt;/td>

+    &lt;/tr>

+    &lt;/table>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/hello.html b/webapps/examples/jsp/jsp2/simpletag/hello.html
new file mode 100644
index 0000000..1e7dfcb
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/hello.html
@@ -0,0 +1,33 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="hello.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="hello.jsp.html">Source Code for the Hello World Tag Example JSP<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="HelloWorldSimpleTag.java.html">Source Code for the Hello World SimpleTag Handler<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/hello.jsp b/webapps/examples/jsp/jsp2/simpletag/hello.jsp
new file mode 100644
index 0000000..d5ebf98
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/hello.jsp
@@ -0,0 +1,31 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Hello World SimpleTag Handler</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Hello World SimpleTag Handler</h1>

+    <hr>

+    <p>This tag handler simply echos "Hello, World!"  It's an example of

+    a very basic SimpleTag handler with no body.</p>

+    <br>

+    <b><u>Result:</u></b>

+    <mytag:helloWorld/>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html b/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html
new file mode 100644
index 0000000..e43a05f
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/hello.jsp.html
@@ -0,0 +1,33 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Hello World SimpleTag Handler&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Hello World SimpleTag Handler&lt;/h1>

+    &lt;hr>

+    &lt;p>This tag handler simply echos "Hello, World!"  It's an example of

+    a very basic SimpleTag handler with no body.&lt;/p>

+    &lt;br>

+    &lt;b>&lt;u>Result:&lt;/u>&lt;/b>

+    &lt;mytag:helloWorld/>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/repeat.html b/webapps/examples/jsp/jsp2/simpletag/repeat.html
new file mode 100644
index 0000000..18ff5ed
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/repeat.html
@@ -0,0 +1,33 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="repeat.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="repeat.jsp.html">Source Code for the Repeat Tag Example JSP<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="RepeatSimpleTag.java.html">Source Code for the Repeat SimpleTag Handler<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/repeat.jsp b/webapps/examples/jsp/jsp2/simpletag/repeat.jsp
new file mode 100644
index 0000000..f66bdde
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/repeat.jsp
@@ -0,0 +1,39 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Repeat SimpleTag Handler</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Repeat SimpleTag Handler</h1>

+    <hr>

+    <p>This tag handler accepts a "num" parameter and repeats the body of the

+    tag "num" times.  It's a simple example, but the implementation of

+    such a tag in JSP 2.0 is substantially simpler than the equivalent

+    JSP 1.2-style classic tag handler.</p>

+    <p>The body of the tag is encapsulated in a "JSP Fragment" and passed

+    to the tag handler, which then executes it five times, inside a

+    for loop.  The tag handler passes in the current invocation in a

+    scoped variable called count, which can be accessed using the EL.</p>

+    <br>

+    <b><u>Result:</u></b><br>

+    <mytag:repeat num="5">

+      Invocation ${count} of 5<br>

+    </mytag:repeat>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html b/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html
new file mode 100644
index 0000000..a3bd71e
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/simpletag/repeat.jsp.html
@@ -0,0 +1,41 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="mytag" uri="/WEB-INF/jsp2/jsp2-example-taglib.tld" %>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Repeat SimpleTag Handler&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Repeat SimpleTag Handler&lt;/h1>

+    &lt;hr>

+    &lt;p>This tag handler accepts a "num" parameter and repeats the body of the

+    tag "num" times.  It's a simple example, but the implementation of

+    such a tag in JSP 2.0 is substantially simpler than the equivalent

+    JSP 1.2-style classic tag handler.&lt;/p>

+    &lt;p>The body of the tag is encapsulated in a "JSP Fragment" and passed

+    to the tag handler, which then executes it five times, inside a

+    for loop.  The tag handler passes in the current invocation in a

+    scoped variable called count, which can be accessed using the EL.&lt;/p>

+    &lt;br>

+    &lt;b>&lt;u>Result:&lt;/u>&lt;/b>&lt;br>

+    &lt;mytag:repeat num="5">

+      Invocation ${count} of 5&lt;br>

+    &lt;/mytag:repeat>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html b/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html
new file mode 100644
index 0000000..7898fe2
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/displayProducts.tag.html
@@ -0,0 +1,57 @@
+<html><body><pre>

+&lt;!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

+&lt;%@ attribute name="normalPrice" fragment="true" %>

+&lt;%@ attribute name="onSale" fragment="true" %>

+&lt;%@ variable name-given="name" %>

+&lt;%@ variable name-given="price" %>

+&lt;%@ variable name-given="origPrice" %>

+&lt;%@ variable name-given="salePrice" %>

+

+&lt;table border="1">

+  &lt;tr>

+    &lt;td>

+      &lt;c:set var="name" value="Hand-held Color PDA"/>

+      &lt;c:set var="price" value="$298.86"/>

+      &lt;jsp:invoke fragment="normalPrice"/>

+    &lt;/td>

+    &lt;td>

+      &lt;c:set var="name" value="4-Pack 150 Watt Light Bulbs"/>

+      &lt;c:set var="origPrice" value="$2.98"/>

+      &lt;c:set var="salePrice" value="$2.32"/>

+      &lt;jsp:invoke fragment="onSale"/>

+    &lt;/td>

+    &lt;td>

+      &lt;c:set var="name" value="Digital Cellular Phone"/>

+      &lt;c:set var="price" value="$68.74"/>

+      &lt;jsp:invoke fragment="normalPrice"/>

+    &lt;/td>

+    &lt;td>

+      &lt;c:set var="name" value="Baby Grand Piano"/>

+      &lt;c:set var="price" value="$10,800.00"/>

+      &lt;jsp:invoke fragment="normalPrice"/>

+    &lt;/td>

+    &lt;td>

+      &lt;c:set var="name" value="Luxury Car w/ Leather Seats"/>

+      &lt;c:set var="origPrice" value="$23,980.00"/>

+      &lt;c:set var="salePrice" value="$21,070.00"/>

+      &lt;jsp:invoke fragment="onSale"/>

+    &lt;/td>

+  &lt;/tr>

+&lt;/table>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/hello.html b/webapps/examples/jsp/jsp2/tagfiles/hello.html
new file mode 100644
index 0000000..aab12a7
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/hello.html
@@ -0,0 +1,33 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="hello.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="hello.jsp.html">Source Code for hello.jsp<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="helloWorld.tag.html">Source Code for helloWorld.tag<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/hello.jsp b/webapps/examples/jsp/jsp2/tagfiles/hello.jsp
new file mode 100644
index 0000000..a5d9999
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/hello.jsp
@@ -0,0 +1,35 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Hello World Using a Tag File</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Hello World Using a Tag File</h1>

+    <hr>

+    <p>This JSP page invokes a custom tag that simply echos "Hello, World!"

+    The custom tag is generated from a tag file in the /WEB-INF/tags

+    directory.</p>

+    <p>Notice that we did not need to write a TLD for this tag.  We just

+    created /WEB-INF/tags/helloWorld.tag, imported it using the taglib

+    directive, and used it!</p>

+    <br>

+    <b><u>Result:</u></b>

+    <tags:helloWorld/>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html b/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html
new file mode 100644
index 0000000..4fbd217
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/hello.jsp.html
@@ -0,0 +1,37 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Hello World Using a Tag File&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Hello World Using a Tag File&lt;/h1>

+    &lt;hr>

+    &lt;p>This JSP page invokes a custom tag that simply echos "Hello, World!"

+    The custom tag is generated from a tag file in the /WEB-INF/tags

+    directory.&lt;/p>

+    &lt;p>Notice that we did not need to write a TLD for this tag.  We just

+    created /WEB-INF/tags/helloWorld.tag, imported it using the taglib

+    directive, and used it!&lt;/p>

+    &lt;br>

+    &lt;b>&lt;u>Result:&lt;/u>&lt;/b>

+    &lt;tags:helloWorld/>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/helloWorld.tag.html b/webapps/examples/jsp/jsp2/tagfiles/helloWorld.tag.html
new file mode 100644
index 0000000..e335986
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/helloWorld.tag.html
@@ -0,0 +1,19 @@
+<html><body><pre>

+&lt;!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+Hello, world!

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/panel.html b/webapps/examples/jsp/jsp2/tagfiles/panel.html
new file mode 100644
index 0000000..161b70d
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/panel.html
@@ -0,0 +1,33 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="panel.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="panel.jsp.html">Source Code for panel.jsp<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="panel.tag.html">Source Code for panel.tag<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/panel.jsp b/webapps/examples/jsp/jsp2/tagfiles/panel.jsp
new file mode 100644
index 0000000..56f73b6
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/panel.jsp
@@ -0,0 +1,58 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Panels using Tag Files</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Panels using Tag Files</h1>

+    <hr>

+    <p>This JSP page invokes a custom tag that draws a

+    panel around the contents of the tag body.  Normally, such a tag

+    implementation would require a Java class with many println() statements,

+    outputting HTML.  Instead, we can use a .tag file as a template,

+    and we don't need to write a single line of Java or even a TLD!</p>

+    <hr>

+    <table border="0">

+      <tr valign="top">

+        <td>

+          <tags:panel color="#ff8080" bgcolor="#ffc0c0" title="Panel 1">

+            First panel.<br/>

+          </tags:panel>

+        </td>

+        <td>

+          <tags:panel color="#80ff80" bgcolor="#c0ffc0" title="Panel 2">

+            Second panel.<br/>

+            Second panel.<br/>

+            Second panel.<br/>

+            Second panel.<br/>

+          </tags:panel>

+        </td>

+        <td>

+          <tags:panel color="#8080ff" bgcolor="#c0c0ff" title="Panel 3">

+            Third panel.<br/>

+            <tags:panel color="#ff80ff" bgcolor="#ffc0ff" title="Inner">

+              A panel in a panel.

+            </tags:panel>

+            Third panel.<br/>

+          </tags:panel>

+        </td>

+      </tr>

+    </table>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html b/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html
new file mode 100644
index 0000000..4a8277c
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/panel.jsp.html
@@ -0,0 +1,60 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Panels using Tag Files&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Panels using Tag Files&lt;/h1>

+    &lt;hr>

+    &lt;p>This JSP page invokes a custom tag that draws a

+    panel around the contents of the tag body.  Normally, such a tag

+    implementation would require a Java class with many println() statements,

+    outputting HTML.  Instead, we can use a .tag file as a template,

+    and we don't need to write a single line of Java or even a TLD!&lt;/p>

+    &lt;hr>

+    &lt;table border="0">

+      &lt;tr valign="top">

+        &lt;td>

+          &lt;tags:panel color="#ff8080" bgcolor="#ffc0c0" title="Panel 1">

+            First panel.&lt;br/>

+          &lt;/tags:panel>

+        &lt;/td>

+        &lt;td>

+          &lt;tags:panel color="#80ff80" bgcolor="#c0ffc0" title="Panel 2">

+            Second panel.&lt;br/>

+            Second panel.&lt;br/>

+            Second panel.&lt;br/>

+            Second panel.&lt;br/>

+          &lt;/tags:panel>

+        &lt;/td>

+        &lt;td>

+          &lt;tags:panel color="#8080ff" bgcolor="#c0c0ff" title="Panel 3">

+            Third panel.&lt;br/>

+            &lt;tags:panel color="#ff80ff" bgcolor="#ffc0ff" title="Inner">

+              A panel in a panel.

+            &lt;/tags:panel>

+            Third panel.&lt;br/>

+          &lt;/tags:panel>

+        &lt;/td>

+      &lt;/tr>

+    &lt;/table>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/panel.tag.html b/webapps/examples/jsp/jsp2/tagfiles/panel.tag.html
new file mode 100644
index 0000000..df1c214
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/panel.tag.html
@@ -0,0 +1,31 @@
+<html><body><pre>

+&lt;!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;%@ attribute name="color" %>

+&lt;%@ attribute name="bgcolor" %>

+&lt;%@ attribute name="title" %>

+&lt;table border="1" bgcolor="${color}">

+  &lt;tr>

+    &lt;td>&lt;b>${title}&lt;/b>&lt;/td>

+  &lt;/tr>

+  &lt;tr>

+    &lt;td bgcolor="${bgcolor}">

+      &lt;jsp:doBody/>

+    &lt;/td>

+  &lt;/tr>

+&lt;/table>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/products.html b/webapps/examples/jsp/jsp2/tagfiles/products.html
new file mode 100644
index 0000000..e4780b9
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/products.html
@@ -0,0 +1,33 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>View Source Code</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="products.jsp"><img src="../../images/execute.gif" align="right" border="0"></a>

+<a href="../../index.html"><img src="../../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="products.jsp.html">Source Code for products.jsp<font color="#0000FF"></a>

+  </font> </h3>

+<h3><a href="displayProducts.tag.html">Source Code for displayProducts.tag<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/products.jsp b/webapps/examples/jsp/jsp2/tagfiles/products.jsp
new file mode 100644
index 0000000..23b84f1
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/products.jsp
@@ -0,0 +1,54 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

+<html>

+  <head>

+    <title>JSP 2.0 Examples - Display Products Tag File</title>

+  </head>

+  <body>

+    <h1>JSP 2.0 Examples - Display Products Tag File</h1>

+    <hr>

+    <p>This JSP page invokes a tag file that displays a listing of

+    products.  The custom tag accepts two fragments that enable

+    customization of appearance.  One for when the product is on sale

+    and one for normal price.</p>

+    <p>The tag is invoked twice, using different styles</p>

+    <hr>

+    <h2>Products</h2>

+    <tags:displayProducts>

+      <jsp:attribute name="normalPrice">

+        Item: ${name}<br/>

+        Price: ${price}

+      </jsp:attribute>

+      <jsp:attribute name="onSale">

+        Item: ${name}<br/>

+        <font color="red"><strike>Was: ${origPrice}</strike></font><br/>

+        <b>Now: ${salePrice}</b>

+      </jsp:attribute>

+    </tags:displayProducts>

+    <hr>

+    <h2>Products (Same tag, alternate style)</h2>

+    <tags:displayProducts>

+      <jsp:attribute name="normalPrice">

+        <b>${name}</b> @ ${price} ea.

+      </jsp:attribute>

+      <jsp:attribute name="onSale">

+        <b>${name}</b> @ ${salePrice} ea. (was: ${origPrice})

+      </jsp:attribute>

+    </tags:displayProducts>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html b/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html
new file mode 100644
index 0000000..a081b23
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/products.jsp.html
@@ -0,0 +1,56 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib prefix="tags" tagdir="/WEB-INF/tags" %>

+&lt;html>

+  &lt;head>

+    &lt;title>JSP 2.0 Examples - Display Products Tag File&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>JSP 2.0 Examples - Display Products Tag File&lt;/h1>

+    &lt;hr>

+    &lt;p>This JSP page invokes a tag file that displays a listing of

+    products.  The custom tag accepts two fragments that enable

+    customization of appearance.  One for when the product is on sale

+    and one for normal price.&lt;/p>

+    &lt;p>The tag is invoked twice, using different styles&lt;/p>

+    &lt;hr>

+    &lt;h2>Products&lt;/h2>

+    &lt;tags:displayProducts>

+      &lt;jsp:attribute name="normalPrice">

+        Item: ${name}&lt;br/>

+        Price: ${price}

+      &lt;/jsp:attribute>

+      &lt;jsp:attribute name="onSale">

+        Item: ${name}&lt;br/>

+        &lt;font color="red">&lt;strike>Was: ${origPrice}&lt;/strike>&lt;/font>&lt;br/>

+        &lt;b>Now: ${salePrice}&lt;/b>

+      &lt;/jsp:attribute>

+    &lt;/tags:displayProducts>

+    &lt;hr>

+    &lt;h2>Products (Same tag, alternate style)&lt;/h2>

+    &lt;tags:displayProducts>

+      &lt;jsp:attribute name="normalPrice">

+        &lt;b>${name}&lt;/b> @ ${price} ea.

+      &lt;/jsp:attribute>

+      &lt;jsp:attribute name="onSale">

+        &lt;b>${name}&lt;/b> @ ${salePrice} ea. (was: ${origPrice})

+      &lt;/jsp:attribute>

+    &lt;/tags:displayProducts>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsp2/tagfiles/xhtmlbasic.tag.html b/webapps/examples/jsp/jsp2/tagfiles/xhtmlbasic.tag.html
new file mode 100644
index 0000000..a8bd497
--- /dev/null
+++ b/webapps/examples/jsp/jsp2/tagfiles/xhtmlbasic.tag.html
@@ -0,0 +1,23 @@
+<html><body><pre>

+&lt;!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"

+"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">

+&lt;html xmlns="http://www.w3.org/1999/xhtml">

+&lt;jsp:doBody/>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsptoserv/ServletToJsp.java.html b/webapps/examples/jsp/jsptoserv/ServletToJsp.java.html
new file mode 100644
index 0000000..9e30da5
--- /dev/null
+++ b/webapps/examples/jsp/jsptoserv/ServletToJsp.java.html
@@ -0,0 +1,41 @@
+<html><body><pre>

+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+

+import javax.servlet.http.HttpServlet;

+import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

+

+public class ServletToJsp extends HttpServlet {

+

+    private static final long serialVersionUID = 1L;

+

+    @Override

+    public void doGet (HttpServletRequest request,

+            HttpServletResponse response) {

+

+       try {

+           // Set the attribute and Forward to hello.jsp

+           request.setAttribute ("servletName", "servletToJsp");

+           getServletConfig().getServletContext().getRequestDispatcher(

+                   "/jsp/jsptoserv/hello.jsp").forward(request, response);

+       } catch (Exception ex) {

+           ex.printStackTrace ();

+       }

+    }

+}

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsptoserv/hello.jsp b/webapps/examples/jsp/jsptoserv/hello.jsp
new file mode 100644
index 0000000..1b2b9fc
--- /dev/null
+++ b/webapps/examples/jsp/jsptoserv/hello.jsp
@@ -0,0 +1,26 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<body bgcolor="white">

+

+<h1>

+I have been invoked by

+<% out.print (request.getAttribute("servletName").toString()); %>

+Servlet.

+</h1>

+

+</html>
\ No newline at end of file
diff --git a/webapps/examples/jsp/jsptoserv/hello.jsp.html b/webapps/examples/jsp/jsptoserv/hello.jsp.html
new file mode 100644
index 0000000..d9e6138
--- /dev/null
+++ b/webapps/examples/jsp/jsptoserv/hello.jsp.html
@@ -0,0 +1,28 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;body bgcolor="white">

+

+&lt;h1>

+I have been invoked by

+&lt;% out.print (request.getAttribute("servletName").toString()); %>

+Servlet.

+&lt;/h1>

+

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp b/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp
new file mode 100644
index 0000000..c2a460a
--- /dev/null
+++ b/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp
@@ -0,0 +1,23 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<body bgcolor="white">

+

+<!-- Forward to a servlet -->

+<jsp:forward page="/servletToJsp" />

+

+</html>
\ No newline at end of file
diff --git a/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html b/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html
new file mode 100644
index 0000000..9e8ea56
--- /dev/null
+++ b/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp.html
@@ -0,0 +1,25 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;body bgcolor="white">

+

+&lt;!-- Forward to a servlet -->

+&lt;jsp:forward page="/servletToJsp" />

+

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/jsptoserv/jts.html b/webapps/examples/jsp/jsptoserv/jts.html
new file mode 100644
index 0000000..ef8bc01
--- /dev/null
+++ b/webapps/examples/jsp/jsptoserv/jts.html
@@ -0,0 +1,34 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="jsptoservlet.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="jsptoservlet.jsp.html">Source Code for JSP calling servlet <font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="servletToJsp.java.html">Source Code for Servlet calling JSP

+<font color="#0000FF"></a> </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/num/numguess.html b/webapps/examples/jsp/num/numguess.html
new file mode 100644
index 0000000..431fda0
--- /dev/null
+++ b/webapps/examples/jsp/num/numguess.html
@@ -0,0 +1,34 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+

+  Number Guess Game

+  Written by Jason Hunter, CTO, K&A Software

+  http://www.servlets.com

+-->

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="numguess.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="numguess.jsp.html">Source Code for Numguess Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/num/numguess.jsp b/webapps/examples/jsp/num/numguess.jsp
new file mode 100644
index 0000000..a30eeb5
--- /dev/null
+++ b/webapps/examples/jsp/num/numguess.jsp
@@ -0,0 +1,69 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+

+  Number Guess Game

+  Written by Jason Hunter, CTO, K&A Software

+  http://www.servlets.com

+--%>

+

+<%@ page import = "num.NumberGuessBean" %>

+

+<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>

+<jsp:setProperty name="numguess" property="*"/>

+

+<html>

+<head><title>Number Guess</title></head>

+<body bgcolor="white">

+<font size=4>

+

+<% if (numguess.getSuccess()) { %>

+

+  Congratulations!  You got it.

+  And after just <%= numguess.getNumGuesses() %> tries.<p>

+

+  <% numguess.reset(); %>

+

+  Care to <a href="numguess.jsp">try again</a>?

+

+<% } else if (numguess.getNumGuesses() == 0) { %>

+

+  Welcome to the Number Guess game.<p>

+

+  I'm thinking of a number between 1 and 100.<p>

+

+  <form method=get>

+  What's your guess? <input type=text name=guess>

+  <input type=submit value="Submit">

+  </form>

+

+<% } else { %>

+

+  Good guess, but nope.  Try <b><%= numguess.getHint() %></b>.

+

+  You have made <%= numguess.getNumGuesses() %> guesses.<p>

+

+  I'm thinking of a number between 1 and 100.<p>

+

+  <form method=get>

+  What's your guess? <input type=text name=guess>

+  <input type=submit value="Submit">

+  </form>

+

+<% } %>

+

+</font>

+</body>

+</html>

diff --git a/webapps/examples/jsp/num/numguess.jsp.html b/webapps/examples/jsp/num/numguess.jsp.html
new file mode 100644
index 0000000..3362ac4
--- /dev/null
+++ b/webapps/examples/jsp/num/numguess.jsp.html
@@ -0,0 +1,71 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+

+  Number Guess Game

+  Written by Jason Hunter, CTO, K&amp;A Software

+  http://www.servlets.com

+--%>

+

+&lt;%@ page import = "num.NumberGuessBean" %>

+

+&lt;jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>

+&lt;jsp:setProperty name="numguess" property="*"/>

+

+&lt;html>

+&lt;head>&lt;title>Number Guess&lt;/title>&lt;/head>

+&lt;body bgcolor="white">

+&lt;font size=4>

+

+&lt;% if (numguess.getSuccess()) { %>

+

+  Congratulations!  You got it.

+  And after just &lt;%= numguess.getNumGuesses() %> tries.&lt;p>

+

+  &lt;% numguess.reset(); %>

+

+  Care to &lt;a href="numguess.jsp">try again&lt;/a>?

+

+&lt;% } else if (numguess.getNumGuesses() == 0) { %>

+

+  Welcome to the Number Guess game.&lt;p>

+

+  I'm thinking of a number between 1 and 100.&lt;p>

+

+  &lt;form method=get>

+  What's your guess? &lt;input type=text name=guess>

+  &lt;input type=submit value="Submit">

+  &lt;/form>

+

+&lt;% } else { %>

+

+  Good guess, but nope.  Try &lt;b>&lt;%= numguess.getHint() %>&lt;/b>.

+

+  You have made &lt;%= numguess.getNumGuesses() %> guesses.&lt;p>

+

+  I'm thinking of a number between 1 and 100.&lt;p>

+

+  &lt;form method=get>

+  What's your guess? &lt;input type=text name=guess>

+  &lt;input type=submit value="Submit">

+  &lt;/form>

+

+&lt;% } %>

+

+&lt;/font>

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/plugin/applet/Clock2.class b/webapps/examples/jsp/plugin/applet/Clock2.class
new file mode 100644
index 0000000..cc968cd
--- /dev/null
+++ b/webapps/examples/jsp/plugin/applet/Clock2.class
Binary files differ
diff --git a/webapps/examples/jsp/plugin/applet/Clock2.java b/webapps/examples/jsp/plugin/applet/Clock2.java
new file mode 100644
index 0000000..ccc96d1
--- /dev/null
+++ b/webapps/examples/jsp/plugin/applet/Clock2.java
@@ -0,0 +1,224 @@
+/*

+* Licensed to the Apache Software Foundation (ASF) under one or more

+* contributor license agreements.  See the NOTICE file distributed with

+* this work for additional information regarding copyright ownership.

+* 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.

+*/

+

+import java.applet.Applet;

+import java.awt.Color;

+import java.awt.Font;

+import java.awt.Graphics;

+import java.text.SimpleDateFormat;

+import java.util.Date;

+import java.util.Locale;

+

+/**

+ * Time!

+ *

+ * @author Rachel Gollub

+ */

+

+public class Clock2 extends Applet implements Runnable {

+    private static final long serialVersionUID = 1L;

+    Thread timer;                // The thread that displays clock

+    int lastxs, lastys, lastxm,

+        lastym, lastxh, lastyh;  // Dimensions used to draw hands

+    SimpleDateFormat formatter;  // Formats the date displayed

+    String lastdate;             // String to hold date displayed

+    Font clockFaceFont;          // Font for number display on clock

+    Date currentDate;            // Used to get date to display

+    Color handColor;             // Color of main hands and dial

+    Color numberColor;           // Color of second hand and numbers

+

+    @Override

+    public void init() {

+        lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;

+        formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault());

+        currentDate = new Date();

+        lastdate = formatter.format(currentDate);

+        clockFaceFont = new Font("Serif", Font.PLAIN, 14);

+        handColor = Color.blue;

+        numberColor = Color.darkGray;

+

+        try {

+            setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));

+        } catch (Exception E) { }

+        try {

+            handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16));

+        } catch (Exception E) { }

+        try {

+            numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16));

+        } catch (Exception E) { }

+        resize(300,300);              // Set clock window size

+    }

+

+    // Plotpoints allows calculation to only cover 45 degrees of the circle,

+    // and then mirror

+    public void plotpoints(int x0, int y0, int x, int y, Graphics g) {

+        g.drawLine(x0+x,y0+y,x0+x,y0+y);

+        g.drawLine(x0+y,y0+x,x0+y,y0+x);

+        g.drawLine(x0+y,y0-x,x0+y,y0-x);

+        g.drawLine(x0+x,y0-y,x0+x,y0-y);

+        g.drawLine(x0-x,y0-y,x0-x,y0-y);

+        g.drawLine(x0-y,y0-x,x0-y,y0-x);

+        g.drawLine(x0-y,y0+x,x0-y,y0+x);

+        g.drawLine(x0-x,y0+y,x0-x,y0+y);

+    }

+

+    // Circle is just Bresenham's algorithm for a scan converted circle

+    public void circle(int x0, int y0, int r, Graphics g) {

+        int x,y;

+        float d;

+        x=0;

+        y=r;

+        d=5/4-r;

+        plotpoints(x0,y0,x,y,g);

+

+        while (y>x){

+            if (d<0) {

+                d=d+2*x+3;

+                x++;

+            }

+            else {

+                d=d+2*(x-y)+5;

+                x++;

+                y--;

+            }

+            plotpoints(x0,y0,x,y,g);

+        }

+    }

+

+    // Paint is the main part of the program

+    @Override

+    public void paint(Graphics g) {

+        int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter;

+        String today;

+

+        currentDate = new Date();

+        SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault());

+        try {

+            s = Integer.parseInt(formatter.format(currentDate));

+        } catch (NumberFormatException n) {

+            s = 0;

+        }

+        formatter.applyPattern("m");

+        try {

+            m = Integer.parseInt(formatter.format(currentDate));

+        } catch (NumberFormatException n) {

+            m = 10;

+        }

+        formatter.applyPattern("h");

+        try {

+            h = Integer.parseInt(formatter.format(currentDate));

+        } catch (NumberFormatException n) {

+            h = 10;

+        }

+        formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");

+        today = formatter.format(currentDate);

+        xcenter=80;

+        ycenter=55;

+

+    // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)

+    // x = r(cos a) + xcenter, y = r(sin a) + ycenter

+

+        xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter);

+        ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter);

+        xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter);

+        ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter);

+        xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter);

+        yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter);

+

+    // Draw the circle and numbers

+

+        g.setFont(clockFaceFont);

+        g.setColor(handColor);

+        circle(xcenter,ycenter,50,g);

+        g.setColor(numberColor);

+        g.drawString("9",xcenter-45,ycenter+3);

+        g.drawString("3",xcenter+40,ycenter+3);

+        g.drawString("12",xcenter-5,ycenter-37);

+        g.drawString("6",xcenter-3,ycenter+45);

+

+    // Erase if necessary, and redraw

+

+        g.setColor(getBackground());

+        if (xs != lastxs || ys != lastys) {

+            g.drawLine(xcenter, ycenter, lastxs, lastys);

+            g.drawString(lastdate, 5, 125);

+        }

+        if (xm != lastxm || ym != lastym) {

+            g.drawLine(xcenter, ycenter-1, lastxm, lastym);

+            g.drawLine(xcenter-1, ycenter, lastxm, lastym); }

+        if (xh != lastxh || yh != lastyh) {

+            g.drawLine(xcenter, ycenter-1, lastxh, lastyh);

+            g.drawLine(xcenter-1, ycenter, lastxh, lastyh); }

+        g.setColor(numberColor);

+        g.drawString("", 5, 125);

+        g.drawString(today, 5, 125);

+        g.drawLine(xcenter, ycenter, xs, ys);

+        g.setColor(handColor);

+        g.drawLine(xcenter, ycenter-1, xm, ym);

+        g.drawLine(xcenter-1, ycenter, xm, ym);

+        g.drawLine(xcenter, ycenter-1, xh, yh);

+        g.drawLine(xcenter-1, ycenter, xh, yh);

+        lastxs=xs; lastys=ys;

+        lastxm=xm; lastym=ym;

+        lastxh=xh; lastyh=yh;

+        lastdate = today;

+        currentDate=null;

+    }

+

+    @Override

+    public void start() {

+        timer = new Thread(this);

+        timer.start();

+    }

+

+    @Override

+    public void stop() {

+        timer = null;

+    }

+

+    @Override

+    public void run() {

+        Thread me = Thread.currentThread();

+        while (timer == me) {

+            try {

+                Thread.sleep(100);

+            } catch (InterruptedException e) {

+            }

+            repaint();

+        }

+    }

+

+    @Override

+    public void update(Graphics g) {

+        paint(g);

+    }

+

+    @Override

+    public String getAppletInfo() {

+        return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock.";

+    }

+

+    @Override

+    public String[][] getParameterInfo() {

+        String[][] info = {

+            {"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."},

+            {"fgcolor1", "hexadecimal RGB number", "The color of the hands and dial. Default is blue."},

+            {"fgcolor2", "hexadecimal RGB number", "The color of the seconds hand and numbers. Default is dark gray."}

+        };

+        return info;

+    }

+}

diff --git a/webapps/examples/jsp/plugin/plugin.html b/webapps/examples/jsp/plugin/plugin.html
new file mode 100644
index 0000000..036ce72
--- /dev/null
+++ b/webapps/examples/jsp/plugin/plugin.html
@@ -0,0 +1,30 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="plugin.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="plugin.jsp.html">Source Code for Plugin Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/plugin/plugin.jsp b/webapps/examples/jsp/plugin/plugin.jsp
new file mode 100644
index 0000000..3347f6e
--- /dev/null
+++ b/webapps/examples/jsp/plugin/plugin.jsp
@@ -0,0 +1,34 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<title> Plugin example </title>

+<body bgcolor="white">

+<h3> Current time is : </h3>

+<jsp:plugin type="applet" code="Clock2.class" codebase="applet" jreversion="1.2" width="160" height="150" >

+    <jsp:fallback>

+        Plugin tag OBJECT or EMBED not supported by browser.

+    </jsp:fallback>

+</jsp:plugin>

+<p>

+<h4>

+<font color=red>

+The above applet is loaded using the Java Plugin from a jsp page using the

+plugin tag.

+</font>

+</h4>

+</body>

+</html>

diff --git a/webapps/examples/jsp/plugin/plugin.jsp.html b/webapps/examples/jsp/plugin/plugin.jsp.html
new file mode 100644
index 0000000..121b375
--- /dev/null
+++ b/webapps/examples/jsp/plugin/plugin.jsp.html
@@ -0,0 +1,36 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;title> Plugin example &lt;/title>

+&lt;body bgcolor="white">

+&lt;h3> Current time is : &lt;/h3>

+&lt;jsp:plugin type="applet" code="Clock2.class" codebase="applet" jreversion="1.2" width="160" height="150" >

+    &lt;jsp:fallback>

+        Plugin tag OBJECT or EMBED not supported by browser.

+    &lt;/jsp:fallback>

+&lt;/jsp:plugin>

+&lt;p>

+&lt;h4>

+&lt;font color=red>

+The above applet is loaded using the Java Plugin from a jsp page using the

+plugin tag.

+&lt;/font>

+&lt;/h4>

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/security/protected/error.jsp b/webapps/examples/jsp/security/protected/error.jsp
new file mode 100644
index 0000000..db7a466
--- /dev/null
+++ b/webapps/examples/jsp/security/protected/error.jsp
@@ -0,0 +1,25 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<head>

+<title>Error Page For Examples</title>

+</head>

+<body bgcolor="white">

+Invalid username and/or password, please try

+<a href='<%= response.encodeURL("index.jsp") %>'>again</a>.

+</body>

+</html>

diff --git a/webapps/examples/jsp/security/protected/error.jsp.html b/webapps/examples/jsp/security/protected/error.jsp.html
new file mode 100644
index 0000000..950029e
--- /dev/null
+++ b/webapps/examples/jsp/security/protected/error.jsp.html
@@ -0,0 +1,27 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;head>

+&lt;title>Error Page For Examples&lt;/title>

+&lt;/head>

+&lt;body bgcolor="white">

+Invalid username and/or password, please try

+&lt;a href='&lt;%= response.encodeURL("index.jsp") %>'>again&lt;/a>.

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/security/protected/index.jsp b/webapps/examples/jsp/security/protected/index.jsp
new file mode 100644
index 0000000..1d6495c
--- /dev/null
+++ b/webapps/examples/jsp/security/protected/index.jsp
@@ -0,0 +1,81 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%

+  if (request.getParameter("logoff") != null) {

+    session.invalidate();

+    response.sendRedirect("index.jsp");

+    return;

+  }

+%>

+<html>

+<head>

+<title>Protected Page for Examples</title>

+</head>

+<body bgcolor="white">

+

+You are logged in as remote user

+<b><%= util.HTMLFilter.filter(request.getRemoteUser()) %></b>

+in session <b><%= session.getId() %></b><br><br>

+

+<%

+  if (request.getUserPrincipal() != null) {

+%>

+    Your user principal name is

+    <b><%= util.HTMLFilter.filter(request.getUserPrincipal().getName()) %></b>

+    <br><br>

+<%

+  } else {

+%>

+    No user principal could be identified.<br><br>

+<%

+  }

+%>

+

+<%

+  String role = request.getParameter("role");

+  if (role == null)

+    role = "";

+  if (role.length() > 0) {

+    if (request.isUserInRole(role)) {

+%>

+      You have been granted role

+      <b><%= util.HTMLFilter.filter(role) %></b><br><br>

+<%

+    } else {

+%>

+      You have <i>not</i> been granted role

+      <b><%= util.HTMLFilter.filter(role) %></b><br><br>

+<%

+    }

+  }

+%>

+

+To check whether your username has been granted a particular role,

+enter it here:

+<form method="GET" action='<%= response.encodeURL("index.jsp") %>'>

+<input type="text" name="role" value="<%= util.HTMLFilter.filter(role) %>">

+</form>

+<br><br>

+

+If you have configured this app for form-based authentication, you can log

+off by clicking

+<a href='<%= response.encodeURL("index.jsp?logoff=true") %>'>here</a>.

+This should cause you to be returned to the logon page after the redirect

+that is performed.

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/security/protected/index.jsp.html b/webapps/examples/jsp/security/protected/index.jsp.html
new file mode 100644
index 0000000..399f05c
--- /dev/null
+++ b/webapps/examples/jsp/security/protected/index.jsp.html
@@ -0,0 +1,83 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%

+  if (request.getParameter("logoff") != null) {

+    session.invalidate();

+    response.sendRedirect("index.jsp");

+    return;

+  }

+%>

+&lt;html>

+&lt;head>

+&lt;title>Protected Page for Examples&lt;/title>

+&lt;/head>

+&lt;body bgcolor="white">

+

+You are logged in as remote user

+&lt;b>&lt;%= util.HTMLFilter.filter(request.getRemoteUser()) %>&lt;/b>

+in session &lt;b>&lt;%= session.getId() %>&lt;/b>&lt;br>&lt;br>

+

+&lt;%

+  if (request.getUserPrincipal() != null) {

+%>

+    Your user principal name is

+    &lt;b>&lt;%= util.HTMLFilter.filter(request.getUserPrincipal().getName()) %>&lt;/b>

+    &lt;br>&lt;br>

+&lt;%

+  } else {

+%>

+    No user principal could be identified.&lt;br>&lt;br>

+&lt;%

+  }

+%>

+

+&lt;%

+  String role = request.getParameter("role");

+  if (role == null)

+    role = "";

+  if (role.length() > 0) {

+    if (request.isUserInRole(role)) {

+%>

+      You have been granted role

+      &lt;b>&lt;%= util.HTMLFilter.filter(role) %>&lt;/b>&lt;br>&lt;br>

+&lt;%

+    } else {

+%>

+      You have &lt;i>not&lt;/i> been granted role

+      &lt;b>&lt;%= util.HTMLFilter.filter(role) %>&lt;/b>&lt;br>&lt;br>

+&lt;%

+    }

+  }

+%>

+

+To check whether your username has been granted a particular role,

+enter it here:

+&lt;form method="GET" action='&lt;%= response.encodeURL("index.jsp") %>'>

+&lt;input type="text" name="role" value="&lt;%= util.HTMLFilter.filter(role) %>">

+&lt;/form>

+&lt;br>&lt;br>

+

+If you have configured this app for form-based authentication, you can log

+off by clicking

+&lt;a href='&lt;%= response.encodeURL("index.jsp?logoff=true") %>'>here&lt;/a>.

+This should cause you to be returned to the logon page after the redirect

+that is performed.

+

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/security/protected/login.jsp b/webapps/examples/jsp/security/protected/login.jsp
new file mode 100644
index 0000000..8b6d483
--- /dev/null
+++ b/webapps/examples/jsp/security/protected/login.jsp
@@ -0,0 +1,38 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<head>

+<title>Login Page for Examples</title>

+<body bgcolor="white">

+<form method="POST" action='<%= response.encodeURL("j_security_check") %>' >

+  <table border="0" cellspacing="5">

+    <tr>

+      <th align="right">Username:</th>

+      <td align="left"><input type="text" name="j_username"></td>

+    </tr>

+    <tr>

+      <th align="right">Password:</th>

+      <td align="left"><input type="password" name="j_password"></td>

+    </tr>

+    <tr>

+      <td align="right"><input type="submit" value="Log In"></td>

+      <td align="left"><input type="reset"></td>

+    </tr>

+  </table>

+</form>

+</body>

+</html>

diff --git a/webapps/examples/jsp/security/protected/login.jsp.html b/webapps/examples/jsp/security/protected/login.jsp.html
new file mode 100644
index 0000000..a516764
--- /dev/null
+++ b/webapps/examples/jsp/security/protected/login.jsp.html
@@ -0,0 +1,40 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;head>

+&lt;title>Login Page for Examples&lt;/title>

+&lt;body bgcolor="white">

+&lt;form method="POST" action='&lt;%= response.encodeURL("j_security_check") %>' >

+  &lt;table border="0" cellspacing="5">

+    &lt;tr>

+      &lt;th align="right">Username:&lt;/th>

+      &lt;td align="left">&lt;input type="text" name="j_username">&lt;/td>

+    &lt;/tr>

+    &lt;tr>

+      &lt;th align="right">Password:&lt;/th>

+      &lt;td align="left">&lt;input type="password" name="j_password">&lt;/td>

+    &lt;/tr>

+    &lt;tr>

+      &lt;td align="right">&lt;input type="submit" value="Log In">&lt;/td>

+      &lt;td align="left">&lt;input type="reset">&lt;/td>

+    &lt;/tr>

+  &lt;/table>

+&lt;/form>

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/sessions/DummyCart.html b/webapps/examples/jsp/sessions/DummyCart.html
new file mode 100644
index 0000000..317523f
--- /dev/null
+++ b/webapps/examples/jsp/sessions/DummyCart.html
@@ -0,0 +1,56 @@
+<HTML>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<HEAD>

+<title>

+sessions.DummyCart Bean Properties

+</title>

+<BODY BGCOLOR="white">

+<H2>

+sessions.DummyCart Bean Properties

+</H2>

+<HR>

+<DL>

+<DT>public class <B>DummyCart</B><DT>extends Object</DL>

+

+<P>

+<HR>

+

+<P>

+

+<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0">

+<TR BGCOLOR="#EEEEFF">

+<TD COLSPAN=3><FONT SIZE="+2">

+<B>Properties Summary</B></FONT></TD>

+</TR>

+<TR BGCOLOR="white">

+<td align="right" valign="top" width="1%">

+<FONT SIZE="-1">

+String

+</FONT></TD>

+<TD><B>DummyCart:items</B>

+<BR>

+       </TD>

+<td width="1%">

+<FONT SIZE="-1">

+Multi

+</FONT></TD>

+</TABLE>

+<HR>

+</BODY>

+</HTML>

diff --git a/webapps/examples/jsp/sessions/carts.html b/webapps/examples/jsp/sessions/carts.html
new file mode 100644
index 0000000..e972327
--- /dev/null
+++ b/webapps/examples/jsp/sessions/carts.html
@@ -0,0 +1,53 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+    <title>carts</title>

+</head>

+

+ <body bgcolor="white">

+<font size = 5 color="#CC0000">

+

+<form type=POST action=carts.jsp>

+<BR>

+Please enter item to add or remove:

+<br>

+Add Item:

+

+<SELECT NAME="item">

+<OPTION>Beavis & Butt-head Video collection

+<OPTION>X-files movie

+<OPTION>Twin peaks tapes

+<OPTION>NIN CD

+<OPTION>JSP Book

+<OPTION>Concert tickets

+<OPTION>Love life

+<OPTION>Switch blade

+<OPTION>Rex, Rugs & Rock n' Roll

+</SELECT>

+

+

+<br> <br>

+<INPUT TYPE=submit name="submit" value="add">

+<INPUT TYPE=submit name="submit" value="remove">

+

+</form>

+

+</FONT>

+</body>

+</html>

diff --git a/webapps/examples/jsp/sessions/carts.jsp b/webapps/examples/jsp/sessions/carts.jsp
new file mode 100644
index 0000000..8847e58
--- /dev/null
+++ b/webapps/examples/jsp/sessions/carts.jsp
@@ -0,0 +1,43 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<jsp:useBean id="cart" scope="session" class="sessions.DummyCart" />

+

+<jsp:setProperty name="cart" property="*" />

+<%

+    cart.processRequest();

+%>

+

+

+<FONT size = 5 COLOR="#CC0000">

+<br> You have the following items in your cart:

+<ol>

+<%

+    String[] items = cart.getItems();

+    for (int i=0; i<items.length; i++) {

+%>

+<li> <% out.print(util.HTMLFilter.filter(items[i])); %>

+<%

+    }

+%>

+</ol>

+

+</FONT>

+

+<hr>

+<%@ include file ="carts.html" %>

+</html>

diff --git a/webapps/examples/jsp/sessions/carts.jsp.html b/webapps/examples/jsp/sessions/carts.jsp.html
new file mode 100644
index 0000000..9c7add0
--- /dev/null
+++ b/webapps/examples/jsp/sessions/carts.jsp.html
@@ -0,0 +1,45 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;jsp:useBean id="cart" scope="session" class="sessions.DummyCart" />

+

+&lt;jsp:setProperty name="cart" property="*" />

+&lt;%

+    cart.processRequest();

+%>

+

+

+&lt;FONT size = 5 COLOR="#CC0000">

+&lt;br> You have the following items in your cart:

+&lt;ol>

+&lt;%

+    String[] items = cart.getItems();

+    for (int i=0; i&lt;items.length; i++) {

+%>

+&lt;li> &lt;% out.print(util.HTMLFilter.filter(items[i])); %>

+&lt;%

+    }

+%>

+&lt;/ol>

+

+&lt;/FONT>

+

+&lt;hr>

+&lt;%@ include file ="carts.html" %>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/sessions/crt.html b/webapps/examples/jsp/sessions/crt.html
new file mode 100644
index 0000000..28804e9
--- /dev/null
+++ b/webapps/examples/jsp/sessions/crt.html
@@ -0,0 +1,34 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="carts.html"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="carts.jsp.html">Source Code for Cart Example<font color="#0000FF"></a>

+  </font> </h3>

+

+<h3><a href="DummyCart.html">Property Sheet for DummyCart

+<font color="#0000FF"></a> </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/simpletag/foo.html b/webapps/examples/jsp/simpletag/foo.html
new file mode 100644
index 0000000..334b6bc
--- /dev/null
+++ b/webapps/examples/jsp/simpletag/foo.html
@@ -0,0 +1,30 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="foo.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="foo.jsp.html">Source Code for the Simple Tag Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/simpletag/foo.jsp b/webapps/examples/jsp/simpletag/foo.jsp
new file mode 100644
index 0000000..a31890c
--- /dev/null
+++ b/webapps/examples/jsp/simpletag/foo.jsp
@@ -0,0 +1,38 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<body>

+<%@ taglib uri="http://tomcat.apache.org/example-taglib" prefix="eg"%>

+

+Radio stations that rock:

+

+<ul>

+<eg:foo att1="98.5" att2="92.3" att3="107.7">

+<li><%= member %></li>

+</eg:foo>

+</ul>

+

+<eg:log>

+Did you see me on the stderr window?

+</eg:log>

+

+<eg:log toBrowser="true">

+Did you see me on the browser window as well?

+</eg:log>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/simpletag/foo.jsp.html b/webapps/examples/jsp/simpletag/foo.jsp.html
new file mode 100644
index 0000000..30c6272
--- /dev/null
+++ b/webapps/examples/jsp/simpletag/foo.jsp.html
@@ -0,0 +1,40 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;body>

+&lt;%@ taglib uri="http://tomcat.apache.org/example-taglib" prefix="eg"%>

+

+Radio stations that rock:

+

+&lt;ul>

+&lt;eg:foo att1="98.5" att2="92.3" att3="107.7">

+&lt;li>&lt;%= member %>&lt;/li>

+&lt;/eg:foo>

+&lt;/ul>

+

+&lt;eg:log>

+Did you see me on the stderr window?

+&lt;/eg:log>

+

+&lt;eg:log toBrowser="true">

+Did you see me on the browser window as well?

+&lt;/eg:log>

+

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/snp/snoop.html b/webapps/examples/jsp/snp/snoop.html
new file mode 100644
index 0000000..c00aca7
--- /dev/null
+++ b/webapps/examples/jsp/snp/snoop.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="snoop.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="snoop.jsp.html">Source Code for Request Parameters Example<font color="#0000FF">

+  </font></a></h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/snp/snoop.jsp b/webapps/examples/jsp/snp/snoop.jsp
new file mode 100644
index 0000000..500a648
--- /dev/null
+++ b/webapps/examples/jsp/snp/snoop.jsp
@@ -0,0 +1,56 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+<body bgcolor="white">

+<h1> Request Information </h1>

+<font size="4">

+JSP Request Method: <%= util.HTMLFilter.filter(request.getMethod()) %>

+<br>

+Request URI: <%= util.HTMLFilter.filter(request.getRequestURI()) %>

+<br>

+Request Protocol: <%= util.HTMLFilter.filter(request.getProtocol()) %>

+<br>

+Servlet path: <%= util.HTMLFilter.filter(request.getServletPath()) %>

+<br>

+Path info: <%= util.HTMLFilter.filter(request.getPathInfo()) %>

+<br>

+Query string: <%= util.HTMLFilter.filter(request.getQueryString()) %>

+<br>

+Content length: <%= request.getContentLength() %>

+<br>

+Content type: <%= util.HTMLFilter.filter(request.getContentType()) %>

+<br>

+Server name: <%= util.HTMLFilter.filter(request.getServerName()) %>

+<br>

+Server port: <%= request.getServerPort() %>

+<br>

+Remote user: <%= util.HTMLFilter.filter(request.getRemoteUser()) %>

+<br>

+Remote address: <%= util.HTMLFilter.filter(request.getRemoteAddr()) %>

+<br>

+Remote host: <%= util.HTMLFilter.filter(request.getRemoteHost()) %>

+<br>

+Authorization scheme: <%= util.HTMLFilter.filter(request.getAuthType()) %>

+<br>

+Locale: <%= request.getLocale() %>

+<hr>

+The browser you are using is

+<%= util.HTMLFilter.filter(request.getHeader("User-Agent")) %>

+<hr>

+</font>

+</body>

+</html>

diff --git a/webapps/examples/jsp/snp/snoop.jsp.html b/webapps/examples/jsp/snp/snoop.jsp.html
new file mode 100644
index 0000000..ad7be57
--- /dev/null
+++ b/webapps/examples/jsp/snp/snoop.jsp.html
@@ -0,0 +1,58 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+&lt;body bgcolor="white">

+&lt;h1> Request Information &lt;/h1>

+&lt;font size="4">

+JSP Request Method: &lt;%= util.HTMLFilter.filter(request.getMethod()) %>

+&lt;br>

+Request URI: &lt;%= util.HTMLFilter.filter(request.getRequestURI()) %>

+&lt;br>

+Request Protocol: &lt;%= util.HTMLFilter.filter(request.getProtocol()) %>

+&lt;br>

+Servlet path: &lt;%= util.HTMLFilter.filter(request.getServletPath()) %>

+&lt;br>

+Path info: &lt;%= util.HTMLFilter.filter(request.getPathInfo()) %>

+&lt;br>

+Query string: &lt;%= util.HTMLFilter.filter(request.getQueryString()) %>

+&lt;br>

+Content length: &lt;%= request.getContentLength() %>

+&lt;br>

+Content type: &lt;%= util.HTMLFilter.filter(request.getContentType()) %>

+&lt;br>

+Server name: &lt;%= util.HTMLFilter.filter(request.getServerName()) %>

+&lt;br>

+Server port: &lt;%= request.getServerPort() %>

+&lt;br>

+Remote user: &lt;%= util.HTMLFilter.filter(request.getRemoteUser()) %>

+&lt;br>

+Remote address: &lt;%= util.HTMLFilter.filter(request.getRemoteAddr()) %>

+&lt;br>

+Remote host: &lt;%= util.HTMLFilter.filter(request.getRemoteHost()) %>

+&lt;br>

+Authorization scheme: &lt;%= util.HTMLFilter.filter(request.getAuthType()) %>

+&lt;br>

+Locale: &lt;%= request.getLocale() %>

+&lt;hr>

+The browser you are using is

+&lt;%= util.HTMLFilter.filter(request.getHeader("User-Agent")) %>

+&lt;hr>

+&lt;/font>

+&lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/source.jsp b/webapps/examples/jsp/source.jsp
new file mode 100644
index 0000000..12a660c
--- /dev/null
+++ b/webapps/examples/jsp/source.jsp
@@ -0,0 +1,20 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ taglib uri="http://tomcat.apache.org/example-taglib"

+        prefix="eg" %>

+

+<eg:ShowSource jspFile="<%= util.HTMLFilter.filter(request.getQueryString()) %>"/>

diff --git a/webapps/examples/jsp/source.jsp.html b/webapps/examples/jsp/source.jsp.html
new file mode 100644
index 0000000..8c3f367
--- /dev/null
+++ b/webapps/examples/jsp/source.jsp.html
@@ -0,0 +1,22 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;%@ taglib uri="http://tomcat.apache.org/example-taglib"

+        prefix="eg" %>

+

+&lt;eg:ShowSource jspFile="&lt;%= util.HTMLFilter.filter(request.getQueryString()) %>"/>

+</pre></body></html>

diff --git a/webapps/examples/jsp/tagplugin/choose.html b/webapps/examples/jsp/tagplugin/choose.html
new file mode 100644
index 0000000..fdec617
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/choose.html
@@ -0,0 +1,36 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>View Source Code</title>

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF">

+  <a href="choose.jsp">

+    <img src="../images/execute.gif" align="right" border="0"></a>

+  <a href="../index.html">

+    <img src="../images/return.gif" width="24" height="24" align="right" border="0">

+  </a></font>

+</p>

+

+<h3>

+  <a href="choose.jsp.html">Source Code for choose.jsp<font color="#0000FF"/></a>

+</h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/tagplugin/choose.jsp b/webapps/examples/jsp/tagplugin/choose.jsp
new file mode 100644
index 0000000..52a9011
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/choose.jsp
@@ -0,0 +1,54 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+  <head>

+    <title>Tag Examples - choose</title>

+  </head>

+  <body>

+    <h1>Tag Plugin Examples - &lt;c:choose></h1>

+

+    <hr/>

+    <br/>

+    <a href="notes.html">Plugin Introductory Notes</a>

+    <br/>

+    <a href="howto.html">Brief Instructions for Writing Plugins</a>

+    <br/> <br/>

+    <hr/>

+

+    <br/>

+

+    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

+

+    <c:forEach var="index" begin="0" end="4">

+      # ${index}:

+      <c:choose>

+        <c:when test="${index == 1}">

+          One!<br/>

+        </c:when>

+        <c:when test="${index == 4}">

+          Four!<br/>

+        </c:when>

+        <c:when test="${index == 3}">

+          Three!<br/>

+        </c:when>

+        <c:otherwise>

+          Huh?<br/>

+        </c:otherwise>

+      </c:choose>

+    </c:forEach>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/tagplugin/choose.jsp.html b/webapps/examples/jsp/tagplugin/choose.jsp.html
new file mode 100644
index 0000000..5d70ede
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/choose.jsp.html
@@ -0,0 +1,56 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+  &lt;head>

+    &lt;title>Tag Examples - choose&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>Tag Plugin Examples - &amp;lt;c:choose>&lt;/h1>

+

+    &lt;hr/>

+    &lt;br/>

+    &lt;a href="notes.html">Plugin Introductory Notes&lt;/a>

+    &lt;br/>

+    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;/a>

+    &lt;br/> &lt;br/>

+    &lt;hr/>

+

+    &lt;br/>

+

+    &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

+

+    &lt;c:forEach var="index" begin="0" end="4">

+      # ${index}:

+      &lt;c:choose>

+        &lt;c:when test="${index == 1}">

+          One!&lt;br/>

+        &lt;/c:when>

+        &lt;c:when test="${index == 4}">

+          Four!&lt;br/>

+        &lt;/c:when>

+        &lt;c:when test="${index == 3}">

+          Three!&lt;br/>

+        &lt;/c:when>

+        &lt;c:otherwise>

+          Huh?&lt;br/>

+        &lt;/c:otherwise>

+      &lt;/c:choose>

+    &lt;/c:forEach>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/tagplugin/foreach.html b/webapps/examples/jsp/tagplugin/foreach.html
new file mode 100644
index 0000000..f1a9c1d
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/foreach.html
@@ -0,0 +1,36 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>View Source Code</title>

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF">

+  <a href="foreach.jsp">

+    <img src="../images/execute.gif" align="right" border="0"></a>

+  <a href="../index.html">

+    <img src="../images/return.gif" width="24" height="24" align="right" border="0">

+  </a></font>

+</p>

+

+<h3>

+  <a href="foreach.jsp.html">Source Code for foreach.jsp<font color="#0000FF"/></a>

+</h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/tagplugin/foreach.jsp b/webapps/examples/jsp/tagplugin/foreach.jsp
new file mode 100644
index 0000000..a7a57c5
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/foreach.jsp
@@ -0,0 +1,54 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+  <head>

+    <title>Tag Plugin Examples: forEach</title>

+  </head>

+  <body>

+    <h1>Tag Plugin Examples - &lt;c:forEach></h1>

+

+    <hr/>

+    <br/>

+    <a href="notes.html">Plugin Introductory Notes</a>

+    <br/>

+    <a href="howto.html">Brief Instructions for Writing Plugins</a>

+    <br/> <br/>

+    <hr/>

+

+    <br/>

+

+    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

+    <%@ page import="java.util.Vector" %>

+

+    <h3>Iterating over a range</h3>

+    <c:forEach var="item" begin="1" end="10">

+        ${item}

+    </c:forEach>

+

+    <% Vector v = new Vector();

+        v.add("One"); v.add("Two"); v.add("Three"); v.add("Four");

+

+        pageContext.setAttribute("vector", v);

+    %>

+

+    <h3>Iterating over a Vector</h3>

+

+    <c:forEach items="${vector}" var="item" >

+        ${item}

+    </c:forEach>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/tagplugin/foreach.jsp.html b/webapps/examples/jsp/tagplugin/foreach.jsp.html
new file mode 100644
index 0000000..1f63f15
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/foreach.jsp.html
@@ -0,0 +1,56 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+  &lt;head>

+    &lt;title>Tag Plugin Examples: forEach&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>Tag Plugin Examples - &amp;lt;c:forEach>&lt;/h1>

+

+    &lt;hr/>

+    &lt;br/>

+    &lt;a href="notes.html">Plugin Introductory Notes&lt;/a>

+    &lt;br/>

+    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;/a>

+    &lt;br/> &lt;br/>

+    &lt;hr/>

+

+    &lt;br/>

+

+    &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

+    &lt;%@ page import="java.util.Vector" %>

+

+    &lt;h3>Iterating over a range&lt;/h3>

+    &lt;c:forEach var="item" begin="1" end="10">

+        ${item}

+    &lt;/c:forEach>

+

+    &lt;% Vector v = new Vector();

+        v.add("One"); v.add("Two"); v.add("Three"); v.add("Four");

+

+        pageContext.setAttribute("vector", v);

+    %>

+

+    &lt;h3>Iterating over a Vector&lt;/h3>

+

+    &lt;c:forEach items="${vector}" var="item" >

+        ${item}

+    &lt;/c:forEach>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/tagplugin/howto.html b/webapps/examples/jsp/tagplugin/howto.html
new file mode 100644
index 0000000..a193228
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/howto.html
@@ -0,0 +1,45 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+  <head>

+    <title>Tag Plugin Implementation</title>

+  </head>

+  <body>

+    <h2>How to write tag plugins</h2>

+    <p>

+      To write a plugin, you'll need to download the source for Tomcat.

+      There are two steps:

+    <ol>

+      <li>

+        Implement the plugin class.<p/>

+        This class, which implements

+        <tt>org.apache.jasper.compiler.tagplugin.TagPlugin</tt>

+        instructs Jasper what Java codes to generate in place of the tag

+        handler calls.

+        See Javadoc for <tt>org.apache.jasper.compiler.tagplugin.TagPlugin</tt>

+        for details.

+      </li>

+

+      <li>

+        Create the plugin descriptor file <tt> WEB-INF/tagPlugins.xml</tt><p/>

+        This file

+        specifies the plugin classes and their corresponding tag handler

+        classes.

+      </li>

+    </ol>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/tagplugin/if.html b/webapps/examples/jsp/tagplugin/if.html
new file mode 100644
index 0000000..a338e17
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/if.html
@@ -0,0 +1,36 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>View Source Code</title>

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF">

+  <a href="if.jsp">

+    <img src="../images/execute.gif" align="right" border="0"></a>

+  <a href="../index.html">

+    <img src="../images/return.gif" width="24" height="24" align="right" border="0">

+  </a></font>

+</p>

+

+<h3>

+  <a href="if.jsp.html">Source Code for if.jsp<font color="#0000FF"/></a>

+</h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/tagplugin/if.jsp b/webapps/examples/jsp/tagplugin/if.jsp
new file mode 100644
index 0000000..70ad14e
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/if.jsp
@@ -0,0 +1,47 @@
+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<html>

+  <head>

+    <title>Tag Plugin Examples: if</title>

+  </head>

+  <body>

+    <h1>Tag Plugin Examples - &lt;c:if></h1>

+

+    <hr/>

+    <br/>

+    <a href="notes.html">Plugin Introductory Notes</a>

+    <br/>

+    <a href="howto.html">Brief Instructions for Writing Plugins</a>

+    <br/> <br/>

+    <hr/>

+

+    <br/>

+    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

+

+    <h3>Set the test result to a variable</h3>

+    <c:if test="${1==1}" var="theTruth" scope="page"/>

+    The result of testing for (1==1) is: ${theTruth}

+

+    <h3>Conditionally execute the body</h3>

+    <c:if test="${2>0}">

+        <p>It's true that (2>0)! Working.</p>

+    </c:if>

+    <c:if test="${0>2}">

+        <p>It's not true that (0>2)! Failed.</p>

+    </c:if>

+  </body>

+</html>

diff --git a/webapps/examples/jsp/tagplugin/if.jsp.html b/webapps/examples/jsp/tagplugin/if.jsp.html
new file mode 100644
index 0000000..ca05498
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/if.jsp.html
@@ -0,0 +1,49 @@
+<html><body><pre>

+&lt;%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+&lt;html>

+  &lt;head>

+    &lt;title>Tag Plugin Examples: if&lt;/title>

+  &lt;/head>

+  &lt;body>

+    &lt;h1>Tag Plugin Examples - &amp;lt;c:if>&lt;/h1>

+

+    &lt;hr/>

+    &lt;br/>

+    &lt;a href="notes.html">Plugin Introductory Notes&lt;/a>

+    &lt;br/>

+    &lt;a href="howto.html">Brief Instructions for Writing Plugins&lt;/a>

+    &lt;br/> &lt;br/>

+    &lt;hr/>

+

+    &lt;br/>

+    &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

+

+    &lt;h3>Set the test result to a variable&lt;/h3>

+    &lt;c:if test="${1==1}" var="theTruth" scope="page"/>

+    The result of testing for (1==1) is: ${theTruth}

+

+    &lt;h3>Conditionally execute the body&lt;/h3>

+    &lt;c:if test="${2>0}">

+        &lt;p>It's true that (2>0)! Working.&lt;/p>

+    &lt;/c:if>

+    &lt;c:if test="${0>2}">

+        &lt;p>It's not true that (0>2)! Failed.&lt;/p>

+    &lt;/c:if>

+  &lt;/body>

+&lt;/html>

+</pre></body></html>

diff --git a/webapps/examples/jsp/tagplugin/notes.html b/webapps/examples/jsp/tagplugin/notes.html
new file mode 100644
index 0000000..0b10d40
--- /dev/null
+++ b/webapps/examples/jsp/tagplugin/notes.html
@@ -0,0 +1,41 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+  <head>

+    <title>Tag Plugin Introduction</title>

+  </head>

+  <body>

+    <h2>Tag Plugins: Introductory Notes</h2>

+    <p>

+      Tomcat provides a framework for implementing tag plugins.  The

+      plugins instruct Jasper, at translation time, to replace tag handler

+      calls with Java scriptlets.

+      The framework allows tag library authors to implement plugins for

+      their tags.

+    </p>

+    <p>

+      Tomcat is released with plugins for several JSTL tags.  Note

+      that these plugins work with JSTL 1.1 as well as JSTL 1.0, though

+      the examples uses JSTL 1.1 and JSP 2.0.

+      These plugins are not complete (for instance, some item types are not

+      handled in &lt;c:if>).

+      They do serve as examples to show plugins in action (just

+      examine the generated Java files), and how they can be implemented.

+    </p>

+  </body>

+</html>

+

diff --git a/webapps/examples/jsp/xml/xml.html b/webapps/examples/jsp/xml/xml.html
new file mode 100644
index 0000000..80907a5
--- /dev/null
+++ b/webapps/examples/jsp/xml/xml.html
@@ -0,0 +1,31 @@
+<html>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="xml.jsp"><img src="../images/execute.gif" align="right" border="0"></a><a href="../index.html"><img src="../images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+

+<h3><a href="xml.jsp.html">Source Code for XML syntax Example<font color="#0000FF"></a>

+  </font> </h3>

+

+</body>

+</html>

diff --git a/webapps/examples/jsp/xml/xml.jsp b/webapps/examples/jsp/xml/xml.jsp
new file mode 100644
index 0000000..9b0c1fc
--- /dev/null
+++ b/webapps/examples/jsp/xml/xml.jsp
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

+  version="1.2">

+<jsp:directive.page contentType="text/html"/>

+<jsp:directive.page import="java.util.Date, java.util.Locale"/>

+<jsp:directive.page import="java.text.*"/>

+

+<jsp:declaration>

+  String getDateTimeStr(Locale l) {

+    DateFormat df = SimpleDateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, l);

+    return df.format(new Date());

+  }

+</jsp:declaration>

+

+<html>

+<head>

+  <title>Example JSP in XML format</title>

+</head>

+

+<body>

+This is the output of a simple JSP using XML format.

+<br />

+

+<div>Use a jsp:scriptlet to loop from 1 to 10: </div>

+<jsp:scriptlet>

+// Note we need to declare CDATA because we don't escape the less than symbol

+<![CDATA[

+  for (int i = 1; i<=10; i++) {

+    out.println(i);

+    if (i < 10) {

+      out.println(", ");

+    }

+  }

+]]>

+</jsp:scriptlet>

+

+<!-- Because I omit br's end tag, declare it as CDATA -->

+<![CDATA[

+  <br><br>

+]]>

+

+<div align="left">

+  Use a jsp:expression to write the date and time in the browser's locale:

+  <jsp:expression>getDateTimeStr(request.getLocale())</jsp:expression>

+</div>

+

+

+<jsp:text>

+  &lt;p&gt;This sentence is enclosed in a jsp:text element.&lt;/p&gt;

+</jsp:text>

+

+</body>

+</html>

+</jsp:root>

diff --git a/webapps/examples/jsp/xml/xml.jsp.html b/webapps/examples/jsp/xml/xml.jsp.html
new file mode 100644
index 0000000..b0b8274
--- /dev/null
+++ b/webapps/examples/jsp/xml/xml.jsp.html
@@ -0,0 +1,72 @@
+<html><body><pre>

+&lt;?xml version="1.0"?>

+&lt;!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+&lt;jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"

+  version="1.2">

+&lt;jsp:directive.page contentType="text/html"/>

+&lt;jsp:directive.page import="java.util.Date, java.util.Locale"/>

+&lt;jsp:directive.page import="java.text.*"/>

+

+&lt;jsp:declaration>

+  String getDateTimeStr(Locale l) {

+    DateFormat df = SimpleDateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM, l);

+    return df.format(new Date());

+  }

+&lt;/jsp:declaration>

+

+&lt;html>

+&lt;head>

+  &lt;title>Example JSP in XML format&lt;/title>

+&lt;/head>

+

+&lt;body>

+This is the output of a simple JSP using XML format.

+&lt;br />

+

+&lt;div>Use a jsp:scriptlet to loop from 1 to 10: &lt;/div>

+&lt;jsp:scriptlet>

+// Note we need to declare CDATA because we don't escape the less than symbol

+&lt;![CDATA[

+  for (int i = 1; i&lt;=10; i++) {

+    out.println(i);

+    if (i &lt; 10) {

+      out.println(", ");

+    }

+  }

+]]>

+&lt;/jsp:scriptlet>

+

+&lt;!-- Because I omit br's end tag, declare it as CDATA -->

+&lt;![CDATA[

+  &lt;br>&lt;br>

+]]>

+

+&lt;div align="left">

+  Use a jsp:expression to write the date and time in the browser's locale:

+  &lt;jsp:expression>getDateTimeStr(request.getLocale())&lt;/jsp:expression>

+&lt;/div>

+

+

+&lt;jsp:text>

+  &amp;lt;p&amp;gt;This sentence is enclosed in a jsp:text element.&amp;lt;/p&amp;gt;

+&lt;/jsp:text>

+

+&lt;/body>

+&lt;/html>

+&lt;/jsp:root>

+</pre></body></html>

diff --git a/webapps/examples/servlets/cookies.html b/webapps/examples/servlets/cookies.html
new file mode 100644
index 0000000..91ee584
--- /dev/null
+++ b/webapps/examples/servlets/cookies.html
@@ -0,0 +1,61 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="servlet/CookieExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+<h3>Source Code for Cookie Example<font color="#0000FF"><br>

+  </font> </h3>

+<font color="#0000FF"></font>

+<pre><font color="#0000FF">import</font> java.io.*;

+<font color="#0000FF">import</font> javax.servlet.*;

+<font color="#0000FF">import</font> javax.servlet.http.*;

+

+<font color="#0000FF">public class</font> CookieExample <font color="#0000FF">extends</font> HttpServlet {

+

+    <font color="#0000FF">public void</font> doGet(HttpServletRequest request, HttpServletResponse response)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

+        PrintWriter out = response.getWriter();

+

+        <font color="#CC0000">// print out cookies</font>

+

+        Cookie[] cookies = request.getCookies();

+        for (int i = 0; i &lt; cookies.length; i++) {

+            Cookie c = cookies[i];

+            String name = c.getName();

+            String value = c.getValue();

+            out.println(name + &quot;<font color="#009900"> = </font>&quot; + value);

+        }

+

+        <font color="#CC0000">// set a cookie</font>

+

+        String name = request.getParameter(&quot;<font color="#009900">cookieName</font>&quot;);

+        if (name != null &amp;&amp; name.length() &gt; 0) {

+            String value = request.getParameter(&quot;<font color="#009900">cookieValue</font>&quot;);

+            Cookie c = new Cookie(name, value);

+            response.addCookie(c);

+        }

+    }

+}</pre>

+</body>

+</html>

diff --git a/webapps/examples/servlets/helloworld.html b/webapps/examples/servlets/helloworld.html
new file mode 100644
index 0000000..e30810a
--- /dev/null
+++ b/webapps/examples/servlets/helloworld.html
@@ -0,0 +1,50 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="servlet/HelloWorldExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+<h3>Source Code for HelloWorld Example<font color="#0000FF"><br>

+  </font> </h3>

+<font color="#0000FF"></font>

+<pre><font color="#0000FF">import</font> java.io.*;

+<font color="#0000FF">import</font> javax.servlet.*;

+<font color="#0000FF">import</font> javax.servlet.http.*;

+

+<font color="#0000FF">public class</font> HelloWorld <font color="#0000FF">extends</font> HttpServlet {

+

+    <font color="#0000FF">public void</font> doGet(HttpServletRequest request, HttpServletResponse response)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

+        PrintWriter out = response.getWriter();

+        out.println(&quot;<font color="#009900">&lt;html&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;head&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;title&gt;Hello World!&lt;/title&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/head&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;body&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;h1&gt;Hello World!&lt;/h1&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/body&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/html&gt;</font>&quot;);

+    }

+}</pre>

+</body>

+</html>

diff --git a/webapps/examples/servlets/images/code.gif b/webapps/examples/servlets/images/code.gif
new file mode 100644
index 0000000..93af2cd
--- /dev/null
+++ b/webapps/examples/servlets/images/code.gif
Binary files differ
diff --git a/webapps/examples/servlets/images/execute.gif b/webapps/examples/servlets/images/execute.gif
new file mode 100644
index 0000000..f64d70f
--- /dev/null
+++ b/webapps/examples/servlets/images/execute.gif
Binary files differ
diff --git a/webapps/examples/servlets/images/return.gif b/webapps/examples/servlets/images/return.gif
new file mode 100644
index 0000000..af4f68f
--- /dev/null
+++ b/webapps/examples/servlets/images/return.gif
Binary files differ
diff --git a/webapps/examples/servlets/index.html b/webapps/examples/servlets/index.html
new file mode 100644
index 0000000..b778706
--- /dev/null
+++ b/webapps/examples/servlets/index.html
@@ -0,0 +1,121 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

+<html>

+<head>

+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+   <meta name="GENERATOR" content="Mozilla/4.61 [en] (WinNT; I) [Netscape]">

+   <meta name="Author" content="Anil K. Vijendran">

+   <title>Servlet Examples</title>

+</head>

+<body bgcolor="#FFFFFF">

+<b><font face="Arial, Helvetica, sans-serif"><font size=+2>Servlet

+Examples with Code</font></font></b>

+<p>This is a collection of examples which demonstrate some of the more

+frequently used parts of the Servlet API. Familiarity with the Java(tm)

+Programming Language is assumed.

+<p>These examples will only work when viewed via an http URL. They will

+not work if you are viewing these pages via a "file://..." URL. Please

+refer to the <i>README</i> file provide with this Tomcat release regarding

+how to configure and start the provided web server.

+<p>Wherever you see a form, enter some data and see how the servlet reacts.

+When playing with the Cookie and Session Examples, jump back to the Headers

+Example to see exactly what your browser is sending the server.

+<p>To navigate your way through the examples, the following icons will

+help:

+<br>&nbsp;

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+<tr VALIGN=TOP>

+<td WIDTH="30"><img SRC="images/execute.gif" ></td>

+

+<td>Execute the example</td>

+</tr>

+

+<tr VALIGN=TOP>

+<td WIDTH="30"><img SRC="images/code.gif" height=24 width=24></td>

+

+<td>Look at the source code for the example</td>

+</tr>

+

+<tr VALIGN=TOP>

+<td WIDTH="30"><img SRC="images/return.gif" height=24 width=24></td>

+

+<td>Return to this screen</td>

+</tr>

+</table>

+

+<p>Tip: To see the cookie interactions with your browser, try turning on

+the "notify when setting a cookie" option in your browser preferences.

+This will let you see when a session is created and give some feedback

+when looking at the cookie demo.

+<br>&nbsp;

+<table BORDER=0 CELLSPACING=5 WIDTH="85%" >

+<tr VALIGN=TOP>

+<td>Hello World</td>

+

+<td VALIGN=TOP WIDTH="30%"><a href="servlet/HelloWorldExample"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="servlet/HelloWorldExample">Execute</a></td>

+

+<td WIDTH="30%"><a href="helloworld.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="helloworld.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Request Info</td>

+

+<td WIDTH="30%"><a href="servlet/RequestInfoExample"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="servlet/RequestInfoExample">Execute</a></td>

+

+<td WIDTH="30%"><a href="reqinfo.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="reqinfo.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Request Headers</td>

+

+<td WIDTH="30%"><a href="servlet/RequestHeaderExample"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="servlet/RequestHeaderExample">Execute</a></td>

+

+<td WIDTH="30%"><a href="reqheaders.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="reqheaders.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Request Parameters</td>

+

+<td WIDTH="30%"><a href="servlet/RequestParamExample"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="servlet/RequestParamExample">Execute</a></td>

+

+<td WIDTH="30%"><a href="reqparams.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="reqparams.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Cookies</td>

+

+<td WIDTH="30%"><a href="servlet/CookieExample"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="servlet/CookieExample">Execute</a></td>

+

+<td WIDTH="30%"><a href="cookies.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="cookies.html">Source</a></td>

+</tr>

+

+<tr VALIGN=TOP>

+<td>Sessions</td>

+

+<td WIDTH="30%"><a href="servlet/SessionExample"><img SRC="images/execute.gif" HSPACE=4 BORDER=0  align=TOP></a><a href="servlet/SessionExample">Execute</a></td>

+

+<td WIDTH="30%"><a href="sessions.html"><img SRC="images/code.gif" HSPACE=4 BORDER=0 height=24 width=24 align=TOP></a><a href="sessions.html">Source</a></td>

+</tr>

+</table>

+

+<p>Note: The source code for these examples does not contain all of the

+source code that is actually in the example, only the important sections

+of code. Code not important to understand the example has been removed

+for clarity.

+</body>

+</html>

diff --git a/webapps/examples/servlets/reqheaders.html b/webapps/examples/servlets/reqheaders.html
new file mode 100644
index 0000000..4cb80c2
--- /dev/null
+++ b/webapps/examples/servlets/reqheaders.html
@@ -0,0 +1,49 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="servlet/RequestHeaderExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+<h3>Source Code for RequestHeader Example<font color="#0000FF"><br>

+  </font> </h3>

+<font color="#0000FF"></font>

+<pre><font color="#0000FF">import</font> java.io.*;

+<font color="#0000FF">import</font> java.util.*;

+<font color="#0000FF">import</font> javax.servlet.*;

+<font color="#0000FF">import</font> javax.servlet.http.*;

+

+<font color="#0000FF">public class</font> RequestHeaderExample <font color="#0000FF">extends</font> HttpServlet {

+

+    <font color="#0000FF">public void</font> doGet(HttpServletRequest request, HttpServletResponse response)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

+        PrintWriter out = response.getWriter();

+        Enumeration e = request.getHeaderNames();

+        while (e.hasMoreElements()) {

+            String name = (String)e.nextElement();

+            String value = request.getHeader(name);

+            out.println(name + &quot;<font color="#009900"> = </font>&quot; + value);

+        }

+    }

+}</pre>

+</body>

+</html>

diff --git a/webapps/examples/servlets/reqinfo.html b/webapps/examples/servlets/reqinfo.html
new file mode 100644
index 0000000..97a54ce
--- /dev/null
+++ b/webapps/examples/servlets/reqinfo.html
@@ -0,0 +1,68 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="servlet/RequestInfoExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+<h3>Source Code for Request Info Example<font color="#0000FF"><br>

+  </font> </h3>

+<font color="#0000FF"></font>

+<pre><font color="#0000FF">import</font> java.io.*;

+<font color="#0000FF">import</font> javax.servlet.*;

+<font color="#0000FF">import</font> javax.servlet.http.*;

+

+<font color="#0000FF">public class</font> RequestInfo <font color="#0000FF">extends</font> HttpServlet {

+

+    <font color="#0000FF">public void</font> doGet(HttpServletRequest request, HttpServletResponse response)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

+        PrintWriter out = response.getWriter();

+        out.println(&quot;<font color="#009900">&lt;html&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;body&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;head&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;title&gt;Request Information Example&lt;/title&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/head&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;body&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;h3&gt;Request Information Example&lt;/h3&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">Method: </font>&quot; + request.getMethod());

+        out.println(&quot;<font color="#009900">Request URI: </font>&quot; + request.getRequestURI());

+        out.println(&quot;<font color="#009900">Protocol: </font>&quot; + request.getProtocol());

+        out.println(&quot;<font color="#009900">PathInfo: </font>&quot; + request.getPathInfo());

+        out.println(&quot;<font color="#009900">Remote Address: </font>&quot; + request.getRemoteAddr());

+        out.println(&quot;<font color="#009900">&lt;/body&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/html&gt;</font>&quot;);

+    }

+

+<font color="#FF0000">    /**

+     * We are going to perform the same operations for POST requests

+     * as for GET methods, so this method just sends the request to

+     * the doGet method.

+     */</font>

+

+    <font color="#0000FF">public void</font> doPost(HttpServletRequest request, HttpServletResponse response)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        doGet(request, response);

+    }

+}</pre>

+</body>

+</html>

diff --git a/webapps/examples/servlets/reqparams.html b/webapps/examples/servlets/reqparams.html
new file mode 100644
index 0000000..42ec507
--- /dev/null
+++ b/webapps/examples/servlets/reqparams.html
@@ -0,0 +1,78 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="servlet/RequestParamExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+<h3>Source Code for Request Parameter Example<font color="#0000FF"><br>

+  </font> </h3>

+<font color="#0000FF"></font>

+<pre><font color="#0000FF">import</font> java.io.*;

+<font color="#0000FF">import</font> java.util.*;

+<font color="#0000FF">import</font> javax.servlet.*;

+<font color="#0000FF">import</font> javax.servlet.http.*;

+

+<font color="#0000FF">public class</font> RequestParamExample <font color="#0000FF">extends</font> HttpServlet {

+

+    <font color="#0000FF">public void</font> doGet(HttpServletRequest request, HttpServletResponse response)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

+        PrintWriter out = response.getWriter();

+        out.println(&quot;<font color="#009900">&lt;html&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;head&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;title&gt;Request Parameters Example&lt;/title&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/head&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;body&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;h3&gt;Request Parameters Example&lt;/h3&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">Parameters in this request:&lt;br&gt;</font>&quot;);

+        if (firstName != null || lastName != null) {

+            out.println(&quot;<font color="#009900">First Name:</font>&quot;);

+            out.println(&quot;<font color="#009900"> = </font>&quot; + HTMLFilter.filter(firstName) + &quot;<font color="#009900">&lt;br&gt;</font>&quot;);

+            out.println(&quot;<font color="#009900">Last Name:</font>&quot;);

+            out.println(&quot;<font color="#009900"> = </font>&quot; + HTMLFilter.filter(lastName));

+        } else {

+            out.println(&quot;<font color="#009900">No Parameters, Please enter some</font>&quot;);

+        }

+        out.println(&quot;<font color="#009900">&lt;P&gt;</font>&quot;);

+        out.print(&quot;<font color="#009900">&lt;form action=\"</font>&quot;);

+        out.print(&quot;<font color="#009900">RequestParamExample\" </font>&quot;);

+        out.println(&quot;<font color="#009900">method=POST&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">First Name:</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;input type=text size=20 name=firstname&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;br&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">Last Name:</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;input type=text size=20 name=lastname&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;br&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;input type=submit&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/form&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/body&gt;</font>&quot;);

+        out.println(&quot;<font color="#009900">&lt;/html&gt;</font>&quot;);

+    }

+

+    <font color="#0000FF">public void</font> doPost(HttpServletRequest request, HttpServletResponse res)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        doGet(request, response);

+    }

+}</pre>

+</body>

+</html>

diff --git a/webapps/examples/servlets/sessions.html b/webapps/examples/servlets/sessions.html
new file mode 100644
index 0000000..febef83
--- /dev/null
+++ b/webapps/examples/servlets/sessions.html
@@ -0,0 +1,70 @@
+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<html>

+<head>

+<title>Untitled Document</title>

+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

+</head>

+

+<body bgcolor="#FFFFFF">

+<p><font color="#0000FF"><a href="servlet/SessionExample"><img src="images/execute.gif" align="right" border="0"></a><a href="index.html"><img src="images/return.gif" width="24" height="24" align="right" border="0"></a></font></p>

+<h3>Source Code for Session Example<font color="#0000FF"><br>

+  </font> </h3>

+<font color="#0000FF"></font>

+<pre><font color="#0000FF">import</font> java.io.*;

+<font color="#0000FF">import</font> java.util.*;

+<font color="#0000FF">import</font> javax.servlet.*;

+<font color="#0000FF">import</font> javax.servlet.http.*;

+

+<font color="#0000FF">public class</font> SessionExample <font color="#0000FF">extends</font> HttpServlet {

+

+    <font color="#0000FF">public void</font> doGet(HttpServletRequest request, HttpServletResponse response)

+    <font color="#0000FF">throws</font> IOException, ServletException

+    {

+        response.setContentType(&quot;<font color="#009900">text/html</font>&quot;);

+        PrintWriter out = response.getWriter();

+

+        HttpSession session = request.getSession(true);

+

+        <font color="#CC0000">// print session info</font>

+

+        Date created = new Date(session.getCreationTime());

+        Date accessed = new Date(session.getLastAccessedTime());

+        out.println(&quot;<font color="#009900">ID </font>&quot; + session.getId());

+        out.println(&quot;<font color="#009900">Created: </font>&quot; + created);

+        out.println(&quot;<font color="#009900">Last Accessed: </font>&quot; + accessed);

+

+        <font color="#CC0000">// set session info if needed</font>

+

+        String dataName = request.getParameter(&quot;<font color="#009900">dataName</font>&quot;);

+        if (dataName != null &amp;&amp; dataName.length() &gt; 0) {

+            String dataValue = request.getParameter(&quot;<font color="#009900">dataValue</font>&quot;);

+            session.setAttribute(dataName, dataValue);

+        }

+

+        // print session contents

+

+        Enumeration e = session.getAttributeNames();

+        while (e.hasMoreElements()) {

+            String name = (String)e.nextElement();

+            String value = session.getAttribute(name).toString();

+            out.println(name + &quot; <font color="#009900">= </font>&quot; + value);

+        }

+    }

+}</pre>

+</body>

+</html>

diff --git a/webapps/examples/websocket/chat.html b/webapps/examples/websocket/chat.html
new file mode 100644
index 0000000..b835b14
--- /dev/null
+++ b/webapps/examples/websocket/chat.html
@@ -0,0 +1,125 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE html>

+<html>

+<head>

+    <title>Apache Tomcat WebSocket Examples: Chat</title>

+    <style type="text/css">

+        input#chat {

+            width: 410px

+        }

+

+        #console-container {

+            width: 400px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 170px;

+            overflow-y: scroll;

+            padding: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    </style>

+    <script type="text/javascript">

+        var Chat = {};

+

+        Chat.socket = null;

+

+        Chat.connect = (function(host) {

+            if ('WebSocket' in window) {

+                Chat.socket = new WebSocket(host);

+            } else if ('MozWebSocket' in window) {

+                Chat.socket = new MozWebSocket(host);

+            } else {

+                Console.log('Error: WebSocket is not supported by this browser.');

+                return;

+            }

+

+            Chat.socket.onopen = function () {

+                Console.log('Info: WebSocket connection opened.');

+                document.getElementById('chat').onkeydown = function(event) {

+                    if (event.keyCode == 13) {

+                        Chat.sendMessage();

+                    }

+                };

+            };

+

+            Chat.socket.onclose = function () {

+                document.getElementById('chat').onkeydown = null;

+                Console.log('Info: WebSocket closed.');

+            };

+

+            Chat.socket.onmessage = function (message) {

+                Console.log(message.data);

+            };

+        });

+

+        Chat.initialize = function() {

+            if (window.location.protocol == 'http:') {

+                Chat.connect('ws://' + window.location.host + '/examples/websocket/chat');

+            } else {

+                Chat.connect('wss://' + window.location.host + '/examples/websocket/chat');

+            }

+        };

+

+        Chat.sendMessage = (function() {

+            var message = document.getElementById('chat').value;

+            if (message != '') {

+                Chat.socket.send(message);

+                document.getElementById('chat').value = '';

+            }

+        });

+

+        var Console = {};

+

+        Console.log = (function(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.innerHTML = message;

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        });

+

+        Chat.initialize();

+

+    </script>

+</head>

+<body>

+<noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></noscript>

+<div>

+    <p>

+        <input type="text" placeholder="type and press enter to chat" id="chat">

+    </p>

+    <div id="console-container">

+        <div id="console"></div>

+    </div>

+</div>

+</body>

+</html>
\ No newline at end of file
diff --git a/webapps/examples/websocket/echo.html b/webapps/examples/websocket/echo.html
new file mode 100644
index 0000000..8927a7b
--- /dev/null
+++ b/webapps/examples/websocket/echo.html
@@ -0,0 +1,160 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE html>

+<html>

+<head>

+    <title>Apache Tomcat WebSocket Examples: Echo</title>

+    <style type="text/css">

+        #connect-container {

+            float: left;

+            width: 400px

+        }

+

+        #connect-container div {

+            padding: 5px;

+        }

+

+        #console-container {

+            float: left;

+            margin-left: 15px;

+            width: 400px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 170px;

+            overflow-y: scroll;

+            padding: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    </style>

+    <script type="text/javascript">

+        var ws = null;

+

+        function setConnected(connected) {

+            document.getElementById('connect').disabled = connected;

+            document.getElementById('disconnect').disabled = !connected;

+            document.getElementById('echo').disabled = !connected;

+        }

+

+        function connect() {

+            var target = document.getElementById('target').value;

+            if (target == '') {

+                alert('Please select server side connection implementation.');

+                return;

+            }

+            if ('WebSocket' in window) {

+                ws = new WebSocket(target);

+            } else if ('MozWebSocket' in window) {

+                ws = new MozWebSocket(target);

+            } else {

+                alert('WebSocket is not supported by this browser.');

+                return;

+            }

+            ws.onopen = function () {

+                setConnected(true);

+                log('Info: WebSocket connection opened.');

+            };

+            ws.onmessage = function (event) {

+                log('Received: ' + event.data);

+            };

+            ws.onclose = function () {

+                setConnected(false);

+                log('Info: WebSocket connection closed.');

+            };

+        }

+

+        function disconnect() {

+            if (ws != null) {

+                ws.close();

+                ws = null;

+            }

+            setConnected(false);

+        }

+

+        function echo() {

+            if (ws != null) {

+                var message = document.getElementById('message').value;

+                log('Sent: ' + message);

+                ws.send(message);

+            } else {

+                alert('WebSocket connection not established, please connect.');

+            }

+        }

+

+        function updateTarget(target) {

+            if (window.location.protocol == 'http:') {

+                document.getElementById('target').value = 'ws://' + window.location.host + target;

+            } else {

+                document.getElementById('target').value = 'wss://' + window.location.host + target;

+            }

+        }

+

+        function log(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.appendChild(document.createTextNode(message));

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        }

+    </script>

+</head>

+<body>

+<noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></noscript>

+<div>

+    <div id="connect-container">

+        <div>

+            <span>Connect using:</span>

+            <!-- echo example using streams on the server side -->

+            <input id="radio1" type="radio" name="group1" value="/examples/websocket/echoStream"

+                   onclick="updateTarget(this.value);"> <label for="radio1">streams</label>

+            <!-- echo example using messages on the server side -->

+            <input id="radio2" type="radio" name="group1" value="/examples/websocket/echoMessage"

+                   onclick="updateTarget(this.value);"> <label for="radio2">messages</label>

+        </div>

+        <div>

+            <input id="target" type="text" size="40" style="width: 350px"/>

+        </div>

+        <div>

+            <button id="connect" onclick="connect();">Connect</button>

+            <button id="disconnect" disabled="disabled" onclick="disconnect();">Disconnect</button>

+        </div>

+        <div>

+            <textarea id="message" style="width: 350px">Here is a message!</textarea>

+        </div>

+        <div>

+            <button id="echo" onclick="echo();" disabled="disabled">Echo message</button>

+        </div>

+    </div>

+    <div id="console-container">

+        <div id="console"></div>

+    </div>

+</div>

+</body>

+</html>
\ No newline at end of file
diff --git a/webapps/examples/websocket/index.html b/webapps/examples/websocket/index.html
new file mode 100644
index 0000000..0b18770
--- /dev/null
+++ b/webapps/examples/websocket/index.html
@@ -0,0 +1,31 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

+<html>

+<head>

+    <meta http-equiv=Content-Type content="text/html">

+    <title>Apache Tomcat WebSocket Examples</title>

+</head>

+<body>

+<h3>Apache Tomcat WebSocket Examples</h3>

+<ul>

+    <li><a href="echo.html">Echo example</a></li>

+    <li><a href="chat.html">Chat example</a></li>

+    <li><a href="snake.html">Multiplayer snake example</a></li>

+</ul>

+</body>

+</html>
\ No newline at end of file
diff --git a/webapps/examples/websocket/snake.html b/webapps/examples/websocket/snake.html
new file mode 100644
index 0000000..e7240de
--- /dev/null
+++ b/webapps/examples/websocket/snake.html
@@ -0,0 +1,258 @@
+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">

+<head>

+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

+    <title>Apache Tomcat WebSocket Examples: Multiplayer Snake</title>

+    <style type="text/css">

+        #playground {

+            width: 640px;

+            height: 480px;

+            background-color: #000;

+        }

+

+        #console-container {

+            float: left;

+            margin-left: 15px;

+            width: 300px;

+        }

+

+        #console {

+            border: 1px solid #CCCCCC;

+            border-right-color: #999999;

+            border-bottom-color: #999999;

+            height: 480px;

+            overflow-y: scroll;

+            padding-left: 5px;

+            padding-right: 5px;

+            width: 100%;

+        }

+

+        #console p {

+            padding: 0;

+            margin: 0;

+        }

+    </style>

+</head>

+<body>

+    <noscript><h2 style="color: #ff0000">Seems your browser doesn't support Javascript! Websockets rely on Javascript being enabled. Please enable

+    Javascript and reload this page!</h2></noscript>

+    <div style="float: left">

+        <canvas id="playground" width="640" height="480"></canvas>

+    </div>

+    <div id="console-container">

+        <div id="console"></div>

+    </div>

+    <script type="text/javascript">

+

+        var Game = {};

+

+        Game.fps = 30;

+        Game.socket = null;

+        Game.nextFrame = null;

+        Game.interval = null;

+        Game.direction = 'none';

+        Game.gridSize = 10;

+

+        function Snake() {

+            this.snakeBody = [];

+            this.color = null;

+        }

+

+        Snake.prototype.draw = function(context) {

+            for (var id in this.snakeBody) {

+                context.fillStyle = this.color;

+                context.fillRect(this.snakeBody[id].x, this.snakeBody[id].y, Game.gridSize, Game.gridSize);

+            }

+        };

+

+        Game.initialize = function() {

+            this.entities = [];

+            canvas = document.getElementById('playground');

+            if (!canvas.getContext) {

+                Console.log('Error: 2d canvas not supported by this browser.');

+                return;

+            }

+            this.context = canvas.getContext('2d');

+            window.addEventListener('keydown', function (e) {

+                var code = e.keyCode;

+                if (code > 36 && code < 41) {

+                    switch (code) {

+                        case 37:

+                            if (Game.direction != 'east') Game.setDirection('west');

+                            break;

+                        case 38:

+                            if (Game.direction != 'south') Game.setDirection('north');

+                            break;

+                        case 39:

+                            if (Game.direction != 'west') Game.setDirection('east');

+                            break;

+                        case 40:

+                            if (Game.direction != 'north') Game.setDirection('south');

+                            break;

+                    }

+                }

+            }, false);

+            if (window.location.protocol == 'http:') {

+                Game.connect('ws://' + window.location.host + '/examples/websocket/snake');

+            } else {

+                Game.connect('wss://' + window.location.host + '/examples/websocket/snake');

+            }

+        };

+

+        Game.setDirection  = function(direction) {

+            Game.direction = direction;

+            Game.socket.send(direction);

+            Console.log('Sent: Direction ' + direction);

+        };

+

+        Game.startGameLoop = function() {

+            if (window.webkitRequestAnimationFrame) {

+                Game.nextFrame = function () {

+                    webkitRequestAnimationFrame(Game.run);

+                };

+            } else if (window.mozRequestAnimationFrame) {

+                Game.nextFrame = function () {

+                    mozRequestAnimationFrame(Game.run);

+                };

+            } else {

+                Game.interval = setInterval(Game.run, 1000 / Game.fps);

+            }

+            if (Game.nextFrame != null) {

+                Game.nextFrame();

+            }

+        };

+

+        Game.stopGameLoop = function () {

+            Game.nextFrame = null;

+            if (Game.interval != null) {

+                clearInterval(Game.interval);

+            }

+        };

+

+        Game.draw = function() {

+            this.context.clearRect(0, 0, 640, 480);

+            for (var id in this.entities) {

+                this.entities[id].draw(this.context);

+            }

+        };

+

+        Game.addSnake = function(id, color) {

+            Game.entities[id] = new Snake();

+            Game.entities[id].color = color;

+        };

+

+        Game.updateSnake = function(id, snakeBody) {

+            if (typeof Game.entities[id] != "undefined") {

+                Game.entities[id].snakeBody = snakeBody;

+            }

+        };

+

+        Game.removeSnake = function(id) {

+            Game.entities[id] = null;

+            // Force GC.

+            delete Game.entities[id];

+        };

+

+        Game.run = (function() {

+            var skipTicks = 1000 / Game.fps, nextGameTick = (new Date).getTime();

+

+            return function() {

+                while ((new Date).getTime() > nextGameTick) {

+                    nextGameTick += skipTicks;

+                }

+                Game.draw();

+                if (Game.nextFrame != null) {

+                    Game.nextFrame();

+                }

+            };

+        })();

+

+        Game.connect = (function(host) {

+            if ('WebSocket' in window) {

+                Game.socket = new WebSocket(host);

+            } else if ('MozWebSocket' in window) {

+                Game.socket = new MozWebSocket(host);

+            } else {

+                Console.log('Error: WebSocket is not supported by this browser.');

+                return;

+            }

+

+            Game.socket.onopen = function () {

+                // Socket open.. start the game loop.

+                Console.log('Info: WebSocket connection opened.');

+                Console.log('Info: Press an arrow key to begin.');

+                Game.startGameLoop();

+                setInterval(function() {

+                    // Prevent server read timeout.

+                    Game.socket.send('ping');

+                }, 5000);

+            };

+

+            Game.socket.onclose = function () {

+                Console.log('Info: WebSocket closed.');

+                Game.stopGameLoop();

+            };

+

+            Game.socket.onmessage = function (message) {

+                // _Potential_ security hole, consider using json lib to parse data in production.

+                var packet = eval('(' + message.data + ')');

+                switch (packet.type) {

+                    case 'update':

+                        for (var i = 0; i < packet.data.length; i++) {

+                            Game.updateSnake(packet.data[i].id, packet.data[i].body);

+                        }

+                        break;

+                    case 'join':

+                        for (var j = 0; j < packet.data.length; j++) {

+                            Game.addSnake(packet.data[j].id, packet.data[j].color);

+                        }

+                        break;

+                    case 'leave':

+                        Game.removeSnake(packet.id);

+                        break;

+                    case 'dead':

+                        Console.log('Info: Your snake is dead, bad luck!');

+                        Game.direction = 'none';

+                        break;

+                    case 'kill':

+                        Console.log('Info: Head shot!');

+                        break;

+                }

+            };

+        });

+

+        var Console = {};

+

+        Console.log = (function(message) {

+            var console = document.getElementById('console');

+            var p = document.createElement('p');

+            p.style.wordWrap = 'break-word';

+            p.innerHTML = message;

+            console.appendChild(p);

+            while (console.childNodes.length > 25) {

+                console.removeChild(console.firstChild);

+            }

+            console.scrollTop = console.scrollHeight;

+        });

+

+        Game.initialize();

+    </script>

+</body>

+</html>

diff --git a/webapps/host-manager/META-INF/context.xml b/webapps/host-manager/META-INF/context.xml
new file mode 100644
index 0000000..c31d376
--- /dev/null
+++ b/webapps/host-manager/META-INF/context.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<Context antiResourceLocking="false" privileged="true" >

+  <!--

+    Remove the comment markers from around the Valve below to limit access to

+    the host-manager application to clients connecting from localhost

+  -->

+  <!--

+  <Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

+  -->

+</Context>
\ No newline at end of file
diff --git a/webapps/host-manager/WEB-INF/jsp/401.jsp b/webapps/host-manager/WEB-INF/jsp/401.jsp
new file mode 100644
index 0000000..dc608d9
--- /dev/null
+++ b/webapps/host-manager/WEB-INF/jsp/401.jsp
@@ -0,0 +1,70 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>401 Unauthorized</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>401 Unauthorized</h1>

+   <p>

+    You are not authorized to view this page. If you have not changed

+    any configuration files, please examine the file

+    <tt>conf/tomcat-users.xml</tt> in your installation. That

+    file must contain the credentials to let you use this webapp.

+   </p>

+   <p>

+    For example, to add the <tt>admin-gui</tt> role to a user named

+    <tt>tomcat</tt> with a password of <tt>s3cret</tt>, add the following to the

+    config file listed above.

+   </p>

+<pre>

+&lt;role rolename="admin-gui"/&gt;

+&lt;user username="tomcat" password="s3cret" roles="admin-gui"/&gt;

+</pre>

+   <p>

+    Note that for Tomcat 7 onwards, the roles required to use the host manager

+    application were changed from the single <tt>admin</tt> role to the

+    following two roles. You will need to assign the role(s) required for

+    the functionality you wish to access.

+   </p>

+    <ul>

+      <li><tt>admin-gui</tt> - allows access to the HTML GUI</li>

+      <li><tt>admin-script</tt> - allows access to the text interface</li>

+    </ul>

+   <p>

+    The HTML interface is protected against CSRF but the text interface is not.

+    To maintain the CSRF protection:

+   </p>

+   <ul>

+    <li>Users with the <tt>admin-gui</tt> role should not be granted the

+       <tt>admin-script</tt> role.</li>

+    <li>If the text interface is accessed through a browser (e.g. for testing

+        since this interface is intended for tools not humans) then the browser

+        must be closed afterwards to terminate the session.</li>

+   </ul>

+ </body>

+

+</html>

diff --git a/webapps/host-manager/WEB-INF/jsp/403.jsp b/webapps/host-manager/WEB-INF/jsp/403.jsp
new file mode 100644
index 0000000..60f998a
--- /dev/null
+++ b/webapps/host-manager/WEB-INF/jsp/403.jsp
@@ -0,0 +1,84 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>403 Access Denied</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>403 Access Denied</h1>

+   <p>

+    You are not authorized to view this page.

+   </p>

+   <p>

+    If you have already configured the Host Manager application to allow access

+    and you have used your browsers back button, used a saved book-mark or

+    similar then you may have triggered the cross-site request forgery (CSRF)

+    protection that has been enabled for the HTML interface of the Host Manager

+    application. You will need to reset this protection by returning to the

+    <a href="<%=request.getContextPath()%>/html">main Host Manager page</a>.

+    Once you return to this page, you will be able to continue using the Host

+    Manager appliction's HTML interface normally. If you continue to see this

+    access denied message, check that you have the necessary permissions to

+    access this application.

+   </p>

+   <p> If you have not changed

+    any configuration files, please examine the file

+    <tt>conf/tomcat-users.xml</tt> in your installation. That

+    file must contain the credentials to let you use this webapp.

+   </p>

+   <p>

+    For example, to add the <tt>admin-gui</tt> role to a user named

+    <tt>tomcat</tt> with a password of <tt>s3cret</tt>, add the following to the

+    config file listed above.

+   </p>

+<pre>

+&lt;role rolename="admin-gui"/&gt;

+&lt;user username="tomcat" password="s3cret" roles="admin-gui"/&gt;

+</pre>

+   <p>

+    Note that for Tomcat 7 onwards, the roles required to use the host manager

+    application were changed from the single <tt>admin</tt> role to the

+    following two roles. You will need to assign the role(s) required for

+    the functionality you wish to access.

+   </p>

+    <ul>

+      <li><tt>admin-gui</tt> - allows access to the HTML GUI</li>

+      <li><tt>admin-script</tt> - allows access to the text interface</li>

+    </ul>

+   <p>

+    The HTML interface is protected against CSRF but the text interface is not.

+    To maintain the CSRF protection:

+   </p>

+   <ul>

+    <li>Users with the <tt>admin-gui</tt> role should not be granted the

+       <tt>admin-script</tt> role.</li>

+    <li>If the text interface is accessed through a browser (e.g. for testing

+        since this interface is intended for tools not humans) then the browser

+        must be closed afterwards to terminate the session.</li>

+   </ul>

+ </body>

+

+</html>

diff --git a/webapps/host-manager/WEB-INF/jsp/404.jsp b/webapps/host-manager/WEB-INF/jsp/404.jsp
new file mode 100644
index 0000000..2d364d3
--- /dev/null
+++ b/webapps/host-manager/WEB-INF/jsp/404.jsp
@@ -0,0 +1,61 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ page import="org.apache.catalina.util.RequestUtil" %>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>404 Not found</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>404 Not found</h1>

+   <p>

+    The page you tried to access

+    (<%=RequestUtil.filter((String) request.getAttribute(

+            "javax.servlet.error.request_uri"))%>)

+    does not exist.

+   </p>

+   <p>

+    The Host Manager application has been re-structured for Tomcat 7 onwards and

+    some URLs have changed. All URLs used to access the Manager application

+    should now start with one of the following options:

+   </p>

+    <ul>

+      <li><%=request.getContextPath()%>/html for the HTML GUI</li>

+      <li><%=request.getContextPath()%>/text for the text interface</li>

+    </ul>

+   <p>

+    Note that the URL for the text interface has changed from

+    &quot;<%=request.getContextPath()%>&quot; to

+    &quot;<%=request.getContextPath()%>/text&quot;.

+   </p>

+   <p>

+    You probably need to adjust the URL you are using to access the Host Manager

+    application. However, there is always a chance you have found a bug in the

+    Host Manager application. If you are sure you have found a bug, and that the

+    bug has not already been reported, please report it to the Apache Tomcat

+    team.

+   </p>

+ </body>

+</html>

diff --git a/webapps/host-manager/WEB-INF/web.xml b/webapps/host-manager/WEB-INF/web.xml
new file mode 100644
index 0000000..01716c8
--- /dev/null
+++ b/webapps/host-manager/WEB-INF/web.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<web-app xmlns="http://java.sun.com/xml/ns/javaee"

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

+

+  <display-name>Tomcat Host Manager Application</display-name>

+  <description>

+    A scriptable host management web application for the Tomcat Web Server;

+    Manager lets you view, create and remove virtual hosts.

+  </description>

+

+  <servlet>

+    <servlet-name>HostManager</servlet-name>

+    <servlet-class>org.apache.catalina.manager.host.HostManagerServlet</servlet-class>

+    <init-param>

+      <param-name>debug</param-name>

+      <param-value>2</param-value>

+    </init-param>

+  </servlet>

+  <servlet>

+    <servlet-name>HTMLHostManager</servlet-name>

+    <servlet-class>org.apache.catalina.manager.host.HTMLHostManagerServlet</servlet-class>

+    <init-param>

+      <param-name>debug</param-name>

+      <param-value>2</param-value>

+    </init-param>

+  </servlet>

+

+  <filter>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>

+    <init-param>

+      <param-name>encoding</param-name>

+      <param-value>UTF-8</param-value>

+    </init-param>

+  </filter>

+

+  <filter-mapping>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <url-pattern>/*</url-pattern>

+  </filter-mapping>

+

+  <filter>

+    <filter-name>CSRF</filter-name>

+    <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>

+    <init-param>

+      <param-name>entryPoints</param-name>

+      <param-value>/html,/html/,/html/list,/index.jsp</param-value>

+    </init-param>

+  </filter>

+

+  <filter-mapping>

+    <filter-name>CSRF</filter-name>

+    <servlet-name>HTMLHostManager</servlet-name>

+  </filter-mapping>

+

+  <!-- Define the Manager Servlet Mapping -->

+  <servlet-mapping>

+    <servlet-name>HostManager</servlet-name>

+    <url-pattern>/text/*</url-pattern>

+  </servlet-mapping>

+  <servlet-mapping>

+    <servlet-name>HTMLHostManager</servlet-name>

+    <url-pattern>/html/*</url-pattern>

+  </servlet-mapping>

+

+  <!-- Define a Security Constraint on this Application -->

+  <security-constraint>

+    <web-resource-collection>

+      <web-resource-name>HostManager commands</web-resource-name>

+      <url-pattern>/text/*</url-pattern>

+    </web-resource-collection>

+    <auth-constraint>

+       <!-- NOTE:  This role is not present in the default users file -->

+       <role-name>admin-script</role-name>

+    </auth-constraint>

+  </security-constraint>

+  <security-constraint>

+    <web-resource-collection>

+      <web-resource-name>HTMLHostManager commands</web-resource-name>

+      <url-pattern>/html/*</url-pattern>

+    </web-resource-collection>

+    <auth-constraint>

+       <!-- NOTE:  This role is not present in the default users file -->

+       <role-name>admin-gui</role-name>

+    </auth-constraint>

+  </security-constraint>

+

+  <!-- Define the Login Configuration for this Application -->

+  <login-config>

+    <auth-method>BASIC</auth-method>

+    <realm-name>Tomcat Host Manager Application</realm-name>

+  </login-config>

+

+  <!-- Security roles referenced by this web application -->

+  <security-role>

+    <description>

+      The role that is required to log in to the Host Manager Application HTML

+      interface

+    </description>

+    <role-name>admin-gui</role-name>

+  </security-role>

+  <security-role>

+    <description>

+      The role that is required to log in to the Host Manager Application text

+      interface

+    </description>

+    <role-name>admin-script</role-name>

+  </security-role>

+

+  <error-page>

+    <error-code>401</error-code>

+    <location>/WEB-INF/jsp/401.jsp</location>

+  </error-page>

+  <error-page>

+    <error-code>403</error-code>

+    <location>/WEB-INF/jsp/403.jsp</location>

+  </error-page>

+  <error-page>

+    <error-code>404</error-code>

+    <location>/WEB-INF/jsp/404.jsp</location>

+  </error-page>

+

+</web-app>

diff --git a/webapps/host-manager/images/add.gif b/webapps/host-manager/images/add.gif
new file mode 100644
index 0000000..0774d07
--- /dev/null
+++ b/webapps/host-manager/images/add.gif
Binary files differ
diff --git a/webapps/host-manager/images/asf-logo.gif b/webapps/host-manager/images/asf-logo.gif
new file mode 100644
index 0000000..22eb9d7
--- /dev/null
+++ b/webapps/host-manager/images/asf-logo.gif
Binary files differ
diff --git a/webapps/host-manager/images/code.gif b/webapps/host-manager/images/code.gif
new file mode 100644
index 0000000..d27307b
--- /dev/null
+++ b/webapps/host-manager/images/code.gif
Binary files differ
diff --git a/webapps/host-manager/images/design.gif b/webapps/host-manager/images/design.gif
new file mode 100644
index 0000000..f5db0a9
--- /dev/null
+++ b/webapps/host-manager/images/design.gif
Binary files differ
diff --git a/webapps/host-manager/images/docs.gif b/webapps/host-manager/images/docs.gif
new file mode 100644
index 0000000..d64a4a1
--- /dev/null
+++ b/webapps/host-manager/images/docs.gif
Binary files differ
diff --git a/webapps/host-manager/images/fix.gif b/webapps/host-manager/images/fix.gif
new file mode 100644
index 0000000..d59ad64
--- /dev/null
+++ b/webapps/host-manager/images/fix.gif
Binary files differ
diff --git a/webapps/host-manager/images/tomcat.gif b/webapps/host-manager/images/tomcat.gif
new file mode 100644
index 0000000..6175673
--- /dev/null
+++ b/webapps/host-manager/images/tomcat.gif
Binary files differ
diff --git a/webapps/host-manager/images/update.gif b/webapps/host-manager/images/update.gif
new file mode 100644
index 0000000..31e22ab
--- /dev/null
+++ b/webapps/host-manager/images/update.gif
Binary files differ
diff --git a/webapps/host-manager/images/void.gif b/webapps/host-manager/images/void.gif
new file mode 100644
index 0000000..e565824
--- /dev/null
+++ b/webapps/host-manager/images/void.gif
Binary files differ
diff --git a/webapps/host-manager/index.jsp b/webapps/host-manager/index.jsp
new file mode 100644
index 0000000..3cf5cae
--- /dev/null
+++ b/webapps/host-manager/index.jsp
@@ -0,0 +1,18 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<% response.sendRedirect(response.encodeRedirectURL(request.getContextPath() +

+        "/html")); %>
\ No newline at end of file
diff --git a/webapps/host-manager/manager.xml b/webapps/host-manager/manager.xml
new file mode 100644
index 0000000..b86a8c9
--- /dev/null
+++ b/webapps/host-manager/manager.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<!--

+

+    Context configuration file for the Tomcat Manager Web App

+

+    $Id: manager.xml 562814 2007-08-05 03:52:04Z markt $

+

+-->

+

+

+<Context docBase="${catalina.home}/webapps/manager"

+         privileged="true" antiResourceLocking="false" antiJARLocking="false">

+

+</Context>

diff --git a/webapps/manager/META-INF/context.xml b/webapps/manager/META-INF/context.xml
new file mode 100644
index 0000000..7afc3a8
--- /dev/null
+++ b/webapps/manager/META-INF/context.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<Context antiResourceLocking="false" privileged="true" >

+  <!--

+    Remove the comment markers from around the Valve below to limit access to

+    the manager application to clients connecting from localhost

+  -->

+  <!--

+  <Valve className="org.apache.catalina.valves.RemoteAddrValve"

+         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />

+  -->

+</Context>

diff --git a/webapps/manager/WEB-INF/jsp/401.jsp b/webapps/manager/WEB-INF/jsp/401.jsp
new file mode 100644
index 0000000..f3f064c
--- /dev/null
+++ b/webapps/manager/WEB-INF/jsp/401.jsp
@@ -0,0 +1,79 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>401 Unauthorized</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>401 Unauthorized</h1>

+   <p>

+    You are not authorized to view this page. If you have not changed

+    any configuration files, please examine the file

+    <tt>conf/tomcat-users.xml</tt> in your installation. That

+    file must contain the credentials to let you use this webapp.

+   </p>

+   <p>

+    For example, to add the <tt>manager-gui</tt> role to a user named

+    <tt>tomcat</tt> with a password of <tt>s3cret</tt>, add the following to the

+    config file listed above.

+   </p>

+<pre>

+&lt;role rolename="manager-gui"/&gt;

+&lt;user username="tomcat" password="s3cret" roles="manager-gui"/&gt;

+</pre>

+   <p>

+    Note that for Tomcat 7 onwards, the roles required to use the manager

+    application were changed from the single <tt>manager</tt> role to the

+    following four roles. You will need to assign the role(s) required for

+    the functionality you wish to access.

+   </p>

+    <ul>

+      <li><tt>manager-gui</tt> - allows access to the HTML GUI and the status

+          pages</li>

+      <li><tt>manager-script</tt> - allows access to the text interface and the

+          status pages</li>

+      <li><tt>manager-jmx</tt> - allows access to the JMX proxy and the status

+          pages</li>

+      <li><tt>manager-status</tt> - allows access to the status pages only</li>

+    </ul>

+   <p>

+    The HTML interface is protected against CSRF but the text and JMX interfaces

+    are not. To maintain the CSRF protection:

+   </p>

+   <ul>

+    <li>Users with the <tt>manager-gui</tt> role should not be granted either

+        the <tt>manager-script</tt> or <tt>manager-jmx</tt> roles.</li>

+    <li>If the text or jmx interfaces are accessed through a browser (e.g. for

+        testing since these interfaces are intended for tools not humans) then

+        the browser must be closed afterwards to terminate the session.</li>

+   </ul>

+   <p>

+    For more information - please see the

+    <a href="/docs/manager-howto.html">Manager App HOW-TO</a>.

+   </p>

+ </body>

+

+</html>

diff --git a/webapps/manager/WEB-INF/jsp/403.jsp b/webapps/manager/WEB-INF/jsp/403.jsp
new file mode 100644
index 0000000..33a6b00
--- /dev/null
+++ b/webapps/manager/WEB-INF/jsp/403.jsp
@@ -0,0 +1,94 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>403 Access Denied</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>403 Access Denied</h1>

+   <p>

+    You are not authorized to view this page.

+   </p>

+   <p>

+    If you have already configured the Manager application to allow access and

+    you have used your browsers back button, used a saved book-mark or similar

+    then you may have triggered the cross-site request forgery (CSRF) protection

+    that has been enabled for the HTML interface of the Manager application. You

+    will need to reset this protection by returning to the

+    <a href="<%=request.getContextPath()%>/html">main Manager page</a>. Once you

+    return to this page, you will be able to continue using the Manager

+    appliction's HTML interface normally. If you continue to see this access

+    denied message, check that you have the necessary permissions to access this

+    application.

+   </p>

+   <p>

+    If you have not changed

+    any configuration files, please examine the file

+    <tt>conf/tomcat-users.xml</tt> in your installation. That

+    file must contain the credentials to let you use this webapp.

+   </p>

+   <p>

+    For example, to add the <tt>manager-gui</tt> role to a user named

+    <tt>tomcat</tt> with a password of <tt>s3cret</tt>, add the following to the

+    config file listed above.

+   </p>

+<pre>

+&lt;role rolename="manager-gui"/&gt;

+&lt;user username="tomcat" password="s3cret" roles="manager-gui"/&gt;

+</pre>

+   <p>

+    Note that for Tomcat 7 onwards, the roles required to use the manager

+    application were changed from the single <tt>manager</tt> role to the

+    following four roles. You will need to assign the role(s) required for

+    the functionality you wish to access.

+   </p>

+    <ul>

+      <li><tt>manager-gui</tt> - allows access to the HTML GUI and the status

+          pages</li>

+      <li><tt>manager-script</tt> - allows access to the text interface and the

+          status pages</li>

+      <li><tt>manager-jmx</tt> - allows access to the JMX proxy and the status

+          pages</li>

+      <li><tt>manager-status</tt> - allows access to the status pages only</li>

+    </ul>

+   <p>

+    The HTML interface is protected against CSRF but the text and JMX interfaces

+    are not. To maintain the CSRF protection:

+   </p>

+   <ul>

+    <li>Users with the <tt>manager-gui</tt> role should not be granted either

+        the <tt>manager-script</tt> or <tt>manager-jmx</tt> roles.</li>

+    <li>If the text or jmx interfaces are accessed through a browser (e.g. for

+        testing since these interfaces are intended for tools not humans) then

+        the browser must be closed afterwards to terminate the session.</li>

+   </ul>

+   <p>

+    For more information - please see the

+    <a href="/docs/manager-howto.html">Manager App HOW-TO</a>.

+   </p>

+ </body>

+

+</html>

diff --git a/webapps/manager/WEB-INF/jsp/404.jsp b/webapps/manager/WEB-INF/jsp/404.jsp
new file mode 100644
index 0000000..2b8b0b7
--- /dev/null
+++ b/webapps/manager/WEB-INF/jsp/404.jsp
@@ -0,0 +1,62 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@ page import="org.apache.catalina.util.RequestUtil" %>

+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

+<html>

+ <head>

+  <title>404 Not found</title>

+  <style type="text/css">

+    <!--

+    BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;font-size:12px;}

+    H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}

+    PRE, TT {border: 1px dotted #525D76}

+    A {color : black;}A.name {color : black;}

+    -->

+  </style>

+ </head>

+ <body>

+   <h1>404 Not found</h1>

+   <p>

+    The page you tried to access

+    (<%=RequestUtil.filter((String) request.getAttribute(

+            "javax.servlet.error.request_uri"))%>)

+    does not exist.

+   </p>

+   <p>

+    The Manager application has been re-structured for Tomcat 7 onwards and some

+    of URLs have changed. All URLs used to access the Manager application should

+    now start with one of the following options:

+   </p>

+    <ul>

+      <li><%=request.getContextPath()%>/html for the HTML GUI</li>

+      <li><%=request.getContextPath()%>/text for the text interface</li>

+      <li><%=request.getContextPath()%>/jmxproxy for the JMX proxy</li>

+      <li><%=request.getContextPath()%>/status for the status pages</li>

+    </ul>

+   <p>

+    Note that the URL for the text interface has changed from

+    &quot;<%=request.getContextPath()%>&quot; to

+    &quot;<%=request.getContextPath()%>/text&quot;.

+   </p>

+   <p>

+    You probably need to adjust the URL you are using to access the Manager

+    application. However, there is always a chance you have found a bug in the

+    Manager application. If you are sure you have found a bug, and that the bug

+    has not already been reported, please report it to the Apache Tomcat team.

+   </p>

+ </body>

+</html>

diff --git a/webapps/manager/WEB-INF/jsp/sessionDetail.jsp b/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
new file mode 100644
index 0000000..b2e404b
--- /dev/null
+++ b/webapps/manager/WEB-INF/jsp/sessionDetail.jsp
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@page session="false" contentType="text/html; charset=ISO-8859-1" %>

+<%@page import="java.util.Enumeration" %>

+<%@page import="javax.servlet.http.HttpSession" %>

+<%@page import="org.apache.catalina.Session" %>

+<%@page import="org.apache.catalina.manager.JspHelper" %>

+<%@page import="org.apache.catalina.util.ContextName" %>

+<!DOCTYPE html

+     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

+<%--!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"--%>

+

+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+<% String path = (String) request.getAttribute("path");

+   String version = (String) request.getAttribute("version");

+   ContextName cn = new ContextName(path, version);

+   Session currentSession = (Session)request.getAttribute("currentSession");

+   String currentSessionId = null;

+   HttpSession currentHttpSession = null;

+   if (currentSession != null) {

+       currentHttpSession = currentSession.getSession();

+       currentSessionId = JspHelper.escapeXml(currentSession.getId());

+   } else {

+       currentSessionId = "Session invalidated";

+   }

+   String submitUrl = JspHelper.escapeXml(response.encodeURL(

+           ((HttpServletRequest) pageContext.getRequest()).getRequestURI() +

+           "?path=" + path + "&version=" + version));

+%>

+<head>

+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>

+    <meta http-equiv="pragma" content="no-cache"/><!-- HTTP 1.0 -->

+    <meta http-equiv="cache-control" content="no-cache,must-revalidate"/><!-- HTTP 1.1 -->

+    <meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->

+    <meta http-equiv="content-language" content="en"/>

+    <meta name="author" content="Cedrik LIME"/>

+    <meta name="copyright" content="copyright 2005-2013 the Apache Software Foundation"/>

+    <meta name="robots" content="noindex,nofollow,noarchive"/>

+    <title>Sessions Administration: details for <%= currentSessionId %></title>

+</head>

+<body>

+<% if (currentHttpSession == null) { %>

+   <h1><%=currentSessionId%></h1>

+<% } else { %>

+   <h1>Details for Session <%= currentSessionId %></h1>

+

+   <table style="text-align: left;" border="0">

+     <tr>

+       <th>Session Id</th>

+       <td><%= currentSessionId %></td>

+     </tr>

+     <tr>

+       <th>Guessed Locale</th>

+       <td><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Guessed User</th>

+       <td><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Creation Time</th>

+       <td><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Last Accessed Time</th>

+       <td><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Session Max Inactive Interval</th>

+       <td><%= JspHelper.secondsToTimeString(currentSession.getMaxInactiveInterval()) %></td>

+     </tr>

+     <tr>

+       <th>Used Time</th>

+       <td><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>Inactive Time</th>

+       <td><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>

+     </tr>

+     <tr>

+       <th>TTL</th>

+       <td><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>

+     </tr>

+   </table>

+

+   <form method="post" action="<%= submitUrl %>">

+     <div>

+       <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />

+       <input type="hidden" name="action" value="sessionDetail" />

+       <%

+       if ("Primary".equals(request.getParameter("sessionType"))) {

+       %>

+         <input type="hidden" name="sessionType" value="Primary" />

+       <%

+       }

+       %>    <input type="submit" value="Refresh" />

+     </div>

+   </form>

+

+   <div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>

+   <div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>

+

+   <table style="text-align: left;" border="1" cellpadding="2" cellspacing="2">

+   <% int nAttributes = 0;

+      Enumeration attributeNamesEnumeration = currentHttpSession.getAttributeNames();

+      while (attributeNamesEnumeration.hasMoreElements()) {

+          attributeNamesEnumeration.nextElement();

+          ++nAttributes;

+      }

+   %>

+       <caption style="font-variant: small-caps;"><%= JspHelper.formatNumber(nAttributes) %> attributes</caption>

+       <thead>

+           <tr>

+               <th>Remove Attribute</th>

+               <th>Attribute name</th>

+               <th>Attribute value</th>

+           </tr>

+       </thead>

+       <%--tfoot>

+           <tr>

+               <td colspan="3" style="text-align: center;">

+                   TODO: set Max Inactive Interval on sessions

+               </td>

+           </tr>

+       </tfoot--%>

+       <tbody>

+   <% attributeNamesEnumeration = currentHttpSession.getAttributeNames();

+      while (attributeNamesEnumeration.hasMoreElements()) {

+          String attributeName = (String) attributeNamesEnumeration.nextElement();

+   %>

+           <tr>

+               <td align="center">

+                   <form method="post" action="<%= submitUrl %>">

+                       <div>

+                           <input type="hidden" name="action" value="removeSessionAttribute" />

+                           <input type="hidden" name="sessionId" value="<%= currentSessionId %>" />

+                           <input type="hidden" name="attributeName" value="<%= JspHelper.escapeXml(attributeName) %>" />

+                           <%

+                             if ("Primary".equals(request.getParameter("sessionType"))) {

+                           %>

+                             <input type="submit" value="Remove" />

+                             <input type="hidden" name="sessionType" value="Primary" />

+                           <%

+                             } else {

+                               out.print("Primary sessions only");

+                             }

+                           %>

+                       </div>

+                   </form>

+               </td>

+               <td><%= JspHelper.escapeXml(attributeName) %></td>

+               <td><% Object attributeValue = currentHttpSession.getAttribute(attributeName); %><span title="<%= attributeValue == null ? "" : attributeValue.getClass().toString() %>"><%= JspHelper.escapeXml(attributeValue) %></span></td>

+           </tr>

+   <% } // end while %>

+       </tbody>

+   </table>

+<% } // endif%>

+

+<form method="post" action="<%=submitUrl%>">

+  <p style="text-align: center;">

+    <input type="submit" value="Return to session list" />

+  </p>

+</form>

+

+<%--div style="display: none;">

+<p>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-html401"

+        alt="Valid HTML 4.01!" height="31" width="88"></a>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-xhtml10"

+        alt="Valid XHTML 1.0!" height="31" width="88" /></a>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-xhtml11"

+        alt="Valid XHTML 1.1!" height="31" width="88" /></a>

+</p>

+</div--%>

+

+</body>

+</html>

diff --git a/webapps/manager/WEB-INF/jsp/sessionsList.jsp b/webapps/manager/WEB-INF/jsp/sessionsList.jsp
new file mode 100644
index 0000000..93505c1
--- /dev/null
+++ b/webapps/manager/WEB-INF/jsp/sessionsList.jsp
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<%--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<%@page session="false" contentType="text/html; charset=ISO-8859-1" %>

+<%@page import="java.util.Collection" %>

+<%@page import="java.util.Iterator" %>

+<%@page import="org.apache.catalina.manager.JspHelper" %>

+<%@page import="org.apache.catalina.Session" %>

+<%@page import="org.apache.catalina.ha.session.DeltaSession" %>

+<%@page import="org.apache.catalina.util.ContextName" %>

+<!DOCTYPE html

+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

+

+

+<%@page import="org.apache.catalina.manager.DummyProxySession"%><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

+<% String path = (String) request.getAttribute("path");

+   String version = (String) request.getAttribute("version");

+   ContextName cn = new ContextName(path, version);

+   String submitUrl = JspHelper.escapeXml(response.encodeURL(

+           ((HttpServletRequest) pageContext.getRequest()).getRequestURI() +

+           "?path=" + path + "&version=" + version));

+   Collection activeSessions = (Collection) request.getAttribute("activeSessions");

+%>

+<head>

+    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>

+    <meta http-equiv="pragma" content="no-cache"/><!-- HTTP 1.0 -->

+    <meta http-equiv="cache-control" content="no-cache,must-revalidate"/><!-- HTTP 1.1 -->

+    <meta http-equiv="expires" content="0"/><!-- 0 is an invalid value and should be treated as 'now' -->

+    <meta http-equiv="content-language" content="en"/>

+    <meta name="author" content="Cedrik LIME"/>

+    <meta name="copyright" content="copyright 2005-2013 the Apache Software Foundation"/>

+    <meta name="robots" content="noindex,nofollow,noarchive"/>

+    <title>Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %></title>

+</head>

+<body>

+<h1>Sessions Administration for <%= JspHelper.escapeXml(cn.getDisplayName()) %></h1>

+

+<p>Tips:</p>

+<ul>

+    <li>Click on a column to sort.</li>

+    <li>To view a session details and/or remove a session attributes, click on its id.</li>

+</ul>

+

+<div class="error"><%= JspHelper.escapeXml(request.getAttribute("error")) %></div>

+<div class="message"><%= JspHelper.escapeXml(request.getAttribute("message")) %></div>

+

+<form action="<%= submitUrl %>" method="post" id="sessionsForm">

+    <fieldset><legend>Active HttpSessions informations</legend>

+        <input type="hidden" name="action" id="sessionsFormAction" value="injectSessions"/>

+        <input type="hidden" name="sort" id="sessionsFormSort" value="<%= JspHelper.escapeXml(request.getAttribute("sort")) %>"/>

+        <% String order = (String) request.getAttribute("order");

+           if (order == null || "".equals(order)) {

+               order = "ASC";

+           }

+        %>

+        <input type="hidden" name="order" id="sessionsFormSortOrder" value="<%= JspHelper.escapeXml(order) %>"/>

+        <input type="submit" name="refresh" id="refreshButton" value="Refresh Sessions list" onclick="document.getElementById('sessionsFormAction').value='refreshSessions'; return true;"/>

+        <%= JspHelper.formatNumber(activeSessions.size()) %> active Sessions<br/>

+        <table border="1" cellpadding="2" cellspacing="2" width="100%">

+            <thead>

+                <tr>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Type</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>

+                </tr>

+            </thead>

+            <% if (activeSessions.size() > 10) { %>

+            <tfoot><%-- <tfoot> is the same as <thead> --%>

+                <tr>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Session Id</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='id'; document.getElementById('refreshButton').click(); return true;">Type</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='locale'; document.getElementById('refreshButton').click(); return true;">Guessed Locale</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='user'; document.getElementById('refreshButton').click(); return true;">Guessed User name</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='CreationTime'; document.getElementById('refreshButton').click(); return true;">Creation Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='LastAccessedTime'; document.getElementById('refreshButton').click(); return true;">Last Accessed Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='UsedTime'; document.getElementById('refreshButton').click(); return true;">Used Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='InactiveTime'; document.getElementById('refreshButton').click(); return true;">Inactive Time</a></th>

+                    <th><a onclick="document.getElementById('sessionsFormSort').value='TTL'; document.getElementById('refreshButton').click(); return true;"><span title="Time To Live">TTL</span></a></th>

+                </tr>

+            </tfoot>

+            <% } // end if %>

+            <tbody>

+<% Iterator iter = activeSessions.iterator();

+   while (iter.hasNext()) {

+       Session currentSession = (Session) iter.next();

+       String currentSessionId = JspHelper.escapeXml(currentSession.getId());

+       String type;

+       if (currentSession instanceof DeltaSession) {

+           if (((DeltaSession) currentSession).isPrimarySession()) {

+               type = "Primary";

+           } else {

+               type = "Backup";

+           }

+       } else if (currentSession instanceof DummyProxySession) {

+           type = "Proxy";

+       } else {

+           type = "Primary";

+       }

+%>

+                <tr>

+                    <td><input type="checkbox" name="sessionIds" value="<%= currentSessionId %>" />

+                      <%

+                        if ("Proxy".equals(type)) {

+                            out.print(currentSessionId);

+                        } else {

+                      %>

+                      <a href="<%= submitUrl %>&amp;action=sessionDetail&amp;sessionId=<%= currentSessionId %>&amp;sessionType=<%= type %>"><%= currentSessionId %></a>

+                      <%

+                        }

+                      %>

+                    </td>

+                    <td style="text-align: center;"><%= type %></td>

+                    <td style="text-align: center;"><%= JspHelper.guessDisplayLocaleFromSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.guessDisplayUserFromSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayCreationTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayUsedTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %></td>

+                    <td style="text-align: center;"><%= JspHelper.getDisplayTTLForSession(currentSession) %></td>

+                </tr>

+<% } // end while %>

+            </tbody>

+        </table>

+        <p style="text-align: center;">

+            <input type="submit" name="invalidate" value="Invalidate selected Sessions" onclick="document.getElementById('sessionsFormAction').value='invalidateSessions'; return true;"/>

+        </p>

+    </fieldset>

+</form>

+

+<form method="get" action="<%=request.getContextPath()%>/html">

+  <p style="text-align: center;">

+    <input type="submit" value="Return to main page" />

+  </p>

+</form>

+

+<%--div style="display: none;">

+<p>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-html401"

+        alt="Valid HTML 4.01!" height="31" width="88"></a>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-xhtml10"

+        alt="Valid XHTML 1.0!" height="31" width="88" /></a>

+    <a href="http://validator.w3.org/check?uri=referer"><img

+        src="http://www.w3.org/Icons/valid-xhtml11"

+        alt="Valid XHTML 1.1!" height="31" width="88" /></a>

+</p>

+</div--%>

+

+</body>

+</html>

diff --git a/webapps/manager/WEB-INF/web.xml b/webapps/manager/WEB-INF/web.xml
new file mode 100644
index 0000000..920a7a1
--- /dev/null
+++ b/webapps/manager/WEB-INF/web.xml
@@ -0,0 +1,209 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>

+<!--

+ Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<web-app xmlns="http://java.sun.com/xml/ns/javaee"

+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

+                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

+  version="3.0"

+  metadata-complete="true">

+

+  <display-name>Tomcat Manager Application</display-name>

+  <description>

+    A scriptable management web application for the Tomcat Web Server;

+    Manager lets you view, load/unload/etc particular web applications.

+  </description>

+

+  <servlet>

+    <servlet-name>Manager</servlet-name>

+    <servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class>

+    <init-param>

+      <param-name>debug</param-name>

+      <param-value>2</param-value>

+    </init-param>

+  </servlet>

+  <servlet>

+    <servlet-name>HTMLManager</servlet-name>

+    <servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>

+    <init-param>

+      <param-name>debug</param-name>

+      <param-value>2</param-value>

+    </init-param>

+    <!-- Uncomment this to show proxy sessions from the Backup manager or a

+         StoreManager in the sessions list for an application

+    <init-param>

+      <param-name>showProxySessions</param-name>

+      <param-value>true</param-value>

+    </init-param>

+    -->

+    <multipart-config>

+      <!-- 50MB max -->

+      <max-file-size>52428800</max-file-size>

+      <max-request-size>52428800</max-request-size>

+      <file-size-threshold>0</file-size-threshold>

+    </multipart-config>

+  </servlet>

+  <servlet>

+    <servlet-name>Status</servlet-name>

+    <servlet-class>org.apache.catalina.manager.StatusManagerServlet</servlet-class>

+    <init-param>

+      <param-name>debug</param-name>

+      <param-value>0</param-value>

+    </init-param>

+  </servlet>

+

+  <servlet>

+    <servlet-name>JMXProxy</servlet-name>

+    <servlet-class>org.apache.catalina.manager.JMXProxyServlet</servlet-class>

+  </servlet>

+

+  <!-- Define the Manager Servlet Mapping -->

+  <servlet-mapping>

+    <servlet-name>Manager</servlet-name>

+      <url-pattern>/text/*</url-pattern>

+  </servlet-mapping>

+  <servlet-mapping>

+    <servlet-name>Status</servlet-name>

+    <url-pattern>/status/*</url-pattern>

+  </servlet-mapping>

+  <servlet-mapping>

+    <servlet-name>JMXProxy</servlet-name>

+      <url-pattern>/jmxproxy/*</url-pattern>

+  </servlet-mapping>

+  <servlet-mapping>

+    <servlet-name>HTMLManager</servlet-name>

+    <url-pattern>/html/*</url-pattern>

+  </servlet-mapping>

+

+  <filter>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>

+    <init-param>

+      <param-name>encoding</param-name>

+      <param-value>UTF-8</param-value>

+    </init-param>

+  </filter>

+

+  <filter-mapping>

+    <filter-name>SetCharacterEncoding</filter-name>

+    <url-pattern>/*</url-pattern>

+  </filter-mapping>

+

+  <filter>

+    <filter-name>CSRF</filter-name>

+    <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>

+    <init-param>

+      <param-name>entryPoints</param-name>

+      <param-value>/html,/html/,/html/list,/index.jsp</param-value>

+    </init-param>

+  </filter>

+

+  <filter-mapping>

+    <filter-name>CSRF</filter-name>

+    <servlet-name>HTMLManager</servlet-name>

+    <servlet-name>jsp</servlet-name>

+  </filter-mapping>

+

+  <!-- Define a Security Constraint on this Application -->

+  <!-- NOTE:  None of these roles are present in the default users file -->

+  <security-constraint>

+    <web-resource-collection>

+      <web-resource-name>HTML Manager interface (for humans)</web-resource-name>

+      <url-pattern>/html/*</url-pattern>

+    </web-resource-collection>

+    <auth-constraint>

+       <role-name>manager-gui</role-name>

+    </auth-constraint>

+  </security-constraint>

+  <security-constraint>

+    <web-resource-collection>

+      <web-resource-name>Text Manager interface (for scripts)</web-resource-name>

+      <url-pattern>/text/*</url-pattern>

+    </web-resource-collection>

+    <auth-constraint>

+       <role-name>manager-script</role-name>

+    </auth-constraint>

+  </security-constraint>

+  <security-constraint>

+    <web-resource-collection>

+      <web-resource-name>JMX Proxy interface</web-resource-name>

+      <url-pattern>/jmxproxy/*</url-pattern>

+    </web-resource-collection>

+    <auth-constraint>

+       <role-name>manager-jmx</role-name>

+    </auth-constraint>

+  </security-constraint>

+  <security-constraint>

+    <web-resource-collection>

+      <web-resource-name>Status interface</web-resource-name>

+      <url-pattern>/status/*</url-pattern>

+    </web-resource-collection>

+    <auth-constraint>

+       <role-name>manager-gui</role-name>

+       <role-name>manager-script</role-name>

+       <role-name>manager-jmx</role-name>

+       <role-name>manager-status</role-name>

+    </auth-constraint>

+  </security-constraint>

+

+  <!-- Define the Login Configuration for this Application -->

+  <login-config>

+    <auth-method>BASIC</auth-method>

+    <realm-name>Tomcat Manager Application</realm-name>

+  </login-config>

+

+  <!-- Security roles referenced by this web application -->

+  <security-role>

+    <description>

+      The role that is required to access the HTML Manager pages

+    </description>

+    <role-name>manager-gui</role-name>

+  </security-role>

+  <security-role>

+    <description>

+      The role that is required to access the text Manager pages

+    </description>

+    <role-name>manager-script</role-name>

+  </security-role>

+  <security-role>

+    <description>

+      The role that is required to access the HTML JMX Proxy

+    </description>

+    <role-name>manager-jmx</role-name>

+  </security-role>

+  <security-role>

+    <description>

+      The role that is required to access to the Manager Status pages

+    </description>

+    <role-name>manager-status</role-name>

+  </security-role>

+

+  <error-page>

+    <error-code>401</error-code>

+    <location>/WEB-INF/jsp/401.jsp</location>

+  </error-page>

+  <error-page>

+    <error-code>403</error-code>

+    <location>/WEB-INF/jsp/403.jsp</location>

+  </error-page>

+  <error-page>

+    <error-code>404</error-code>

+    <location>/WEB-INF/jsp/404.jsp</location>

+  </error-page>

+

+</web-app>

diff --git a/webapps/manager/images/add.gif b/webapps/manager/images/add.gif
new file mode 100644
index 0000000..0774d07
--- /dev/null
+++ b/webapps/manager/images/add.gif
Binary files differ
diff --git a/webapps/manager/images/asf-logo.gif b/webapps/manager/images/asf-logo.gif
new file mode 100644
index 0000000..22eb9d7
--- /dev/null
+++ b/webapps/manager/images/asf-logo.gif
Binary files differ
diff --git a/webapps/manager/images/code.gif b/webapps/manager/images/code.gif
new file mode 100644
index 0000000..d27307b
--- /dev/null
+++ b/webapps/manager/images/code.gif
Binary files differ
diff --git a/webapps/manager/images/design.gif b/webapps/manager/images/design.gif
new file mode 100644
index 0000000..f5db0a9
--- /dev/null
+++ b/webapps/manager/images/design.gif
Binary files differ
diff --git a/webapps/manager/images/docs.gif b/webapps/manager/images/docs.gif
new file mode 100644
index 0000000..d64a4a1
--- /dev/null
+++ b/webapps/manager/images/docs.gif
Binary files differ
diff --git a/webapps/manager/images/fix.gif b/webapps/manager/images/fix.gif
new file mode 100644
index 0000000..d59ad64
--- /dev/null
+++ b/webapps/manager/images/fix.gif
Binary files differ
diff --git a/webapps/manager/images/tomcat.gif b/webapps/manager/images/tomcat.gif
new file mode 100644
index 0000000..f2aa6f8
--- /dev/null
+++ b/webapps/manager/images/tomcat.gif
Binary files differ
diff --git a/webapps/manager/images/update.gif b/webapps/manager/images/update.gif
new file mode 100644
index 0000000..31e22ab
--- /dev/null
+++ b/webapps/manager/images/update.gif
Binary files differ
diff --git a/webapps/manager/images/void.gif b/webapps/manager/images/void.gif
new file mode 100644
index 0000000..e565824
--- /dev/null
+++ b/webapps/manager/images/void.gif
Binary files differ
diff --git a/webapps/manager/index.jsp b/webapps/manager/index.jsp
new file mode 100644
index 0000000..3cf5cae
--- /dev/null
+++ b/webapps/manager/index.jsp
@@ -0,0 +1,18 @@
+<%--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+--%>

+<% response.sendRedirect(response.encodeRedirectURL(request.getContextPath() +

+        "/html")); %>
\ No newline at end of file
diff --git a/webapps/manager/status.xsd b/webapps/manager/status.xsd
new file mode 100644
index 0000000..5322fd0
--- /dev/null
+++ b/webapps/manager/status.xsd
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

+    <xs:element name="status">

+        <xs:complexType>

+            <xs:sequence>

+                <xs:element name="jvm" type="jvm"/>

+                <xs:element name="connector" type="connector" minOccurs="1" maxOccurs="unbounded"/>

+            </xs:sequence>

+        </xs:complexType>

+    </xs:element>

+    <xs:complexType name="connector">

+        <xs:sequence>

+            <xs:element name="threadInfo" type="threadInfo"/>

+            <xs:element name="requestInfo" type="requestInfo"/>

+            <xs:element name="workers" type="workers"/>

+        </xs:sequence>

+        <xs:attribute name="name" type="xs:string" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="jvm">

+        <xs:sequence>

+            <xs:element name="memory" type="memory"/>

+            <xs:element name="memorypool" type="memorypool" minOccurs="0" maxOccurs="unbounded"/>

+        </xs:sequence>

+    </xs:complexType>

+    <xs:complexType name="memory">

+        <xs:attribute name="free" type="xs:long" use="required"/>

+        <xs:attribute name="total" type="xs:long" use="required"/>

+        <xs:attribute name="max" type="xs:long" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="memorypool">

+        <xs:attribute name="name" type="xs:string" use="required"/>

+        <xs:attribute name="type" type="xs:string" use="required"/>

+        <xs:attribute name="usageInit" type="xs:long" use="required"/>

+        <xs:attribute name="usageCommitted" type="xs:long" use="required"/>

+        <xs:attribute name="usageMax" type="xs:long" use="required"/>

+        <xs:attribute name="usageUsed" type="xs:long" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="requestInfo">

+        <xs:attribute name="maxTime" type="xs:long" use="required"/>

+        <xs:attribute name="processingTime" type="xs:int" use="required"/>

+        <xs:attribute name="requestCount" type="xs:long" use="required"/>

+        <xs:attribute name="errorCount" type="xs:long" use="required"/>

+        <xs:attribute name="bytesReceived" type="xs:long" use="required"/>

+        <xs:attribute name="bytesSent" type="xs:long" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="threadInfo">

+        <xs:attribute name="maxThreads" type="xs:int" use="required"/>

+        <xs:attribute name="currentThreadCount" type="xs:int" use="required"/>

+        <xs:attribute name="currentThreadsBusy" type="xs:int" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="worker">

+        <xs:attribute name="stage" type="xs:string" use="required"/>

+        <xs:attribute name="requestProcessingTime" type="xs:int" use="required"/>

+        <xs:attribute name="requestBytesSent" type="xs:long" use="required"/>

+        <xs:attribute name="requestBytesReceived" type="xs:long" use="required"/>

+        <xs:attribute name="remoteAddr" type="xs:string" use="required"/>

+        <xs:attribute name="virtualHost" type="xs:string" use="required"/>

+        <xs:attribute name="method" type="xs:string" use="required"/>

+        <xs:attribute name="currentUri" type="xs:string" use="required"/>

+        <xs:attribute name="currentQueryString" type="xs:string" use="required"/>

+        <xs:attribute name="protocol" type="xs:string" use="required"/>

+    </xs:complexType>

+    <xs:complexType name="workers">

+        <xs:sequence>

+            <xs:element name="worker" type="worker" minOccurs="0" maxOccurs="unbounded"/>

+        </xs:sequence>

+    </xs:complexType>

+</xs:schema>

diff --git a/webapps/manager/xform.xsl b/webapps/manager/xform.xsl
new file mode 100644
index 0000000..61947f1
--- /dev/null
+++ b/webapps/manager/xform.xsl
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>

+<!--

+  Licensed to the Apache Software Foundation (ASF) under one or more

+  contributor license agreements.  See the NOTICE file distributed with

+  this work for additional information regarding copyright ownership.

+  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.

+-->

+

+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

+  version="1.0">

+

+  <!-- Output method -->

+  <xsl:output encoding="iso-8859-1"

+              indent="no"/>

+

+  <xsl:template match="status">

+    <html>

+    <head>

+        <TITLE>Tomcat Status</TITLE>

+        <STYLE type="text/css">

+            body, table, tr, td, a, div, span {

+                vertical-align : top;

+            }

+        </STYLE>

+    </head>

+    <body>

+      <div style='font-size:20px;'>Tomcat Status</div>

+

+      <xsl:apply-templates select="jvm"/>

+      <xsl:apply-templates select="connector"/>

+     </body>

+    </html>

+  </xsl:template>

+

+  <xsl:template match="jvm">

+   <xsl:apply-templates select="memory"/>

+   <b>Memory Pools</b><br />

+   <xsl:apply-templates select="memorypool"/>

+   <hr />

+  </xsl:template>

+

+  <xsl:template match="memory">

+    <table><tr>

+             <td><b>JVM:</b></td>

+             <td><b>free:</b> <xsl:value-of select="@free"/></td>

+             <td><b>total:</b> <xsl:value-of select="@total"/></td>

+             <td><b>max:</b> <xsl:value-of select="@max"/></td>

+           </tr>

+    </table><hr />

+  </xsl:template>

+

+  <xsl:template match="memorypool">

+    <table><tr>

+             <td><b>Name:</b> <xsl:value-of select="@name"/></td>

+             <td><b>Type:</b> <xsl:value-of select="@type"/></td>

+             <td><b>Initial:</b> <xsl:value-of select="@usageInit"/></td>

+             <td><b>Committed:</b> <xsl:value-of select="@usageCommitted"/></td>

+             <td><b>Maximum:</b> <xsl:value-of select="@usageMax"/></td>

+             <td><b>Used:</b> <xsl:value-of select="@usageUsed"/></td>

+           </tr>

+    </table>

+  </xsl:template>

+

+  <xsl:template match="connector">

+     <b>Connector -- </b> <xsl:value-of select="@name"/><br />

+

+      <xsl:apply-templates select="threadInfo"/>

+      <xsl:apply-templates select="requestInfo"/>

+      <xsl:apply-templates select="workers"/>

+  </xsl:template>

+

+  <xsl:template match="threadInfo">

+    <table><tr>

+             <td><b>threadInfo</b></td>

+             <td><b>maxThreads:</b> <xsl:value-of select="@maxThreads"/></td>

+             <td><b>currentThreadCount:</b> <xsl:value-of select="@currentThreadCount"/></td>

+             <td><b>currentThreadsBusy:</b> <xsl:value-of select="@currentThreadsBusy"/></td>

+           </tr>

+    </table><hr />

+  </xsl:template>

+

+  <xsl:template match="requestInfo">

+    <table><tr>

+             <td><b>requestInfo </b></td>

+             <td><b>maxTime:</b> <xsl:value-of select="@maxTime"/></td>

+             <td><b>processingTime:</b> <xsl:value-of select="@processingTime"/></td>

+             <td><b>requestCount:</b> <xsl:value-of select="@requestCount"/></td>

+             <td><b>errorCount:</b> <xsl:value-of select="@errorCount"/></td>

+             <td><b>bytesReceived:</b> <xsl:value-of select="@bytesReceived"/></td>

+             <td><b>bytesSent:</b> <xsl:value-of select="@bytesSent"/></td>

+           </tr>

+    </table><hr />

+  </xsl:template>

+

+  <xsl:template match="workers">

+   <table>

+    <tr><th>Stage</th><th>Time</th><th>B Sent</th><th>B Recv</th><th>Client</th><th>VHost</th><th>Request</th></tr>

+      <xsl:apply-templates select="worker"/>

+

+   </table><hr />

+  </xsl:template>

+

+  <xsl:template match="worker">

+   <tr>

+    <td><xsl:value-of select="@stage"/></td>

+    <td><xsl:value-of select="@requestProcessingTime"/></td>

+    <td><xsl:value-of select="@requestBytesSent"/></td>

+    <td><xsl:value-of select="@requestBytesReceived"/></td>

+    <td><xsl:value-of select="@remoteAddr"/></td>

+    <td><xsl:value-of select="@virtualHost"/></td>

+    <td><xsl:value-of select="@method"/> <xsl:value-of select="@currentUri"/>?<xsl:value-of select="@currentQueryString"/> <xsl:value-of select="@protocol"/></td>

+   </tr>

+  </xsl:template>

+

+</xsl:stylesheet>