You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2020/06/07 19:16:45 UTC

[tomcat] branch master updated: Update Tomcat to use Jakarta EE 9 schema

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new 092badf  Update Tomcat to use Jakarta EE 9 schema
092badf is described below

commit 092badf63d7bc993b0efe48096f0e84b230d33db
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Sun Jun 7 20:16:31 2020 +0100

    Update Tomcat to use Jakarta EE 9 schema
---
 LICENSE                                            |  13 +-
 conf/web.xml                                       |   8 +-
 .../tomcat/util/descriptor/DigesterFactory.java    |   9 +
 .../tomcat/util/descriptor/LocalResolver.java      |   3 +-
 .../tomcat/util/descriptor/XmlIdentifiers.java     |   6 +
 .../apache/tomcat/util/descriptor/web/WebXml.java  |   7 +-
 res/INSTALLLICENSE                                 |  13 +-
 res/META-INF/servlet-api.jar.license               | 286 +++++++++++++++++++++
 res/maven/tomcat-servlet-api.pom                   |  15 +-
 res/rat/rat-excludes.txt                           |  20 ++
 .../servlet/resources/TestSchemaValidation.java    |  17 +-
 test/org/apache/jasper/TestJspC.java               |   8 +
 test/org/apache/jasper/compiler/TestJspConfig.java |  18 ++
 test/org/apache/jasper/compiler/TestValidator.java |  25 ++
 .../jasper/servlet/TestJspCServletContext.java     |  13 +-
 .../tomcat/util/descriptor/web/TestWebXml.java     |   2 +-
 .../web.xml => test/webapp-5.0/WEB-INF/tags11.tld  |  34 ++-
 .../web.xml => test/webapp-5.0/WEB-INF/tags12.tld  |  34 ++-
 .../web.xml => test/webapp-5.0/WEB-INF/tags20.tld  |  34 ++-
 .../web.xml => test/webapp-5.0/WEB-INF/tags21.tld  |  34 ++-
 {webapps/docs => test/webapp-5.0}/WEB-INF/web.xml  |  21 +-
 .../web.xml => test/webapp-5.0/el-as-literal.jsp   |  23 +-
 .../web.xml => test/webapp-5.0/tld-versions.jsp    |  31 ++-
 test/webapp/WEB-INF/web.xml                        |   8 +-
 webapps/ROOT/WEB-INF/web.xml                       |   8 +-
 webapps/docs/WEB-INF/web.xml                       |   8 +-
 webapps/docs/changelog.xml                         |  11 +
 webapps/examples/WEB-INF/web.xml                   |   8 +-
 webapps/host-manager/WEB-INF/web.xml               |   8 +-
 webapps/manager/WEB-INF/web.xml                    |   8 +-
 30 files changed, 598 insertions(+), 135 deletions(-)

diff --git a/LICENSE b/LICENSE
index 5065e55..218e7fd 100644
--- a/LICENSE
+++ b/LICENSE
@@ -210,7 +210,14 @@ and license terms. Your use of these subcomponents is subject to the terms and
 conditions of the following licenses.
 
 
-For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component:
+For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component and the
+following Jakarta EE Schemas:
+- jakartaee_9.xsd
+- jakarta_web-services_2_0.xsd
+- jakarta_web-services_client_2_0.xsd
+- jsp_3_0.xsd
+- web-app_5_0.xsd
+- web-commonn_5_0.xsd
 
 Eclipse Public License - v 2.0
 
@@ -475,8 +482,8 @@ No third-party beneficiary rights are created under this Agreement.
 
 Exhibit A - Form of Secondary Licenses Notice
 
-"This Source Code may also be made available under the following 
-Secondary Licenses when the conditions for such availability set forth 
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
 in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
 version(s), and exceptions or additional permissions here}."
 
diff --git a/conf/web.xml b/conf/web.xml
index 2d08297..a0f604a 100644
--- a/conf/web.xml
+++ b/conf/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0">
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0">
 
   <!-- ======================== Introduction ============================== -->
   <!-- This document defines default values for *all* web applications      -->
diff --git a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
index d920a44..9413de5 100644
--- a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
+++ b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java
@@ -125,6 +125,15 @@ public class DigesterFactory {
         addSelf(systemIds, "web-common_4_0.xsd");
         addSelf(systemIds, "javaee_8.xsd");
 
+        // from JakartaEE 9
+        add(systemIds, XmlIdentifiers.WEB_50_XSD, locationFor("web-app_5_0.xsd"));
+        add(systemIds, XmlIdentifiers.WEB_FRAGMENT_50_XSD, locationFor("web-fragment_5_0.xsd"));
+        addSelf(systemIds, "web-common_5_0.xsd");
+        addSelf(systemIds, "jakartaee_9.xsd");
+        addSelf(systemIds, "jsp_3_0.xsd");
+        addSelf(systemIds, "jakartaee_web_services_2_0.xsd");
+        addSelf(systemIds, "jakartaee_web_services_client_2_0.xsd");
+
         SERVLET_API_PUBLIC_IDS = Collections.unmodifiableMap(publicIds);
         SERVLET_API_SYSTEM_IDS = Collections.unmodifiableMap(systemIds);
     }
diff --git a/java/org/apache/tomcat/util/descriptor/LocalResolver.java b/java/org/apache/tomcat/util/descriptor/LocalResolver.java
index 37a952b..68516e5 100644
--- a/java/org/apache/tomcat/util/descriptor/LocalResolver.java
+++ b/java/org/apache/tomcat/util/descriptor/LocalResolver.java
@@ -40,7 +40,8 @@ public class LocalResolver implements EntityResolver2 {
     private static final String[] JAVA_EE_NAMESPACES = {
         XmlIdentifiers.JAVAEE_1_4_NS,
         XmlIdentifiers.JAVAEE_5_NS,
-        XmlIdentifiers.JAVAEE_7_NS};
+        XmlIdentifiers.JAVAEE_7_NS,
+        XmlIdentifiers.JAKARTAEE_9_NS};
 
 
     private final Map<String,String> publicIds;
diff --git a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
index 2309004..703a391 100644
--- a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
+++ b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
@@ -78,6 +78,12 @@ public final class XmlIdentifiers {
     public static final String WEB_40_XSD = JAVAEE_8_NS + "/web-app_4_0.xsd";
     public static final String WEB_FRAGMENT_40_XSD = JAVAEE_8_NS + "/web-fragment_4_0.xsd";
 
+    // from Jakarta EE 9
+    public static final String JAKARTAEE_9_NS = "https://jakarta.ee/xml/ns/jakartaee";
+    public static final String WEB_50_XSD = JAKARTAEE_9_NS + "/web-app_5_0.xsd";
+    public static final String WEB_FRAGMENT_50_XSD = JAKARTAEE_9_NS + "/web-fragment_5_0.xsd";
+    public static final String WEBSERVICES_20_XSD = JAKARTAEE_9_NS + "/jakartaee_web_services_2_0.xsd";
+
     private XmlIdentifiers() {
     }
 }
\ No newline at end of file
diff --git a/java/org/apache/tomcat/util/descriptor/web/WebXml.java b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
index 814c1d3..d13a439 100644
--- a/java/org/apache/tomcat/util/descriptor/web/WebXml.java
+++ b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
@@ -182,6 +182,10 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
                 majorVersion = 4;
                 minorVersion = 0;
                 break;
+            case "5.0":
+                majorVersion = 5;
+                minorVersion = 0;
+                break;
             default:
                 log.warn(sm.getString("webXml.version.unknown", version));
         }
@@ -233,8 +237,7 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
     }
 
     // Derived major and minor version attributes
-    // Default to 4.0 until we know otherwise
-    private int majorVersion = 4;
+    private int majorVersion = 5;
     private int minorVersion = 0;
     public int getMajorVersion() { return majorVersion; }
     public int getMinorVersion() { return minorVersion; }
diff --git a/res/INSTALLLICENSE b/res/INSTALLLICENSE
index 5065e55..218e7fd 100644
--- a/res/INSTALLLICENSE
+++ b/res/INSTALLLICENSE
@@ -210,7 +210,14 @@ and license terms. Your use of these subcomponents is subject to the terms and
 conditions of the following licenses.
 
 
-For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component:
+For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component and the
+following Jakarta EE Schemas:
+- jakartaee_9.xsd
+- jakarta_web-services_2_0.xsd
+- jakarta_web-services_client_2_0.xsd
+- jsp_3_0.xsd
+- web-app_5_0.xsd
+- web-commonn_5_0.xsd
 
 Eclipse Public License - v 2.0
 
@@ -475,8 +482,8 @@ No third-party beneficiary rights are created under this Agreement.
 
 Exhibit A - Form of Secondary Licenses Notice
 
-"This Source Code may also be made available under the following 
-Secondary Licenses when the conditions for such availability set forth 
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
 in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
 version(s), and exceptions or additional permissions here}."
 
diff --git a/res/META-INF/servlet-api.jar.license b/res/META-INF/servlet-api.jar.license
index 8de5b22..609267d 100644
--- a/res/META-INF/servlet-api.jar.license
+++ b/res/META-INF/servlet-api.jar.license
@@ -562,3 +562,289 @@ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
    the Northern District of California and the state courts of the State of
    California, with venue lying in Santa Clara County, California.
 
+
+For the following Jakarta EE Schemas:
+- jakartaee_9.xsd
+- jakarta_web-services_2_0.xsd
+- jakarta_web-services_client_2_0.xsd
+- jsp_3_0.xsd
+- web-app_5_0.xsd
+- web-commonn_5_0.xsd
+
+Eclipse Public License - v 2.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 content
+     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 changes or additions to the Program that
+  are not Modified Works.
+
+"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
+or any Secondary License (as applicable), including Contributors.
+
+"Derivative Works" shall mean any work, whether in Source Code or other
+form, that is based on (or derived from) the Program and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship.
+
+"Modified Works" shall mean any work in Source Code or other form that
+results from an addition to, deletion from, or modification of the
+contents of the Program, including, for purposes of clarity any new file
+in Source Code form that contains any contents of the Program. Modified
+Works shall not include works that contain only declarations,
+interfaces, types, classes, structures, or files of the Program solely
+in each case in order to link to, bind by name, or subclass the Program
+or Modified Works thereof.
+
+"Distribute" means the acts of a) distributing or b) making available
+in any manner that enables the transfer of a copy.
+
+"Source Code" means the form of a Program preferred for making
+modifications, including but not limited to software source code,
+documentation source, and configuration files.
+
+"Secondary License" means either the GNU General Public License,
+Version 2.0, or any later versions of that license, including any
+exceptions or additional permissions as identified by the initial
+Contributor.
+
+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.
+
+  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 or other 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.
+
+  e) Notwithstanding the terms of any Secondary License, no
+  Contributor makes additional grants to any Recipient (other than
+  those set forth in this Agreement) as a result of such Recipient's
+  receipt of the Program under the terms of a Secondary License
+  (if permitted under the terms of Section 3).
+
+3. REQUIREMENTS
+
+3.1 If a Contributor Distributes the Program in any form, then:
+
+  a) the Program must also be made available as Source Code, in
+  accordance with section 3.2, and the Contributor must accompany
+  the Program with a statement that the Source Code for the Program
+  is available under this Agreement, and informs Recipients how to
+  obtain it in a reasonable manner on or through a medium customarily
+  used for software exchange; and
+
+  b) the Contributor may Distribute the Program under a license
+  different than this Agreement, provided that such license:
+     i) effectively disclaims on behalf of all other 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 other Contributors all
+     liability for damages, including direct, indirect, special,
+     incidental and consequential damages, such as lost profits;
+
+     iii) does not attempt to limit or alter the recipients' rights
+     in the Source Code under section 3.2; and
+
+     iv) requires any subsequent distribution of the Program by any
+     party to be under a license that satisfies the requirements
+     of this section 3.
+
+3.2 When the Program is Distributed as Source Code:
+
+  a) it must be made available under this Agreement, or if the
+  Program (i) is combined with other material in a separate file or
+  files made available under a Secondary License, and (ii) the initial
+  Contributor attached to the Source Code the notice described in
+  Exhibit A of this Agreement, then the Program may be made available
+  under the terms of such Secondary Licenses, and
+
+  b) a copy of this Agreement must be included with each copy of
+  the Program.
+
+3.3 Contributors may not remove or alter any copyright, patent,
+trademark, attribution notices, disclaimers of warranty, or limitations
+of liability ("notices") contained within the Program from any copy of
+the Program which they Distribute, provided that Contributors may add
+their own appropriate notices.
+
+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, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, 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, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, 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. Nothing in this Agreement is intended
+to be enforceable by any entity that is not a Contributor or Recipient.
+No third-party beneficiary rights are created under this Agreement.
+
+Exhibit A - Form of Secondary Licenses Notice
+
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
+in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+version(s), and exceptions or additional permissions here}."
+
+  Simply including a copy of this Agreement, including this Exhibit A
+  is not sufficient to license the Source Code under Secondary Licenses.
+
+  If it is not possible or desirable to put the notice in a particular
+  file, then You may include the notice in a location (such as a LICENSE
+  file in a relevant directory) where a recipient would be likely to
+  look for such a notice.
+
+  You may add additional accurate notices of copyright ownership.
diff --git a/res/maven/tomcat-servlet-api.pom b/res/maven/tomcat-servlet-api.pom
index 5879d17..526e4e8 100644
--- a/res/maven/tomcat-servlet-api.pom
+++ b/res/maven/tomcat-servlet-api.pom
@@ -29,11 +29,13 @@
     <license>
       <name>
         Apache License, Version 2.0 and
-        Common Development And Distribution License (CDDL) Version 1.0
+        Common Development And Distribution License (CDDL) Version 1.0 and
+        Eclipse Public License - v 2.0
       </name>
       <url>
         http://www.apache.org/licenses/LICENSE-2.0.txt and
-        http://www.opensource.org/licenses/cddl1.txt
+        http://www.opensource.org/licenses/cddl1.txt and
+        https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
       </url>
       <distribution>repo</distribution>
       <comments>
@@ -59,7 +61,14 @@
         web-app_4_0.xsd,
         web-common_4_0.xsd,
         web-fragment_4_0.xsd,
-        to which the CDDL version 1.0 applies.
+        to which the CDDL version 1.0 applies and
+        jakartaee_9.xsd
+        jakarta_web-services_2_0.xsd
+        jakarta_web-services_client_2_0.xsd
+        jsp_3_0.xsd
+        web-app_5_0.xsd
+        web-commonn_5_0.xsd
+        to which the EPLv2 applies.
       </comments>
     </license>
   </licenses>
diff --git a/res/rat/rat-excludes.txt b/res/rat/rat-excludes.txt
index 2bafb4e..ba3eaca 100644
--- a/res/rat/rat-excludes.txt
+++ b/res/rat/rat-excludes.txt
@@ -114,65 +114,85 @@ java/jakarta/servlet/resources/javaee_5.xsd
 java/jakarta/servlet/resources/javaee_6.xsd
 java/jakarta/servlet/resources/javaee_7.xsd
 java/jakarta/servlet/resources/javaee_8.xsd
+java/jakarta/servlet/resources/jakartaee_9.xsd
 java/jakarta/servlet/resources/javaee_web_services_1_2.xsd
 java/jakarta/servlet/resources/javaee_web_services_1_3.xsd
 java/jakarta/servlet/resources/javaee_web_services_1_4.xsd
+java/jakarta/servlet/resources/jakartaee_web_services_2_0.xsd
 java/jakarta/servlet/resources/javaee_web_services_client_1_2.xsd
 java/jakarta/servlet/resources/javaee_web_services_client_1_3.xsd
 java/jakarta/servlet/resources/javaee_web_services_client_1_4.xsd
+java/jakarta/servlet/resources/jakartaee_web_services_client_2_0.xsd
 java/jakarta/servlet/resources/jsp_2_2.xsd
 java/jakarta/servlet/resources/jsp_2_3.xsd
+java/jakarta/servlet/resources/jsp_3_0.xsd
 java/jakarta/servlet/resources/web-app_3_0.xsd
 java/jakarta/servlet/resources/web-app_3_1.xsd
 java/jakarta/servlet/resources/web-app_4_0.xsd
+java/jakarta/servlet/resources/web-app_5_0.xsd
 java/jakarta/servlet/resources/web-common_3_0.xsd
 java/jakarta/servlet/resources/web-common_3_1.xsd
 java/jakarta/servlet/resources/web-common_4_0.xsd
+java/jakarta/servlet/resources/web-common_5_0.xsd
 java/jakarta/servlet/resources/web-fragment_3_0.xsd
 java/jakarta/servlet/resources/web-fragment_3_1.xsd
 java/jakarta/servlet/resources/web-fragment_4_0.xsd
+java/jakarta/servlet/resources/web-fragment_5_0.xsd
 output/classes/jakarta/servlet/resources/javaee_5.xsd
 output/classes/jakarta/servlet/resources/javaee_6.xsd
 output/classes/jakarta/servlet/resources/javaee_7.xsd
 output/classes/jakarta/servlet/resources/javaee_8.xsd
+output/classes/jakarta/servlet/resources/jakartaee_9.xsd
 output/classes/jakarta/servlet/resources/javaee_web_services_1_2.xsd
 output/classes/jakarta/servlet/resources/javaee_web_services_1_3.xsd
 output/classes/jakarta/servlet/resources/javaee_web_services_1_4.xsd
+output/classes/jakarta/servlet/resources/jakartaee_web_services_2_0.xsd
 output/classes/jakarta/servlet/resources/javaee_web_services_client_1_2.xsd
 output/classes/jakarta/servlet/resources/javaee_web_services_client_1_3.xsd
 output/classes/jakarta/servlet/resources/javaee_web_services_client_1_4.xsd
+output/classes/jakarta/servlet/resources/jakartaee_web_services_client_1_4.xsd
 output/classes/jakarta/servlet/resources/jsp_2_2.xsd
 output/classes/jakarta/servlet/resources/jsp_2_3.xsd
+output/classes/jakarta/servlet/resources/jsp_3_0.xsd
 output/classes/jakarta/servlet/resources/web-app_3_0.xsd
 output/classes/jakarta/servlet/resources/web-app_3_1.xsd
 output/classes/jakarta/servlet/resources/web-app_4_0.xsd
+output/classes/jakarta/servlet/resources/web-app_5_0.xsd
 output/classes/jakarta/servlet/resources/web-common_3_0.xsd
 output/classes/jakarta/servlet/resources/web-common_3_1.xsd
 output/classes/jakarta/servlet/resources/web-common_4_0.xsd
 output/classes/jakarta/servlet/resources/web-fragment_3_0.xsd
 output/classes/jakarta/servlet/resources/web-fragment_3_1.xsd
 output/classes/jakarta/servlet/resources/web-fragment_4_0.xsd
+output/classes/jakarta/servlet/resources/web-fragment_5_0.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_5.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_6.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_7.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_8.xsd
+output/dist/src/java/jakarta/servlet/resources/jakartaee_9.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_web_services_1_2.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_web_services_1_3.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_web_services_1_4.xsd
+output/dist/src/java/jakarta/servlet/resources/jakartaee_web_services_2_0.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_web_services_client_1_2.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_web_services_client_1_3.xsd
 output/dist/src/java/jakarta/servlet/resources/javaee_web_services_client_1_4.xsd
+output/dist/src/java/jakarta/servlet/resources/jakartaee_web_services_client_2_0.xsd
 output/dist/src/java/jakarta/servlet/resources/jsp_2_2.xsd
 output/dist/src/java/jakarta/servlet/resources/jsp_2_3.xsd
+output/dist/src/java/jakarta/servlet/resources/jsp_3_0.xsd
 output/dist/src/java/jakarta/servlet/resources/web-app_3_0.xsd
 output/dist/src/java/jakarta/servlet/resources/web-app_3_1.xsd
 output/dist/src/java/jakarta/servlet/resources/web-app_4_0.xsd
+output/dist/src/java/jakarta/servlet/resources/web-app_5_0.xsd
 output/dist/src/java/jakarta/servlet/resources/web-common_3_0.xsd
 output/dist/src/java/jakarta/servlet/resources/web-common_3_1.xsd
 output/dist/src/java/jakarta/servlet/resources/web-common_4_0.xsd
+output/dist/src/java/jakarta/servlet/resources/web-common_5_0.xsd
 output/dist/src/java/jakarta/servlet/resources/web-fragment_3_0.xsd
 output/dist/src/java/jakarta/servlet/resources/web-fragment_3_1.xsd
 output/dist/src/java/jakarta/servlet/resources/web-fragment_4_0.xsd
+output/dist/src/java/jakarta/servlet/resources/web-fragment_5_0.xsd
 
 output/dist/src/res/checkstyle/header-al2.txt
 res/checkstyle/header-al2.txt
diff --git a/test/jakarta/servlet/resources/TestSchemaValidation.java b/test/jakarta/servlet/resources/TestSchemaValidation.java
index 8a9a500..d47d2b2 100644
--- a/test/jakarta/servlet/resources/TestSchemaValidation.java
+++ b/test/jakarta/servlet/resources/TestSchemaValidation.java
@@ -39,7 +39,7 @@ public class TestSchemaValidation {
         digester.push(new WebXml());
         WebXml desc = (WebXml) digester.parse(
                 new File("test/webapp/WEB-INF/web.xml"));
-        Assert.assertEquals("4.0", desc.getVersion());
+        Assert.assertEquals("5.0", desc.getVersion());
         Assert.assertEquals(0, handler.getErrors().size());
         Assert.assertEquals(0, handler.getWarnings().size());
     }
@@ -143,4 +143,19 @@ public class TestSchemaValidation {
         Assert.assertEquals(0, handler.getErrors().size());
         Assert.assertEquals(0, handler.getWarnings().size());
     }
+
+    @Test
+    public void testWebapp_5_0() throws Exception {
+        XmlErrorHandler handler = new XmlErrorHandler();
+        Digester digester = DigesterFactory.newDigester(
+                true, true, new WebRuleSet(false), true);
+        digester.setErrorHandler(handler);
+        digester.push(new WebXml());
+        WebXml desc = (WebXml) digester.parse(
+                new File("test/webapp-5.0/WEB-INF/web.xml"));
+        Assert.assertEquals("5.0", desc.getVersion());
+        Assert.assertEquals(0, handler.getErrors().size());
+        Assert.assertEquals(0, handler.getWarnings().size());
+    }
+
 }
diff --git a/test/org/apache/jasper/TestJspC.java b/test/org/apache/jasper/TestJspC.java
index 9014039..bee686b 100644
--- a/test/org/apache/jasper/TestJspC.java
+++ b/test/org/apache/jasper/TestJspC.java
@@ -103,6 +103,14 @@ public class TestJspC {
         verify(webappOut);
     }
 
+    @Test
+    public void precompileWebapp_5_0() throws IOException {
+        File appDir = new File("test/webapp-5.0");
+        File webappOut = new File(outputDir, appDir.getName());
+        precompile(appDir, webappOut);
+        verify(webappOut);
+    }
+
     private void verify(File webappOut) {
         // for now, just check some expected files exist
         Assert.assertTrue(new File(webappOut, "generated_web.xml").exists());
diff --git a/test/org/apache/jasper/compiler/TestJspConfig.java b/test/org/apache/jasper/compiler/TestJspConfig.java
index 21a1464..e9f6c1d 100644
--- a/test/org/apache/jasper/compiler/TestJspConfig.java
+++ b/test/org/apache/jasper/compiler/TestJspConfig.java
@@ -157,4 +157,22 @@ public class TestJspConfig extends TomcatBaseTest {
 
         Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0);
     }
+
+    @Test
+    public void testServlet50NoEL() throws Exception {
+        Tomcat tomcat = getTomcatInstance();
+
+        File appDir = new File("test/webapp-5.0");
+        // app dir is relative to server home
+        tomcat.addWebapp(null, "/test", appDir.getAbsolutePath());
+
+        tomcat.start();
+
+        ByteChunk res = getUrl("http://localhost:" + getPort() +
+                "/test/el-as-literal.jsp");
+
+        String result = res.toString();
+
+        Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0);
+    }
 }
diff --git a/test/org/apache/jasper/compiler/TestValidator.java b/test/org/apache/jasper/compiler/TestValidator.java
index 248e3cb..1cef422 100644
--- a/test/org/apache/jasper/compiler/TestValidator.java
+++ b/test/org/apache/jasper/compiler/TestValidator.java
@@ -218,6 +218,31 @@ public class TestValidator extends TomcatBaseTest {
         Assert.assertTrue(result.indexOf("<p>06-hello world</p>") > 0);
     }
 
+    @Test
+    public void testTldVersions50() throws Exception {
+        Tomcat tomcat = getTomcatInstance();
+
+        File appDir =
+            new File("test/webapp-5.0");
+        // app dir is relative to server home
+        tomcat.addWebapp(null, "/test", appDir.getAbsolutePath());
+
+        tomcat.start();
+
+        ByteChunk res = getUrl("http://localhost:" + getPort() +
+                "/test/tld-versions.jsp");
+
+        String result = res.toString();
+
+        Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>#{'01-hello world'}</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>02-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>#{'03-hello world'}</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>04-hello world</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>#{'05-hello world'}</p>") > 0);
+        Assert.assertTrue(result.indexOf("<p>06-hello world</p>") > 0);
+    }
+
     public static class Echo extends TagSupport {
 
         private static final long serialVersionUID = 1L;
diff --git a/test/org/apache/jasper/servlet/TestJspCServletContext.java b/test/org/apache/jasper/servlet/TestJspCServletContext.java
index df1728c..4fbcd51 100644
--- a/test/org/apache/jasper/servlet/TestJspCServletContext.java
+++ b/test/org/apache/jasper/servlet/TestJspCServletContext.java
@@ -34,7 +34,7 @@ public class TestJspCServletContext {
         File appDir = new File("test/webapp");
         JspCServletContext context = new JspCServletContext(
                 null, appDir.toURI().toURL(), null, false, false);
-        Assert.assertEquals(4, context.getEffectiveMajorVersion());
+        Assert.assertEquals(5, context.getEffectiveMajorVersion());
         Assert.assertEquals(0, context.getEffectiveMinorVersion());
         JspConfigDescriptor jspConfigDescriptor =
                 context.getJspConfigDescriptor();
@@ -123,13 +123,22 @@ public class TestJspCServletContext {
         Assert.assertEquals(0, context.getEffectiveMinorVersion());
     }
 
+    @Test
+    public void testWebapp_5_0() throws Exception {
+        File appDir = new File("test/webapp-5.0");
+        JspCServletContext context = new JspCServletContext(
+                null, appDir.toURI().toURL(), null, false, false);
+        Assert.assertEquals(5, context.getEffectiveMajorVersion());
+        Assert.assertEquals(0, context.getEffectiveMinorVersion());
+    }
+
 
     @Test
     public void testWebresources() throws Exception {
         File appDir = new File("test/webresources/dir1");
         JspCServletContext context = new JspCServletContext(
                 null, appDir.toURI().toURL(), null, false, false);
-        Assert.assertEquals(4, context.getEffectiveMajorVersion());
+        Assert.assertEquals(5, context.getEffectiveMajorVersion());
         Assert.assertEquals(0, context.getEffectiveMinorVersion());
     }
 
diff --git a/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java b/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java
index 2c0195e..d68605c 100644
--- a/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java
+++ b/test/org/apache/tomcat/util/descriptor/web/TestWebXml.java
@@ -46,7 +46,7 @@ public class TestWebXml {
         WebXml webxml = new WebXml();
 
         // Defaults
-        Assert.assertEquals(4, webxml.getMajorVersion());
+        Assert.assertEquals(5, webxml.getMajorVersion());
         Assert.assertEquals(0, webxml.getMinorVersion());
 
         // Both get changed
diff --git a/webapps/docs/WEB-INF/web.xml b/test/webapp-5.0/WEB-INF/tags11.tld
similarity index 55%
copy from webapps/docs/WEB-INF/web.xml
copy to test/webapp-5.0/WEB-INF/tags11.tld
index 9d9fd36..3c7ae98 100644
--- a/webapps/docs/WEB-INF/web.xml
+++ b/test/webapp-5.0/WEB-INF/tags11.tld
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?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
@@ -14,16 +14,24 @@
   WITHOUT 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://xmlns.jcp.org/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
-  metadata-complete="true">
+--><!DOCTYPE taglib
+      PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
+      "http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd">
+<taglib>
+  <tlibversion>1.0</tlibversion>
+  <jspversion>1.1</jspversion>
+  <shortname>Tags11</shortname>
+  <uri>http://tomcat.apache.org/tags11</uri>
 
-  <display-name>Tomcat Documentation</display-name>
-  <description>
-     Tomcat Documentation.
-  </description>
-</web-app>
+  <tag>
+    <name>Echo</name>
+    <tagclass>org.apache.jasper.compiler.TestValidator$Echo</tagclass>
+    <bodycontent>empty</bodycontent>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/webapps/docs/WEB-INF/web.xml b/test/webapp-5.0/WEB-INF/tags12.tld
similarity index 55%
copy from webapps/docs/WEB-INF/web.xml
copy to test/webapp-5.0/WEB-INF/tags12.tld
index 9d9fd36..533235b 100644
--- a/webapps/docs/WEB-INF/web.xml
+++ b/test/webapp-5.0/WEB-INF/tags12.tld
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?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
@@ -14,16 +14,24 @@
   WITHOUT 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://xmlns.jcp.org/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
-  metadata-complete="true">
+--><!DOCTYPE taglib
+      PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
+      "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
+<taglib>
+  <tlib-version>1.0</tlib-version>
+  <jsp-version>1.2</jsp-version>
+  <short-name>Tags12</short-name>
+  <uri>http://tomcat.apache.org/tags12</uri>
 
-  <display-name>Tomcat Documentation</display-name>
-  <description>
-     Tomcat Documentation.
-  </description>
-</web-app>
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/webapps/docs/WEB-INF/web.xml b/test/webapp-5.0/WEB-INF/tags20.tld
similarity index 52%
copy from webapps/docs/WEB-INF/web.xml
copy to test/webapp-5.0/WEB-INF/tags20.tld
index 9d9fd36..056c484 100644
--- a/webapps/docs/WEB-INF/web.xml
+++ b/test/webapp-5.0/WEB-INF/tags20.tld
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?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
@@ -14,16 +14,24 @@
   WITHOUT 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://xmlns.jcp.org/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
-  metadata-complete="true">
+--><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">
+  <tlib-version>1.0</tlib-version>
+  <short-name>Tags20</short-name>
+  <uri>http://tomcat.apache.org/tags20</uri>
 
-  <display-name>Tomcat Documentation</display-name>
-  <description>
-     Tomcat Documentation.
-  </description>
-</web-app>
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/webapps/docs/WEB-INF/web.xml b/test/webapp-5.0/WEB-INF/tags21.tld
similarity index 52%
copy from webapps/docs/WEB-INF/web.xml
copy to test/webapp-5.0/WEB-INF/tags21.tld
index 9d9fd36..4a19675 100644
--- a/webapps/docs/WEB-INF/web.xml
+++ b/test/webapp-5.0/WEB-INF/tags21.tld
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?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
@@ -14,16 +14,24 @@
   WITHOUT 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://xmlns.jcp.org/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
-  metadata-complete="true">
+--><taglib 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-jsptaglibrary_2_1.xsd"
+      version="2.1">
+  <tlib-version>1.0</tlib-version>
+  <short-name>Tags21</short-name>
+  <uri>http://tomcat.apache.org/tags21</uri>
 
-  <display-name>Tomcat Documentation</display-name>
-  <description>
-     Tomcat Documentation.
-  </description>
-</web-app>
+  <tag>
+    <name>Echo</name>
+    <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class>
+    <body-content>empty</body-content>
+    <attribute>
+      <name>echo</name>
+      <required>yes</required>
+      <rtexprvalue>true</rtexprvalue>
+    </attribute>
+  </tag>
+
+</taglib>
\ No newline at end of file
diff --git a/webapps/docs/WEB-INF/web.xml b/test/webapp-5.0/WEB-INF/web.xml
similarity index 55%
copy from webapps/docs/WEB-INF/web.xml
copy to test/webapp-5.0/WEB-INF/web.xml
index 9d9fd36..2e26fb5 100644
--- a/webapps/docs/WEB-INF/web.xml
+++ b/test/webapp-5.0/WEB-INF/web.xml
@@ -15,15 +15,22 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0"
   metadata-complete="true">
 
-  <display-name>Tomcat Documentation</display-name>
+  <display-name>Tomcat Servlet 5.0 Tests</display-name>
   <description>
-     Tomcat Documentation.
+    Provides a web application used by the Tomcat unit tests to ensure that
+    Tomcat meets the requirements of the current JSP and Servlet specification
+    for web applications that declare that they follow version 5.0 of the
+    Servlet specification and version 3.0 of the JSP specification. This
+    typically means ensuring that features introduced in later versions of the
+    specification do not change the behaviour of applications that declared an
+    earlier version of the specification.
   </description>
-</web-app>
+
+</web-app>
\ No newline at end of file
diff --git a/webapps/ROOT/WEB-INF/web.xml b/test/webapp-5.0/el-as-literal.jsp
similarity index 63%
copy from webapps/ROOT/WEB-INF/web.xml
copy to test/webapp-5.0/el-as-literal.jsp
index d94a86b..f48e114 100644
--- a/webapps/ROOT/WEB-INF/web.xml
+++ b/test/webapp-5.0/el-as-literal.jsp
@@ -1,5 +1,4 @@
-<?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.
@@ -14,17 +13,9 @@
   WITHOUT 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://xmlns.jcp.org/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
-  metadata-complete="true">
-
-  <display-name>Welcome to Tomcat</display-name>
-  <description>
-     Welcome to Tomcat
-  </description>
-
-</web-app>
+--%>
+<html>
+  <body>
+    <p>00-${'hello world'}</p>
+  </body>
+</html>
\ No newline at end of file
diff --git a/webapps/ROOT/WEB-INF/web.xml b/test/webapp-5.0/tld-versions.jsp
similarity index 56%
copy from webapps/ROOT/WEB-INF/web.xml
copy to test/webapp-5.0/tld-versions.jsp
index d94a86b..debf250 100644
--- a/webapps/ROOT/WEB-INF/web.xml
+++ b/test/webapp-5.0/tld-versions.jsp
@@ -1,5 +1,4 @@
-<?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.
@@ -14,17 +13,17 @@
   WITHOUT 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://xmlns.jcp.org/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
-  metadata-complete="true">
-
-  <display-name>Welcome to Tomcat</display-name>
-  <description>
-     Welcome to Tomcat
-  </description>
-
-</web-app>
+--%>
+<html><body>
+<%@ taglib prefix="tags11" uri="http://tomcat.apache.org/tags11" %>
+<%@ taglib prefix="tags12" uri="http://tomcat.apache.org/tags12" %>
+<%@ taglib prefix="tags20" uri="http://tomcat.apache.org/tags20" %>
+<%@ taglib prefix="tags21" uri="http://tomcat.apache.org/tags21" %>
+<tags11:Echo echo="${'00-hello world'}"/>
+<tags11:Echo echo="#{'01-hello world'}"/>
+<tags12:Echo echo="${'02-hello world'}"/>
+<tags12:Echo echo="#{'03-hello world'}"/>
+<tags20:Echo echo="${'04-hello world'}"/>
+<tags20:Echo echo="#{'05-hello world'}"/>
+<tags21:Echo echo="${'06-hello world'}"/>
+</body></html>
\ No newline at end of file
diff --git a/test/webapp/WEB-INF/web.xml b/test/webapp/WEB-INF/web.xml
index 4a7aa78..d5a3c95 100644
--- a/test/webapp/WEB-INF/web.xml
+++ b/test/webapp/WEB-INF/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0"
   metadata-complete="true">
 
   <display-name>Tomcat Test Application</display-name>
diff --git a/webapps/ROOT/WEB-INF/web.xml b/webapps/ROOT/WEB-INF/web.xml
index d94a86b..fdbcca0 100644
--- a/webapps/ROOT/WEB-INF/web.xml
+++ b/webapps/ROOT/WEB-INF/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0"
   metadata-complete="true">
 
   <display-name>Welcome to Tomcat</display-name>
diff --git a/webapps/docs/WEB-INF/web.xml b/webapps/docs/WEB-INF/web.xml
index 9d9fd36..e1abb10 100644
--- a/webapps/docs/WEB-INF/web.xml
+++ b/webapps/docs/WEB-INF/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0"
   metadata-complete="true">
 
   <display-name>Tomcat Documentation</display-name>
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index b91a6c6..f377b44 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -57,6 +57,9 @@
         Implement a significant portion of the TLS environment variables for
         the rewrite valve. (remm)
       </update>
+      <add>
+        Add the Jakarta EE 9 schema. (markt)
+      </add>
     </changelog>
   </subsection>
   <subsection name="Coyote">
@@ -68,6 +71,14 @@
       </add>
     </changelog>
   </subsection>
+  <subsection name="Web Applications">
+    <changelog>
+      <update>
+        Update all web applications to use the Jakarta EE 9 schema for web.xml.
+        (markt)
+      </update>
+    </changelog>
+  </subsection>
 </section>
 <section name="Tomcat 10.0.0-M6 (markt)" rtext="2020-06-07">
   <subsection name="Catalina">
diff --git a/webapps/examples/WEB-INF/web.xml b/webapps/examples/WEB-INF/web.xml
index 8f86f5f..993f808 100644
--- a/webapps/examples/WEB-INF/web.xml
+++ b/webapps/examples/WEB-INF/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0"
   metadata-complete="true">
 
     <description>
diff --git a/webapps/host-manager/WEB-INF/web.xml b/webapps/host-manager/WEB-INF/web.xml
index e9faa2c..0582072 100644
--- a/webapps/host-manager/WEB-INF/web.xml
+++ b/webapps/host-manager/WEB-INF/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0"
   metadata-complete="true">
 
   <display-name>Tomcat Host Manager Application</display-name>
diff --git a/webapps/manager/WEB-INF/web.xml b/webapps/manager/WEB-INF/web.xml
index e73aae0..30705e2 100644
--- a/webapps/manager/WEB-INF/web.xml
+++ b/webapps/manager/WEB-INF/web.xml
@@ -15,11 +15,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
-  version="4.0"
+  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
+  version="5.0"
   metadata-complete="true">
 
   <display-name>Tomcat Manager Application</display-name>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org