diff --git a/enterprise/glassfish.common/nbproject/org-netbeans-modules-glassfish-common.sig b/enterprise/glassfish.common/nbproject/org-netbeans-modules-glassfish-common.sig
index 5a62e07..3229653 100644
--- a/enterprise/glassfish.common/nbproject/org-netbeans-modules-glassfish-common.sig
+++ b/enterprise/glassfish.common/nbproject/org-netbeans-modules-glassfish-common.sig
@@ -1393,8 +1393,9 @@
 fld public final static java.lang.String EE8_DEPLOYER_FRAGMENT = "deployer:gfv5ee8"
 fld public final static java.lang.String GLASSFISH_AUTOREGISTERED_INSTANCE = "glassfish_autoregistered_instance"
 fld public final static java.lang.String JAKARTAEE8_DEPLOYER_FRAGMENT = "deployer:gfv510ee8"
-fld public final static java.lang.String JAKARTAEE91_DEPLOYER_FRAGMENT = "deployer:gfv610ee9"
 fld public final static java.lang.String JAKARTAEE9_DEPLOYER_FRAGMENT = "deployer:gfv6ee9"
+fld public final static java.lang.String JAKARTAEE91_DEPLOYER_FRAGMENT = "deployer:gfv610ee9"
+fld public final static java.lang.String JAKARTAEE10_DEPLOYER_FRAGMENT = "deployer:gfv700ee10"
 fld public final static java.lang.String PRELUDE_DEPLOYER_FRAGMENT = "deployer:gfv3"
 fld public final static java.util.Set<java.lang.String> activeRegistrationSet
 fld public static java.lang.String EE6WC_DEFAULT_NAME
@@ -1420,7 +1421,7 @@
 meth public void removeChangeListener(javax.swing.event.ChangeListener)
 meth public void resultChanged(org.openide.util.LookupEvent)
 supr java.lang.Object
-hfds AUTOINSTANCECOPIED,EE6WC_INSTANCES_PATH,EE6_INSTANCES_PATH,EE7_INSTANCES_PATH,EE8_INSTANCES_PATH,JAKARTAEE8_INSTANCES_PATH,JAKARTAEE91_INSTANCES_PATH,JAKARTAEE9_INSTANCES_PATH,LOGGER,activeDisplayNames,cf,displayName,glassFishProvider,instanceMap,instancesDirNames,lookupResult,needsJdk6,noPasswordOptions,support,uriFragments
+hfds AUTOINSTANCECOPIED,EE6WC_INSTANCES_PATH,EE6_INSTANCES_PATH,EE7_INSTANCES_PATH,EE8_INSTANCES_PATH,JAKARTAEE8_INSTANCES_PATH,JAKARTAEE91_INSTANCES_PATH,JAKARTAEE9_INSTANCES_PATH,JAKARTAEE10_INSTANCES_PATH,LOGGER,activeDisplayNames,cf,displayName,glassFishProvider,instanceMap,instancesDirNames,lookupResult,needsJdk6,noPasswordOptions,support,uriFragments
 
 CLSS public org.netbeans.modules.glassfish.common.Installer
 cons public init()
@@ -1507,6 +1508,7 @@
 fld public final static org.netbeans.modules.glassfish.common.ServerDetails GLASSFISH_SERVER_6_2_3
 fld public final static org.netbeans.modules.glassfish.common.ServerDetails GLASSFISH_SERVER_6_2_4
 fld public final static org.netbeans.modules.glassfish.common.ServerDetails GLASSFISH_SERVER_6_2_5
+fld public final static org.netbeans.modules.glassfish.common.ServerDetails GLASSFISH_SERVER_7_0_0
 meth public boolean isInstalledInDirectory(java.io.File)
 meth public int getVersion()
 meth public java.lang.String getDirectUrl()
@@ -2234,6 +2236,7 @@
 meth public static org.netbeans.modules.glassfish.spi.ServerUtilities getJakartaEe8Utilities()
 meth public static org.netbeans.modules.glassfish.spi.ServerUtilities getJakartaEe91Utilities()
 meth public static org.netbeans.modules.glassfish.spi.ServerUtilities getJakartaEe9Utilities()
+meth public static org.netbeans.modules.glassfish.spi.ServerUtilities getJakartaEe10Utilities()
 meth public static org.openide.WizardDescriptor$InstantiatingIterator getInstantiatingIterator()
 supr java.lang.Object
 hfds gip,gwp
diff --git a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/Bundle.properties b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/Bundle.properties
index ffe88bc..194f03b 100644
--- a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/Bundle.properties
+++ b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/Bundle.properties
@@ -166,6 +166,7 @@
 STR_623_SERVER_NAME=GlassFish Server 6.2.3
 STR_624_SERVER_NAME=GlassFish Server 6.2.4
 STR_625_SERVER_NAME=GlassFish Server 6.2.5
+STR_700_SERVER_NAME=GlassFish Server 7.0.0
 
 # CommonServerSupport.java
 MSG_FLAKEY_NETWORK=<html>Network communication problem<br/>Could not establish \
diff --git a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/GlassfishInstanceProvider.java b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/GlassfishInstanceProvider.java
index 81bbc8a..bca6893 100644
--- a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/GlassfishInstanceProvider.java
+++ b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/GlassfishInstanceProvider.java
@@ -68,6 +68,7 @@
     public static final String JAKARTAEE8_DEPLOYER_FRAGMENT = "deployer:gfv510ee8";
     public static final String JAKARTAEE9_DEPLOYER_FRAGMENT = "deployer:gfv6ee9";
     public static final String JAKARTAEE91_DEPLOYER_FRAGMENT = "deployer:gfv610ee9";
+    public static final String JAKARTAEE10_DEPLOYER_FRAGMENT = "deployer:gfv700ee10";
     public static final String EE6WC_DEPLOYER_FRAGMENT = "deployer:gfv3ee6wc"; // NOI18N
     public static final String PRELUDE_DEPLOYER_FRAGMENT = "deployer:gfv3"; // NOI18N
     private static String EE6_INSTANCES_PATH = "/GlassFishEE6/Instances"; // NOI18N
@@ -76,6 +77,7 @@
     private static String JAKARTAEE8_INSTANCES_PATH = "/GlassFishJakartaEE8/Instances"; // NOI18N
     private static String JAKARTAEE9_INSTANCES_PATH = "/GlassFishJakartaEE9/Instances"; // NOI18N
     private static String JAKARTAEE91_INSTANCES_PATH = "/GlassFishJakartaEE91/Instances"; // NOI18N
+    private static String JAKARTAEE10_INSTANCES_PATH = "/GlassFishJakartaEE10/Instances"; // NOI18N
     private static String EE6WC_INSTANCES_PATH = "/GlassFishEE6WC/Instances"; // NOI18N
 
     public static String PRELUDE_DEFAULT_NAME = "GlassFish_v3_Prelude"; //NOI18N
@@ -100,11 +102,11 @@
                             new String[]{EE6_DEPLOYER_FRAGMENT, EE6WC_DEPLOYER_FRAGMENT, 
                                     EE7_DEPLOYER_FRAGMENT, EE8_DEPLOYER_FRAGMENT, 
                                     JAKARTAEE8_DEPLOYER_FRAGMENT, JAKARTAEE9_DEPLOYER_FRAGMENT,
-                                    JAKARTAEE91_DEPLOYER_FRAGMENT},
+                                    JAKARTAEE91_DEPLOYER_FRAGMENT, JAKARTAEE10_DEPLOYER_FRAGMENT},
                             new String[]{EE6_INSTANCES_PATH, EE6WC_INSTANCES_PATH, 
                                     EE7_INSTANCES_PATH, EE8_INSTANCES_PATH, 
                                     JAKARTAEE8_INSTANCES_PATH, JAKARTAEE9_INSTANCES_PATH,
-                                    JAKARTAEE91_INSTANCES_PATH},
+                                    JAKARTAEE91_INSTANCES_PATH, JAKARTAEE10_INSTANCES_PATH},
                             null,
                             true,
                             new String[]{"--nopassword"}, // NOI18N
diff --git a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/ServerDetails.java b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/ServerDetails.java
index 630fb0a..dc23aa6 100644
--- a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/ServerDetails.java
+++ b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/ServerDetails.java
@@ -290,6 +290,17 @@
         "https://repo1.maven.org/maven2/org/glassfish/main/distributions/glassfish/6.2.5/glassfish-6.2.5.zip", // NOI18N
         "https://repo1.maven.org/maven2/org/glassfish/main/distributions/glassfish/6.2.5/glassfish-6.2.5.zip", // NOI18N
         "http://www.eclipse.org/legal/epl-2.0" //NOI18N
+    ),
+    
+    /**
+     * details for an instance of GlassFish Server 7.0.0
+     */
+    GLASSFISH_SERVER_7_0_0(NbBundle.getMessage(ServerDetails.class, "STR_700_SERVER_NAME", new Object[]{}), // NOI18N
+        "deployer:gfv700ee10", // NOI18N
+        700,
+        "https://repo1.maven.org/maven2/org/glassfish/main/distributions/glassfish/7.0.0-M4/glassfish-7.0.0-M4.zip", // NOI18N
+        "https://repo1.maven.org/maven2/org/glassfish/main/distributions/glassfish/7.0.0-M4/glassfish-7.0.0-M4.zip", // NOI18N
+        "http://www.eclipse.org/legal/epl-2.0" //NOI18N
     );
 
     /**
@@ -301,6 +312,7 @@
     public static WizardDescriptor.InstantiatingIterator
             getInstantiatingIterator() {
         return new ServerWizardIterator(new ServerDetails[]{
+                    GLASSFISH_SERVER_7_0_0,
                     GLASSFISH_SERVER_6_2_5,
                     GLASSFISH_SERVER_6_2_4,
                     GLASSFISH_SERVER_6_2_3,
@@ -324,6 +336,7 @@
                     GLASSFISH_SERVER_3_0_1,
                     GLASSFISH_SERVER_3},
                 new ServerDetails[]{
+                    GLASSFISH_SERVER_7_0_0,
                     GLASSFISH_SERVER_6_2_5,
                     GLASSFISH_SERVER_6_2_4,
                     GLASSFISH_SERVER_6_2_3,
@@ -382,6 +395,7 @@
                 case GF_6_2_3:   return GLASSFISH_SERVER_6_2_3.getVersion();
                 case GF_6_2_4:   return GLASSFISH_SERVER_6_2_4.getVersion();
                 case GF_6_2_5:   return GLASSFISH_SERVER_6_2_5.getVersion();
+                case GF_7_0_0:   return GLASSFISH_SERVER_7_0_0.getVersion();
                 default:         return -1;
             }
         }
diff --git a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/registration/AutomaticRegistration.java b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/registration/AutomaticRegistration.java
index 2fbacb6..bc1cc25 100644
--- a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/registration/AutomaticRegistration.java
+++ b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/registration/AutomaticRegistration.java
@@ -84,7 +84,10 @@
         String deployer = "deployer:gfv3ee6";
         String defaultDisplayNamePrefix = "GlassFish Server ";
         GlassFishVersion version = ServerUtils.getServerVersion(glassfishRoot);
-        if (GlassFishVersion.ge(version, GlassFishVersion.GF_6_1_0)) {
+        if (GlassFishVersion.ge(version, GlassFishVersion.GF_7_0_0)) {
+            deployer = "deployer:gfv700ee10";
+            config = "GlassFishJakartaEE10/Instances";
+        } else if (GlassFishVersion.ge(version, GlassFishVersion.GF_6_1_0)) {
             deployer = "deployer:gfv610ee9";
             config = "GlassFishJakartaEE91/Instances";
         } else if (GlassFishVersion.ge(version, GlassFishVersion.GF_6)) {
diff --git a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/Bundle.properties b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/Bundle.properties
index 5005c2c..8ae5fc1 100644
--- a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/Bundle.properties
+++ b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/Bundle.properties
@@ -166,6 +166,9 @@
 STR_624_SERVER_NAME=GlassFish Server 6.2.4
 STR_625_SERVER_NAME=GlassFish Server 6.2.5
 
+STR_V7_FAMILY_NAME=GlassFish Server
+STR_7_SERVER_NAME=GlassFish Server 7.0.0
+
 LBL_SELECT_BITS=Select
 LBL_ChooseOne=Choose server to download:
 
diff --git a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/GlassfishWizardProvider.java b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/GlassfishWizardProvider.java
index 05983bd..9a433ef 100644
--- a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/GlassfishWizardProvider.java
+++ b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/common/wizards/GlassfishWizardProvider.java
@@ -72,6 +72,13 @@
                 );
     }
 
+    public static GlassfishWizardProvider createJakartaEe10() {
+        return new GlassfishWizardProvider(
+                org.openide.util.NbBundle.getMessage(GlassfishWizardProvider.class,
+                        "STR_V7_FAMILY_NAME", new Object[]{}) // NOI18N
+        );
+    }
+
     private final String displayName;
 
     private GlassfishWizardProvider(
diff --git a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/spi/ServerUtilities.java b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/spi/ServerUtilities.java
index ff3afc7..3a17762 100644
--- a/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/spi/ServerUtilities.java
+++ b/enterprise/glassfish.common/src/org/netbeans/modules/glassfish/spi/ServerUtilities.java
@@ -107,6 +107,12 @@
                 GlassfishWizardProvider.createJakartaEe91());
     }
 
+    public static ServerUtilities getJakartaEe10Utilities() {
+        GlassfishInstanceProvider gip = GlassfishInstanceProvider.getProvider();
+        return null == gip ? null : new ServerUtilities(gip,
+                GlassfishWizardProvider.createJakartaEe10());
+    }
+
 //    public static ServerUtilities getEe6WCUtilities() {
 //        GlassfishInstanceProvider gip = GlassfishInstanceProvider.getProvider();
 //        return null == gip ? null : new ServerUtilities(gip,
diff --git a/enterprise/glassfish.eecommon/nbproject/org-netbeans-modules-glassfish-eecommon.sig b/enterprise/glassfish.eecommon/nbproject/org-netbeans-modules-glassfish-eecommon.sig
index 0da22bd..e927c99 100644
--- a/enterprise/glassfish.eecommon/nbproject/org-netbeans-modules-glassfish-eecommon.sig
+++ b/enterprise/glassfish.eecommon/nbproject/org-netbeans-modules-glassfish-eecommon.sig
@@ -876,6 +876,7 @@
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.AppClientVersion APP_CLIENT_7_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.AppClientVersion APP_CLIENT_8_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.AppClientVersion APP_CLIENT_9_0
+fld public final static org.netbeans.modules.glassfish.eecommon.api.config.AppClientVersion APP_CLIENT_10_0
 meth public int compareTo(java.lang.Object)
 meth public static org.netbeans.modules.glassfish.eecommon.api.config.AppClientVersion getAppClientVersion(java.lang.String)
 supr org.netbeans.modules.glassfish.eecommon.api.config.J2EEBaseVersion
@@ -888,6 +889,7 @@
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.ApplicationVersion APPLICATION_7_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.ApplicationVersion APPLICATION_8_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.ApplicationVersion APPLICATION_9_0
+fld public final static org.netbeans.modules.glassfish.eecommon.api.config.ApplicationVersion APPLICATION_10_0
 meth public int compareTo(java.lang.Object)
 meth public static org.netbeans.modules.glassfish.eecommon.api.config.ApplicationVersion getApplicationVersion(java.lang.String)
 supr org.netbeans.modules.glassfish.eecommon.api.config.J2EEBaseVersion
@@ -1195,6 +1197,7 @@
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.J2EEVersion JAKARTAEE_8_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.J2EEVersion JAKARTAEE_9_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.J2EEVersion JAKARTAEE_9_1
+fld public final static org.netbeans.modules.glassfish.eecommon.api.config.J2EEVersion JAKARTAEE_10_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.J2EEVersion JAVAEE_5_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.J2EEVersion JAVAEE_6_0
 fld public final static org.netbeans.modules.glassfish.eecommon.api.config.J2EEVersion JAVAEE_7_0
diff --git a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/AppClientVersion.java b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/AppClientVersion.java
index 0f4d3c6..cb66083 100644
--- a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/AppClientVersion.java
+++ b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/AppClientVersion.java
@@ -74,6 +74,13 @@
         "9.0", 9000,	// NOI18N
         "9.0", 9000	// NOI18N
         );
+    
+    /** Represents application-client version 10.0
+     */
+    public static final AppClientVersion APP_CLIENT_10_0 = new AppClientVersion(
+        "10.0", 10000,	// NOI18N
+        "10.0", 10000	// NOI18N
+        );
     /** -----------------------------------------------------------------------
      *  Implementation
      */
@@ -113,6 +120,8 @@
             result = APP_CLIENT_8_0;
         } else if(APP_CLIENT_9_0.toString().equals(version)) {
             result = APP_CLIENT_9_0;
+        } else if(APP_CLIENT_10_0.toString().equals(version)) {
+            result = APP_CLIENT_10_0;
         }
 
         return result;
diff --git a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/ApplicationVersion.java b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/ApplicationVersion.java
index f23b9c2..382dc79 100644
--- a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/ApplicationVersion.java
+++ b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/ApplicationVersion.java
@@ -75,6 +75,13 @@
         "9.0", 9000	// NOI18N
         );
 
+    /** Represents application version 10.0
+     */
+    public static final ApplicationVersion APPLICATION_10_0 = new ApplicationVersion(
+        "10.0", 10000,	// NOI18N
+        "10.0", 10000	// NOI18N
+        );
+
     /** -----------------------------------------------------------------------
      *  Implementation
      */
@@ -114,6 +121,8 @@
             result = APPLICATION_8_0;
         } else if(APPLICATION_9_0.toString().equals(version)) {
             result = APPLICATION_9_0;
+        }else if(APPLICATION_10_0.toString().equals(version)) {
+            result = APPLICATION_10_0;
         }
 
         return result;
diff --git a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/GlassfishConfiguration.java b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/GlassfishConfiguration.java
index 7d19e72..9208f7e 100644
--- a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/GlassfishConfiguration.java
+++ b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/GlassfishConfiguration.java
@@ -136,6 +136,10 @@
         if (version == null) {
             return new int[]{0,1};
         }
+        // glassfish-resources.xml for v7
+        if (GlassFishVersion.ge(version, GlassFishVersion.GF_7_0_0)) {
+            return new int[]{0};
+        }
         // glassfish-resources.xml for v6
         if (GlassFishVersion.ge(version, GlassFishVersion.GF_6) || GlassFishVersion.ge(version, GlassFishVersion.GF_6_1_0)) {
             return new int[]{0};
@@ -510,7 +514,8 @@
         "gfv5ee8",
         "gfv510ee8",
         "gfv6ee9",
-        "gfv610ee9"
+        "gfv610ee9",
+        "gfv700ee10"
     };
 
     protected ASDDVersion getTargetAppServerVersion() {
@@ -561,7 +566,13 @@
 
         boolean geGF5 = false;
         boolean geGF6 = false;
+        boolean geGF7 = false;
         if(schemaFolder.exists()){
+            if(new File(schemaFolder, "jakartaee10.xsd").exists() &&
+                    new File(dtdFolder, "glassfish-web-app_3_0-1.dtd").exists()){
+              geGF7 = true;
+              return ASDDVersion.GLASSFISH_7;
+            }
             if(new File(schemaFolder, "jakartaee9.xsd").exists() &&
                     new File(dtdFolder, "glassfish-web-app_3_0-1.dtd").exists()){
               geGF6 = true;
@@ -573,7 +584,7 @@
               return ASDDVersion.GLASSFISH_5_1;
             }
         }
-        if (!geGF5 && !geGF6 && dtdFolder.exists()) {
+        if (!geGF5 && !geGF6 && !geGF7 && dtdFolder.exists()) {
             if (new File(dtdFolder, "glassfish-web-app_3_0-1.dtd").exists()) {
                 return ASDDVersion.SUN_APPSERVER_10_1;
             }
diff --git a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/J2EEVersion.java b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/J2EEVersion.java
index f5404a3..a532097 100644
--- a/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/J2EEVersion.java
+++ b/enterprise/glassfish.eecommon/src/org/netbeans/modules/glassfish/eecommon/api/config/J2EEVersion.java
@@ -85,6 +85,12 @@
     public static final J2EEVersion JAKARTAEE_9_1 = new J2EEVersion(
             "9.1.0", 91000,    // NOI18N
             "9.1.0", 91000);   // NOI18N
+
+    /** Represents Jakarta EE version 10.0.0
+     */
+    public static final J2EEVersion JAKARTAEE_10_0 = new J2EEVersion(
+            "10.0.0", 100000,    // NOI18N
+            "10.0.0", 100000);   // NOI18N
     
     /** -----------------------------------------------------------------------
      *  Implementation
@@ -129,6 +135,8 @@
             result = JAKARTAEE_9_0;
         } else if(JAKARTAEE_9_1.toString().equals(version)) {
             result = JAKARTAEE_9_1;
+        }else if(JAKARTAEE_10_0.toString().equals(version)) {
+            result = JAKARTAEE_10_0;
         }
 
         return result;
diff --git a/enterprise/glassfish.javaee/nbproject/org-netbeans-modules-glassfish-javaee.sig b/enterprise/glassfish.javaee/nbproject/org-netbeans-modules-glassfish-javaee.sig
index 9503f7b..467c9c8 100644
--- a/enterprise/glassfish.javaee/nbproject/org-netbeans-modules-glassfish-javaee.sig
+++ b/enterprise/glassfish.javaee/nbproject/org-netbeans-modules-glassfish-javaee.sig
@@ -780,6 +780,7 @@
 meth public static javax.enterprise.deploy.spi.factories.DeploymentFactory createJakartaEe8()
 meth public static javax.enterprise.deploy.spi.factories.DeploymentFactory createJakartaEe9()
 meth public static javax.enterprise.deploy.spi.factories.DeploymentFactory createJakartaEe91()
+meth public static javax.enterprise.deploy.spi.factories.DeploymentFactory createJakartaEe10()
 supr java.lang.Object
 hfds displayName,ee6Instance,ee7Instance,ee8Instance,jakartaee8Instance,jakartaee91Instance,jakartaee9Instance,preludeInstance,su,uriFragments,version
 
@@ -972,6 +973,7 @@
 meth public static org.netbeans.modules.glassfish.javaee.Hk2OptionalFactory createJakartaEe8()
 meth public static org.netbeans.modules.glassfish.javaee.Hk2OptionalFactory createJakartaEe9()
 meth public static org.netbeans.modules.glassfish.javaee.Hk2OptionalFactory createJakartaEe91()
+meth public static org.netbeans.modules.glassfish.javaee.Hk2OptionalFactory createJakartaEe10()
 supr org.netbeans.modules.j2ee.deployment.plugins.spi.OptionalDeploymentManagerFactory
 hfds commonUtilities,df,hasWizard
 hcls J2eeInstantiatingIterator
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/AbstractHk2ConfigurationFactory.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/AbstractHk2ConfigurationFactory.java
index 8d0b58d..05b729f 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/AbstractHk2ConfigurationFactory.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/AbstractHk2ConfigurationFactory.java
@@ -107,7 +107,10 @@
                 ? instance.getVersion() : null;
         try {
             Hk2DeploymentManager evaluatedDm = null;
-            if(version != null && GlassFishVersion.ge(version, GlassFishVersion.GF_6_1_0)) {
+            if(version != null && GlassFishVersion.ge(version, GlassFishVersion.GF_7_0_0)) {
+                evaluatedDm = (Hk2DeploymentManager) Hk2DeploymentFactory.createJakartaEe10()
+                    .getDisconnectedDeploymentManager(instanceUrl);
+            } else if(version != null && GlassFishVersion.ge(version, GlassFishVersion.GF_6_1_0)) {
                 evaluatedDm = (Hk2DeploymentManager) Hk2DeploymentFactory.createJakartaEe91()
                     .getDisconnectedDeploymentManager(instanceUrl);
             } else if(version != null && GlassFishVersion.ge(version, GlassFishVersion.GF_6)) {
@@ -133,6 +136,10 @@
                     ? hk2dm
                     : evaluatedDm;
             if (version != null
+                    && GlassFishVersion.ge(version, GlassFishVersion.GF_7_0_0)) {
+                retVal = new ModuleConfigurationImpl(
+                        module, new Hk2Configuration(module, version), dm);
+            } else if (version != null
                     && GlassFishVersion.ge(version, GlassFishVersion.GF_6_1_0)) {
                 retVal = new ModuleConfigurationImpl(
                         module, new Hk2Configuration(module, version), dm);
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties
index 3651566..0733a43 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Bundle.properties
@@ -49,6 +49,7 @@
 LBL_V6ServerLibraries=GlassFish Server 6 Libraries
 LBL_V610ServerLibraries=GlassFish Server 6.1 Libraries
 LBL_V620ServerLibraries=GlassFish Server 6.2 Libraries
+LBL_V700ServerLibraries=GlassFish Server 7.0.0 Libraries
 
 MSG_V1ServerPlatform=Unsupported GlassFish Server 1 Platform
 MSG_V2ServerPlatform=Unsupported GlassFish Server 2 Platform
@@ -59,6 +60,7 @@
 MSG_V6ServerPlatform=GlassFish Server 6 Platform
 MSG_V610ServerPlatform=GlassFish Server 6.1 Platform
 MSG_V620ServerPlatform=GlassFish Server 6.2 Platform
+MSG_V700ServerPlatform=GlassFish Server 7.0.0 Platform
 
 LBL_V3RunTimeDDCatalog=GlassFish Server 3 Catalog
 DESC_V3RunTimeDDCatalog=List of all the runtime descriptors DTDs for GlassFish Server 3
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2DeploymentFactory.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2DeploymentFactory.java
index a5002da..a76c7d8 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2DeploymentFactory.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2DeploymentFactory.java
@@ -41,6 +41,7 @@
     private static Hk2DeploymentFactory jakartaee8Instance;
     private static Hk2DeploymentFactory jakartaee9Instance;
     private static Hk2DeploymentFactory jakartaee91Instance;
+    private static Hk2DeploymentFactory jakartaee10Instance;
     private String[] uriFragments;
     private String version;
     private String displayName;
@@ -153,6 +154,22 @@
     }
 
     /**
+     * 
+     * @return
+     */
+    public static synchronized DeploymentFactory createJakartaEe10() {
+        // FIXME -- these strings should come from some constant place
+        if (jakartaee10Instance == null) {
+            ServerUtilities tmp = ServerUtilities.getJakartaEe10Utilities();
+            jakartaee10Instance = new Hk2DeploymentFactory(new String[]{"deployer:gfv700ee10:", "deployer:gfv7"}, "0.7", // NOI18N
+                    NbBundle.getMessage(Hk2DeploymentFactory.class, "TXT_FactoryDisplayName"));  // NOI18N
+            DeploymentFactoryManager.getInstance().registerDeploymentFactory(jakartaee10Instance);
+            jakartaee10Instance.setServerUtilities(tmp);
+        }
+        return jakartaee10Instance;
+    }
+
+    /**
      *
      * @param uri
      * @return
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformFactory.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformFactory.java
index ed079ae..b9f87f9 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformFactory.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformFactory.java
@@ -71,6 +71,7 @@
      *  when changing it. */
     private static final String V6_LOOKUP_KEY = "J2EE/DeploymentPlugins/gfv6ee9/Lookup";
     private static final String V610_LOOKUP_KEY = "J2EE/DeploymentPlugins/gfv610ee9/Lookup";
+    private static final String V7_LOOKUP_KEY = "J2EE/DeploymentPlugins/gfv700ee10/Lookup";
 
     /** GlassFish JavaEE platform factory singleton object. */
     private static volatile Hk2JavaEEPlatformFactory instance;
@@ -106,7 +107,10 @@
      */
     private static String getDisplayName(final GlassFishVersion version) {
         final int ord = version.ordinal();
-        if(ord >= GlassFishVersion.GF_6_2_0.ordinal()) {
+        if(ord >= GlassFishVersion.GF_7_0_0.ordinal()) {
+            return NbBundle.getMessage(
+                    Hk2JavaEEPlatformFactory.class, "MSG_V700ServerPlatform");
+        } else if(ord >= GlassFishVersion.GF_6_2_0.ordinal()) {
             return NbBundle.getMessage(
                     Hk2JavaEEPlatformFactory.class, "MSG_V620ServerPlatform");
         } else if(ord >= GlassFishVersion.GF_6_1_0.ordinal()) {
@@ -146,7 +150,10 @@
      */
     private static String getLibraryName(final GlassFishVersion version) {
         final int ord = version.ordinal();
-        if (ord >= GlassFishVersion.GF_6_2_0.ordinal()) {
+        if (ord >= GlassFishVersion.GF_7_0_0.ordinal()) {
+            return NbBundle.getMessage(
+                    Hk2JavaEEPlatformFactory.class, "LBL_V700ServerLibraries");
+        } else if (ord >= GlassFishVersion.GF_6_2_0.ordinal()) {
             return NbBundle.getMessage(
                     Hk2JavaEEPlatformFactory.class, "LBL_V620ServerLibraries");
         } else if (ord >= GlassFishVersion.GF_6_1_0.ordinal()) {
@@ -186,7 +193,9 @@
      */
     private static String getLookupKey(final GlassFishVersion version) {
         final int ord = version.ordinal();
-        if (ord >= GlassFishVersion.GF_6_1_0.ordinal()){
+        if (ord >= GlassFishVersion.GF_7_0_0.ordinal()){
+            return V7_LOOKUP_KEY;
+        } else if (ord >= GlassFishVersion.GF_6_1_0.ordinal()){
             return V610_LOOKUP_KEY;
         } else if (ord >= GlassFishVersion.GF_6.ordinal()){
             return V6_LOOKUP_KEY;
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java
index c757c4d..015988f 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JavaEEPlatformImpl.java
@@ -206,6 +206,10 @@
                                break;
                 case v9_1_0:     profiles[index++] = Profile.JAKARTA_EE_9_1_FULL;
                                break;
+                case v10_0_0_web: profiles[index++] = Profile.JAKARTA_EE_10_WEB;
+                               break;
+                case v10_0_0:     profiles[index++] = Profile.JAKARTA_EE_10_FULL;
+                               break;
             }
         } else {
             profiles = new Profile[0];
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JaxWsStack.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JaxWsStack.java
index 8b33450..f5f2048 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JaxWsStack.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2JaxWsStack.java
@@ -73,19 +73,20 @@
     @Override
     public WSStackVersion getVersion() {
         Set<Profile> supportedProfiles = platform.getSupportedProfiles();
-        if (supportedProfiles.contains(Profile.JAKARTA_EE_9_1_FULL) ||
-                supportedProfiles.contains(Profile.JAKARTA_EE_9_1_WEB) ||
-                supportedProfiles.contains(Profile.JAKARTA_EE_9_FULL) ||
-                supportedProfiles.contains(Profile.JAKARTA_EE_9_WEB) ||
-                supportedProfiles.contains(Profile.JAKARTA_EE_8_FULL) ||
-                supportedProfiles.contains(Profile.JAKARTA_EE_8_WEB) ||
-                supportedProfiles.contains(Profile.JAVA_EE_8_FULL) ||
-                supportedProfiles.contains(Profile.JAVA_EE_8_WEB) ||
-                supportedProfiles.contains(Profile.JAVA_EE_7_FULL) ||
-                supportedProfiles.contains(Profile.JAVA_EE_7_WEB)  ||
-                supportedProfiles.contains(Profile.JAVA_EE_6_FULL) ||
-                supportedProfiles.contains(Profile.JAVA_EE_6_WEB))
-        {
+        if (supportedProfiles.contains(Profile.JAKARTA_EE_10_FULL)
+                || supportedProfiles.contains(Profile.JAKARTA_EE_10_WEB)
+                || supportedProfiles.contains(Profile.JAKARTA_EE_9_1_FULL)
+                || supportedProfiles.contains(Profile.JAKARTA_EE_9_1_WEB)
+                || supportedProfiles.contains(Profile.JAKARTA_EE_9_FULL)
+                || supportedProfiles.contains(Profile.JAKARTA_EE_9_WEB)
+                || supportedProfiles.contains(Profile.JAKARTA_EE_8_FULL)
+                || supportedProfiles.contains(Profile.JAKARTA_EE_8_WEB)
+                || supportedProfiles.contains(Profile.JAVA_EE_8_FULL)
+                || supportedProfiles.contains(Profile.JAVA_EE_8_WEB)
+                || supportedProfiles.contains(Profile.JAVA_EE_7_FULL)
+                || supportedProfiles.contains(Profile.JAVA_EE_7_WEB)
+                || supportedProfiles.contains(Profile.JAVA_EE_6_FULL)
+                || supportedProfiles.contains(Profile.JAVA_EE_6_WEB)) {
             // gfv3ee6 GF id
             if (isMetroInstalled()) {
                 return WSStackVersion.valueOf(2, 2, 0, 0);
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2OptionalFactory.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2OptionalFactory.java
index 3664f6c..cddb782 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2OptionalFactory.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/Hk2OptionalFactory.java
@@ -98,6 +98,12 @@
                 t, true);
     }
 
+    public static Hk2OptionalFactory createJakartaEe10() {
+        ServerUtilities t = ServerUtilities.getJakartaEe10Utilities();
+        return null == t ? null : new Hk2OptionalFactory(Hk2DeploymentFactory.createJakartaEe10(),
+                t, true);
+    }
+
     @Override
     public StartServer getStartServer(DeploymentManager dm) {
         return new Hk2StartServer(dm);
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java
index 3ef59b0..ae15f4e 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/JavaEEServerModuleFactory.java
@@ -249,6 +249,7 @@
     private static final String JAVA_EE_JAVADOC = "javaee-doc-api.jar"; // NOI18N
     private static final String JAKARTA_EE_8_JAVADOC = "jakartaee8-doc-api.jar"; // NOI18N
     private static final String JAKARTA_EE_9_JAVADOC = "jakartaee9-doc-api.jar"; // NOI18N
+    private static final String JAKARTA_EE_10_JAVADOC = "jakartaee10-doc-api.jar"; // NOI18N
 
     private static boolean ensureGlassFishApiSupport(GlassFishServer server) {
         String installRoot = server.getServerRoot();
@@ -262,7 +263,11 @@
         }
         
         File j2eeDoc;
-        if (GlassFishVersion.ge(server.getVersion(), GlassFishVersion.GF_6)) {
+        if (GlassFishVersion.ge(server.getVersion(), GlassFishVersion.GF_7_0_0)) {
+            j2eeDoc = InstalledFileLocator.getDefault().locate(
+                "docs/" + JAKARTA_EE_10_JAVADOC,
+                Hk2LibraryProvider.JAVAEE_DOC_CODE_BASE, false);
+        } else if (GlassFishVersion.ge(server.getVersion(), GlassFishVersion.GF_6)) {
             j2eeDoc = InstalledFileLocator.getDefault().locate(
                 "docs/" + JAKARTA_EE_9_JAVADOC,
                 Hk2LibraryProvider.JAVAEE_DOC_CODE_BASE, false);
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/RunTimeDDCatalog.java b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/RunTimeDDCatalog.java
index 88794e4..9b6e38b 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/RunTimeDDCatalog.java
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/RunTimeDDCatalog.java
@@ -148,11 +148,14 @@
         "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd"               , "application_8",
         "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application-client_9.xsd"       , "application-client_9",
         "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application_9.xsd"              , "application_9",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd"       , "application-client_10",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application_10.xsd"              , "application_10",
         "SCHEMA:http://java.sun.com/xml/ns/j2ee/jax-rpc-ri-config.xsd"              , "jax-rpc-ri-config",
         "SCHEMA:http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"                  , "connector_1_5",
         "SCHEMA:http://java.sun.com/xml/ns/javaee/connector_1_6.xsd"                , "connector_1_6",
         "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd"               , "connector_1_7",
         "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/connector_2_0.xsd"              , "connector_2_0",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/connector_2_1.xsd"              , "connector_2_1",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd"                        , "jsp_2_0.xsd",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/datatypes.dtd"                      , "datatypes",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"                    , "web-app_2_4",
@@ -174,6 +177,7 @@
         "SCHEMA:http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"                         , "orm_2_1",
         "SCHEMA:http://xmlns.jcp.org/xml/ns/persistence/orm_2_2.xsd"                         , "orm_2_2",
         "SCHEMA:https://jakarta.ee/xml/ns/persistence/orm/orm_3_0.xsd"                       , "orm_3_0",
+        "SCHEMA:https://jakarta.ee/xml/ns/persistence/orm/orm_3_1.xsd"                       , "orm_3_1",
         "SCHEMA:http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"                  , "persistence_1_0",
         "SCHEMA:http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"                  , "persistence_2_0",
         "SCHEMA:http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"                 , "persistence_2_1",
@@ -493,6 +497,10 @@
     private static final String APP_9= JAKARTAEE_NS+"/"+APP_9_XSD; // NOI18N
     public static final String APP_9_ID = "SCHEMA:"+APP_9; // NOI18N
     
+    private static final String APP_10_XSD="application_10.xsd"; // NOI18N
+    private static final String APP_10= JAKARTAEE_NS+"/"+APP_10_XSD; // NOI18N
+    public static final String APP_10_ID = "SCHEMA:"+APP_10; // NOI18N
+    
     private static final String APPCLIENT_TAG="application-client"; //NOI18N
     private static final String APPCLIENT_1_4_XSD="application-client_1_4.xsd"; // NOI18N
     private static final String APPCLIENT_1_4= J2EE_NS+"/"+APPCLIENT_1_4_XSD; // NOI18N
@@ -517,7 +525,11 @@
     private static final String APPCLIENT_9_XSD="application-client_9.xsd"; // NOI18N
     private static final String APPCLIENT_9= JAKARTAEE_NS+"/"+APPCLIENT_9_XSD; // NOI18N
     public static final String APPCLIENT_9_ID = "SCHEMA:"+APPCLIENT_9; // NOI18N
-    
+
+    private static final String APPCLIENT_10_XSD="application-client_10.xsd"; // NOI18N
+    private static final String APPCLIENT_10= JAKARTAEE_NS+"/"+APPCLIENT_10_XSD; // NOI18N
+    public static final String APPCLIENT_10_ID = "SCHEMA:"+APPCLIENT_10; // NOI18N
+
     private static final String WEBSERVICES_TAG="webservices"; //NOI18N
     private static final String WEBSERVICES_1_1_XSD="j2ee_web_services_1_1.xsd"; // NOI18N
     private static final String WEBSERVICES_1_1= IBM_J2EE_NS+"/"+WEBSERVICES_1_1_XSD; // NOI18N
@@ -612,6 +624,18 @@
     private static final String WEBFRAGMENT_5_0 = JAKARTAEE_NS+"/"+WEBFRAGMENT_5_0_XSD; // NOI18N
     public static final String WEBFRAGMENT_5_0_ID = "SCHEMA:"+WEBFRAGMENT_5_0; // NOI18N
 
+    private static final String WEBAPP_6_0_XSD="web-app_6_0.xsd"; // NOI18N
+    private static final String WEBAPP_6_0 = JAKARTAEE_NS+"/"+WEBAPP_6_0_XSD; // NOI18N
+    public static final String WEBAPP_6_0_ID = "SCHEMA:"+WEBAPP_6_0; // NOI18N
+    
+    private static final String WEBCOMMON_6_0_XSD="web-common_6_0.xsd"; // NOI18N
+    private static final String WEBCOMMON_6_0 = JAKARTAEE_NS+"/"+WEBCOMMON_6_0_XSD; // NOI18N
+    public static final String WEBCOMMON_6_0_ID = "SCHEMA:"+WEBCOMMON_6_0; // NOI18N
+    
+    private static final String WEBFRAGMENT_6_0_XSD="web-fragment_6_0.xsd"; // NOI18N
+    private static final String WEBFRAGMENT_6_0 = JAKARTAEE_NS+"/"+WEBFRAGMENT_6_0_XSD; // NOI18N
+    public static final String WEBFRAGMENT_6_0_ID = "SCHEMA:"+WEBFRAGMENT_6_0; // NOI18N
+
     public static final String PERSISTENCE_NS = "http://java.sun.com/xml/ns/persistence"; // NOI18N
     public static final String NEW_PERSISTENCE_NS = "http://xmlns.jcp.org/xml/ns/persistence"; // NOI18N
     public static final String JAKARTA_PERSISTENCE_NS = "https://jakarta.ee/xml/ns/persistence"; // NOI18N
@@ -741,6 +765,10 @@
                 return new org.xml.sax.InputSource(SCHEMASLOCATION+APP_9_XSD);
             } else if ( systemId.endsWith(APPCLIENT_9_XSD)) {
                 return new org.xml.sax.InputSource(SCHEMASLOCATION+APPCLIENT_9_XSD);
+            } else if ( systemId.endsWith(APP_10_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION+APP_10_XSD);
+            } else if ( systemId.endsWith(APPCLIENT_10_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION+APPCLIENT_10_XSD);
             }
             //web-app, web-common & web-fragment
             else if ( systemId.endsWith(WEBAPP_2_5_XSD)) {
@@ -769,6 +797,12 @@
                 return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBFRAGMENT_5_0_XSD);
             } else if ( systemId.endsWith(WEBCOMMON_5_0_XSD)) {
                 return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBCOMMON_5_0_XSD);
+            } else if ( systemId.endsWith(WEBAPP_6_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBAPP_6_0_XSD);
+            } else if ( systemId.endsWith(WEBFRAGMENT_6_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBFRAGMENT_6_0_XSD);
+            } else if ( systemId.endsWith(WEBCOMMON_6_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBCOMMON_6_0_XSD);
             }
             //persistence & orm
             else if ( systemId.endsWith(PERSISTENCEORM_XSD)) {
@@ -954,6 +988,9 @@
                         case "text/x-dd-client1.4":  // NOI18N
                             inputSource = resolver.resolveEntity(APPCLIENT_1_4_ID, "");
                             break;
+                        case "text/x-dd-servlet6.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBAPP_6_0_ID, "");
+                            break;
                         case "text/x-dd-servlet5.0":  // NOI18N
                             inputSource = resolver.resolveEntity(WEBAPP_5_0_ID, "");
                             break;
@@ -969,6 +1006,9 @@
                         case "text/x-dd-servlet2.5":  // NOI18N
                             inputSource = resolver.resolveEntity(WEBAPP_2_5_ID, "");
                             break;
+                        case "text/x-dd-servlet-fragment6.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBFRAGMENT_6_0_ID, "");
+                            break;
                         case "text/x-dd-servlet-fragment5.0":  // NOI18N
                             inputSource = resolver.resolveEntity(WEBFRAGMENT_5_0_ID, "");
                             break;
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/layer.xml b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/layer.xml
index e2e06bf..6cac2ce 100644
--- a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/layer.xml
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/layer.xml
@@ -407,6 +407,67 @@
                         </folder>
                     </folder>
             </folder>
+                <folder name="gfv700ee10">
+                    <file name="Descriptor" url="nbdepjakartaee10.xml"/>
+                    <!-- -->
+                    <file name="Factory.instance">
+                        <attr name="urlPattern" stringvalue="^\[.*deployer:gfv700ee10[w]?[c]?:.*$"/>
+                        <attr name="instanceCreate" methodvalue="org.netbeans.modules.j2ee.deployment.plugins.spi.support.ProxyDeploymentFactory.create"/>
+                        <attr name="delegate" methodvalue="org.netbeans.modules.glassfish.javaee.Hk2DeploymentFactory.createJakartaEe10"/>
+                        <attr name="instanceClass" stringvalue="org.netbeans.modules.j2ee.deployment.plugins.spi.support.ProxyDeploymentFactory"/>
+                        <attr name="instanceOf" stringvalue="javax.enterprise.deploy.spi.factories.DeploymentFactory"/>
+                    </file>
+                    <file name="J2eePlatformFactory.instance">
+                        <attr name="instanceCreate" methodvalue="org.netbeans.modules.glassfish.javaee.Hk2JavaEEPlatformFactory.getFactory"/>
+                        <attr name="instanceClass" stringvalue="org.netbeans.modules.glassfish.javaee.Hk2JavaEEPlatformFactory"/>
+                        <attr name="instanceOf" stringvalue="org.netbeans.modules.j2ee.deployment.plugins.spi.J2eePlatformFactory"/>
+                    </file>
+                    <file name="OptionalFactory.instance">
+                        <attr name="instanceCreate" methodvalue="org.netbeans.modules.j2ee.deployment.plugins.spi.support.ProxyOptionalFactory.create"/>
+                        <attr name="delegate" methodvalue="org.netbeans.modules.glassfish.javaee.Hk2OptionalFactory.createJakartaEe10"/>
+                        <attr name="instanceOf" stringvalue="org.netbeans.modules.j2ee.deployment.plugins.spi.OptionalDeploymentManagerFactory"/>
+                    </file>
+                    <file name="ModuleConfigFactory.instance">
+                        <attr name="instanceCreate" newvalue="org.netbeans.modules.glassfish.javaee.Hk2ModuleConfigFactory"/>
+                        <attr name="instanceClass" stringvalue="org.netbeans.modules.glassfish.javaee.Hk2ModuleConfigFactory"/>
+                        <attr name="instanceOf" stringvalue="org.netbeans.modules.j2ee.deployment.plugins.spi.config.ModuleConfigurationFactory"/>
+                    </file>
+                    <file name="J2eeVerifierSupport.instance">
+                        <attr name="instanceCreate" newvalue="org.netbeans.modules.glassfish.javaee.verifier.VerifierImpl"/>
+                        <attr name="instanceClass" stringvalue="org.netbeans.modules.glassfish.javaee.verifier.VerifierImpl"/>
+                        <attr name="instanceOf" stringvalue="org.netbeans.modules.j2ee.deployment.plugins.spi.VerifierSupport"/>
+                    </file>
+                    <!-- -->
+                    <folder name="DeploymentFileNames">
+                        <folder name="WAR">
+                            <file name="WEB-INF\sun-web.xml"/>
+                            <file name="WEB-INF\glassfish-web.xml"/>
+                            <file name="WEB-INF\glassfish-resources.xml"/>
+                        </folder>
+                        <folder name="EJB">
+                            <file name="META-INF\sun-ejb-jar.xml"/>
+                            <file name="META-INF\sun-cmp-mappings.xml"/>
+                            <file name="META-INF\glassfish-ejb-jar.xml"/>
+                            <file name="META-INF\glassfish-cmp-mappings.xml"/>
+                            <file name="META-INF\glassfish-resources.xml"/>
+                        </folder>
+                        <folder name="EAR">
+                            <file name="META-INF\sun-application.xml"/>
+                            <file name="META-INF\glassfish-application.xml"/>
+                            <file name="META-INF\glassfish-resources.xml"/>
+                        </folder>
+                        <folder name="RAR">
+                            <file name="META-INF\sun-ra.xml"/>
+                            <file name="META-INF\glassfish-ra.xml"/>
+                            <file name="META-INF\glassfish-resources.xml"/>
+                        </folder>
+                        <folder name="CAR">
+                            <file name="META-INF\sun-application-client.xml"/>
+                            <file name="META-INF\glassfish-application-client.xml"/>
+                            <file name="META-INF\glassfish-resources.xml"/>
+                        </folder>
+                    </folder>
+            </folder>
           </folder>
     </folder>
 
diff --git a/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/nbdepjakartaee10.xml b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/nbdepjakartaee10.xml
new file mode 100644
index 0000000..bf230e3
--- /dev/null
+++ b/enterprise/glassfish.javaee/src/org/netbeans/modules/glassfish/javaee/nbdepjakartaee10.xml
@@ -0,0 +1,54 @@
+<netbeans-deployment>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT 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 icon element contains a path to the icon to be used to present the server
+    in the server registry.
+    -->
+    <icon>org/netbeans/modules/glassfish/common/resources/server</icon>
+
+    <!--
+    The disconnected-string element contains the String parameter to DeploymentFactory.getDisconnectedDeploymentManager()
+    -->
+    <disconnected-string>deployer:gfv700ee10</disconnected-string>
+
+    <!--
+    The container-limitation element modifies a plugin to say that not all j2ee deployments are valid.
+    For example, a web-only server would include
+    <container-limitation> <war-deploy/> </container-limitation>
+    to indicate that only war deployments are accepted.
+    If a container-limitation element is not present, all j2ee deployments are assumed valid.
+    If a container-limitation element is present, then only j2ee deployment types explicitly
+    mentioned are allowed.
+    -->
+    <!-- v3 ee6 has no limitations...
+    <container-limitation>
+        <ear-deploy/>
+        <war-deploy/>
+        <ejbjar-deploy/>
+    </container-limitation>
+    -->
+    <web-context-root>
+        <xpath>/</xpath>
+        <prop-name>contextRoot</prop-name>
+    </web-context-root>
+
+</netbeans-deployment>
diff --git a/enterprise/glassfish.tooling/nbproject/org-netbeans-modules-glassfish-tooling.sig b/enterprise/glassfish.tooling/nbproject/org-netbeans-modules-glassfish-tooling.sig
index 1586854..555e786 100644
--- a/enterprise/glassfish.tooling/nbproject/org-netbeans-modules-glassfish-tooling.sig
+++ b/enterprise/glassfish.tooling/nbproject/org-netbeans-modules-glassfish-tooling.sig
@@ -1431,7 +1431,7 @@
 meth public static org.netbeans.modules.glassfish.tooling.data.GlassFishVersion valueOf(java.lang.String)
 meth public static org.netbeans.modules.glassfish.tooling.data.GlassFishVersion[] values()
 supr java.lang.Enum<org.netbeans.modules.glassfish.tooling.data.GlassFishVersion>
-hfds GF_1_STR,GF_1_STR_NEXT,GF_2_1_1_STR,GF_2_1_1_STR_NEXT,GF_2_1_STR,GF_2_1_STR_NEXT,GF_2_STR,GF_2_STR_NEXT,GF_3_0_1_STR,GF_3_0_1_STR_NEXT,GF_3_1_1_STR,GF_3_1_1_STR_NEXT,GF_3_1_2_2_STR,GF_3_1_2_3_STR,GF_3_1_2_4_STR,GF_3_1_2_5_STR,GF_3_1_2_STR,GF_3_1_2_STR_NEXT,GF_3_1_STR,GF_3_1_STR_NEXT,GF_3_STR,GF_3_STR_NEXT,GF_4_0_1_STR,GF_4_0_1_STR_NEXT,GF_4_1_1_STR,GF_4_1_1_STR_NEXT,GF_4_1_2_STR,GF_4_1_2_STR_NEXT,GF_4_1_STR,GF_4_1_STR_NEXT,GF_4_STR,GF_4_STR_NEXT,GF_5_0_1_STR,GF_5_0_1_STR_NEXT,GF_5_1_0_STR,GF_5_1_0_STR_NEXT,GF_5_STR,GF_5_STR_NEXT,GF_6_1_0_STR,GF_6_1_0_STR_NEXT,GF_6_2_0_STR,GF_6_2_0_STR_NEXT,GF_6_2_1_STR,GF_6_2_1_STR_NEXT,GF_6_2_2_STR,GF_6_2_2_STR_NEXT,GF_6_2_3_STR,GF_6_2_3_STR_NEXT,GF_6_2_4_STR,GF_6_2_4_STR_NEXT,GF_6_2_5_STR,GF_6_2_5_STR_NEXT,GF_6_STR,GF_6_STR_NEXT,build,major,minor,stringValuesMap,update,value
+hfds GF_1_STR,GF_1_STR_NEXT,GF_2_1_1_STR,GF_2_1_1_STR_NEXT,GF_2_1_STR,GF_2_1_STR_NEXT,GF_2_STR,GF_2_STR_NEXT,GF_3_0_1_STR,GF_3_0_1_STR_NEXT,GF_3_1_1_STR,GF_3_1_1_STR_NEXT,GF_3_1_2_2_STR,GF_3_1_2_3_STR,GF_3_1_2_4_STR,GF_3_1_2_5_STR,GF_3_1_2_STR,GF_3_1_2_STR_NEXT,GF_3_1_STR,GF_3_1_STR_NEXT,GF_3_STR,GF_3_STR_NEXT,GF_4_0_1_STR,GF_4_0_1_STR_NEXT,GF_4_1_1_STR,GF_4_1_1_STR_NEXT,GF_4_1_2_STR,GF_4_1_2_STR_NEXT,GF_4_1_STR,GF_4_1_STR_NEXT,GF_4_STR,GF_4_STR_NEXT,GF_5_0_1_STR,GF_5_0_1_STR_NEXT,GF_5_1_0_STR,GF_5_1_0_STR_NEXT,GF_5_STR,GF_5_STR_NEXT,GF_6_1_0_STR,GF_6_1_0_STR_NEXT,GF_6_2_0_STR,GF_6_2_0_STR_NEXT,GF_6_2_1_STR,GF_6_2_1_STR_NEXT,GF_6_2_2_STR,GF_6_2_2_STR_NEXT,GF_6_2_3_STR,GF_6_2_3_STR_NEXT,GF_6_2_4_STR,GF_6_2_4_STR_NEXT,GF_6_2_5_STR,GF_6_2_5_STR_NEXT,GF_6_STR,GF_6_STR_NEXT,GF_7_0_0_STR,GF_7_0_0_STR_NEXT,build,major,minor,stringValuesMap,update,value
 
 CLSS public org.netbeans.modules.glassfish.tooling.data.IdeContext
  anno 0 java.lang.Deprecated()
@@ -1769,6 +1769,8 @@
 fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile v9_0_0_web
 fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile v9_1_0
 fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile v9_1_0_web
+fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile v10_0_0
+fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile v10_0_0_web
 innr public final static !enum Type
 innr public final static !enum Version
 meth public java.lang.String toString()
@@ -1802,6 +1804,7 @@
 fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile$Version v8_0_0
 fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile$Version v9_0_0
 fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile$Version v9_1_0
+fld public final static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile$Version v10_0_0
 meth public java.lang.String toString()
 meth public static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile$Version valueOf(java.lang.String)
 meth public static org.netbeans.modules.glassfish.tooling.server.config.JavaEEProfile$Version[] values()
diff --git a/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersion.java b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersion.java
index c47a114..d062468 100644
--- a/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersion.java
+++ b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersion.java
@@ -96,7 +96,9 @@
     /** GlassFish 6.2.4 */
     GF_6_2_4       ((short) 6, (short) 2, (short) 4, (short) 0, GlassFishVersion.GF_6_2_4_STR),
     /** GlassFish 6.2.5 */
-    GF_6_2_5       ((short) 6, (short) 2, (short) 5, (short) 0, GlassFishVersion.GF_6_2_5_STR);
+    GF_6_2_5       ((short) 6, (short) 2, (short) 5, (short) 0, GlassFishVersion.GF_6_2_5_STR),
+    /** GlassFish 6.2.5 */
+    GF_7_0_0       ((short) 7, (short) 0, (short) 0, (short) 0, GlassFishVersion.GF_7_0_0_STR);
     ////////////////////////////////////////////////////////////////////////////
     // Class attributes                                                       //
     ////////////////////////////////////////////////////////////////////////////
@@ -247,6 +249,11 @@
     /** Additional <code>String</code> representations of GF_6_2_5 value. */
     static final String GF_6_2_5_STR_NEXT[] = {"6.2.5", "6.2.5.0"};
 
+    /** A <code>String</code> representation of GF_7_0_0 value. */
+    static final String GF_7_0_0_STR = "7.0.0";
+    /** Additional <code>String</code> representations of GF_7_0_0 value. */
+    static final String GF_7_0_0_STR_NEXT[] = {"7.0.0", "7.0.0.0"};
+
     /**
      * Stored <code>String</code> values for backward <code>String</code>
      * conversion.
@@ -283,6 +290,7 @@
         initStringValuesMapFromArray(GF_6_2_3, GF_6_2_3_STR_NEXT);
         initStringValuesMapFromArray(GF_6_2_4, GF_6_2_4_STR_NEXT);
         initStringValuesMapFromArray(GF_6_2_5, GF_6_2_5_STR_NEXT);
+        initStringValuesMapFromArray(GF_7_0_0, GF_7_0_0_STR_NEXT);
     }
 
     ////////////////////////////////////////////////////////////////////////////
diff --git a/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/ConfigBuilderProvider.java b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/ConfigBuilderProvider.java
index a9e1ded..7ed6f62 100644
--- a/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/ConfigBuilderProvider.java
+++ b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/ConfigBuilderProvider.java
@@ -113,13 +113,18 @@
     private static final Config.Next CONFIG_V6_2_5
             = new Config.Next(GlassFishVersion.GF_6_2_5,
                     ConfigBuilderProvider.class.getResource("GlassFishV6_2_4.xml"));
+    
+    /** Library builder configuration since GlassFish 7.0.0. */
+    private static final Config.Next CONFIG_V7_0_0
+            = new Config.Next(GlassFishVersion.GF_7_0_0,
+                    ConfigBuilderProvider.class.getResource("GlassFishV7_0_0.xml"));
 
     /** Library builder configuration for GlassFish cloud. */
     private static final Config config
             = new Config(CONFIG_V3, CONFIG_V4, CONFIG_V4_1, CONFIG_V5, 
                          CONFIG_V5_0_1, CONFIG_V5_1, CONFIG_V6, CONFIG_V6_1_0,
                          CONFIG_V6_2_0, CONFIG_V6_2_1, CONFIG_V6_2_2, 
-                         CONFIG_V6_2_3, CONFIG_V6_2_4, CONFIG_V6_2_5);
+                         CONFIG_V6_2_3, CONFIG_V6_2_4, CONFIG_V6_2_5, CONFIG_V7_0_0);
 
     /** Builders array for each server instance. */
     private static final Map<GlassFishServer, ConfigBuilder> builders
diff --git a/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/GlassFishV7_0_0.xml b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/GlassFishV7_0_0.xml
new file mode 100644
index 0000000..e29acdf
--- /dev/null
+++ b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/GlassFishV7_0_0.xml
@@ -0,0 +1,94 @@
+<?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.
+
+-->
+<server>
+    <tools lib="lib">
+        <asadmin jar="client/appserver-cli.jar"/>
+    </tools>
+    <java version="19">
+        <platform version="11"/>
+        <platform version="12"/>
+        <platform version="13"/>
+        <platform version="14"/>
+        <platform version="15"/>
+        <platform version="16"/>
+        <platform version="17"/>
+        <platform version="18"/>
+        <platform version="19"/>
+    </java>
+    <javaee version="10.0.0">
+        <profile version="10.0.0" type="web"/>
+        <profile version="10.0.0" type="full" check="full"/>
+        <module type="war"/>
+        <module type="car" check="full"/>
+        <module type="ear" check="full"/>
+        <module type="ejb" check="full"/>
+        <module type="rar" check="full"/>
+        <check name="full">
+            <file path="appclient-server-core.jar"/>
+        </check>
+    </javaee>
+    <library id="Java EE">
+        <classpath>
+            <fileset dir="modules">
+                <include name="jakarta\..+\.jar"/>
+                <include name="jakarta.enterprise.cdi-api.jar"/>
+                <include name="jakarta.validation-api.jar"/>
+                <include name="jaxb-osgi.jar"/>
+                <include name="webservices-osgi.jar"/>
+                <include name="weld-osgi-bundle.jar"/>
+            </fileset>
+            <fileset dir="modules/endorsed">
+                <include name=".+\.jar"/>
+            </fileset>
+        </classpath>
+        <javadocs>
+            <lookup path="docs/jakartaee10-doc-api.jar"/>
+        </javadocs>
+        <sources>
+        </sources>
+    </library>
+    <library id="Jersey 3">
+        <classpath>
+            <fileset dir="modules">
+                <include name="jackson.+\.jar"/>
+                <include name="jersey.+\.jar"/>
+                <include name="jettison.*\.jar"/>
+            </fileset>
+        </classpath>
+        <javadocs>
+            <link url="https://repo1.maven.org/maven2/org/glassfish/jersey/jersey-documentation/3.1.0/jersey-documentation-3.1.0-docbook.zip"/>
+        </javadocs>
+        <sources>
+        </sources>
+    </library>
+    <library id="JAX-RS">
+        <classpath>
+            <fileset dir="modules">
+                <include name="jakarta.ws.rs-api.jar"/>
+            </fileset>
+        </classpath>
+        <javadocs>
+        </javadocs>
+        <sources>
+        </sources>
+    </library>
+</server>
diff --git a/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/JavaEEProfile.java b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/JavaEEProfile.java
index 938d31f..a9a6ad5 100644
--- a/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/JavaEEProfile.java
+++ b/enterprise/glassfish.tooling/src/org/netbeans/modules/glassfish/tooling/server/config/JavaEEProfile.java
@@ -78,7 +78,13 @@
     v9_1_0_web(Version.v9_1_0, Type.WEB, "9.1.0-web"),
 
     /** JakartaEE 9.1 full profile. */
-    v9_1_0(Version.v9_1_0, Type.FULL, "9.1.0");
+    v9_1_0(Version.v9_1_0, Type.FULL, "9.1.0"),
+    
+    /** JakartaEE 10 web profile. */
+    v10_0_0_web(Version.v10_0_0, Type.WEB, "10.0.0-web"),
+
+    /** JakartaEE 10 full profile. */
+    v10_0_0(Version.v10_0_0, Type.FULL, "10.0.0");
 
     ////////////////////////////////////////////////////////////////////////////
     // Inner enums                                                            //
@@ -136,7 +142,9 @@
         /** JakartaEE 9.0. */
         v9_0_0("9.0.0"),
         /** JakartaEE 9.1. */
-        v9_1_0("9.1.0");
+        v9_1_0("9.1.0"),
+        /** JakartaEE 10 */
+        v10_0_0("10.0.0");
 
         /** JavaEE profile type name. */
         private final String name;
diff --git a/enterprise/glassfish.tooling/test/unit/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersionTest.java b/enterprise/glassfish.tooling/test/unit/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersionTest.java
index deaed38..719d882 100644
--- a/enterprise/glassfish.tooling/test/unit/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersionTest.java
+++ b/enterprise/glassfish.tooling/test/unit/src/org/netbeans/modules/glassfish/tooling/data/GlassFishVersionTest.java
@@ -97,6 +97,8 @@
                 GlassFishVersion.GF_6_1_0_STR_NEXT);
         verifyToValueFromAdditionalArray(GlassFishVersion.GF_6_2_5,
                 GlassFishVersion.GF_6_2_5_STR_NEXT);
+        verifyToValueFromAdditionalArray(GlassFishVersion.GF_7_0_0,
+                GlassFishVersion.GF_7_0_0_STR_NEXT);
     }
 
     /**
diff --git a/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/GradleJavaEEProjectSettings.java b/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/GradleJavaEEProjectSettings.java
index 26224a5..5ed63c5 100644
--- a/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/GradleJavaEEProjectSettings.java
+++ b/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/GradleJavaEEProjectSettings.java
@@ -55,6 +55,8 @@
     static final Map<String, Profile> PROFILE_DEPENDENCIES = new LinkedHashMap<>();
 
     static {
+      PROFILE_DEPENDENCIES.put("jakarta.platform:jakarta.jakartaee-api:10.*", JAKARTA_EE_10_FULL);
+      PROFILE_DEPENDENCIES.put("jakarta.platform:jakarta.jakartaee-web-api:10.*", JAKARTA_EE_10_WEB);
       PROFILE_DEPENDENCIES.put("jakarta.platform:jakarta.jakartaee-api:9.*", JAKARTA_EE_9_FULL);
       PROFILE_DEPENDENCIES.put("jakarta.platform:jakarta.jakartaee-web-api:9.*", JAKARTA_EE_9_WEB);
       PROFILE_DEPENDENCIES.put("jakarta.platform:jakarta.jakartaee-api:8.*", JAKARTA_EE_8_FULL);
diff --git a/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/ServerSelectionPanelVisual.java b/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/ServerSelectionPanelVisual.java
index 7c3d65e..d16a78c 100644
--- a/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/ServerSelectionPanelVisual.java
+++ b/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/ServerSelectionPanelVisual.java
@@ -154,11 +154,17 @@
                 Set<Profile> availableProfiles = new TreeSet<>(Profile.UI_COMPARATOR);
                 for (Profile profile : platform.getSupportedProfiles(type)) {
                     if (type == J2eeModule.Type.WAR) {
-                        if (profile == Profile.JAVA_EE_6_FULL || profile == Profile.JAVA_EE_7_FULL || profile == Profile.JAVA_EE_8_FULL || profile == Profile.JAKARTA_EE_8_FULL || profile == Profile.JAKARTA_EE_9_FULL) {
+                        if (profile == Profile.JAVA_EE_6_FULL || profile == Profile.JAVA_EE_7_FULL 
+                                || profile == Profile.JAVA_EE_8_FULL || profile == Profile.JAKARTA_EE_8_FULL 
+                                || profile == Profile.JAKARTA_EE_9_FULL || profile == Profile.JAKARTA_EE_9_1_FULL
+                                || profile == Profile.JAKARTA_EE_10_FULL) {
                             continue;
                         }
                     } else {
-                        if (profile == Profile.JAVA_EE_6_WEB || profile == Profile.JAVA_EE_7_WEB || profile == Profile.JAVA_EE_8_WEB || profile == Profile.JAKARTA_EE_8_WEB || profile == Profile.JAKARTA_EE_9_WEB) {
+                        if (profile == Profile.JAVA_EE_6_WEB || profile == Profile.JAVA_EE_7_WEB 
+                                || profile == Profile.JAVA_EE_8_WEB || profile == Profile.JAKARTA_EE_8_WEB 
+                                || profile == Profile.JAKARTA_EE_9_WEB || profile == Profile.JAKARTA_EE_9_1_WEB
+                                || profile == Profile.JAKARTA_EE_10_WEB) {
                             continue;
                         }
                     }
diff --git a/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/WebApplicationProjectWizard.java b/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/WebApplicationProjectWizard.java
index 47ed138..0405157 100644
--- a/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/WebApplicationProjectWizard.java
+++ b/enterprise/gradle.javaee/src/org/netbeans/modules/gradle/javaee/web/newproject/WebApplicationProjectWizard.java
@@ -109,6 +109,18 @@
     private static List<String> webDependencies(String profileId) {
         Profile profile = Profile.fromPropertiesString(profileId);
         List<String> ret = new LinkedList<>();
+        if (profile == Profile.JAKARTA_EE_10_WEB) {
+            ret.add("providedCompile 'jakarta.platform:jakarta.jakartaee-web-api:10.0.0'");
+        }
+        if (profile == Profile.JAKARTA_EE_10_FULL) {
+            ret.add("providedCompile 'jakarta.platform:jakarta.jakartaee-api:10.0.0'");
+        }
+        if (profile == Profile.JAKARTA_EE_9_1_WEB) {
+            ret.add("providedCompile 'jakarta.platform:jakarta.jakartaee-web-api:9.1.0'");
+        }
+        if (profile == Profile.JAKARTA_EE_9_1_FULL) {
+            ret.add("providedCompile 'jakarta.platform:jakarta.jakartaee-api:9.1.0'");
+        }
         if (profile == Profile.JAKARTA_EE_9_WEB) {
             ret.add("providedCompile 'jakarta.platform:jakarta.jakartaee-web-api:9.0.0'");
         }
diff --git a/enterprise/j2ee.clientproject/licenseinfo.xml b/enterprise/j2ee.clientproject/licenseinfo.xml
index 655c2e1..018bde6 100644
--- a/enterprise/j2ee.clientproject/licenseinfo.xml
+++ b/enterprise/j2ee.clientproject/licenseinfo.xml
@@ -42,4 +42,11 @@
         <license ref="Apache-2.0-ASF" />
         <comment type="COMMENT_UNSUPPORTED" />
     </fileset>
+    
+    <fileset>
+        <file>src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-9.xml</file>
+        <file>src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-10.xml</file>
+        <license ref="EPL-v20" />
+        <comment type="CATEGORY_B" />
+    </fileset>
 </licenseinfo>
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java
index c7e4151..21ba8c0 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientProvider.java
@@ -351,7 +351,9 @@
         if (p == null) {
             return AppClient.VERSION_6_0;
         }
-        if (Profile.JAKARTA_EE_9_1_FULL.equals(p) || Profile.JAKARTA_EE_9_1_WEB.equals(p)) {
+        if (Profile.JAKARTA_EE_10_FULL.equals(p) || Profile.JAKARTA_EE_10_WEB.equals(p)) {
+            return AppClient.VERSION_10_0;
+        } else if (Profile.JAKARTA_EE_9_1_FULL.equals(p) || Profile.JAKARTA_EE_9_1_WEB.equals(p)) {
             return AppClient.VERSION_9_0;
         } else if (Profile.JAKARTA_EE_9_FULL.equals(p) || Profile.JAKARTA_EE_9_WEB.equals(p)) {
             return AppClient.VERSION_9_0;
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java
index 3e2205b..3db60b9 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/api/AppClientProjectGenerator.java
@@ -162,6 +162,8 @@
         String resource;
         if(j2eeProfile == null) {
             resource = "org-netbeans-modules-j2ee-clientproject/application-client-6.xml"; // NOI18N
+        } else if (Profile.JAKARTA_EE_10_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_10_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-10.xml"; // NOI18N
         } else if (Profile.JAKARTA_EE_9_1_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_9_1_WEB.equals(j2eeProfile)) {
                  resource = "org-netbeans-modules-j2ee-clientproject/application-client-9.xml"; // NOI18N
         } else if (Profile.JAKARTA_EE_9_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_9_WEB.equals(j2eeProfile)) {
@@ -389,6 +391,8 @@
             String resource;
             if (j2eeProfile == null) {
                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-6.xml"; // NOI18N
+            } else if (Profile.JAKARTA_EE_10_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_10_WEB.equals(j2eeProfile)) {
+                 resource = "org-netbeans-modules-j2ee-clientproject/application-client-10.xml"; // NOI18N
             } else if (Profile.JAKARTA_EE_9_1_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_9_1_WEB.equals(j2eeProfile)) {
                  resource = "org-netbeans-modules-j2ee-clientproject/application-client-9.xml"; // NOI18N
             } else if (Profile.JAKARTA_EE_9_FULL.equals(j2eeProfile) || Profile.JAKARTA_EE_9_WEB.equals(j2eeProfile)) {
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java
index e4cd216..9428283 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java
@@ -323,7 +323,7 @@
         PLATFORM_LIST_RENDERER = PlatformUiSupport.createPlatformListCellRenderer();
         SpecificationVersion minimalSourceLevel = null;
         Profile profile = Profile.fromPropertiesString(evaluator.getProperty(J2EE_PLATFORM));
-        if (Profile.JAKARTA_EE_9_1_FULL.equals(profile)) {
+        if (Profile.JAKARTA_EE_9_1_FULL.equals(profile) || Profile.JAKARTA_EE_10_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("11");
         } else if (Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_9_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("1.8");
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-10.xml b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-10.xml
new file mode 100644
index 0000000..15bce1d
--- /dev/null
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-10.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application-client xmlns="https://jakarta.ee/xml/ns/jakartaee"
+                    version="10"
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd">
+
+</application-client>
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-9.xml b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-9.xml
new file mode 100644
index 0000000..ad1672f
--- /dev/null
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/application-client-9.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application-client xmlns="https://jakarta.ee/xml/ns/jakartaee"
+                    version="9"
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/application-client_9.xsd">
+
+</application-client>
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml
index cb18633..f94dd78 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/resources/layer.xml
@@ -55,6 +55,8 @@
         <file name="application-client-6.xml" url="application-client-6.xml"/>
         <file name="application-client-7.xml" url="application-client-7.xml"/>
         <file name="application-client-8.xml" url="application-client-8.xml"/>
+        <file name="application-client-9.xml" url="application-client-9.xml"/>
+        <file name="application-client-10.xml" url="application-client-10.xml"/>
         <file name="MANIFEST.MF" url="MANIFEST.MF"/>
     </folder>
     
diff --git a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/wsclient/AppClientProjectJAXWSClientSupport.java b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/wsclient/AppClientProjectJAXWSClientSupport.java
index 825b153..84e1b58 100644
--- a/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/wsclient/AppClientProjectJAXWSClientSupport.java
+++ b/enterprise/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/wsclient/AppClientProjectJAXWSClientSupport.java
@@ -114,6 +114,10 @@
                 return JAKARTA_EE_VERSION_91;
             } else if (Profile.JAKARTA_EE_9_1_FULL.equals(j2eeClientModule.getJ2eeProfile())) {
                 return JAKARTA_EE_VERSION_91;
+            } else if (Profile.JAKARTA_EE_10_WEB.equals(j2eeClientModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
+            } else if (Profile.JAKARTA_EE_10_FULL.equals(j2eeClientModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
             } else if (Profile.JAVA_EE_5.equals(j2eeClientModule.getJ2eeProfile())) {
                 return JAVA_EE_VERSION_15;
             }
diff --git a/enterprise/j2ee.common/licenseinfo.xml b/enterprise/j2ee.common/licenseinfo.xml
index c54aa0c..b423315 100644
--- a/enterprise/j2ee.common/licenseinfo.xml
+++ b/enterprise/j2ee.common/licenseinfo.xml
@@ -27,6 +27,7 @@
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/beans-1.1.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/beans-2.0.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/beans-3.0.xml</file>
+        <file>src/org/netbeans/modules/j2ee/common/dd/resources/beans-4.0.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/constraint.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/constraint-1.1.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/constraint-2.0.xml</file>
@@ -38,6 +39,7 @@
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-7.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-8.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-9.xml</file>
+        <file>src/org/netbeans/modules/j2ee/common/dd/resources/ear-10.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation-1.1.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/validation-2.0.xml</file>
@@ -49,10 +51,12 @@
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-3.1.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-4.0.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-5.0.xml</file>
+        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-6.0.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-3.0.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-3.1.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-4.0.xml</file>
         <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-5.0.xml</file>
+        <file>src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-6.0.xml</file>
         <file>test/unit/src/templates/Class.template</file>
         <file>test/unit/src/templates/Interface.template</file>
         <license ref="Apache-2.0-ASF" />
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java
index e5d9a73..9949940 100644
--- a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilities.java
@@ -157,7 +157,7 @@
      */
     public boolean isEjb40Supported() {
         J2eeModule.Type moduleType = provider.getJ2eeModule().getType();
-        boolean ee9 = ejbJarProfile != null && (ejbJarProfile.equals(Profile.JAKARTA_EE_9_FULL) || ejbJarProfile.equals(Profile.JAKARTA_EE_9_1_FULL));
+        boolean ee9 = ejbJarProfile != null && (ejbJarProfile.equals(Profile.JAKARTA_EE_9_FULL) || ejbJarProfile.equals(Profile.JAKARTA_EE_9_1_FULL) || ejbJarProfile.equals(Profile.JAKARTA_EE_10_FULL));
         return ee9 && (J2eeModule.Type.EJB.equals(moduleType) || J2eeModule.Type.WAR.equals(moduleType));
     }
     
@@ -170,7 +170,7 @@
      */
     public boolean isEjb40LiteSupported() {
         J2eeModule.Type moduleType = provider.getJ2eeModule().getType();
-        boolean ee9Web = ejbJarProfile != null && (ejbJarProfile.equals(Profile.JAKARTA_EE_9_WEB) || ejbJarProfile.equals(Profile.JAKARTA_EE_9_1_WEB));
+        boolean ee9Web = ejbJarProfile != null && (ejbJarProfile.equals(Profile.JAKARTA_EE_9_WEB) || ejbJarProfile.equals(Profile.JAKARTA_EE_9_1_WEB) || ejbJarProfile.equals(Profile.JAKARTA_EE_10_WEB));
         return isEjb40Supported() || (J2eeModule.Type.WAR.equals(moduleType) && ee9Web);
     }
     
@@ -232,6 +232,18 @@
     }
 
     /**
+     * Is CDI 4.0 supported in this project?
+     *
+     * @return {@code true} if the project targets Jakarta EE 10 profile,
+     * {@code false} otherwise
+     */
+    public boolean isCdi40Supported() {
+        return Profile.JAKARTA_EE_10_FULL.equals(ejbJarProfile)
+                || Profile.JAKARTA_EE_10_WEB.equals(webProfile)
+                || Profile.JAKARTA_EE_10_FULL.equals(carProfile);
+    }
+
+    /**
      * Returns <code>true</code> if the server used by project supports EJB lite.
      *
      * @return <code>true</code> if the server used by project supports EJB lite
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java
index 92e6e1c..ec0298a 100644
--- a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/DDHelper.java
@@ -66,7 +66,9 @@
      */
     public static FileObject createWebXml(Profile j2eeProfile, boolean webXmlRequired, FileObject dir) throws IOException {
         String template = null;
-        if ((Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile ||
+        if ((Profile.JAKARTA_EE_10_FULL == j2eeProfile || Profile.JAKARTA_EE_10_WEB == j2eeProfile) && webXmlRequired) {
+            template = "web-6.0.xml"; //NOI18N
+        } else if ((Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile ||
                 Profile.JAKARTA_EE_9_FULL == j2eeProfile || Profile.JAKARTA_EE_9_WEB == j2eeProfile) && webXmlRequired) {
             template = "web-5.0.xml"; //NOI18N
         } else if ((Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile ||
@@ -103,7 +105,9 @@
      */
     public static FileObject createWebFragmentXml(Profile j2eeProfile, FileObject dir) throws IOException {
         String template = null;
-        if (Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile ||
+        if (Profile.JAKARTA_EE_10_FULL == j2eeProfile || Profile.JAKARTA_EE_10_WEB == j2eeProfile) {
+            template = "web-fragment-6.0.xml"; //NOI18N
+        } else if (Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile ||
                 Profile.JAKARTA_EE_9_FULL == j2eeProfile || Profile.JAKARTA_EE_9_WEB == j2eeProfile) {
             template = "web-fragment-5.0.xml"; //NOI18N
         } else if (Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile ||
@@ -148,7 +152,9 @@
      */
     public static FileObject createBeansXml(Profile j2eeProfile, FileObject dir, String name) throws IOException {
         String template = null;       
-        if (Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile ||
+        if (Profile.JAKARTA_EE_10_FULL == j2eeProfile || Profile.JAKARTA_EE_10_WEB == j2eeProfile) {
+            template = "beans-4.0.xml"; //NOI18N
+        } else if (Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile ||
                 Profile.JAKARTA_EE_9_FULL == j2eeProfile || Profile.JAKARTA_EE_9_WEB == j2eeProfile) {
             template = "beans-3.0.xml"; //NOI18N
         } else if (Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile ||
@@ -198,11 +204,12 @@
             template = "validation.xml"; //NOI18N
         } else if (Profile.JAVA_EE_7_FULL == j2eeProfile || Profile.JAVA_EE_7_WEB == j2eeProfile) {
             template = "validation-1.1.xml"; //NOI18N
-        } else if (Profile.JAVA_EE_8_FULL == j2eeProfile || Profile.JAVA_EE_8_WEB == j2eeProfile ||
-                Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile) {
+        } else if (Profile.JAVA_EE_8_FULL == j2eeProfile || Profile.JAVA_EE_8_WEB == j2eeProfile
+                || Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile) {
             template = "validation-2.0.xml"; //NOI18N
-        } else if (Profile.JAKARTA_EE_9_FULL == j2eeProfile || Profile.JAKARTA_EE_9_WEB == j2eeProfile ||
-                Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile) {
+        } else if (Profile.JAKARTA_EE_9_FULL == j2eeProfile || Profile.JAKARTA_EE_9_WEB == j2eeProfile
+                || Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile
+                || Profile.JAKARTA_EE_10_FULL == j2eeProfile || Profile.JAKARTA_EE_10_WEB == j2eeProfile) {
             template = "validation-3.0.xml"; //NOI18N
         }
         if (template == null)
@@ -243,11 +250,12 @@
             template = "constraint.xml"; //NOI18N
         } else if (Profile.JAVA_EE_7_FULL == j2eeProfile || Profile.JAVA_EE_7_WEB == j2eeProfile) {
             template = "constraint-1.1.xml"; //NOI18N
-        } else if (Profile.JAVA_EE_8_FULL == j2eeProfile || Profile.JAVA_EE_8_WEB == j2eeProfile ||
-                Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile) {
+        } else if (Profile.JAVA_EE_8_FULL == j2eeProfile || Profile.JAVA_EE_8_WEB == j2eeProfile
+                || Profile.JAKARTA_EE_8_FULL == j2eeProfile || Profile.JAKARTA_EE_8_WEB == j2eeProfile) {
             template = "constraint-2.0.xml"; //NOI18N
-        } else if (Profile.JAKARTA_EE_9_FULL == j2eeProfile || Profile.JAKARTA_EE_9_WEB == j2eeProfile ||
-                Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile) {
+        } else if (Profile.JAKARTA_EE_9_FULL == j2eeProfile || Profile.JAKARTA_EE_9_WEB == j2eeProfile
+                || Profile.JAKARTA_EE_9_1_FULL == j2eeProfile || Profile.JAKARTA_EE_9_1_WEB == j2eeProfile
+                || Profile.JAKARTA_EE_10_FULL == j2eeProfile || Profile.JAKARTA_EE_10_WEB == j2eeProfile) {
             template = "constraint-3.0.xml"; //NOI18N
         }
         if (template == null)
@@ -277,7 +285,9 @@
             boolean forceCreation) throws IOException {
         String template = null;
         
-        if (profile != null && (profile.equals(Profile.JAKARTA_EE_9_FULL) || profile.equals(Profile.JAKARTA_EE_9_1_FULL)) && forceCreation) {
+        if (profile != null && profile.equals(Profile.JAKARTA_EE_10_FULL) && forceCreation) {
+            template = "ear-10.xml"; // NOI18N
+        } else if (profile != null && (profile.equals(Profile.JAKARTA_EE_9_FULL) || profile.equals(Profile.JAKARTA_EE_9_1_FULL)) && forceCreation) {
             template = "ear-9.xml"; // NOI18N
         } else if (profile != null && (profile.equals(Profile.JAKARTA_EE_8_FULL) || profile.equals(Profile.JAVA_EE_8_FULL)) && forceCreation) {
             template = "ear-8.xml"; // NOI18N
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/beans-4.0.xml b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/beans-4.0.xml
new file mode 100644
index 0000000..fcc23ad
--- /dev/null
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/beans-4.0.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="https://jakarta.ee/xml/ns/jakartaee"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/beans_4_0.xsd"
+       bean-discovery-mode="annotated"
+       version="4.0">
+</beans>
\ No newline at end of file
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/ear-10.xml b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/ear-10.xml
new file mode 100644
index 0000000..f91f71e
--- /dev/null
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/ear-10.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<application xmlns="https://jakarta.ee/xml/ns/jakartaee"
+            version="10"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/application_10.xsd">
+
+</application>
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/web-6.0.xml b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/web-6.0.xml
new file mode 100644
index 0000000..20eaea5
--- /dev/null
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/web-6.0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	 xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
+	 version="6.0">
+
+</web-app>
diff --git a/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-6.0.xml b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-6.0.xml
new file mode 100644
index 0000000..0cee8b8
--- /dev/null
+++ b/enterprise/j2ee.common/src/org/netbeans/modules/j2ee/common/dd/resources/web-fragment-6.0.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"
+	 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	 xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"
+	 version="6.0">
+
+</web-fragment>
diff --git a/enterprise/j2ee.common/test/unit/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilitiesTest.java b/enterprise/j2ee.common/test/unit/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilitiesTest.java
index 6259489..2fcc0c3 100644
--- a/enterprise/j2ee.common/test/unit/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilitiesTest.java
+++ b/enterprise/j2ee.common/test/unit/src/org/netbeans/modules/j2ee/common/J2eeProjectCapabilitiesTest.java
@@ -181,6 +181,26 @@
         assertFalse(cap.isEjb40Supported());
         assertTrue(cap.isEjb40LiteSupported());
 
+        p = createProject(Profile.JAKARTA_EE_10_FULL, Type.EJB);
+        cap = J2eeProjectCapabilities.forProject(p);
+        assertFalse(cap.isEjb30Supported());
+        assertFalse(cap.isEjb31Supported());
+        assertFalse(cap.isEjb31LiteSupported());
+        assertFalse(cap.isEjb32Supported());
+        assertFalse(cap.isEjb32LiteSupported());
+        assertTrue(cap.isEjb40Supported());
+        assertTrue(cap.isEjb40LiteSupported());
+
+        p = createProject(Profile.JAKARTA_EE_10_WEB, Type.EJB);
+        cap = J2eeProjectCapabilities.forProject(p);
+        assertFalse(cap.isEjb30Supported());
+        assertFalse(cap.isEjb31Supported());
+        assertFalse(cap.isEjb31LiteSupported());
+        assertFalse(cap.isEjb32Supported());
+        assertFalse(cap.isEjb32LiteSupported());
+        assertFalse(cap.isEjb40Supported());
+        assertTrue(cap.isEjb40LiteSupported());
+
         p = createProject(Profile.JAVA_EE_5, Type.WAR);
         cap = J2eeProjectCapabilities.forProject(p);
         assertFalse(cap.isEjb30Supported());
@@ -310,6 +330,26 @@
         assertFalse(cap.isEjb32LiteSupported());
         assertFalse(cap.isEjb40Supported());
         assertTrue(cap.isEjb40LiteSupported());
+
+        p = createProject(Profile.JAKARTA_EE_10_FULL, Type.WAR);
+        cap = J2eeProjectCapabilities.forProject(p);
+        assertFalse(cap.isEjb30Supported());
+        assertFalse(cap.isEjb31Supported());
+        assertFalse(cap.isEjb31LiteSupported());
+        assertFalse(cap.isEjb32Supported());
+        assertFalse(cap.isEjb32LiteSupported());
+        assertTrue(cap.isEjb40Supported());
+        assertTrue(cap.isEjb40LiteSupported());
+
+        p = createProject(Profile.JAKARTA_EE_10_WEB, Type.WAR);
+        cap = J2eeProjectCapabilities.forProject(p);
+        assertFalse(cap.isEjb30Supported());
+        assertFalse(cap.isEjb31Supported());
+        assertFalse(cap.isEjb31LiteSupported());
+        assertFalse(cap.isEjb32Supported());
+        assertFalse(cap.isEjb32LiteSupported());
+        assertFalse(cap.isEjb40Supported());
+        assertTrue(cap.isEjb40LiteSupported());
         
     }
 
diff --git a/enterprise/j2ee.core/nbproject/org-netbeans-modules-j2ee-core.sig b/enterprise/j2ee.core/nbproject/org-netbeans-modules-j2ee-core.sig
index 71e2d41..dcee72e 100644
--- a/enterprise/j2ee.core/nbproject/org-netbeans-modules-j2ee-core.sig
+++ b/enterprise/j2ee.core/nbproject/org-netbeans-modules-j2ee-core.sig
@@ -19,12 +19,6 @@
 fld public final static java.util.Comparator<org.netbeans.api.j2ee.core.Profile> UI_COMPARATOR
 fld public final static org.netbeans.api.j2ee.core.Profile J2EE_13
 fld public final static org.netbeans.api.j2ee.core.Profile J2EE_14
-fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_8_FULL
-fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_8_WEB
-fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_1_FULL
-fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_1_WEB
-fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_FULL
-fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_WEB
 fld public final static org.netbeans.api.j2ee.core.Profile JAVA_EE_5
 fld public final static org.netbeans.api.j2ee.core.Profile JAVA_EE_6_FULL
 fld public final static org.netbeans.api.j2ee.core.Profile JAVA_EE_6_WEB
@@ -32,6 +26,14 @@
 fld public final static org.netbeans.api.j2ee.core.Profile JAVA_EE_7_WEB
 fld public final static org.netbeans.api.j2ee.core.Profile JAVA_EE_8_FULL
 fld public final static org.netbeans.api.j2ee.core.Profile JAVA_EE_8_WEB
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_8_FULL
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_8_WEB
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_FULL
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_WEB
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_1_FULL
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_9_1_WEB
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_10_FULL
+fld public final static org.netbeans.api.j2ee.core.Profile JAKARTA_EE_10_WEB
 meth public boolean isAtLeast(org.netbeans.api.j2ee.core.Profile)
  anno 1 org.netbeans.api.annotations.common.NonNull()
 meth public java.lang.String getDisplayName()
diff --git a/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Bundle.properties b/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Bundle.properties
index 490a29e..289bc64 100644
--- a/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Bundle.properties
+++ b/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Bundle.properties
@@ -32,3 +32,5 @@
 JakartaEE9Web.displayName=Jakarta EE 9 Web
 JakartaEE91Full.displayName=Jakarta EE 9.1
 JakartaEE91Web.displayName=Jakarta EE 9.1 Web
+JakartaEE10Full.displayName=Jakarta EE 10
+JakartaEE10Web.displayName=Jakarta EE 10 Web
diff --git a/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java b/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java
index 7e282ff..189e05a 100644
--- a/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java
+++ b/enterprise/j2ee.core/src/org/netbeans/api/j2ee/core/Profile.java
@@ -73,6 +73,10 @@
 
     public static final Profile JAKARTA_EE_9_1_FULL  = new Profile(15, "9.1", null, "JakartaEE91Full.displayName");
 
+    public static final Profile JAKARTA_EE_10_WEB  = new Profile(16, "10", "web", "JakartaEE10Web.displayName");
+
+    public static final Profile JAKARTA_EE_10_FULL  = new Profile(17, "10", null, "JakartaEE10Full.displayName");
+
     private final int order;
 
     // cache
@@ -182,6 +186,12 @@
         } else if (JAKARTA_EE_9_1_WEB.toPropertiesString().equals(valueMinusQuotes)
                 || "JAKARTA_EE_9_1_WEB".equals(value)) {
             return JAKARTA_EE_9_1_WEB;
+        } else if (JAKARTA_EE_10_FULL.toPropertiesString().equals(valueMinusQuotes)
+                || "JAKARTA_EE_10_FULL".equals(value)) {
+            return JAKARTA_EE_10_FULL;
+        } else if (JAKARTA_EE_10_WEB.toPropertiesString().equals(valueMinusQuotes)
+                || "JAKARTA_EE_10_WEB".equals(value)) {
+            return JAKARTA_EE_10_WEB;
         } else {
           return null;
         }
diff --git a/enterprise/j2ee.core/test/unit/src/org/netbeans/api/j2ee/core/ProfileTest.java b/enterprise/j2ee.core/test/unit/src/org/netbeans/api/j2ee/core/ProfileTest.java
index 1db6efd..c5fe669 100644
--- a/enterprise/j2ee.core/test/unit/src/org/netbeans/api/j2ee/core/ProfileTest.java
+++ b/enterprise/j2ee.core/test/unit/src/org/netbeans/api/j2ee/core/ProfileTest.java
@@ -59,6 +59,10 @@
         assertEquals(Profile.JAKARTA_EE_9_1_FULL, Profile.fromPropertiesString("JAKARTA_EE_9_1_FULL"));
         assertEquals(Profile.JAKARTA_EE_9_1_WEB, Profile.fromPropertiesString("9.1-web"));
         assertEquals(Profile.JAKARTA_EE_9_1_WEB, Profile.fromPropertiesString("JAKARTA_EE_9_1_WEB"));
+        assertEquals(Profile.JAKARTA_EE_10_FULL, Profile.fromPropertiesString("10.0"));
+        assertEquals(Profile.JAKARTA_EE_10_FULL, Profile.fromPropertiesString("JAKARTA_EE_10_FULL"));
+        assertEquals(Profile.JAKARTA_EE_10_WEB, Profile.fromPropertiesString("10.0-web"));
+        assertEquals(Profile.JAKARTA_EE_10_WEB, Profile.fromPropertiesString("JAKARTA_EE_10_WEB"));
         assertNull(Profile.fromPropertiesString("something"));
     }
 
@@ -79,6 +83,8 @@
         assertTrue(Profile.JAKARTA_EE_9_WEB.isAtLeast(Profile.JAVA_EE_5));
         assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAVA_EE_5));
         assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAVA_EE_5));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAVA_EE_5));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAVA_EE_5));
     }
 
     public void testIsHigherJavaEEVersionJavaEE6full() {
@@ -98,6 +104,8 @@
         assertTrue(Profile.JAKARTA_EE_9_WEB.isAtLeast(Profile.JAVA_EE_6_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAVA_EE_6_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAVA_EE_6_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAVA_EE_6_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAVA_EE_6_WEB));
     }
 
     public void testIsHigherJavaEEVersionJavaEE7full() {
@@ -117,6 +125,8 @@
         assertTrue(Profile.JAKARTA_EE_9_WEB.isAtLeast(Profile.JAVA_EE_7_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAVA_EE_7_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAVA_EE_7_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAVA_EE_7_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAVA_EE_7_WEB));
     }
 
     public void testIsHigherJavaEEVersionJavaEE8full() {
@@ -136,6 +146,8 @@
         assertTrue(Profile.JAKARTA_EE_9_WEB.isAtLeast(Profile.JAVA_EE_8_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAVA_EE_8_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAVA_EE_8_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAVA_EE_8_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAVA_EE_8_WEB));
     }
 
     public void testIsHigherJavaEEVersionJakartaEE8full() {
@@ -155,6 +167,8 @@
         assertTrue(Profile.JAKARTA_EE_9_WEB.isAtLeast(Profile.JAKARTA_EE_8_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAKARTA_EE_8_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAKARTA_EE_8_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAKARTA_EE_8_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAKARTA_EE_8_WEB));
     }
 
     public void testIsHigherJavaEEVersionJakartaEE9full() {
@@ -174,6 +188,8 @@
         assertTrue(Profile.JAKARTA_EE_9_FULL.isAtLeast(Profile.JAKARTA_EE_9_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAKARTA_EE_9_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAKARTA_EE_9_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAKARTA_EE_9_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAKARTA_EE_9_WEB));
     }
     
     public void testIsHigherJavaEEVersionJakartaEE91full() {
@@ -193,6 +209,28 @@
         assertFalse(Profile.JAKARTA_EE_9_FULL.isAtLeast(Profile.JAKARTA_EE_9_1_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAKARTA_EE_9_1_WEB));
         assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAKARTA_EE_9_1_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAKARTA_EE_9_1_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAKARTA_EE_9_1_WEB));
     }
+    
+        public void testIsHigherJavaEEVersionJakartaEE10full() {
+        assertFalse(Profile.J2EE_13.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.J2EE_14.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAVA_EE_5.isAtLeast(Profile.JAKARTA_EE_10_WEB));
 
+        assertFalse(Profile.JAVA_EE_6_WEB.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAVA_EE_6_FULL.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAVA_EE_7_WEB.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAVA_EE_7_FULL.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAVA_EE_8_WEB.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAVA_EE_8_FULL.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAKARTA_EE_8_WEB.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAKARTA_EE_8_FULL.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAKARTA_EE_9_WEB.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertFalse(Profile.JAKARTA_EE_9_FULL.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertTrue(Profile.JAKARTA_EE_9_1_WEB.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertTrue(Profile.JAKARTA_EE_9_1_FULL.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_WEB.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+        assertTrue(Profile.JAKARTA_EE_10_FULL.isAtLeast(Profile.JAKARTA_EE_10_WEB));
+    }
 }
diff --git a/enterprise/j2ee.dd/.gitignore b/enterprise/j2ee.dd/.gitignore
index 053e4ca..33e9009 100644
--- a/enterprise/j2ee.dd/.gitignore
+++ b/enterprise/j2ee.dd/.gitignore
@@ -5,12 +5,14 @@
 src/org/netbeans/modules/j2ee/dd/impl/application/model_7/*
 src/org/netbeans/modules/j2ee/dd/impl/application/model_8/*
 src/org/netbeans/modules/j2ee/dd/impl/application/model_9/*
+src/org/netbeans/modules/j2ee/dd/impl/application/model_10/*
 src/org/netbeans/modules/j2ee/dd/impl/client/model_1_4/*
 src/org/netbeans/modules/j2ee/dd/impl/client/model_5_0/*
 src/org/netbeans/modules/j2ee/dd/impl/client/model_6_0/*
 src/org/netbeans/modules/j2ee/dd/impl/client/model_7_0/*
 src/org/netbeans/modules/j2ee/dd/impl/client/model_8_0/*
 src/org/netbeans/modules/j2ee/dd/impl/client/model_9_0/*
+src/org/netbeans/modules/j2ee/dd/impl/client/model_10_0/*
 src/org/netbeans/modules/j2ee/dd/impl/ejb/model_2_1/*
 src/org/netbeans/modules/j2ee/dd/impl/ejb/model_3_0/*
 src/org/netbeans/modules/j2ee/dd/impl/ejb/model_3_1/*
@@ -25,4 +27,6 @@
 src/org/netbeans/modules/j2ee/dd/impl/web/model_4_0/*
 src/org/netbeans/modules/j2ee/dd/impl/web/model_4_0_frag/*
 src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0/*
-src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0_frag/*
\ No newline at end of file
+src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0_frag/*
+src/org/netbeans/modules/j2ee/dd/impl/web/model_6_0/*
+src/org/netbeans/modules/j2ee/dd/impl/web/model_6_0_frag/*
\ No newline at end of file
diff --git a/enterprise/j2ee.dd/build.xml b/enterprise/j2ee.dd/build.xml
index 4572950..1f54393 100644
--- a/enterprise/j2ee.dd/build.xml
+++ b/enterprise/j2ee.dd/build.xml
@@ -30,10 +30,12 @@
     <property name="s2b_root_web_3_1" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_3_1"/>
     <property name="s2b_root_web_4_0" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_4_0"/>
     <property name="s2b_root_web_5_0" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0"/>
+    <property name="s2b_root_web_6_0" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_6_0"/>
     <property name="s2b_root_web_3_0_frag" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_3_0_frag"/>
     <property name="s2b_root_web_3_1_frag" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_3_1_frag"/>
     <property name="s2b_root_web_4_0_frag" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_4_0_frag"/>
     <property name="s2b_root_web_5_0_frag" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0_frag"/>
+    <property name="s2b_root_web_6_0_frag" location="src/org/netbeans/modules/j2ee/dd/impl/web/model_6_0_frag"/>
     <property name="s2b_root_2_1" location="src/org/netbeans/modules/j2ee/dd/impl/ejb/model_2_1"/>
     <property name="s2b_root_3_0" location="src/org/netbeans/modules/j2ee/dd/impl/ejb/model_3_0"/>
     <property name="s2b_root_3_1" location="src/org/netbeans/modules/j2ee/dd/impl/ejb/model_3_1"/>
@@ -45,6 +47,7 @@
     <property name="s2b_root_app_7" location="src/org/netbeans/modules/j2ee/dd/impl/application/model_7"/>
     <property name="s2b_root_app_8" location="src/org/netbeans/modules/j2ee/dd/impl/application/model_8"/>
     <property name="s2b_root_app_9" location="src/org/netbeans/modules/j2ee/dd/impl/application/model_9"/>
+    <property name="s2b_root_app_10" location="src/org/netbeans/modules/j2ee/dd/impl/application/model_10"/>
     <property name="s2b_res_root" location="src/org/netbeans/modules/j2ee/dd/impl/resources"/>
     <property name="s2b_root_client_1_4" location="src/org/netbeans/modules/j2ee/dd/impl/client/model_1_4"/>
     <property name="s2b_root_client_5_0" location="src/org/netbeans/modules/j2ee/dd/impl/client/model_5_0"/>
@@ -52,6 +55,7 @@
     <property name="s2b_root_client_7_0" location="src/org/netbeans/modules/j2ee/dd/impl/client/model_7_0"/>
     <property name="s2b_root_client_8_0" location="src/org/netbeans/modules/j2ee/dd/impl/client/model_8_0"/>
     <property name="s2b_root_client_9_0" location="src/org/netbeans/modules/j2ee/dd/impl/client/model_9_0"/>
+    <property name="s2b_root_client_10_0" location="src/org/netbeans/modules/j2ee/dd/impl/client/model_10_0"/>
     <property name="j2ee.dd.resources.dir" value="src/org/netbeans/modules/j2ee/dd/impl/"/>
 
 
@@ -177,6 +181,28 @@
         rootDir="src"
         java5="true"/>
         <echo file="${s2b_root_web_5_0_frag}/package-info.java">@org.netbeans.api.annotations.common.SuppressWarnings("NM_SAME_SIMPLE_NAME_AS_INTERFACE") // justification="Generated implementation classes"${line.separator}package org.netbeans.modules.j2ee.dd.impl.web.model_5_0_frag;</echo>
+        <schema2beans schema="${s2b_res_root}/web-app_6_0.xsd"
+        mddFile="${s2b_res_root}/web-app_6_0.mdd"
+        package="org.netbeans.modules.j2ee.dd.impl.web.model_6_0"
+        schemaType="xmlschema"
+        useInterfaces="true"
+        validate="true"
+        attrProp="true"
+        removeUnreferencedNodes="true"
+        rootDir="src"
+        java5="true"/>
+        <echo file="${s2b_root_web_6_0}/package-info.java">@org.netbeans.api.annotations.common.SuppressWarnings("NM_SAME_SIMPLE_NAME_AS_INTERFACE") // justification="Generated implementation classes"${line.separator}package org.netbeans.modules.j2ee.dd.impl.web.model_6_0;</echo>
+        <schema2beans schema="${s2b_res_root}/web-fragment_6_0.xsd"
+        mddFile="${s2b_res_root}/web-fragment_6_0.mdd"
+        package="org.netbeans.modules.j2ee.dd.impl.web.model_6_0_frag"
+        schemaType="xmlschema"
+        useInterfaces="true"
+        validate="true"
+        attrProp="true"
+        removeUnreferencedNodes="true"
+        rootDir="src"
+        java5="true"/>
+        <echo file="${s2b_root_web_6_0_frag}/package-info.java">@org.netbeans.api.annotations.common.SuppressWarnings("NM_SAME_SIMPLE_NAME_AS_INTERFACE") // justification="Generated implementation classes"${line.separator}package org.netbeans.modules.j2ee.dd.impl.web.model_6_0_frag;</echo>
 
         <replace file="${s2b_root_web_2_4}/WebApp.java" summary="true">
             <replacetoken>org.netbeans.modules.j2ee.dd.api.web.ServletMapping25</replacetoken>
@@ -456,6 +482,66 @@
             <replacetoken>public void setServletName(java.lang.String[] value) {</replacetoken>
             <replacevalue>public void setServletNames(java.lang.String[] value) {</replacevalue>
         </replace>
+        <replace file="${s2b_root_web_6_0}/ServletMapping.java" summary="true">
+            <replacetoken>public java.lang.String[] getUrlPattern() {</replacetoken>
+            <replacevalue>public java.lang.String[] getUrlPatterns() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0}/ServletMapping.java" summary="true">
+            <replacetoken>public void setUrlPattern(java.lang.String[] value) {</replacetoken>
+            <replacevalue>public void setUrlPatterns(java.lang.String[] value) {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true">
+            <replacetoken>org.netbeans.modules.j2ee.dd.api.web.ServletMapping25</replacetoken>
+            <replacevalue>org.netbeans.modules.j2ee.dd.api.web.ServletMapping</replacevalue>
+        </replace>
+
+        <replace file="${s2b_root_web_6_0}/FilterMapping.java" summary="true">
+            <replacetoken>public java.lang.String[] getUrlPattern() {</replacetoken>
+            <replacevalue>public java.lang.String[] getUrlPatterns() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0}/FilterMapping.java" summary="true">
+            <replacetoken>public void setUrlPattern(java.lang.String[] value) {</replacetoken>
+            <replacevalue>public void setUrlPatterns(java.lang.String[] value) {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0}/FilterMapping.java" summary="true">
+            <replacetoken>public java.lang.String[] getServletName() {</replacetoken>
+            <replacevalue>public java.lang.String[] getServletNames() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0}/FilterMapping.java" summary="true">
+            <replacetoken>public void setServletName(java.lang.String[] value) {</replacetoken>
+            <replacevalue>public void setServletNames(java.lang.String[] value) {</replacevalue>
+        </replace>
+        
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true">
+            <replacetoken>org.netbeans.modules.j2ee.dd.api.web.ServletMapping25</replacetoken>
+            <replacevalue>org.netbeans.modules.j2ee.dd.api.web.ServletMapping</replacevalue>
+        </replace>
+
+        <replace file="${s2b_root_web_6_0_frag}/ServletMapping.java" summary="true">
+            <replacetoken>public java.lang.String[] getUrlPattern() {</replacetoken>
+            <replacevalue>public java.lang.String[] getUrlPatterns() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0_frag}/ServletMapping.java" summary="true">
+            <replacetoken>public void setUrlPattern(java.lang.String[] value) {</replacetoken>
+            <replacevalue>public void setUrlPatterns(java.lang.String[] value) {</replacevalue>
+        </replace>
+
+        <replace file="${s2b_root_web_6_0_frag}/FilterMapping.java" summary="true">
+            <replacetoken>public java.lang.String[] getUrlPattern() {</replacetoken>
+            <replacevalue>public java.lang.String[] getUrlPatterns() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0_frag}/FilterMapping.java" summary="true">
+            <replacetoken>public void setUrlPattern(java.lang.String[] value) {</replacetoken>
+            <replacevalue>public void setUrlPatterns(java.lang.String[] value) {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0_frag}/FilterMapping.java" summary="true">
+            <replacetoken>public java.lang.String[] getServletName() {</replacetoken>
+            <replacevalue>public java.lang.String[] getServletNames() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_web_6_0_frag}/FilterMapping.java" summary="true">
+            <replacetoken>public void setServletName(java.lang.String[] value) {</replacetoken>
+            <replacevalue>public void setServletNames(java.lang.String[] value) {</replacevalue>
+        </replace>
 
         <replace file="${s2b_root_web_3_0}/WebApp.java" summary="true"><replacetoken>setDescription(null);</replacetoken><replacevalue></replacevalue></replace>
         <replace file="${s2b_root_web_3_0}/WebApp.java" summary="true"><replacetoken>setDisplayName(null);</replacetoken><replacevalue></replacevalue></replace>
@@ -720,6 +806,72 @@
         <replace file="${s2b_root_web_5_0_frag}/WebFragment.java" summary="true"><replacetoken>setMessageDestination(null);</replacetoken><replacevalue></replacevalue></replace>
         <replace file="${s2b_root_web_5_0_frag}/WebFragment.java" summary="true"><replacetoken>setLocaleEncodingMappingList(null);</replacetoken><replacevalue></replacevalue></replace>
         <replace file="${s2b_root_web_5_0_frag}/WebFragment.java" summary="true"><replacetoken>setDistributable(null);</replacetoken><replacevalue></replacevalue></replace>
+                
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setDescription(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setDisplayName(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setIcon(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setName(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setContextParam(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setFilter(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setFilterMapping(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setListener(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setServlet(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setServletMapping(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setSessionConfig(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setMimeMapping(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setWelcomeFileList(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setErrorPage(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setJspConfig(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setSecurityConstraint(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setLoginConfig(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setSecurityRole(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setEnvEntry(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setEjbRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setEjbLocalRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setServiceRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setResourceRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setResourceEnvRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setMessageDestinationRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setPersistenceContextRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setPersistenceUnitRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setPostConstruct(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setPreDestroy(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setMessageDestination(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setLocaleEncodingMappingList(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0}/WebApp.java" summary="true"><replacetoken>setDistributable(null);</replacetoken><replacevalue></replacevalue></replace>
+
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setDescription(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setDisplayName(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setIcon(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setName(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setContextParam(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setFilter(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setFilterMapping(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setListener(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setServlet(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setServletMapping(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setSessionConfig(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setMimeMapping(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setWelcomeFileList(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setErrorPage(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setJspConfig(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setSecurityConstraint(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setLoginConfig(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setSecurityRole(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setEnvEntry(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setEjbRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setEjbLocalRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setServiceRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setResourceRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setResourceEnvRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setMessageDestinationRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setPersistenceContextRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setPersistenceUnitRef(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setPostConstruct(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setPreDestroy(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setMessageDestination(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setLocaleEncodingMappingList(null);</replacetoken><replacevalue></replacevalue></replace>
+        <replace file="${s2b_root_web_6_0_frag}/WebFragment.java" summary="true"><replacetoken>setDistributable(null);</replacetoken><replacevalue></replacevalue></replace>
         
         <schema2beans schema="${s2b_res_root}/ejb-jar_2_1.xsd"
         mddFile="${s2b_res_root}/ejb-jar_2_1.mdd"
@@ -924,6 +1076,17 @@
         rootDir="src"
         java5="true"/>
         <echo file="${s2b_root_app_9}/package-info.java">@org.netbeans.api.annotations.common.SuppressWarnings("NM_SAME_SIMPLE_NAME_AS_INTERFACE") // justification="Generated implementation classes"${line.separator}package org.netbeans.modules.j2ee.dd.impl.application.model_9;</echo>
+        <schema2beans schema="${s2b_res_root}/application_10.xsd"
+        mddFile="${s2b_res_root}/application_10.mdd"
+        package="org.netbeans.modules.j2ee.dd.impl.application.model_10"
+        schemaType="xmlschema"
+        useInterfaces="true"
+        validate="true"
+        attrProp="true"
+        removeUnreferencedNodes="true"
+        rootDir="src"
+        java5="true"/>
+        <echo file="${s2b_root_app_10}/package-info.java">@org.netbeans.api.annotations.common.SuppressWarnings("NM_SAME_SIMPLE_NAME_AS_INTERFACE") // justification="Generated implementation classes"${line.separator}package org.netbeans.modules.j2ee.dd.impl.application.model_10;</echo>
         
         <replace file="${s2b_root_app_6}/Application.java" summary="true">
             <replacetoken>public java.lang.String getVersion() {</replacetoken>
@@ -989,6 +1152,22 @@
             <replacetoken>setVersion("9");</replacetoken>
             <replacevalue>setVersionString("9");</replacevalue>
         </replace>
+        <replace file="${s2b_root_app_10}/Application.java" summary="true">
+            <replacetoken>public java.lang.String getVersion() {</replacetoken>
+            <replacevalue>public java.lang.String getVersionString() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_app_10}/Application.java" summary="true">
+            <replacetoken>public void setVersion(java.lang.String value) {</replacetoken>
+            <replacevalue>public void setVersionString(java.lang.String value) {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_app_10}/Application.java" summary="true">
+            <replacetoken>(getVersion()</replacetoken>
+            <replacevalue>(getVersionString()</replacevalue>
+        </replace>
+        <replace file="${s2b_root_app_10}/Application.java" summary="true">
+            <replacetoken>setVersion("10");</replacetoken>
+            <replacevalue>setVersionString("10");</replacevalue>
+        </replace>
 
         <schema2beans schema="${s2b_res_root}/application-client_1_4.xsd"
         mddFile="${s2b_res_root}/application-client_1_4.mdd"
@@ -1056,6 +1235,17 @@
         rootDir="src"
         java5="true"/>
         <echo file="${s2b_root_client_9_0}/package-info.java">@org.netbeans.api.annotations.common.SuppressWarnings("NM_SAME_SIMPLE_NAME_AS_INTERFACE") // justification="Generated implementation classes"${line.separator}package org.netbeans.modules.j2ee.dd.impl.client.model_9_0;</echo>
+        <schema2beans schema="${s2b_res_root}/application-client_10.xsd"
+        mddFile="${s2b_res_root}/application-client_10.mdd"
+        package="org.netbeans.modules.j2ee.dd.impl.client.model_10_0"
+        schemaType="xmlschema"
+        useInterfaces="true"
+        validate="true"
+        attrProp="true"
+        removeUnreferencedNodes="true"
+        rootDir="src"
+        java5="true"/>
+        <echo file="${s2b_root_client_10_0}/package-info.java">@org.netbeans.api.annotations.common.SuppressWarnings("NM_SAME_SIMPLE_NAME_AS_INTERFACE") // justification="Generated implementation classes"${line.separator}package org.netbeans.modules.j2ee.dd.impl.client.model_10_0;</echo>
         
         <replace file="${s2b_root_client_6_0}/ApplicationClient.java" summary="true">
             <replacetoken>public java.lang.String getVersion() {</replacetoken>
@@ -1121,6 +1311,22 @@
             <replacetoken>setVersion("9");</replacetoken>
             <replacevalue>setVersionString("9");</replacevalue>
         </replace>
+        <replace file="${s2b_root_client_10_0}/ApplicationClient.java" summary="true">
+            <replacetoken>public java.lang.String getVersion() {</replacetoken>
+            <replacevalue>public java.lang.String getVersionString() {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_client_10_0}/ApplicationClient.java" summary="true">
+            <replacetoken>public void setVersion(java.lang.String value) {</replacetoken>
+            <replacevalue>public void setVersionString(java.lang.String value) {</replacevalue>
+        </replace>
+        <replace file="${s2b_root_client_10_0}/ApplicationClient.java" summary="true">
+            <replacetoken>(getVersion()</replacetoken>
+            <replacevalue>(getVersionString()</replacevalue>
+        </replace>
+        <replace file="${s2b_root_client_10_0}/ApplicationClient.java" summary="true">
+            <replacetoken>setVersion("10");</replacetoken>
+            <replacevalue>setVersionString("10");</replacevalue>
+        </replace>
     </target>
 
     <target name="compile" depends="dd2beansgen,projectized-common.compile"/>
@@ -1138,6 +1344,8 @@
         <mkdir dir="${s2b_root_web_4_0_frag}"/>
         <mkdir dir="${s2b_root_web_5_0}"/>
         <mkdir dir="${s2b_root_web_5_0_frag}"/>
+        <mkdir dir="${s2b_root_web_6_0}"/>
+        <mkdir dir="${s2b_root_web_6_0_frag}"/>
         <mkdir dir="${s2b_root_2_1}"/>
         <mkdir dir="${s2b_root_3_0}"/>
         <mkdir dir="${s2b_root_3_1}"/>
@@ -1149,12 +1357,14 @@
         <mkdir dir="${s2b_root_app_7}"/>
         <mkdir dir="${s2b_root_app_8}"/>
         <mkdir dir="${s2b_root_app_9}"/>
+        <mkdir dir="${s2b_root_app_10}"/>
         <mkdir dir="${s2b_root_client_1_4}"/>
         <mkdir dir="${s2b_root_client_5_0}"/>
         <mkdir dir="${s2b_root_client_6_0}"/>
         <mkdir dir="${s2b_root_client_7_0}"/>
         <mkdir dir="${s2b_root_client_8_0}"/>
         <mkdir dir="${s2b_root_client_9_0}"/>
+        <mkdir dir="${s2b_root_client_10_0}"/>
         
         <!--web & web-fragment-->
         <delete>
@@ -1217,6 +1427,18 @@
             </fileset>
         </delete>
         <delete dir="${s2b_root_web_5_0_frag}"/>
+        <delete>
+            <fileset dir="${s2b_root_web_6_0}">
+                <include name="*.java"/>
+            </fileset>
+        </delete>
+        <delete dir="${s2b_root_web_6_0}"/>
+        <delete>
+            <fileset dir="${s2b_root_web_6_0_frag}">
+                <include name="*.java"/>
+            </fileset>
+        </delete>
+        <delete dir="${s2b_root_web_6_0_frag}"/>
         <!--ejb-jar-->
         <delete>
             <fileset dir="${s2b_root_2_1}">
@@ -1285,6 +1507,12 @@
             </fileset>
         </delete>
         <delete dir="${s2b_root_app_9}"/>
+        <delete>
+            <fileset dir="${s2b_root_app_10}">
+                <include name="*.java"/>
+            </fileset>
+        </delete>
+        <delete dir="${s2b_root_app_10}"/>
         <!--application-client-->
         <delete>
             <fileset dir="${s2b_root_client_1_4}">
@@ -1322,6 +1550,12 @@
             </fileset>
         </delete>
         <delete dir="${s2b_root_client_9_0}"/>
+        <delete>
+            <fileset dir="${s2b_root_client_10_0}">
+                <include name="*.java"/>
+            </fileset>
+        </delete>
+        <delete dir="${s2b_root_client_10_0}"/>
     </target>
 
     <target name="javadoc" depends="init-javadoc, projectized.javadoc"/>
diff --git a/enterprise/j2ee.dd/licenseinfo.xml b/enterprise/j2ee.dd/licenseinfo.xml
index 55e180f..8abafdc 100755
--- a/enterprise/j2ee.dd/licenseinfo.xml
+++ b/enterprise/j2ee.dd/licenseinfo.xml
@@ -121,19 +121,30 @@
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_9.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_9.mdd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_9.xsd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.mdd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.xsd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.mdd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/connector_2_0.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_4_0.mdd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/ejb-jar_4_0.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jakartaee_9.xsd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jakartaee_10.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jakartaee_web_services_2_0.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jakartaee_web_services_client_2_0.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_3_0.xsd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_3_1.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/permissions_9.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_5_0.mdd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_5_0.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_5_0.xsd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_5_0.mdd</file>
         <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_5_0.xsd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.mdd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.xsd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_6_0.xsd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.mdd</file>
+        <file>src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.xsd</file>
         <license ref="EPL-v20" />
         <comment type="CATEGORY_B" />
     </fileset>
diff --git a/enterprise/j2ee.dd/nbproject/org-netbeans-modules-j2ee-dd.sig b/enterprise/j2ee.dd/nbproject/org-netbeans-modules-j2ee-dd.sig
index 642b9c5..a492e07 100644
--- a/enterprise/j2ee.dd/nbproject/org-netbeans-modules-j2ee-dd.sig
+++ b/enterprise/j2ee.dd/nbproject/org-netbeans-modules-j2ee-dd.sig
@@ -181,6 +181,7 @@
 fld public final static java.lang.String VERSION_7_0 = "7"
 fld public final static java.lang.String VERSION_8_0 = "8"
 fld public final static java.lang.String VERSION_9_0 = "9"
+fld public final static java.lang.String VERSION_10_0 = "10"
 intf org.netbeans.modules.j2ee.dd.api.common.RootInterface
 meth public abstract int addEjbRef(org.netbeans.modules.j2ee.dd.api.common.EjbRef)
 meth public abstract int addEnvEntry(org.netbeans.modules.j2ee.dd.api.common.EnvEntry)
@@ -1949,6 +1950,7 @@
 fld public final static java.lang.String VERSION_3_1 = "3.1"
 fld public final static java.lang.String VERSION_4_0 = "4.0"
 fld public final static java.lang.String VERSION_5_0 = "5.0"
+fld public final static java.lang.String VERSION_6_0 = "6.0"
 intf org.netbeans.modules.j2ee.dd.api.common.RootInterface
 meth public abstract boolean isDistributable()
 meth public abstract boolean isMetadataComplete() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java
index 80bac05..b8f7589 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/Application.java
@@ -52,6 +52,10 @@
          * @since 2
          */
         public static final String VERSION_9 = "9"; //NOI18N
+        /**
+         * application.xml DD version for JakartaEE10
+         */
+        public static final String VERSION_10 = "10"; //NOI18N
         public static final int STATE_VALID=0;
         public static final int STATE_INVALID_PARSABLE=1;
         public static final int STATE_INVALID_UNPARSABLE=2;
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java
index 2593b0d..e25401d 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/application/DDProvider.java
@@ -246,6 +246,8 @@
             return new org.netbeans.modules.j2ee.dd.impl.application.model_8.Application(parse.getDocument(), Common.USE_DEFAULT_VALUES);
         } else if (Application.VERSION_9.equals(version)) {
             return new org.netbeans.modules.j2ee.dd.impl.application.model_9.Application(parse.getDocument(), Common.USE_DEFAULT_VALUES);
+        }else if (Application.VERSION_10.equals(version)) {
+            return new org.netbeans.modules.j2ee.dd.impl.application.model_10.Application(parse.getDocument(), Common.USE_DEFAULT_VALUES);
         }
         return jar;
     }
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java
index 5492b1b..f777032 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/client/AppClient.java
@@ -45,6 +45,7 @@
     public static final String VERSION_7_0 = "7"; //NOI18N
     public static final String VERSION_8_0 = "8"; //NOI18N
     public static final String VERSION_9_0 = "9"; //NOI18N
+    public static final String VERSION_10_0 = "10"; //NOI18N
     public static final int STATE_VALID=0;
     public static final int STATE_INVALID_PARSABLE=1;
     public static final int STATE_INVALID_UNPARSABLE=2;
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebApp.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebApp.java
index b31cff5..098a331 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebApp.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebApp.java
@@ -61,6 +61,10 @@
      * @since 1.29
      */
     static final String VERSION_5_0 = "5.0"; //NOI18N
+    /**
+     * web.xml, web-fragment.xml DD version for JakartaEE10
+     */
+    static final String VERSION_6_0 = "6.0"; //NOI18N
     static final int STATE_VALID = 0;
     static final int STATE_INVALID_PARSABLE = 1;
     static final int STATE_INVALID_UNPARSABLE = 2;
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java
index 30194ce..de00d64 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/api/web/WebFragmentProvider.java
@@ -79,7 +79,11 @@
 
     private WebFragment createWebFragment(FileObject fo, String version) throws IOException, SAXException {
         try {
-            if (WebFragment.VERSION_5_0.equals(version)) {
+            if (WebFragment.VERSION_6_0.equals(version)) {
+                try (InputStream inputStream = fo.getInputStream()) {
+                    return org.netbeans.modules.j2ee.dd.impl.web.model_6_0_frag.WebFragment.createGraph(inputStream);
+                }
+            } else if (WebFragment.VERSION_5_0.equals(version)) {
                 try (InputStream inputStream = fo.getInputStream()) {
                     return org.netbeans.modules.j2ee.dd.impl.web.model_5_0_frag.WebFragment.createGraph(inputStream);
                 }
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java
index 63e057c..0913f6e 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/common/DDUtils.java
@@ -123,6 +123,8 @@
                 return org.netbeans.modules.j2ee.dd.impl.web.model_4_0.WebApp.createGraph(is);
             } else if (WebApp.VERSION_5_0.equals(version)) {
                 return org.netbeans.modules.j2ee.dd.impl.web.model_5_0.WebApp.createGraph(is);
+            } else if (WebApp.VERSION_6_0.equals(version)) {
+                return org.netbeans.modules.j2ee.dd.impl.web.model_6_0.WebApp.createGraph(is);
             } else {
                 return null;
             }
@@ -151,6 +153,8 @@
                 return org.netbeans.modules.j2ee.dd.impl.client.model_8_0.ApplicationClient.createGraph(is);
             } else if (AppClient.VERSION_9_0.equals(version)) {
                 return org.netbeans.modules.j2ee.dd.impl.client.model_9_0.ApplicationClient.createGraph(is);
+            } else if (AppClient.VERSION_10_0.equals(version)) {
+                return org.netbeans.modules.j2ee.dd.impl.client.model_10_0.ApplicationClient.createGraph(is);
             }
         } catch (RuntimeException ex) {
             throw new SAXException(ex);
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.mdd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.mdd
new file mode 100644
index 0000000..48b4353
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.mdd
@@ -0,0 +1,385 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+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: GNU General Public License,
+version 2 with the GNU Classpath Exception, which is available at
+https://www.gnu.org/software/classpath/license.html.
+
+SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+-->
+<metaDD>
+    <meta-element>
+        <dtd-name>application-client</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ApplicationClient</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.client.AppClient</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <user-code>
+            public org.xml.sax.SAXParseException getError() {
+                return null;
+            }
+            public int getStatus() {
+                return STATE_VALID;
+            }
+            public void setVersion(java.math.BigDecimal value) {
+                setAttributeValue(VERSION, value.toString());
+            }
+            public java.math.BigDecimal getVersion() {
+                return new java.math.BigDecimal(getAttributeValue(VERSION));
+            }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>env-entryType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EnvEntry</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.EnvEntry, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EnvEntryName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.EjbRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EjbRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>resource-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResourceRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ResourceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ResRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>resource-env-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResourceEnvRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ResourceEnvRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ResourceEnvRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.MessageDestinationRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "MessageDestinationRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>persistence-context-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceContextRefType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>persistence-unit-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceUnitRefType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>lifecycle-callbackType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LifecycleCallbackType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>fully-qualified-classType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FullyQualifiedClass</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destinationType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestination</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.MessageDestination, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "MessageDestinationName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>string</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>String</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdStringType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdStringType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>descriptionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DescriptionType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>display-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DisplayNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>iconType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Icon</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.Icon
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>pathType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PathType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>java-identifierType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JavaIdentifierType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jndi-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JndiNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>injection-targetType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>InjectionTarget</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.InjectionTarget</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+    </meta-element>
+    <meta-element>
+        <dtd-name>persistence-context-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceContextTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-usageType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationUsageType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-linkType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationLinkType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>res-authType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResAuthType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>res-sharing-scopeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResSharingScopeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRef</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ServiceRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdAnyURIType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdAnyURIType</bean-name>
+        <wrapper-class>java.net.URI</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdQNameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdQNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>port-component-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PortComponentRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.PortComponentRef
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_handlerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandler</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "HandlerName"; }
+        </user-code>
+    </meta-element>
+    <meta-element> 
+        <dtd-name>service-ref_handler-chainsType</dtd-name> 
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChains</bean-name> 
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements> 
+    </meta-element> 
+    <meta-element>
+        <dtd-name>service-ref_handler-chainType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChainType</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements> 
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_qname-pattern</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefQnamePattern</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_protocol-bindingListType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefProtocolBindingListType</bean-name>
+        <wrapper-class>String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>param-valueType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>InitParam</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.InitParam, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ParamName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>true-falseType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>TrueFalseType</bean-name>
+        <wrapper-class>boolean</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-ref-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRefNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-ref-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRefTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>homeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>HomeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>remoteType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RemoteType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-linkType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbLinkType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>env-entry-type-valuesType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EnvEntryTypeValuesType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+
+    <!-- changes added for EE6: -->
+
+    <meta-element>
+        <dtd-name>handlerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandler</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "HandlerName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>handler-chainsType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChains</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>handler-chainType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChainType</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>dewey-versionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>version</bean-name>
+        <wrapper-class>java.math.BigDecimal</wrapper-class>
+    </meta-element>
+</metaDD>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.xsd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.xsd
new file mode 100644
index 0000000..c65d58d
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application-client_10.xsd
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="https://jakarta.ee/xml/ns/jakartaee" xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="10">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      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: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the application client 10
+      deployment descriptor.  The deployment descriptor must
+      be named "META-INF/application-client.xml" in the
+      application client's jar file.  All application client
+      deployment descriptors must indicate the application
+      client schema by using the Jakarta EE namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and indicate the version of the schema by
+      using the version element as shown below:
+      
+      <application-client xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
+      	https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd"
+      version="10">
+      ...
+      </application-client>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="application-client" type="jakartaee:application-clientType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The application-client element is the root element of an
+        application client deployment descriptor.  The application
+        client deployment descriptor describes the enterprise bean 
+        components and external resources referenced by the 
+        application client.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="env-entry-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The env-entry-name element contains the name of an
+          application client's environment entry.  The name is a JNDI
+          name relative to the java:comp/env context.  The name must
+          be unique within an application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:env-entry"/>
+      <xsd:field xpath="jakartaee:env-entry-name"/>
+    </xsd:unique>
+    <xsd:unique name="ejb-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-ref-name element contains the name of an enterprise bean 
+          reference. The enterprise bean reference is an entry 
+          in the application client's environment and is relative to the
+          java:comp/env context. The name must be unique within the
+          application client.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="res-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The res-ref-name element specifies the name of a
+          resource manager connection factory reference.The name
+          is a JNDI name relative to the java:comp/env context.
+          The name must be unique within an application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-ref"/>
+      <xsd:field xpath="jakartaee:res-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="resource-env-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The resource-env-ref-name element specifies the name of
+          a resource environment reference; its value is the
+          environment entry name used in the application client
+          code. The name is a JNDI name relative to the
+          java:comp/env context and must be unique within an
+          application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-env-ref"/>
+      <xsd:field xpath="jakartaee:resource-env-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="message-destination-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The message-destination-ref-name element specifies the
+          name of a message destination reference; its value is
+          the message destination reference name used in the
+          application client code. The name is a JNDI name
+          relative to the java:comp/env context and must be unique
+          within an application client.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:message-destination-ref"/>
+      <xsd:field xpath="jakartaee:message-destination-ref-name"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="application-clientType">
+    <xsd:sequence>
+      <xsd:element name="module-name" type="jakartaee:string" minOccurs="0"/>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="env-entry" type="jakartaee:env-entryType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref" type="jakartaee:ejb-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:group ref="jakartaee:service-refGroup"/>
+      <xsd:element name="resource-ref" type="jakartaee:resource-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref" type="jakartaee:resource-env-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref" type="jakartaee:message-destination-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref" type="jakartaee:persistence-unit-refType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="post-construct" type="jakartaee:lifecycle-callbackType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="pre-destroy" type="jakartaee:lifecycle-callbackType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="callback-handler" type="jakartaee:fully-qualified-classType" minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The callback-handler element names a class provided by
+            the application.  The class must have a no args
+            constructor and must implement the
+            jakarta.security.auth.callback.CallbackHandler
+            interface.  The class will be instantiated by the
+            application client container and used by the container
+            to collect authentication information from the user.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-destination" type="jakartaee:message-destinationType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="data-source" type="jakartaee:data-sourceType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory" type="jakartaee:jms-connection-factoryType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination" type="jakartaee:jms-destinationType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="mail-session" type="jakartaee:mail-sessionType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory" type="jakartaee:connection-factory-resourceType" minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="administered-object" type="jakartaee:administered-objectType" minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="version" type="jakartaee:dewey-versionType" fixed="10" use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The required value for the version is 10.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="metadata-complete" type="xsd:boolean">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The metadata-complete attribute defines whether this
+          deployment descriptor and other related deployment
+          descriptors for this module (e.g., web service
+          descriptors) are complete, or whether the class
+          files available to this module and packaged with
+          this application should be examined for annotations
+          that specify deployment information.
+          
+          If metadata-complete is set to "true", the deployment
+          tool must ignore any annotations that specify deployment
+          information, which might be present in the class files
+          of the application.
+          
+          If metadata-complete is not specified or is set to
+          "false", the deployment tool must examine the class
+          files of the application for annotations, as
+          specified by the specifications.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.mdd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.mdd
new file mode 100644
index 0000000..69835cf
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.mdd
@@ -0,0 +1,111 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+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: GNU General Public License,
+version 2 with the GNU Classpath Exception, which is available at
+https://www.gnu.org/software/classpath/license.html.
+
+SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+-->
+<metaDD>
+    <meta-element>
+        <dtd-name>application</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Application</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.application.Application</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <user-code>
+            public org.xml.sax.SAXParseException getError() {
+                return null;
+            }
+            public int getStatus() {
+                return STATE_VALID;
+            }
+            public void setVersion(java.math.BigDecimal value) {
+                setAttributeValue(VERSION, value.toString());
+            }
+            public java.math.BigDecimal getVersion() {
+                return new java.math.BigDecimal(getAttributeValue(VERSION));
+            }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>moduleType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Module</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.application.Module</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+    </meta-element>
+    <meta-element>
+        <dtd-name>security-roleType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SecurityRole</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.SecurityRole</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+    </meta-element>
+    <meta-element>
+        <dtd-name>pathType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Path</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>descriptionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Description</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdStringType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdString</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>role-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RoleName</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>webType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Web</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.application.Web</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+        <user-code>
+            public String getWebUriId() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(org.netbeans.modules.j2ee.dd.api.application.Application.VERSION_10);
+            }
+            public void setWebUriId(String value) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(org.netbeans.modules.j2ee.dd.api.application.Application.VERSION_10);
+            }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>string</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>String</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>display-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DisplayName</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>iconType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Icon</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.Icon</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+    </meta-element>
+</metaDD>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.xsd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.xsd
new file mode 100644
index 0000000..07c1024
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/application_10.xsd
@@ -0,0 +1,381 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    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: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+	    targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+	    xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+	    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	    elementFormDefault="qualified"
+	    attributeFormDefault="unqualified"
+	    version="10">
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="license.inc" parse="text"/>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+
+	This is the XML Schema for the application 10 deployment
+	descriptor.  The deployment descriptor must be named
+	"META-INF/application.xml" in the application's ear file.
+	All application deployment descriptors must indicate
+	the application schema by using the Jakarta EE namespace:
+
+	https://jakarta.ee/xml/ns/jakartaee
+
+	and indicate the version of the schema by
+	using the version element as shown below:
+
+	    <application xmlns="https://jakarta.ee/xml/ns/jakartaee"
+	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	      xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
+		https://jakarta.ee/xml/ns/jakartaee/application_10.xsd"
+	      version="10">
+	      ...
+	    </application>
+
+	The instance documents may indicate the published version of
+	the schema using the xsi:schemaLocation attribute for Jakarta EE
+	namespace with the following location:
+
+	https://jakarta.ee/xml/ns/jakartaee/application_10.xsd
+
+	]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="common.inc" parse="text"/>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <!-- **************************************************** -->
+
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+  <!-- **************************************************** -->
+
+
+  <xsd:element name="application" type="jakartaee:applicationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The application element is the root element of a Jakarta EE
+	application deployment descriptor.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:unique name="context-root-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The context-root element content must be unique
+	  in the ear. 
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:module/jakartaee:web"/>
+      <xsd:field    xpath="jakartaee:context-root"/>
+    </xsd:unique>
+
+    <xsd:unique name="security-role-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The security-role-name element content
+	  must be unique in the ear.  
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:security-role"/>
+      <xsd:field    xpath="jakartaee:role-name"/>
+    </xsd:unique>
+
+  </xsd:element>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="applicationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The applicationType defines the structure of the
+	application. 
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="application-name"
+           type="jakartaee:string"
+           minOccurs="0"/>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="initialize-in-order"
+           type="jakartaee:generic-booleanType"
+           minOccurs="0"
+           maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+            If initialize-in-order is true, modules must be initialized
+            in the order they're listed in this deployment descriptor,
+            with the exception of application client modules, which can
+            be initialized in any order.
+            If initialize-in-order is not set or set to false, the order
+            of initialization is unspecified and may be product-dependent.
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="module"
+		   type="jakartaee:moduleType"
+		   maxOccurs="unbounded">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The application deployment descriptor must have one
+	    module element for each Jakarta EE module in the
+	    application package. A module element is defined 
+	    by moduleType definition. 
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+      <xsd:element name="security-role"
+		   type="jakartaee:security-roleType"
+		   minOccurs="0"
+		   maxOccurs="unbounded"/>
+      <xsd:element name="library-directory"
+		   type="jakartaee:pathType"
+		   minOccurs="0"
+		   maxOccurs="1">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The library-directory element specifies the pathname
+	    of a directory within the application package, relative
+	    to the top level of the application package.  All files
+	    named "*.jar" in this directory must be made available
+	    in the class path of all components included in this
+	    application package.  If this element isn't specified,
+	    the directory named "lib" is searched.  An empty element
+	    may be used to disable searching.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+      <xsd:element name="env-entry"
+                   type="jakartaee:env-entryType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref"
+                   type="jakartaee:ejb-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-local-ref"
+                   type="jakartaee:ejb-local-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:group ref="jakartaee:service-refGroup"/>
+      <xsd:element name="resource-ref"
+                   type="jakartaee:resource-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref"
+                   type="jakartaee:resource-env-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref"
+                   type="jakartaee:message-destination-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref"
+                   type="jakartaee:persistence-context-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref"
+                   type="jakartaee:persistence-unit-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination"
+		   type="jakartaee:message-destinationType"
+		   minOccurs="0"
+		   maxOccurs="unbounded"/>
+      <xsd:element name="data-source"
+                   type="jakartaee:data-sourceType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory" 
+                   type="jakartaee:jms-connection-factoryType" 
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination" 
+                   type="jakartaee:jms-destinationType" 
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="mail-session" 
+                   type="jakartaee:mail-sessionType" 
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory" 
+                   type="jakartaee:connection-factory-resourceType" 
+                   minOccurs="0" maxOccurs="unbounded"/> 
+      <xsd:element name="administered-object" 
+                   type="jakartaee:administered-objectType" 
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="context-service"
+                   type="jakartaee:context-serviceType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="managed-executor"
+                   type="jakartaee:managed-executorType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="managed-scheduled-executor"
+                   type="jakartaee:managed-scheduled-executorType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="managed-thread-factory"
+                   type="jakartaee:managed-thread-factoryType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="version"
+		   type="jakartaee:dewey-versionType"
+		   fixed="10"
+		   use="required">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The required value for the version is 10.
+
+	</xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="moduleType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The moduleType defines a single Jakarta EE module and contains a
+	connector, ejb, java, or web element, which indicates the
+	module type and contains a path to the module file, and an
+	optional alt-dd element, which specifies an optional URI to
+	the post-assembly version of the deployment descriptor.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:choice>
+	<xsd:element name="connector"
+		     type="jakartaee:pathType">
+	  <xsd:annotation>
+	    <xsd:documentation>
+
+	      The connector element specifies the URI of a
+	      resource adapter archive file, relative to the
+	      top level of the application package.
+
+	    </xsd:documentation>
+	  </xsd:annotation>
+	</xsd:element>
+	<xsd:element name="ejb"
+		     type="jakartaee:pathType">
+	  <xsd:annotation>
+	    <xsd:documentation>
+
+	      The ejb element specifies the URI of an ejb-jar,
+	      relative to the top level of the application
+	      package.
+
+	    </xsd:documentation>
+	  </xsd:annotation>
+	</xsd:element>
+	<xsd:element name="java"
+		     type="jakartaee:pathType">
+	  <xsd:annotation>
+	    <xsd:documentation>
+
+	      The java element specifies the URI of a java
+	      application client module, relative to the top
+	      level of the application package.
+
+	    </xsd:documentation>
+	  </xsd:annotation>
+	</xsd:element>
+	<xsd:element name="web"
+		     type="jakartaee:webType"/>
+      </xsd:choice>
+      <xsd:element name="alt-dd"
+		   type="jakartaee:pathType"
+		   minOccurs="0">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The alt-dd element specifies an optional URI to the
+	    post-assembly version of the deployment descriptor
+	    file for a particular Jakarta EE module.  The URI must
+	    specify the full pathname of the deployment
+	    descriptor file relative to the application's root
+	    directory. If alt-dd is not specified, the deployer
+	    must read the deployment descriptor from the default
+	    location and file name required by the respective
+	    component specification.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="webType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The webType defines the web-uri and context-root of
+	a web application module.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="web-uri"
+		   type="jakartaee:pathType">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The web-uri element specifies the URI of a web
+	    application file, relative to the top level of the
+	    application package.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-root"
+		   type="jakartaee:string">
+
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The context-root element specifies the context root
+	    of a web application.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+</xsd:schema>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/jakartaee_10.xsd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/jakartaee_10.xsd
new file mode 100644
index 0000000..991fcd2
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/jakartaee_10.xsd
@@ -0,0 +1,3491 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    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: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<xsd:schema
+     targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+     xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+     elementFormDefault="qualified"
+     attributeFormDefault="unqualified"
+     version="10">
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="license.inc" parse="text"/>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="glossary.inc" parse="text"/>
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace"
+              schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+  <xsd:include schemaLocation="jakartaee_web_services_client_2_0.xsd"/>
+
+  <!-- **************************************************** -->
+
+  <xsd:group name="descriptionGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained description related
+        elements consistent across Jakarta EE deployment descriptors.
+
+        All elements may occur multiple times with different languages,
+        to support localization of the content.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="display-name"
+                   type="jakartaee:display-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="icon"
+                   type="jakartaee:iconType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <!-- **************************************************** -->
+
+  <xsd:group name="jndiEnvironmentRefsGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group keeps the usage of the contained JNDI environment
+        reference elements consistent across Jakarta EE deployment descriptors.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="env-entry"
+                   type="jakartaee:env-entryType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref"
+                   type="jakartaee:ejb-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="ejb-local-ref"
+                   type="jakartaee:ejb-local-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:group ref="jakartaee:service-refGroup"/>
+      <xsd:element name="resource-ref"
+                   type="jakartaee:resource-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref"
+                   type="jakartaee:resource-env-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref"
+                   type="jakartaee:message-destination-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref"
+                   type="jakartaee:persistence-context-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref"
+                   type="jakartaee:persistence-unit-refType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="post-construct"
+                   type="jakartaee:lifecycle-callbackType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="pre-destroy"
+                   type="jakartaee:lifecycle-callbackType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="data-source"
+                   type="jakartaee:data-sourceType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-connection-factory" 
+                   type="jakartaee:jms-connection-factoryType" 
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="jms-destination" 
+                   type="jakartaee:jms-destinationType" 
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="mail-session" 
+                   type="jakartaee:mail-sessionType" 
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="connection-factory" 
+                   type="jakartaee:connection-factory-resourceType" 
+                   minOccurs="0" maxOccurs="unbounded"/> 
+      <xsd:element name="administered-object" 
+                   type="jakartaee:administered-objectType" 
+                   minOccurs="0" maxOccurs="unbounded"/> 
+      <xsd:element name="context-service"
+                   type="jakartaee:context-serviceType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="managed-executor"
+                   type="jakartaee:managed-executorType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="managed-scheduled-executor"
+                   type="jakartaee:managed-scheduled-executorType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="managed-thread-factory"
+                   type="jakartaee:managed-thread-factoryType"
+                   minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:group>
+
+  <!-- **************************************************** -->
+
+  <xsd:group name="resourceGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to most
+        JNDI resource elements.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+
+      <xsd:element name="lookup-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              The JNDI name to be looked up to resolve a resource reference.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+  </xsd:group>
+
+  <!-- **************************************************** -->
+
+  <xsd:group name="resourceBaseGroup">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This group collects elements that are common to all the
+        JNDI resource elements. It does not include the lookup-name
+        element, that is only applicable to some resource elements.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="mapped-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+              A product specific name that this resource should be
+              mapped to.  The name of this resource, as defined by the
+              resource's name element or defaulted, is a name that is
+              local to the application component using the resource.
+              (It's a name in the JNDI java:comp/env namespace.)  Many
+              application servers provide a way to map these local
+              names to names of resources known to the application
+              server.  This mapped name is often a global JNDI name,
+              but may be a name of any form.
+
+              Application servers are not required to support any
+              particular form or type of mapped name, nor the ability
+              to use mapped names.  The mapped name is
+              product-dependent and often installation-dependent.  No
+              use of a mapped name is portable.
+
+              ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="injection-target"
+                   type="jakartaee:injection-targetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+
+    </xsd:sequence>
+  </xsd:group>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="administered-objectType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of an administered object.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this administered object.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            administered object being defined.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType"
+		   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              The administered object's interface type.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              The administered object's class name.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Property of the administered object property.  This may be a 
+            vendor-specific property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="connection-factory-resourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Connector Connection Factory resource.
+
+      </xsd:documentation>	
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this resource.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            resource being defined.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully qualified class name of the connection factory 
+            interface. 
+
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transaction-support"
+		   type="jakartaee:transaction-supportType"
+		   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The level of transaction support the connection factory 
+            needs to support. 
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource property.  This may be a vendor-specific
+            property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="context-serviceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ContextService.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ContextService.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ContextService instance being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="cleared"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Types of context to clear whenever a thread runs a
+            contextual task or action. The thread's previous context
+            is restored afterward. Context types that are defined by
+            the Jakarta EE Concurrency specification include:
+            Application, Security, Transaction,
+            and Remaining, which means all available thread context
+            types that are not specified elsewhere. You can also specify
+            vendor-specific context types. Absent other configuration,
+            cleared context defaults to Transaction. You can specify
+            a single cleared element with no value to indicate an
+            empty list of context types to clear. If neither
+            propagated nor unchanged specify (or default to) Remaining,
+            then Remaining is automatically appended to the list of
+            cleared context types.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="propagated"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Types of context to capture from the requesting thread
+            and propagate to a thread that runs a contextual task
+            or action. The captured context is re-established
+            when threads run the contextual task or action,
+            with the respective thread's previous context being
+            restored afterward. Context types that are defined by
+            the Jakarta EE Concurrency specification include:
+            Application, Security,
+            and Remaining, which means all available thread context
+            types that are not specified elsewhere. You can also specify
+            vendor-specific context types. Absent other configuration,
+            propagated context defaults to Remaining. You can specify
+            a single propagated element with no value to indicate that
+            no context types should be propagated.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="unchanged"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Types of context that are left alone when a thread runs a
+            contextual task or action. Context types that are defined
+            by the Jakarta EE Concurrency specification include:
+            Application, Security, Transaction,
+            and Remaining, which means all available thread context
+            types that are not specified elsewhere. You can also specify
+            vendor-specific context types. Absent other configuration,
+            unchanged context defaults to empty. You can specify
+            a single unchanged element with no value to indicate that
+            no context types should be left unchanged.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="data-sourceType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a DataSource.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this DataSource.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            data source being defined.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+            
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            DataSource, XADataSource or ConnectionPoolDataSource
+            implementation class.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="server-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Database server name.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="port-number"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Port number where a server is listening for requests.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="database-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of a database on a server.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="url"
+                   type="jakartaee:jdbc-urlType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+            A JDBC URL. If the <code>url</code> property is specified
+            along with other standard <code>DataSource</code> properties
+            such as <code>serverName</code>, <code>databaseName</code>
+            and <code>portNumber</code>, the more specific properties will
+            take precedence and <code>url</code> will be ignored.
+        
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JDBC DataSource property.  This may be a vendor-specific
+            property or a less commonly used DataSource property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="login-timeout"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Sets the maximum time in seconds that this data source
+            will wait while attempting to connect to a database.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional"
+                   type="jakartaee:xsdBooleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="isolation-level"
+                   type="jakartaee:isolation-levelType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Isolation level for connections.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="initial-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Number of connections that should be created when a
+            connection pool is initialized.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-idle-time"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The number of seconds that a physical connection should
+            remain unused in the pool before the connection is
+            closed for a connection pool.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-statements"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The total number of statements that a connection pool
+            should keep open.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+       
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="descriptionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The description type is used by a description element to
+        provide text describing the parent element.  The elements
+        that use this type should include any information that the
+        Deployment Component's Deployment File file producer wants
+        to provide to the consumer of the Deployment Component's
+        Deployment File (i.e., to the Deployer). Typically, the
+        tools used by such a Deployment File consumer will display
+        the description when processing the parent element that
+        contains the description.
+
+        The lang attribute defines the language that the
+        description is provided in. The default value is "en" (English). 
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:xsdStringType">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:simpleType name="dewey-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines a dewey decimal that is used
+        to describe versions of documents. 
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="\.?[0-9]+(\.[0-9]+)*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="display-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The display-name type contains a short name that is intended
+          to be displayed by tools. It is used by display-name
+          elements.  The display name need not be unique.
+
+          Example: 
+
+          ...
+             <display-name xml:lang="en">
+               Employee Self Service
+             </display-name>
+
+          The value of the xml:lang attribute is "en" (English) by default. 
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:string">
+        <xsd:attribute ref="xml:lang"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The ejb-linkType is used by ejb-link
+          elements in the ejb-ref or ejb-local-ref elements to specify
+          that an enterprise bean reference is linked to enterprise bean.
+
+          The value of the ejb-link element must be the ejb-name of an
+          enterprise bean in the same ejb-jar file or in another ejb-jar
+          file in the same Jakarta EE application unit. 
+
+          Alternatively, the name in the ejb-link element may be
+          composed of a path name specifying the ejb-jar containing the
+          referenced enterprise bean with the ejb-name of the target
+          bean appended and separated from the path name by "#".  The
+          path name is relative to the Deployment File containing
+          Deployment Component that is referencing the enterprise
+          bean.  This allows multiple enterprise beans with the same
+          ejb-name to be uniquely identified.
+
+          Examples:
+
+              <ejb-link>EmployeeRecord</ejb-link>
+
+              <ejb-link>../products/product.jar#ProductEJB</ejb-link>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-local-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-local-refType is used by ejb-local-ref elements for
+        the declaration of a reference to an enterprise bean's local
+        home or to the local business interface of a 3.0 bean.
+        The declaration consists of:
+
+            - an optional description
+            - the enterprise bean's reference name used in the code of the 
+              Deployment Component that's referencing the enterprise bean.
+            - the optional expected type of the referenced enterprise bean
+            - the optional expected local interface of the referenced 
+              enterprise bean or the local business interface of the 
+              referenced enterprise bean.
+            - the optional expected local home interface of the referenced 
+              enterprise bean. Not applicable if this ejb-local-ref refers
+              to the local business interface of a 3.0 bean.
+            - optional ejb-link information, used to specify the 
+              referenced enterprise bean
+            - optional elements to define injection of the named enterprise  
+              bean into a component field or property.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="jakartaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="jakartaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="local-home"
+                   type="jakartaee:local-homeType"
+                   minOccurs="0"/>
+      <xsd:element name="local"
+                   type="jakartaee:localType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="jakartaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The ejb-ref-name element contains the name of an enterprise bean reference. 
+          The enterprise bean reference is an entry in the Deployment Component's 
+          environment and is relative to the java:comp/env context.  The name must 
+          be unique within the Deployment Component.
+
+          It is recommended that name is prefixed with "ejb/".
+
+          Example:
+
+          <ejb-ref-name>ejb/Payroll</ejb-ref-name>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:jndi-nameType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-refType is used by ejb-ref elements for the
+        declaration of a reference to an enterprise bean's home or
+        to the remote business interface of a 3.0 bean.  
+        The declaration consists of:
+
+            - an optional description
+            - the enterprise bean's reference name used in the code of
+              the Deployment Component that's referencing the enterprise
+              bean. 
+            - the optional expected type of the referenced enterprise bean
+            - the optional remote interface of the referenced enterprise bean
+              or the remote business interface of the referenced enterprise 
+              bean
+            - the optional expected home interface of the referenced 
+              enterprise bean.  Not applicable if this ejb-ref
+              refers to the remote business interface of a 3.0 bean.
+            - optional ejb-link information, used to specify the
+              referenced enterprise bean
+            - optional elements to define injection of the named enterprise
+              bean into a component field or property
+
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="ejb-ref-name"
+                   type="jakartaee:ejb-ref-nameType"/>
+      <xsd:element name="ejb-ref-type"
+                   type="jakartaee:ejb-ref-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="home"
+                   type="jakartaee:homeType"
+                   minOccurs="0"/>
+      <xsd:element name="remote"
+                   type="jakartaee:remoteType"
+                   minOccurs="0"/>
+      <xsd:element name="ejb-link"
+                   type="jakartaee:ejb-linkType"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:resourceGroup"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="ejb-ref-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The ejb-ref-typeType contains the expected type of the
+        referenced enterprise bean.
+
+        The ejb-ref-type designates a value
+        that must be one of the following:
+
+            Entity
+            Session
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Entity"/>
+        <xsd:enumeration value="Session"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="emptyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is used to designate an empty
+        element when used. 
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="env-entryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The env-entryType is used to declare an application's
+        environment entry. The declaration consists of an optional
+        description, the name of the environment entry, a type
+        (optional if the value is injected, otherwise required), and
+        an optional value.
+
+        It also includes optional elements to define injection of
+        the named resource into fields or JavaBeans properties.
+
+        If a value is not specified and injection is requested,
+        no injection will occur and no entry of the specified name
+        will be created.  This allows an initial value to be
+        specified in the source code without being incorrectly
+        changed when no override has been specified.
+
+        If a value is not specified and no injection is requested,
+        a value must be supplied during deployment. 
+
+        This type is used by env-entry elements.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="env-entry-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+              The env-entry-name element contains the name of a
+              Deployment Component's environment entry.  The name
+              is a JNDI name relative to the java:comp/env
+              context.  The name must be unique within a 
+              Deployment Component. The uniqueness
+              constraints must be defined within the declared
+              context.
+
+              Example:
+
+              <env-entry-name>minAmount</env-entry-name>
+
+              ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="env-entry-type"
+                   type="jakartaee:env-entry-type-valuesType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+              The env-entry-type element contains the Java language
+              type of the environment entry.  If an injection target
+              is specified for the environment entry, the type may
+              be omitted, or must match the type of the injection
+              target.  If no injection target is specified, the type
+              is required.
+
+              Example:
+
+              <env-entry-type>java.lang.Integer</env-entry-type>
+
+              ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="env-entry-value"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+              The env-entry-value designates the value of a
+              Deployment Component's environment entry. The value
+              must be a String that is valid for the
+              constructor of the specified type that takes a
+              single String parameter, or for java.lang.Character,
+              a single character.
+
+              Example:
+
+              <env-entry-value>100.00</env-entry-value>
+
+              ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:group ref="jakartaee:resourceGroup"/>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="env-entry-type-valuesType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          This type contains the fully-qualified Java type of the
+          environment entry value that is expected by the
+          application's code.
+
+          The following are the legal values of env-entry-type-valuesType:
+
+              java.lang.Boolean
+              java.lang.Byte
+              java.lang.Character
+              java.lang.String
+              java.lang.Short
+              java.lang.Integer
+              java.lang.Long
+              java.lang.Float
+              java.lang.Double
+			  java.lang.Class
+			  any enumeration type (i.e. a subclass of java.lang.Enum)
+
+          Examples:
+
+          <env-entry-type>java.lang.Boolean</env-entry-type>
+          <env-entry-type>java.lang.Class</env-entry-type>
+          <env-entry-type>com.example.Color</env-entry-type>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="fully-qualified-classType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate the name of a
+        Java class or interface.  The name is in the form of a
+        "binary name", as defined in the JLS.  This is the form
+        of name used in Class.forName().  Tools that need the
+        canonical name (the name used in source code) will need
+        to convert this binary name to the canonical name.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="generic-booleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines four different values which can designate
+        boolean values. This includes values yes and no which are 
+        not designated by xsd:boolean
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="true"/>
+        <xsd:enumeration value="false"/>
+        <xsd:enumeration value="yes"/>
+        <xsd:enumeration value="no"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="iconType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The icon type contains small-icon and large-icon elements
+        that specify the file names for small and large GIF, JPEG,
+        or PNG icon images used to represent the parent element in a
+        GUI tool. 
+
+        The xml:lang attribute defines the language that the
+        icon file names are provided in. Its value is "en" (English)
+        by default. 
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="small-icon" type="jakartaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+              The small-icon element contains the name of a file
+              containing a small (16 x 16) icon image. The file
+              name is a relative path within the Deployment
+              Component's Deployment File.
+
+              The image may be in the GIF, JPEG, or PNG format.
+              The icon can be used by tools.
+
+              Example:
+
+              <small-icon>employee-service-icon16x16.jpg</small-icon>
+
+              ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="large-icon" type="jakartaee:pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+              The large-icon element contains the name of a file
+              containing a large
+              (32 x 32) icon image. The file name is a relative 
+              path within the Deployment Component's Deployment
+              File.
+
+              The image may be in the GIF, JPEG, or PNG format.
+              The icon can be used by tools.
+
+              Example:
+
+              <large-icon>employee-service-icon32x32.jpg</large-icon>
+
+              ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+
+    <xsd:attribute ref="xml:lang"/>
+    <xsd:attribute name="id" type="xsd:ID"/>
+
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="injection-targetType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        An injection target specifies a class and a name within
+        that class into which a resource should be injected.
+
+        The injection target class specifies the fully qualified
+        class name that is the target of the injection.  The
+        Jakarta EE specifications describe which classes can be an
+        injection target.
+
+        The injection target name specifies the target within
+        the specified class.  The target is first looked for as a
+        JavaBeans property name.  If not found, the target is
+        looked for as a field name.
+
+        The specified resource will be injected into the target
+        during initialization of the class by either calling the
+        set method for the target property or by setting a value
+        into the named field.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="injection-target-class"
+                   type="jakartaee:fully-qualified-classType"/>
+      <xsd:element name="injection-target-name"
+                   type="jakartaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:simpleType name="isolation-levelType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+		The following transaction isolation levels are allowed
+		(see documentation for the java.sql.Connection interface):
+                TRANSACTION_READ_UNCOMMITTED
+                TRANSACTION_READ_COMMITTED
+                TRANSACTION_REPEATABLE_READ
+                TRANSACTION_SERIALIZABLE
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="TRANSACTION_READ_UNCOMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_READ_COMMITTED"/>
+      <xsd:enumeration value="TRANSACTION_REPEATABLE_READ"/>
+      <xsd:enumeration value="TRANSACTION_SERIALIZABLE"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="java-identifierType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The java-identifierType defines a Java identifier.
+        The users of this type should further verify that 
+        the content does not contain Java reserved keywords.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="($|_|\p{L})(\p{L}|\p{Nd}|_|$)*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="java-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a generic type that designates a Java primitive
+        type or a fully qualified name of a Java interface/type,
+        or an array of such types.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="[^\p{Z}]*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="jdbc-urlType">
+    <xsd:annotation>
+      <xsd:documentation>          
+    <![CDATA[
+
+        The jdbc-urlType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 9.3 of the
+        JDBC Specification where the format is:
+
+            jdbc:<subprotocol>:<subname>
+
+        Example:
+
+            <url>jdbc:mysql://localhost:3307/testdb</url>
+
+      ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+         <xsd:pattern value="jdbc:(.*):(.*)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-connection-factoryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Messaging Connection Factory.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Messaging Connection Factory.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            messaging connection factory being defined.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              Fully-qualified name of the messaging connection factory
+              interface.  Permitted values are jakarta.jms.ConnectionFactory,
+              jakarta.jms.QueueConnectionFactory, or 
+              jakarta.jms.TopicConnectionFactory.  If not specified,
+              jakarta.jms.ConnectionFactory will be used.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              Fully-qualified name of the messaging connection factory 
+              implementation class.  Ignored if a resource adapter  
+              is used.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.  If not specified, the application
+            server will define the default behavior, which may or may
+            not involve the use of a resource adapter.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            User name to use for connection authentication.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password to use for connection authentication.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="client-id"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Client id to use for connection.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Messaging Connection Factory property.  This may be a vendor-specific
+            property or a less commonly used ConnectionFactory property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transactional"
+                   type="jakartaee:xsdBooleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Set to false if connections should not participate in
+            transactions.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Maximum number of connections that should be concurrently
+            allocated for a connection pool.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="min-pool-size"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Minimum number of connections that should be concurrently
+            allocated for a connection pool.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jms-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Messaging Destination.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Messaging Destination.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            messaging destination being defined.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="interface-name"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              Fully-qualified name of the messaging destination interface.
+              Permitted values are jakarta.jms.Queue and jakarta.jms.Topic
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="class-name"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              Fully-qualified name of the messaging destination implementation
+              class.  Ignored if a resource adapter is used unless the
+              resource adapter defines more than one destination implementation
+              class for the specified interface.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-adapter"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Resource adapter name.  If not specified, the application
+            server will define the default behavior, which may or may
+            not involve the use of a resource adapter.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="destination-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Name of the queue or topic.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Messaging Destination property.  This may be a vendor-specific
+            property or a less commonly used Destination property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="jndi-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jndi-nameType type designates a JNDI name in the
+        Deployment Component's environment and is relative to the
+        java:comp/env context.  A JNDI name must be unique within the
+        Deployment Component.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The homeType defines the fully-qualified name of
+          an enterprise bean's home interface. 
+
+          Example:
+
+              <home>com.aardvark.payroll.PayrollHome</home>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="lifecycle-callbackType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The lifecycle-callback type specifies a method on a
+        class to be called when a lifecycle event occurs.
+        Note that each class may have only one lifecycle callback
+        method for any given event and that the method may not
+        be overloaded.
+
+        If the lifefycle-callback-class element is missing then
+        the class defining the callback is assumed to be the
+        component class in scope at the place in the descriptor
+        in which the callback definition appears.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="lifecycle-callback-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"/>
+      <xsd:element name="lifecycle-callback-method"
+                   type="jakartaee:java-identifierType"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="listenerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The listenerType indicates the deployment properties for a web
+        application listener bean.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="listener-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The listener-class element declares a class in the
+            application must be registered as a web
+            application listener bean. The value is the fully
+            qualified classname of the listener class.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="localType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The localType defines the fully-qualified name of an
+        enterprise bean's local interface.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="local-homeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The local-homeType defines the fully-qualified
+        name of an enterprise bean's local home interface.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mail-sessionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a Mail Session resource.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this Mail Session resource.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name element specifies the JNDI name of the
+            Mail Session resource being defined.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Storage protocol.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="store-protocol-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              Service provider store protocol implementation class
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Transport protocol.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="transport-protocol-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              Service provider transport protocol implementation class
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="host"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server host name.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="user"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server user name.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="password"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Password.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="from"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Email address to indicate the message sender.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Mail server property.  This may be a vendor-specific
+            property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="managed-executorType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ManagedExecutorService.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ManagedExecutorService.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ManagedExecutorService instance being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-service-ref"
+                   type="jakartaee:jndi-nameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Refers to the name of a ContextServiceDefinition or
+            context-service deployment descriptor element,
+            which determines how context is applied to tasks and actions
+            that run on this executor.
+            The name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            In the absence of a configured value,
+            java:comp/DefaultContextService is used.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-async"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Upper bound on contextual tasks and actions that this executor
+            will simultaneously execute asynchronously. This constraint does
+            not apply to tasks and actions that the executor runs inline,
+            such as when a thread requests CompletableFuture.join and the
+            action runs inline if it has not yet started.
+            The default is unbounded, although still subject to
+            resource constraints of the system.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="hung-task-threshold"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The amount of time in milliseconds that a task or action
+            can execute before it is considered hung.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="managed-scheduled-executorType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ManagedScheduledExecutorService.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ManagedScheduledExecutorService.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ManagedScheduledExecutorService instance
+            being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-service-ref"
+                   type="jakartaee:jndi-nameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Refers to the name of a ContextServiceDefinition or
+            context-service deployment descriptor element,
+            which determines how context is applied to tasks and actions
+            that run on this executor.
+            The name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            In the absence of a configured value,
+            java:comp/DefaultContextService is used.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-async"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Upper bound on contextual tasks and actions that this executor
+            will simultaneously execute asynchronously. This constraint does
+            not apply to tasks and actions that the executor runs inline,
+            such as when a thread requests CompletableFuture.join and the
+            action runs inline if it has not yet started. This constraint also
+            does not apply to tasks that are scheduled via the schedule methods.
+            The default is unbounded, although still subject to
+            resource constraints of the system.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="hung-task-threshold"
+                   type="jakartaee:xsdPositiveIntegerType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The amount of time in milliseconds that a task or action
+            can execute before it is considered hung.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="managed-thread-factoryType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Configuration of a ManagedThreadFactory.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Description of this ManagedThreadFactory.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            JNDI name of the ManagedThreadFactory instance being defined.
+            The JNDI name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="context-service-ref"
+                   type="jakartaee:jndi-nameType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Refers to the name of a ContextServiceDefinition or
+            context-service deployment descriptor element,
+            which determines how context is applied to threads
+            from this thread factory.
+            The name must be in a valid Jakarta EE namespace,
+            such as java:comp, java:module, java:app, or java:global.
+            In the absence of a configured value,
+            java:comp/DefaultContextService is used.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="priority"
+                   type="jakartaee:priorityType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Priority for threads created by this thread factory.
+            The default is 5 (java.lang.Thread.NORM_PRIORITY).
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Vendor-specific property.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="param-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is a general type that can be used to declare
+        parameter/value lists.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="param-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-name element contains the name of a
+            parameter.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="param-value"
+                   type="jakartaee:xsdStringType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The param-value element contains the value of a
+            parameter.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate either a relative
+        path or an absolute path starting with a "/".
+
+        In elements that specify a pathname to a file within the
+        same Deployment File, relative filenames (i.e., those not
+        starting with "/") are considered relative to the root of
+        the Deployment File's namespace.  Absolute filenames (i.e.,
+        those starting with "/") also specify names in the root of
+        the Deployment File's namespace.  In general, relative names
+        are preferred.  The exception is .war files where absolute
+        names are preferred for consistency with the Servlet API.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The persistence-context-ref element contains a declaration
+          of Deployment Component's reference to a persistence context
+          associated within a Deployment Component's
+          environment. It consists of:
+
+                  - an optional description
+                  - the persistence context reference name
+                  - an optional persistence unit name.  If not specified,
+                    the default persistence unit is assumed.
+                  - an optional specification as to whether
+                    the persistence context type is Transaction or
+                    Extended.  If not specified, Transaction is assumed.
+                  - an optional specification as to whether
+                    the persistence context synchronization with the current
+                    transaction is Synchronized or Unsynchronized. If not
+                    specified, Synchronized is assumed.
+                  - an optional list of persistence properties
+                  - optional injection targets
+
+          Examples:
+
+            <persistence-context-ref>
+              <persistence-context-ref-name>myPersistenceContext
+              </persistence-context-ref-name>
+            </persistence-context-ref>
+
+            <persistence-context-ref>
+              <persistence-context-ref-name>myPersistenceContext
+                </persistence-context-ref-name>
+              <persistence-unit-name>PersistenceUnit1
+                </persistence-unit-name>
+              <persistence-context-type>Extended</persistence-context-type>
+            </persistence-context-ref>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-context-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-context-ref-name element specifies
+            the name of a persistence context reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Jakarta EE application.
+
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="persistence-context-type"
+                   type="jakartaee:persistence-context-typeType"
+                   minOccurs="0"/>
+
+      <xsd:element name="persistence-context-synchronization"
+                   type="jakartaee:persistence-context-synchronizationType"
+                   minOccurs="0"/>
+
+      <xsd:element name="persistence-property"
+                   type="jakartaee:propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Used to specify properties for the container or persistence
+            provider.  Vendor-specific properties may be included in
+            the set of properties.  Properties that are not recognized
+            by a vendor must be ignored.  Entries that make use of the 
+            namespace jakarta.persistence and its subnamespaces must not
+            be used for vendor-specific properties.  The namespace
+            jakarta.persistence is reserved for use by the specification.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-synchronizationType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-synchronizationType specifies 
+        whether a container-managed persistence context is automatically
+        synchronized with the current transaction.
+
+        The value of the persistence-context-synchronization element 
+        must be one of the following:
+            Synchronized
+            Unsynchronized
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Synchronized"/>
+        <xsd:enumeration value="Unsynchronized"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-context-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The persistence-context-typeType specifies the transactional
+        nature of a persistence context reference.  
+
+        The value of the persistence-context-type element must be
+        one of the following:
+            Transaction
+            Extended
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Transaction"/>
+        <xsd:enumeration value="Extended"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="priorityType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies a thread priority value in the range of
+        1 (java.lang.Thread.MIN_PRIORITY) to 10 (java.lang.Thread.MAX_PRIORITY).
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdPositiveIntegerType">
+        <xsd:maxInclusive value="10"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="propertyType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Specifies a name/value pair.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:xsdStringType">
+      </xsd:element>
+      <xsd:element name="value"
+                   type="jakartaee:xsdStringType">
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="persistence-unit-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The persistence-unit-ref element contains a declaration
+          of Deployment Component's reference to a persistence unit
+          associated within a Deployment Component's
+          environment. It consists of:
+
+                  - an optional description
+                  - the persistence unit reference name
+                  - an optional persistence unit name.  If not specified,
+                    the default persistence unit is assumed.
+                  - optional injection targets
+
+          Examples:
+
+            <persistence-unit-ref>
+              <persistence-unit-ref-name>myPersistenceUnit
+              </persistence-unit-ref-name>
+            </persistence-unit-ref>
+
+            <persistence-unit-ref>
+              <persistence-unit-ref-name>myPersistenceUnit
+                </persistence-unit-ref-name>
+              <persistence-unit-name>PersistenceUnit1
+                </persistence-unit-name>
+            </persistence-unit-ref>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="persistence-unit-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The persistence-unit-ref-name element specifies
+            the name of a persistence unit reference; its
+            value is the environment entry name used in
+            Deployment Component code.  The name is a JNDI name
+            relative to the java:comp/env context.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="persistence-unit-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The Application Assembler(or BeanProvider) may use the
+            following syntax to avoid the need to rename persistence
+            units to have unique names within a Jakarta EE application.
+
+            The Application Assembler specifies the pathname of the
+            root of the persistence.xml file for the referenced
+            persistence unit and appends the name of the persistence
+            unit separated from the pathname by #. The pathname is
+            relative to the referencing application component jar file. 
+            In this manner, multiple persistence units with the same
+            persistence unit name may be uniquely identified when the 
+            Application Assembler cannot change persistence unit names.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:group ref="jakartaee:resourceBaseGroup"/>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="remoteType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The remote element contains the fully-qualified name
+          of the enterprise bean's remote interface.
+
+          Example:
+
+              <remote>com.wombat.empl.EmployeeService</remote>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="resource-env-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The resource-env-refType is used to define
+          resource-env-ref elements.  It contains a declaration of a
+          Deployment Component's reference to an administered object
+          associated with a resource in the Deployment Component's
+          environment.  It consists of an optional description, the
+          resource environment reference name, and an optional
+          indication of the resource environment reference type
+          expected by the Deployment Component code.
+
+          It also includes optional elements to define injection of
+          the named resource into fields or JavaBeans properties.
+
+          The resource environment type must be supplied unless an
+          injection target is specified, in which case the type
+          of the target is used.  If both are specified, the type
+          must be assignment compatible with the type of the injection
+          target.
+
+          Example:
+
+          <resource-env-ref>
+              <resource-env-ref-name>jms/StockQueue
+              </resource-env-ref-name>
+              <resource-env-ref-type>jakarta.jms.Queue
+              </resource-env-ref-type>
+          </resource-env-ref>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="resource-env-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-name element specifies the name
+            of a resource environment reference; its value is
+            the environment entry name used in
+            the Deployment Component code.  The name is a JNDI 
+            name relative to the java:comp/env context and must 
+            be unique within a Deployment Component.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="resource-env-ref-type"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The resource-env-ref-type element specifies the type
+            of a resource environment reference.  It is the
+            fully qualified name of a Java language class or
+            interface.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:group ref="jakartaee:resourceGroup"/>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- ***************************************************** -->
+
+  <xsd:complexType name="resource-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The resource-refType contains a declaration of a
+          Deployment Component's reference to an external resource. It
+          consists of an optional description, the resource manager
+          connection factory reference name, an optional indication of
+          the resource manager connection factory type expected by the
+          Deployment Component code, an optional type of authentication
+          (Application or Container), and an optional specification of
+          the shareability of connections obtained from the resource
+          (Shareable or Unshareable).
+
+          It also includes optional elements to define injection of
+          the named resource into fields or JavaBeans properties.
+
+          The connection factory type must be supplied unless an
+          injection target is specified, in which case the type
+          of the target is used.  If both are specified, the type
+          must be assignment compatible with the type of the injection
+          target.
+
+          Example:
+
+          <resource-ref>
+              <res-ref-name>jdbc/EmployeeAppDB</res-ref-name>
+              <res-type>javax.sql.DataSource</res-type>
+              <res-auth>Container</res-auth>
+              <res-sharing-scope>Shareable</res-sharing-scope>
+          </resource-ref>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="res-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-ref-name element specifies the name of a
+            resource manager connection factory reference.
+            The name is a JNDI name relative to the
+            java:comp/env context.  
+            The name must be unique within a Deployment File. 
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="res-type"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The res-type element specifies the type of the data
+            source. The type is specified by the fully qualified
+            Java language class or interface
+            expected to be implemented by the data source.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="res-auth"
+                   type="jakartaee:res-authType"
+                   minOccurs="0"/>
+
+      <xsd:element name="res-sharing-scope"
+                   type="jakartaee:res-sharing-scopeType"
+                   minOccurs="0"/>
+
+      <xsd:group ref="jakartaee:resourceGroup"/>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="res-authType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-authType specifies whether the Deployment Component
+        code signs on programmatically to the resource manager, or
+        whether the Container will sign on to the resource manager
+        on behalf of the Deployment Component. In the latter case,
+        the Container uses information that is supplied by the
+        Deployer.
+
+        The value must be one of the two following:
+
+            Application
+            Container
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Application"/>
+        <xsd:enumeration value="Container"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="res-sharing-scopeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The res-sharing-scope type specifies whether connections
+        obtained through the given resource manager connection
+        factory reference can be shared. The value, if specified,
+        must be one of the two following:
+
+            Shareable
+            Unshareable
+
+        The default value is Shareable.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Shareable"/>
+        <xsd:enumeration value="Unshareable"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="run-asType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The run-asType specifies the run-as identity to be
+        used for the execution of a component. It contains an 
+        optional description, and the name of a security role.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="role-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The role-nameType designates the name of a security role.
+
+        The name must conform to the lexical rules for a token.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="security-roleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The security-roleType contains the definition of a security
+          role. The definition consists of an optional description of
+          the security role, and the security role name.
+
+          Example:
+
+              <security-role>
+              <description>
+                  This role includes all employees who are authorized
+                  to access the employee service application.
+              </description>
+              <role-name>employee</role-name>
+              </security-role>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="security-role-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The security-role-refType contains the declaration of a
+        security role reference in a component's or a
+        Deployment Component's code. The declaration consists of an
+        optional description, the security role name used in the
+        code, and an optional link to a security role. If the
+        security role is not specified, the Deployer must choose an
+        appropriate security role.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The value of the role-name element must be the String used
+            as the parameter to the 
+            EJBContext.isCallerInRole(String roleName) method or the
+            HttpServletRequest.isUserInRole(String role) method.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="role-link"
+                   type="jakartaee:role-nameType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The role-link element is a reference to a defined
+            security role. The role-link element must contain
+            the name of one of the security roles defined in the
+            security-role elements.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdQNameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:QName.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:QName">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdBooleanType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:boolean.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:boolean">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdNMTOKENType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:NMTOKEN.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NMTOKEN">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdAnyURIType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:anyURI.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:anyURI">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:integer.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:integer">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdPositiveIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:positiveInteger.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:positiveInteger">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdNonNegativeIntegerType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:nonNegativeInteger.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:nonNegativeInteger">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="xsdStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type adds an "id" attribute to xsd:string.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="string">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This is a special string datatype that is defined by Jakarta EE as
+        a base type for defining collapsed strings. When schemas
+        require trailing/leading space elimination as well as
+        collapsing the existing whitespace, this base type may be
+        used.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:token">
+        <xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="true-falseType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This simple type designates a boolean with only two
+        permissible values
+
+        - true
+        - false
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdBooleanType">
+        <xsd:pattern value="(true|false)"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- ************************************************** -->
+
+  <xsd:complexType name="url-patternType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The url-patternType contains the url pattern of the mapping.
+        It must follow the rules specified in Section 11.2 of the
+        Servlet API Specification. This pattern is assumed to be in
+        URL-decoded form and must not contain CR(#xD) or LF(#xA).
+        If it contains those characters, the container must inform
+        the developer with a descriptive error message.
+        The container must preserve all characters including whitespaces.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="message-destinationType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The message-destinationType specifies a message
+          destination. The logical destination described by this
+          element is mapped to a physical destination by the Deployer.
+
+          The message destination element contains: 
+
+                  - an optional description
+                  - an optional display-name
+                  - an optional icon
+                  - a message destination name which must be unique
+                    among message destination names within the same 
+                    Deployment File. 
+                  - an optional mapped name
+                  - an optional lookup name
+
+          Example: 
+
+          <message-destination>
+                  <message-destination-name>CorporateStocks
+                  </message-destination-name>
+          </message-destination>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="message-destination-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-name element specifies a
+            name for a message destination.  This name must be
+            unique among the names of message destinations
+            within the Deployment File.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="mapped-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+
+              A product specific name that this message destination
+              should be mapped to.  Each message-destination-ref
+              element that references this message destination will
+              define a name in the namespace of the referencing
+              component or in one of the other predefined namespaces. 
+              Many application servers provide a way to map these
+              local names to names of resources known to the
+              application server.  This mapped name is often a global
+              JNDI name, but may be a name of any form.  Each of the
+              local names should be mapped to this same global name.
+
+              Application servers are not required to support any
+              particular form or type of mapped name, nor the ability
+              to use mapped names.  The mapped name is
+              product-dependent and often installation-dependent.  No
+              use of a mapped name is portable.
+
+              ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="lookup-name"
+                   type="jakartaee:xsdStringType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+              The JNDI name to be looked up to resolve the message destination.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-refType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The message-destination-ref element contains a declaration
+          of Deployment Component's reference to a message destination
+          associated with a resource in Deployment Component's
+          environment. It consists of:
+
+                  - an optional description
+                  - the message destination reference name
+                  - an optional message destination type
+                  - an optional specification as to whether
+                    the destination is used for 
+                    consuming or producing messages, or both.
+                    if not specified, "both" is assumed.
+                  - an optional link to the message destination
+                  - optional injection targets
+
+          The message destination type must be supplied unless an
+          injection target is specified, in which case the type
+          of the target is used.  If both are specified, the type
+          must be assignment compatible with the type of the injection
+          target.
+
+
+          Examples:
+
+          <message-destination-ref>
+                  <message-destination-ref-name>jms/StockQueue
+                  </message-destination-ref-name>
+                  <message-destination-type>jakarta.jms.Queue
+                  </message-destination-type>
+                  <message-destination-usage>Consumes
+                  </message-destination-usage>
+                  <message-destination-link>CorporateStocks
+                  </message-destination-link>
+          </message-destination-ref>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="message-destination-ref-name"
+                   type="jakartaee:jndi-nameType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The message-destination-ref-name element specifies
+            the name of a message destination reference; its
+            value is the environment entry name used in
+            Deployment Component code.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-destination-type"
+                   type="jakartaee:message-destination-typeType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-usage"
+                   type="jakartaee:message-destination-usageType"
+                   minOccurs="0"/>
+      <xsd:element name="message-destination-link"
+                   type="jakartaee:message-destination-linkType"
+                   minOccurs="0"/>
+
+      <xsd:group ref="jakartaee:resourceGroup"/>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-usageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-usageType specifies the use of the
+        message destination indicated by the reference.  The value
+        indicates whether messages are consumed from the message
+        destination, produced for the destination, or both.  The
+        Assembler makes use of this information in linking producers
+        of a destination with its consumers.
+
+        The value of the message-destination-usage element must be
+        one of the following:
+            Consumes
+            Produces
+            ConsumesProduces
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="Consumes"/>
+        <xsd:enumeration value="Produces"/>
+        <xsd:enumeration value="ConsumesProduces"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+
+          The message-destination-typeType specifies the type of
+          the destination. The type is specified by the Java interface
+          expected to be implemented by the destination.
+
+          Example: 
+
+            <message-destination-type>jakarta.jms.Queue
+            </message-destination-type>
+
+          ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:fully-qualified-classType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="message-destination-linkType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The message-destination-linkType is used to link a message
+        destination reference or message-driven bean to a message
+        destination.
+
+        The Assembler sets the value to reflect the flow of messages
+        between producers and consumers in the application.
+
+        The value must be the message-destination-name of a message
+        destination in the same Deployment File or in another
+        Deployment File in the same Jakarta EE application unit.
+
+        Alternatively, the value may be composed of a path name
+        specifying a Deployment File containing the referenced
+        message destination with the message-destination-name of the
+        destination appended and separated from the path name by
+        "#". The path name is relative to the Deployment File
+        containing Deployment Component that is referencing the
+        message destination.  This allows multiple message
+        destinations with the same name to be uniquely identified.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="transaction-supportType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The transaction-supportType specifies the level of
+	transaction support provided by the resource adapter. It is
+	used by transaction-support elements.
+
+	The value must be one of the following:
+
+	    NoTransaction
+	    LocalTransaction
+	    XATransaction
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+	<xsd:enumeration value="NoTransaction"/>
+	<xsd:enumeration value="LocalTransaction"/>
+	<xsd:enumeration value="XATransaction"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_3_1.xsd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_3_1.xsd
new file mode 100644
index 0000000..e3c2e46
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/jsp_3_1.xsd
@@ -0,0 +1,378 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="3.1">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      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: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      This is the XML Schema for the JSP 3.1 deployment descriptor
+      types.  The JSP 3.1 schema contains all the special
+      structures and datatypes that are necessary to use JSP files
+      from a web application. 
+      
+      The contents of this schema is used by the web-common_6_0.xsd 
+      file to define JSP specific content. 
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jsp-configType is used to provide global configuration
+        information for the JSP files in a web application. It has
+        two subelements, taglib and jsp-property-group.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="taglib"
+                   type="jakartaee:taglibType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="jsp-property-group"
+                   type="jakartaee:jsp-property-groupType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-fileType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jsp-file element contains the full path to a JSP file
+        within the web application beginning with a `/'.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:pathType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="jsp-property-groupType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The jsp-property-groupType is used to group a number of
+        files so they can be given global property information.
+        All files so described are deemed to be JSP files.  The
+        following additional properties can be described:
+        
+        - Control whether EL is ignored.
+        - Control whether scripting elements are invalid.
+        - Indicate pageEncoding information.
+        - Indicate that a resource is a JSP document (XML).
+        - Prelude and Coda automatic includes.
+        - Control whether the character sequence #{ is allowed
+        when used as a String literal.
+        - Control whether template text containing only
+        whitespaces must be removed from the response output.
+        - Indicate the default contentType information.
+        - Indicate the default buffering model for JspWriter
+        - Control whether error should be raised for the use of
+        undeclared namespaces in a JSP page.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="el-ignored"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Can be used to easily set the isELIgnored
+            property of a group of JSP pages.  By default, the
+            EL evaluation is enabled for Web Applications using
+            a Servlet 2.4 or greater web.xml, and disabled
+            otherwise.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="error-on-el-not-found"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Can be used to easily set the errorOnELNotFound
+            property of a group of JSP pages. By default, this
+            property is false.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="page-encoding"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The valid values of page-encoding are those of the
+            pageEncoding page directive.  It is a
+            translation-time error to name different encodings
+            in the pageEncoding attribute of the page directive
+            of a JSP page and in a JSP configuration element
+            matching the page.  It is also a translation-time
+            error to name different encodings in the prolog
+            or text declaration of a document in XML syntax and
+            in a JSP configuration element matching the document.
+            It is legal to name the same encoding through
+            mulitple mechanisms.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="scripting-invalid"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Can be used to easily disable scripting in a
+            group of JSP pages.  By default, scripting is
+            enabled.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="is-xml"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            If true, denotes that the group of resources
+            that match the URL pattern are JSP documents,
+            and thus must be interpreted as XML documents.
+            If false, the resources are assumed to not
+            be JSP documents, unless there is another
+            property group that indicates otherwise.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="include-prelude"
+                   type="jakartaee:pathType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The include-prelude element is a context-relative
+            path that must correspond to an element in the
+            Web Application.  When the element is present,
+            the given path will be automatically included (as
+            in an include directive) at the beginning of each
+            JSP page in this jsp-property-group.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="include-coda"
+                   type="jakartaee:pathType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The include-coda element is a context-relative
+            path that must correspond to an element in the
+            Web Application.  When the element is present,
+            the given path will be automatically included (as
+            in an include directive) at the end of each
+            JSP page in this jsp-property-group.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="deferred-syntax-allowed-as-literal"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The character sequence #{ is reserved for EL expressions.
+            Consequently, a translation error occurs if the #{
+            character sequence is used as a String literal, unless
+            this element is enabled (true). Disabled (false) by
+            default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="trim-directive-whitespaces"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Indicates that template text containing only whitespaces
+            must be removed from the response output. It has no
+            effect on JSP documents (XML syntax). Disabled (false)
+            by default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-content-type"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The valid values of default-content-type are those of the
+            contentType page directive.  It specifies the default
+            response contentType if the page directive does not include
+            a contentType attribute.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="buffer"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The valid values of buffer are those of the
+            buffer page directive.  It specifies if buffering should be
+            used for the output to response, and if so, the size of the
+            buffer to use.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="error-on-undeclared-namespace"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The default behavior when a tag with unknown namespace is used
+            in a JSP page (regular syntax) is to silently ignore it.  If
+            set to true, then an error must be raised during the translation
+            time when an undeclared tag is used in a JSP page.  Disabled
+            (false) by default.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="taglibType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The taglibType defines the syntax for declaring in
+        the deployment descriptor that a tag library is
+        available to the application.  This can be done
+        to override implicit map entries from TLD files and
+        from the container.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="taglib-uri"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            A taglib-uri element describes a URI identifying a
+            tag library used in the web application.  The body
+            of the taglib-uri element may be either an
+            absolute URI specification, or a relative URI.
+            There should be no entries in web.xml with the
+            same taglib-uri value.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="taglib-location"
+                   type="jakartaee:pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            the taglib-location element contains the location
+            (as a resource relative to the root of the web
+            application) where to find the Tag Library
+            Description file for the tag library.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.mdd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.mdd
new file mode 100644
index 0000000..ae9f4d6
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.mdd
@@ -0,0 +1,856 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+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: GNU General Public License,
+version 2 with the GNU Classpath Exception, which is available at
+https://www.gnu.org/software/classpath/license.html.
+
+SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+-->
+<metaDD>
+    <meta-element>
+        <dtd-name>web-app</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WebApp</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.WebApp
+        </implements>
+        <user-code>
+            public org.xml.sax.SAXParseException getError() {
+                return null;
+            }
+            public int getStatus() {
+                return STATE_VALID;
+            }
+            public void setJspConfig(org.netbeans.modules.j2ee.dd.api.web.JspConfig value) {
+                if (value==null) setJspConfig(new org.netbeans.modules.j2ee.dd.api.web.JspConfig[]{});
+                else setJspConfig(new org.netbeans.modules.j2ee.dd.api.web.JspConfig[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.JspConfig getSingleJspConfig() {
+                org.netbeans.modules.j2ee.dd.api.web.JspConfig[] values = getJspConfig();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setWelcomeFileList(org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList value) {
+                if (value==null) setWelcomeFileList(new org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList[]{});
+                setWelcomeFileList(new org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList getSingleWelcomeFileList() {
+                org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList[] values = getWelcomeFileList();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setSessionConfig(org.netbeans.modules.j2ee.dd.api.web.SessionConfig value) {
+                if (value==null) setSessionConfig(new org.netbeans.modules.j2ee.dd.api.web.SessionConfig[]{});
+                else setSessionConfig(new org.netbeans.modules.j2ee.dd.api.web.SessionConfig[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.SessionConfig getSingleSessionConfig() {
+                org.netbeans.modules.j2ee.dd.api.web.SessionConfig[] values = getSessionConfig();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setLoginConfig(org.netbeans.modules.j2ee.dd.api.web.LoginConfig value) {
+                if (value==null) setLoginConfig(new org.netbeans.modules.j2ee.dd.api.web.LoginConfig[]{});
+                else setLoginConfig(new org.netbeans.modules.j2ee.dd.api.web.LoginConfig[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.LoginConfig getSingleLoginConfig() {
+                org.netbeans.modules.j2ee.dd.api.web.LoginConfig[] values = getLoginConfig();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setDistributable(boolean value) {
+                if (value) setDistributable(new EmptyType[]{new EmptyType()});
+                else setDistributable(new EmptyType[]{});
+            }
+            public boolean isDistributable() {
+                EmptyType[] values = getDistributable();
+                if (values==null || values.length==0) return false;
+                else return true;
+            }
+            public void setLocaleEncodingMappingList(org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList value) {
+                if (value==null) setLocaleEncodingMappingList(new org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList[]{});
+                else setLocaleEncodingMappingList(new org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList getSingleLocaleEncodingMappingList() {
+                org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList[] values = getLocaleEncodingMappingList();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setName(String[] value) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(WebApp.VERSION_6_0);
+            }
+            public String[] getName() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(WebApp.VERSION_6_0);
+            }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>emptyType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EmptyType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>param-valueType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>InitParam</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.InitParam, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ParamName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>filterType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Filter</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.Filter, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "FilterName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>filter-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FilterMapping</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.FilterMapping
+        </implements>
+        <user-code>
+            public String getServletName() {
+                return this.sizeServletName() > 0 ? (String)this.getValue(SERVLET_NAME, 0) : null;
+            }
+
+            public void setServletName(String value) {
+                setServletNames(value != null ? new String[]{value} : new String[]{});
+            }
+
+            public String getUrlPattern() {
+                return this.sizeUrlPattern() > 0 ? (String)this.getValue(URL_PATTERN, 0) : null;
+            }
+
+            public void setUrlPattern(String value) {
+                setUrlPatterns(value != null ? new String[]{value} : new String[]{});
+            }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>listenerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Listener</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.Listener
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>servletType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Servlet</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.Servlet, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ServletName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>servlet-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServletMapping</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.ServletMapping25, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "UrlPattern"; }
+
+            public void setUrlPattern(String value) {
+                setUrlPatterns(new String[] {value});
+            }
+
+            public String getUrlPattern() {
+                String[] urlPatterns = getUrlPatterns();
+                if (urlPatterns != null &amp;&amp; urlPatterns.length > 0) {
+                    return urlPatterns[0];
+                }
+                return null;
+            }
+
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>session-configType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SessionConfig</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.SessionConfig
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>mime-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MimeMapping</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.MimeMapping, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "Extension"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>welcome-file-listType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WelcomeFileList</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>error-pageType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ErrorPage</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.ErrorPage, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ErrorCode"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jsp-configType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JspConfig</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.JspConfig
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>security-constraintType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SecurityConstraint</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.SecurityConstraint
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>login-configType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LoginConfig</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.LoginConfig
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>security-roleType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SecurityRole</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.SecurityRole, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "RoleName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destinationType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestination</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.MessageDestination, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "MessageDestinationName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>locale-encoding-mapping-listType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocaleEncodingMappingList</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>locale-encoding-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocaleEncodingMapping</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMapping, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "Locale"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>localeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocaleType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>encodingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EncodingType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>string</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>String</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>descriptionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DescriptionType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdStringType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdStringType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>display-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DisplayNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>iconType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Icon</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.Icon
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>pathType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PathType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>env-entryType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EnvEntry</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.EnvEntry, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EnvEntryName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.EjbRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EjbRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-local-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbLocalRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.EjbLocalRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EjbRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>resource-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResourceRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.ResourceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ResRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>resource-env-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResourceEnvRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.ResourceEnvRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ResourceEnvRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.MessageDestinationRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "MessageDestinationRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>persistence-context-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceContextRefType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>persistence-unit-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceUnitRefType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>lifecycle-callbackType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LifecycleCallbackType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>fully-qualified-classType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FullyQualifiedClassType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>java-identifierType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JavaIdentifierType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jndi-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JndiNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>persistence-context-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceContextTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>propertyType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PropertyType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-usageType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationUsageType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-linkType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationLinkType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>injection-targetType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>InjectionTarget</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.InjectionTarget</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends>
+    </meta-element>
+    <meta-element>
+        <dtd-name>res-authType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResAuthType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>res-sharing-scopeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResSharingScopeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRef</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ServiceRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdAnyURIType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdAnyURIType</bean-name>
+        <wrapper-class>java.net.URI</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdQNameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdQNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>port-component-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PortComponentRef</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.PortComponentRef
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_handlerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandler</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "HandlerName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_handler-chainsType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChains</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_handler-chainType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChain</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_qname-pattern</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefQnamePattern</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_protocol-bindingListType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefProtocolBindingListType</bean-name>
+        <wrapper-class>String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-ref-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRefNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-ref-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRefTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>local-homeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocalHomeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>localType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocalType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-linkType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbLinkType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>homeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>HomeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>remoteType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RemoteType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>env-entry-type-valuesType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EnvEntryTypeValuesType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>role-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RoleNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>auth-methodType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>AuthMethodType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>form-login-configType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FormLoginConfig</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.FormLoginConfig
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>war-pathType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WarPathType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>web-resource-collectionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WebResourceCollection</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.WebResourceCollection, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "WebResourceName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>auth-constraintType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>AuthConstraint</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.AuthConstraint
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>user-data-constraintType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>UserDataConstraint</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.UserDataConstraint
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>transport-guaranteeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>TransportGuaranteeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>url-patternType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>UrlPatternType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>http-methodType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>HttpMethodType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>taglibType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Taglib</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.Taglib, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "TaglibUri"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jsp-property-groupType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JspPropertyGroup</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.JspPropertyGroup
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>true-falseType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>TrueFalseType</bean-name>
+        <wrapper-class>boolean</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>error-codeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ErrorCodeType</bean-name>
+        <wrapper-class>Integer</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>string</dtd-name>
+        <namespace>http://www.w3.org/2001/XMLSchema</namespace>
+        <bean-name>String</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>mime-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MimeTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdIntegerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdIntegerType</bean-name>
+        <wrapper-class>java.math.BigInteger</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>servlet-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServletNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>nonEmptyStringType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>NonEmptyStringType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>load-on-startupType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LoadOnStartupType</bean-name>
+        <wrapper-class>java.math.BigInteger</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>run-asType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RunAs</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.RunAs
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>security-role-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SecurityRoleRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.SecurityRoleRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "RoleName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jsp-fileType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JspFileType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>filter-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FilterNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>dispatcherType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DispatcherType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>absoluteOrderingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>AbsoluteOrdering</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.AbsoluteOrdering
+        </implements>
+    </meta-element>
+
+    <!-- changes added for EE6: -->
+
+    <meta-element>
+        <dtd-name>handlerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandler</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "HandlerName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>handler-chainsType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChains</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>handler-chainType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChainType</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>dewey-versionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>version</bean-name>
+        <wrapper-class>java.math.BigDecimal</wrapper-class>
+    </meta-element>
+</metaDD>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.xsd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.xsd
new file mode 100644
index 0000000..3f0c204
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-app_6_0.xsd
@@ -0,0 +1,343 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 2009, 2021 Oracle and/or its affiliates and others.
+    All rights reserved.
+
+    This program and the accompanying materials are made available under the
+    terms of the Eclipse Public License v. 2.0, which is available at
+    http://www.eclipse.org/legal/epl-2.0.
+
+    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: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="6.0">
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="license.inc" parse="text"/>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+
+        This is the XML Schema for the Servlet 6.0 deployment descriptor.
+        The deployment descriptor must be named "WEB-INF/web.xml" in the
+        web application's war file.  All Servlet deployment descriptors
+        must indicate the web application schema by using the Jakarta EE
+        namespace:
+
+        https://jakarta.ee/xml/ns/jakartaee
+
+        and by indicating the version of the schema by
+        using the version element as shown below:
+
+            <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="..."
+              version="6.0">
+              ...
+            </web-app>
+
+        The instance documents may indicate the published version of
+        the schema using the xsi:schemaLocation attribute for Jakarta EE
+        namespace with the following location:
+
+        https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd
+
+        ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="common.inc" parse="text"/>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <!-- **************************************************** -->
+
+  <xsd:include schemaLocation="web-common_6_0.xsd"/>
+
+  <!-- **************************************************** -->
+
+  <xsd:element name="web-app" type="jakartaee:web-appType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The web-app element is the root of the deployment
+        descriptor for a web application.  Note that the sub-elements
+        of this element can be in the arbitrary order. Because of
+        that, the multiplicity of the elements of distributable,
+        session-config, welcome-file-list, jsp-config, login-config,
+        and locale-encoding-mapping-list was changed from "?" to "*"
+        in this schema.  However, the deployment descriptor instance
+        file must not contain multiple elements of session-config,
+        jsp-config, and login-config. When there are multiple elements of
+        welcome-file-list or locale-encoding-mapping-list, the container
+        must concatenate the element contents.  The multiple occurence
+        of the element distributable is redundant and the container
+        treats that case exactly in the same way when there is only
+        one distributable.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:unique name="web-common-servlet-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The servlet element contains the name of a servlet.
+          The name must be unique within the web application.
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet"/>
+      <xsd:field    xpath="jakartaee:servlet-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-common-filter-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The filter element contains the name of a filter.
+          The name must be unique within the web application.
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:filter"/>
+      <xsd:field    xpath="jakartaee:filter-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-common-ejb-local-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-local-ref-name element contains the name of an 
+          enterprise bean reference. The enterprise 
+          bean reference is an entry in the web
+          application's environment and is relative to the
+          java:comp/env context.  The name must be unique within
+          the web application.
+
+          It is recommended that name is prefixed with "ejb/".
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-local-ref"/>
+      <xsd:field    xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-common-ejb-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-ref-name element contains the name of an 
+          enterprise bean reference. The enterprise bean 
+          reference is an entry in the web application's environment 
+          and is relative to the java:comp/env context.  
+          The name must be unique within the web application.
+
+          It is recommended that name is prefixed with "ejb/".
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-ref"/>
+      <xsd:field    xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-common-resource-env-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The resource-env-ref-name element specifies the name of
+          a resource environment reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-env-ref"/>
+      <xsd:field    xpath="jakartaee:resource-env-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-common-message-destination-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The message-destination-ref-name element specifies the name of
+          a message destination reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:message-destination-ref"/>
+      <xsd:field    xpath="jakartaee:message-destination-ref-name"/>
+    </xsd:unique>
+
+
+    <xsd:unique name="web-common-res-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The res-ref-name element specifies the name of a
+          resource manager connection factory reference.  The name
+          is a JNDI name relative to the java:comp/env context.
+          The name must be unique within a web application.
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-ref"/>
+      <xsd:field    xpath="jakartaee:res-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-common-env-entry-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The env-entry-name element contains the name of a web
+          application's environment entry.  The name is a JNDI
+          name relative to the java:comp/env context.  The name
+          must be unique within a web application.
+
+        </xsd:documentation>
+      </xsd:annotation>
+
+      <xsd:selector xpath="jakartaee:env-entry"/>
+      <xsd:field    xpath="jakartaee:env-entry-name"/>
+    </xsd:unique>
+
+    <xsd:key name="web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          A role-name-key is specified to allow the references
+          from the security-role-refs.
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:security-role"/>
+      <xsd:field    xpath="jakartaee:role-name"/>
+    </xsd:key>
+
+    <xsd:keyref name="web-common-role-name-references"
+                refer="jakartaee:web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The keyref indicates the references from
+          security-role-ref to a specified role-name.
+
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet/jakartaee:security-role-ref"/>
+      <xsd:field    xpath="jakartaee:role-link"/>
+    </xsd:keyref>
+  </xsd:element>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-appType">
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="module-name"
+                   type="jakartaee:string"
+                   minOccurs="0"/>
+      <xsd:group ref="jakartaee:web-commonType"/>
+      <xsd:element name="default-context-path" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element provides a default context path
+            of the web application. An empty value for this element must cause
+            the web application to be deployed at the root for the container.
+            Otherwise, the default context path must start with
+            a "/" character but not end with a "/" character.
+            Servlet containers may provide vendor specific configuration
+            options that allows specifying a value that overrides the value
+            specified here.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="request-character-encoding" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element provides a default request
+            character encoding of the web application.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="response-character-encoding" type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element provides a default response
+            character encoding of the web application.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="deny-uncovered-http-methods" type="jakartaee:emptyType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            When specified, this element causes uncovered http methods
+            to be denied. For every url-pattern that is the target of a
+            security-constrant, this element causes all HTTP methods that
+            are NOT covered (by a security constraint) at the url-pattern
+            to be denied.
+
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="absolute-ordering"
+                   type="jakartaee:absoluteOrderingType"/>
+    </xsd:choice>
+    <xsd:attributeGroup ref="jakartaee:web-common-attributes"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="absoluteOrderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Please see section 8.2.2 of the specification for details.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="jakartaee:ordering-othersType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:choice>
+  </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_6_0.xsd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_6_0.xsd
new file mode 100644
index 0000000..20b3132
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-common_6_0.xsd
@@ -0,0 +1,1507 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="6.0">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      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: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the common XML Schema for the Servlet 6.0 deployment descriptor.
+      This file is in turn used by web.xml and web-fragment.xml
+      web application's war file.  All Servlet deployment descriptors
+      must indicate the web common schema by using the Jakarta EE
+      namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and by indicating the version of the schema by
+      using the version element as shown below:
+      
+      <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="6.0">
+      ...
+      </web-app>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/web-common_6_0.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+  <xsd:include schemaLocation="jsp_3_1.xsd"/>
+
+  <xsd:group name="web-commonType">
+    <xsd:choice>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="distributable"
+                   type="jakartaee:emptyType"/>
+      <xsd:element name="context-param"
+                   type="jakartaee:param-valueType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The context-param element contains the declaration
+            of a web application's servlet context
+            initialization parameters.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="filter"
+                   type="jakartaee:filterType"/>
+      <xsd:element name="filter-mapping"
+                   type="jakartaee:filter-mappingType"/>
+      <xsd:element name="listener"
+                   type="jakartaee:listenerType"/>
+      <xsd:element name="servlet"
+                   type="jakartaee:servletType"/>
+      <xsd:element name="servlet-mapping"
+                   type="jakartaee:servlet-mappingType"/>
+      <xsd:element name="session-config"
+                   type="jakartaee:session-configType"/>
+      <xsd:element name="mime-mapping"
+                   type="jakartaee:mime-mappingType"/>
+      <xsd:element name="welcome-file-list"
+                   type="jakartaee:welcome-file-listType"/>
+      <xsd:element name="error-page"
+                   type="jakartaee:error-pageType"/>
+      <xsd:element name="jsp-config"
+                   type="jakartaee:jsp-configType"/>
+      <xsd:element name="security-constraint"
+                   type="jakartaee:security-constraintType"/>
+      <xsd:element name="login-config"
+                   type="jakartaee:login-configType"/>
+      <xsd:element name="security-role"
+                   type="jakartaee:security-roleType"/>
+      <xsd:group ref="jakartaee:jndiEnvironmentRefsGroup"/>
+      <xsd:element name="message-destination"
+                   type="jakartaee:message-destinationType"/>
+      <xsd:element name="locale-encoding-mapping-list"
+                   type="jakartaee:locale-encoding-mapping-listType"/>
+    </xsd:choice>
+  </xsd:group>
+
+  <xsd:attributeGroup name="web-common-attributes">
+    <xsd:attribute name="version"
+                   type="jakartaee:web-app-versionType"
+                   use="required"/>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="metadata-complete"
+                   type="xsd:boolean">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The metadata-complete attribute defines whether this
+          deployment descriptor and other related deployment
+          descriptors for this module (e.g., web service
+          descriptors) are complete, or whether the class
+          files available to this module and packaged with
+          this application should be examined for annotations
+          that specify deployment information.
+          
+          If metadata-complete is set to "true", the deployment
+          tool must ignore any annotations that specify deployment
+          information, which might be present in the class files
+          of the application.
+          
+          If metadata-complete is not specified or is set to
+          "false", the deployment tool must examine the class
+          files of the application for annotations, as
+          specified by the specifications.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:attributeGroup>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="attribute-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type is a general type that can be used to declare
+        attribute/value lists.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="attribute-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The attribute-name element contains the name of an
+            attribute.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute-value"
+                   type="jakartaee:xsdStringType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The attribute-value element contains the value of a
+            attribute.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="auth-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The auth-constraintType indicates the user roles that
+        should be permitted access to this resource
+        collection. The role-name used here must either correspond
+        to the role-name of one of the security-role elements
+        defined for this web application, or be the specially
+        reserved role-name "*" that is a compact syntax for
+        indicating all roles in the web application. If both "*"
+        and rolenames appear, the container interprets this as all
+        roles.  If no roles are defined, no user is allowed access
+        to the portion of the web application described by the
+        containing security-constraint.  The container matches
+        role names case sensitively when determining access.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+                   type="jakartaee:role-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="auth-methodType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The auth-methodType is used to configure the authentication
+        mechanism for the web application. As a prerequisite to
+        gaining access to any web resources which are protected by
+        an authorization constraint, a user must have authenticated
+        using the configured mechanism. Legal values are "BASIC",
+        "DIGEST", "FORM", "CLIENT-CERT", or a vendor-specific
+        authentication scheme.
+        
+        Used in: login-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="dispatcherType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The dispatcher has five legal values: FORWARD, REQUEST,
+        INCLUDE, ASYNC, and ERROR.
+        
+        A value of FORWARD means the Filter will be applied under
+        RequestDispatcher.forward() calls.
+        A value of REQUEST means the Filter will be applied under
+        ordinary client calls to the path or servlet.
+        A value of INCLUDE means the Filter will be applied under
+        RequestDispatcher.include() calls.
+        A value of ASYNC means the Filter will be applied under
+        calls dispatched from an AsyncContext.
+        A value of ERROR means the Filter will be applied under the
+        error page mechanism.
+        
+        The absence of any dispatcher elements in a filter-mapping
+        indicates a default of applying filters only under ordinary
+        client calls to the path or servlet.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="FORWARD"/>
+        <xsd:enumeration value="INCLUDE"/>
+        <xsd:enumeration value="REQUEST"/>
+        <xsd:enumeration value="ASYNC"/>
+        <xsd:enumeration value="ERROR"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="error-codeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The error-code contains an HTTP error code, ex: 404
+        
+        Used in: error-page
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:xsdPositiveIntegerType">
+        <xsd:pattern value="\d{3}"/>
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="error-pageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The error-pageType contains a mapping between an error code
+        or exception type to the path of a resource in the web
+        application.
+        
+        Error-page declarations using the exception-type element in
+        the deployment descriptor must be unique up to the class name of
+        the exception-type. Similarly, error-page declarations using the
+        error-code element must be unique in the deployment descriptor
+        up to the status code.
+        
+        If an error-page element in the deployment descriptor does not
+        contain an exception-type or an error-code element, the error
+        page is a default error page.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="error-code"
+                     type="jakartaee:error-codeType"/>
+        <xsd:element name="exception-type"
+                     type="jakartaee:fully-qualified-classType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The exception-type contains a fully qualified class
+              name of a Java exception type.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:element name="location"
+                   type="jakartaee:war-pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The location element contains the location of the
+            resource in the web application relative to the root of
+            the web application. The value of the location must have
+            a leading `/'.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filterType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The filterType is used to declare a filter in the web
+        application. The filter is mapped to either a servlet or a
+        URL pattern in the filter-mapping element, using the
+        filter-name value to reference. Filters can access the
+        initialization parameters declared in the deployment
+        descriptor at runtime via the FilterConfig interface.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="filter-name"
+                   type="jakartaee:filter-nameType"/>
+      <xsd:element name="filter-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The fully qualified classname of the filter.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="async-supported"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"/>
+      <xsd:element name="init-param"
+                   type="jakartaee:param-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The init-param element contains a name/value pair as
+            an initialization param of a servlet filter
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filter-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Declaration of the filter mappings in this web
+        application is done by using filter-mappingType.
+        The container uses the filter-mapping
+        declarations to decide which filters to apply to a request,
+        and in what order. The container matches the request URI to
+        a Servlet in the normal way. To determine which filters to
+        apply it matches filter-mapping declarations either on
+        servlet-name, or on url-pattern for each filter-mapping
+        element, depending on which style is used. The order in
+        which filters are invoked is the order in which
+        filter-mapping declarations that match a request URI for a
+        servlet appear in the list of filter-mapping elements.The
+        filter-name value must be the value of the filter-name
+        sub-elements of one of the filter declarations in the
+        deployment descriptor.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="filter-name"
+                   type="jakartaee:filter-nameType"/>
+      <xsd:choice minOccurs="1"
+                  maxOccurs="unbounded">
+        <xsd:element name="url-pattern"
+                     type="jakartaee:url-patternType"/>
+        <xsd:element name="servlet-name"
+                     type="jakartaee:servlet-nameType"/>
+      </xsd:choice>
+      <xsd:element name="dispatcher"
+                   type="jakartaee:dispatcherType"
+                   minOccurs="0"
+                   maxOccurs="5"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="nonEmptyStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type defines a string which contains at least one
+        character.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:minLength value="1"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filter-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The logical name of the filter is declare
+        by using filter-nameType. This name is used to map the
+        filter.  Each filter name is unique within the web
+        application.
+        
+        Used in: filter, filter-mapping
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="form-login-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The form-login-configType specifies the login and error
+        pages that should be used in form based login. If form based
+        authentication is not used, these elements are ignored.
+        
+        Used in: login-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="form-login-page"
+                   type="jakartaee:war-pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The form-login-page element defines the location in the web
+            app where the page that can be used for login can be
+            found.  The path begins with a leading / and is interpreted
+            relative to the root of the WAR.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="form-error-page"
+                   type="jakartaee:war-pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The form-error-page element defines the location in
+            the web app where the error page that is displayed
+            when login is not successful can be found.
+            The path begins with a leading / and is interpreted
+            relative to the root of the WAR.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="http-methodType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        A HTTP method type as defined in HTTP 1.1 section 2.2.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:pattern value="[!-~-[\(\)&#60;&#62;@,;:&#34;/\[\]?=\{\}\\\p{Z}]]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="load-on-startupType">
+    <xsd:union memberTypes="jakartaee:null-charType xsd:integer"/>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="null-charType">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value=""/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="login-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The login-configType is used to configure the authentication
+        method that should be used, the realm name that should be
+        used for this application, and the attributes that are
+        needed by the form login mechanism.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="auth-method"
+                   type="jakartaee:auth-methodType"
+                   minOccurs="0"/>
+      <xsd:element name="realm-name"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The realm name element specifies the realm name to
+            use in HTTP Basic authorization.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="form-login-config"
+                   type="jakartaee:form-login-configType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mime-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The mime-mappingType defines a mapping between an extension
+        and a mime type.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The extension element contains a string describing an
+          extension. example: "txt"
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:element name="extension"
+                   type="jakartaee:string"/>
+      <xsd:element name="mime-type"
+                   type="jakartaee:mime-typeType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mime-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The mime-typeType is used to indicate a defined mime type.
+        
+        Example:
+        "text/plain"
+        
+        Used in: mime-mapping
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="[^\p{Cc}^\s]+/[^\p{Cc}^\s]+"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The security-constraintType is used to associate
+        security constraints with one or more web resource
+        collections
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="display-name"
+                   type="jakartaee:display-nameType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="web-resource-collection"
+                   type="jakartaee:web-resource-collectionType"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="auth-constraint"
+                   type="jakartaee:auth-constraintType"
+                   minOccurs="0"/>
+      <xsd:element name="user-data-constraint"
+                   type="jakartaee:user-data-constraintType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servletType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The servletType is used to declare a servlet.
+        It contains the declarative data of a
+        servlet. If a jsp-file is specified and the load-on-startup
+        element is present, then the JSP should be precompiled and
+        loaded.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="servlet-name"
+                   type="jakartaee:servlet-nameType"/>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="servlet-class"
+                     type="jakartaee:fully-qualified-classType">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              The servlet-class element contains the fully
+              qualified class name of the servlet.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="jsp-file"
+                     type="jakartaee:jsp-fileType"/>
+      </xsd:choice>
+      <xsd:element name="init-param"
+                   type="jakartaee:param-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="load-on-startup"
+                   type="jakartaee:load-on-startupType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The load-on-startup element indicates that this
+            servlet should be loaded (instantiated and have
+            its init() called) on the startup of the web
+            application. The optional contents of these
+            element must be an integer indicating the order in
+            which the servlet should be loaded. If the value
+            is a negative integer, or the element is not
+            present, the container is free to load the servlet
+            whenever it chooses. If the value is a positive
+            integer or 0, the container must load and
+            initialize the servlet as the application is
+            deployed. The container must guarantee that
+            servlets marked with lower integers are loaded
+            before servlets marked with higher integers. The
+            container may choose the order of loading of
+            servlets with the same load-on-start-up value.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="enabled"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"/>
+      <xsd:element name="async-supported"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0"/>
+      <xsd:element name="run-as"
+                   type="jakartaee:run-asType"
+                   minOccurs="0"/>
+      <xsd:element name="security-role-ref"
+                   type="jakartaee:security-role-refType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="multipart-config"
+                   type="jakartaee:multipart-configType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servlet-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The servlet-mappingType defines a mapping between a
+        servlet and a url pattern.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="servlet-name"
+                   type="jakartaee:servlet-nameType"/>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   minOccurs="1"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servlet-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The servlet-name element contains the canonical name of the
+        servlet. Each servlet name is unique within the web
+        application.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="session-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The session-configType defines the session parameters
+        for this web application.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="session-timeout"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The session-timeout element defines the default
+            session timeout interval for all sessions created
+            in this web application. The specified timeout
+            must be expressed in a whole number of minutes.
+            If the timeout is 0 or less, the container ensures
+            the default behaviour of sessions is never to time
+            out. If this element is not specified, the container
+            must set its default timeout period.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="cookie-config"
+                   type="jakartaee:cookie-configType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The cookie-config element defines the configuration of the
+            session tracking cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="tracking-mode"
+                   type="jakartaee:tracking-modeType"
+                   minOccurs="0"
+                   maxOccurs="3">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The tracking-mode element defines the tracking modes
+            for sessions created by this web application
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The cookie-configType defines the configuration for the
+        session tracking cookies of this web application.
+        
+        Used in: session-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:cookie-nameType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The name that will be assigned to any session tracking
+            cookies created by this web application.
+            The default is JSESSIONID
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="domain"
+                   type="jakartaee:cookie-domainType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The domain name that will be assigned to any session tracking
+            cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="path"
+                   type="jakartaee:cookie-pathType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The path that will be assigned to any session tracking
+            cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="comment"
+                   type="jakartaee:cookie-commentType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The comment that will be assigned to any session tracking
+            cookies created by this web application.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="http-only"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Specifies whether any session tracking cookies created
+            by this web application will be marked as HttpOnly
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="secure"
+                   type="jakartaee:true-falseType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            Specifies whether any session tracking cookies created
+            by this web application will be marked as secure.
+            When true, all session tracking cookies must be marked
+            as secure independent of the nature of the request that
+            initiated the corresponding session.
+            When false, the session cookie should only be marked secure
+            if the request that initiated the session was secure.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-age"
+                   type="jakartaee:xsdIntegerType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The lifetime (in seconds) that will be assigned to any
+            session tracking cookies created by this web application.
+            Default is -1
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="jakartaee:attribute-valueType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The attribute-param element contains a name/value pair to
+            be added as an attribute to every session cookie.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The name that will be assigned to any session tracking
+        cookies created by this web application.
+        The default is JSESSIONID
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-domainType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The domain name that will be assigned to any session tracking
+        cookies created by this web application.
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The path that will be assigned to any session tracking
+        cookies created by this web application.
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="cookie-commentType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The comment that will be assigned to any session tracking
+        cookies created by this web application.
+        
+        Used in: cookie-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="tracking-modeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The tracking modes for sessions created by this web
+        application
+        
+        Used in: session-config
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="COOKIE"/>
+        <xsd:enumeration value="URL"/>
+        <xsd:enumeration value="SSL"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="transport-guaranteeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The transport-guaranteeType specifies that the communication
+        between client and server should be NONE, INTEGRAL, or
+        CONFIDENTIAL. NONE means that the application does not
+        require any transport guarantees. A value of INTEGRAL means
+        that the application requires that the data sent between the
+        client and server be sent in such a way that it can't be
+        changed in transit. CONFIDENTIAL means that the application
+        requires that the data be transmitted in a fashion that
+        prevents other entities from observing the contents of the
+        transmission. In most cases, the presence of the INTEGRAL or
+        CONFIDENTIAL flag will indicate that the use of SSL is
+        required.
+        
+        Used in: user-data-constraint
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:enumeration value="NONE"/>
+        <xsd:enumeration value="INTEGRAL"/>
+        <xsd:enumeration value="CONFIDENTIAL"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="user-data-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The user-data-constraintType is used to indicate how
+        data communicated between the client and container should be
+        protected.
+        
+        Used in: security-constraint
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="transport-guarantee"
+                   type="jakartaee:transport-guaranteeType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="war-pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The elements that use this type designate a path starting
+        with a "/" and interpreted relative to the root of a WAR
+        file.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:pattern value="/.*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="web-app-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This type contains the recognized versions of
+        web-application supported. It is used to designate the
+        version of the web application.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="6.0"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-resource-collectionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The web-resource-collectionType is used to identify the
+        resources and HTTP methods on those resources to which a
+        security constraint applies. If no HTTP methods are specified,
+        then the security constraint applies to all HTTP methods.
+        If HTTP methods are specified by http-method-omission
+        elements, the security constraint applies to all methods
+        except those identified in the collection.
+        http-method-omission and http-method elements are never
+        mixed in the same collection.
+        
+        Used in: security-constraint
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="web-resource-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The web-resource-name contains the name of this web
+            resource collection.
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="description"
+                   type="jakartaee:descriptionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   maxOccurs="unbounded"/>
+      <xsd:choice minOccurs="0"
+                  maxOccurs="1">
+        <xsd:element name="http-method"
+                     type="jakartaee:http-methodType"
+                     minOccurs="1"
+                     maxOccurs="unbounded">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              Each http-method names an HTTP method to which the
+              constraint applies.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="http-method-omission"
+                     type="jakartaee:http-methodType"
+                     minOccurs="1"
+                     maxOccurs="unbounded">
+          <xsd:annotation>
+            <xsd:documentation>
+
+              Each http-method-omission names an HTTP method to
+              which the constraint does not apply.
+              
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="welcome-file-listType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The welcome-file-list contains an ordered list of welcome
+        files elements.
+        
+        Used in: web-app
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="welcome-file"
+                   type="xsd:string"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The welcome-file element contains file name to use
+            as a default welcome file, such as index.html
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="localeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The localeType defines valid locale defined by ISO-639-1
+        and ISO-3166.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[a-z]{2}(_|-)?([\p{L}\-\p{Nd}]{2})?"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+  <xsd:simpleType name="encodingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The encodingType defines IANA character sets.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[^\s]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="locale-encoding-mapping-listType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The locale-encoding-mapping-list contains one or more
+        locale-encoding-mapping(s).
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="locale-encoding-mapping"
+                   type="jakartaee:locale-encoding-mappingType"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="locale-encoding-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The locale-encoding-mapping contains locale name and
+        encoding name. The locale name must be either "Language-code",
+        such as "ja", defined by ISO-639 or "Language-code_Country-code",
+        such as "ja_JP".  "Country code" is defined by ISO-3166.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="locale"
+                   type="jakartaee:localeType"/>
+      <xsd:element name="encoding"
+                   type="jakartaee:encodingType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ordering-othersType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This element indicates that the ordering sub-element in which
+        it was placed should take special action regarding the ordering
+        of this application resource relative to other application
+        configuration resources.
+        See section 8.2.2 of the specification for details.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="multipart-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This element specifies configuration information related to the
+        handling of multipart/form-data requests.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="location"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The directory location where uploaded files will be stored
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-file-size"
+                   type="xsd:long"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The maximum size limit of uploaded files
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="max-request-size"
+                   type="xsd:long"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The maximum size limit of multipart/form-data requests
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="file-size-threshold"
+                   type="xsd:integer"
+                   minOccurs="0"
+                   maxOccurs="1">
+        <xsd:annotation>
+          <xsd:documentation>
+
+            The size threshold after which an uploaded file will be
+            written to disk
+            
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.mdd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.mdd
new file mode 100644
index 0000000..9df2709
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.mdd
@@ -0,0 +1,910 @@
+<?xml version='1.0' encoding='UTF-8' ?>
+<!--
+Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+This program and the accompanying materials are made available under the
+terms of the Eclipse Public License v. 2.0, which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+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: GNU General Public License,
+version 2 with the GNU Classpath Exception, which is available at
+https://www.gnu.org/software/classpath/license.html.
+
+SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+-->
+<metaDD>
+    <meta-element>
+
+        <!--
+        For now, web-fragment is defined exactly the same way as web-app.
+        -->
+
+        <dtd-name>web-fragment</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WebFragment</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.WebFragment
+        </implements>
+        <user-code>
+            public org.xml.sax.SAXParseException getError() {
+                return null;
+            }
+            public int getStatus() {
+                return STATE_VALID;
+            }
+            // due to compatibility with servlet2.3
+            public void setTaglib(int index, org.netbeans.modules.j2ee.dd.api.web.Taglib valueInterface) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(VERSION_6_0);
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.Taglib getTaglib(int index) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(VERSION_6_0);
+            }
+            public void setTaglib(org.netbeans.modules.j2ee.dd.api.web.Taglib[] value) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(VERSION_6_0);
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.Taglib[] getTaglib() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(VERSION_6_0);
+            }
+            public int sizeTaglib() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(VERSION_6_0);
+            }
+            public int addTaglib(org.netbeans.modules.j2ee.dd.api.web.Taglib valueInterface) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(VERSION_6_0);
+            }
+            public int removeTaglib(org.netbeans.modules.j2ee.dd.api.web.Taglib valueInterface) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException(VERSION_6_0);
+            }
+            public void setJspConfig(org.netbeans.modules.j2ee.dd.api.web.JspConfig value) {
+                if (value==null) setJspConfig(new org.netbeans.modules.j2ee.dd.api.web.JspConfig[]{});
+                else setJspConfig(new org.netbeans.modules.j2ee.dd.api.web.JspConfig[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.JspConfig getSingleJspConfig() {
+                org.netbeans.modules.j2ee.dd.api.web.JspConfig[] values = getJspConfig();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setWelcomeFileList(org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList value) {
+                if (value==null) setWelcomeFileList(new org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList[]{});
+                setWelcomeFileList(new org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList getSingleWelcomeFileList() {
+                org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList[] values = getWelcomeFileList();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setSessionConfig(org.netbeans.modules.j2ee.dd.api.web.SessionConfig value) {
+                if (value==null) setSessionConfig(new org.netbeans.modules.j2ee.dd.api.web.SessionConfig[]{});
+                else setSessionConfig(new org.netbeans.modules.j2ee.dd.api.web.SessionConfig[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.SessionConfig getSingleSessionConfig() {
+                org.netbeans.modules.j2ee.dd.api.web.SessionConfig[] values = getSessionConfig();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setLoginConfig(org.netbeans.modules.j2ee.dd.api.web.LoginConfig value) {
+                if (value==null) setLoginConfig(new org.netbeans.modules.j2ee.dd.api.web.LoginConfig[]{});
+                else setLoginConfig(new org.netbeans.modules.j2ee.dd.api.web.LoginConfig[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.LoginConfig getSingleLoginConfig() {
+                org.netbeans.modules.j2ee.dd.api.web.LoginConfig[] values = getLoginConfig();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public void setDistributable(boolean value) {
+                if (value) setDistributable(new EmptyType[]{new EmptyType()});
+                else setDistributable(new EmptyType[]{});
+            }
+            public boolean isDistributable() {
+                EmptyType[] values = getDistributable();
+                if (values==null || values.length==0) return false;
+                else return true;
+            }
+            public void setLocaleEncodingMappingList(org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList value) {
+                if (value==null) setLocaleEncodingMappingList(new org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList[]{});
+                else setLocaleEncodingMappingList(new org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList[]{value});
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList getSingleLocaleEncodingMappingList() {
+                org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList[] values = getLocaleEncodingMappingList();
+                if (values==null || values.length==0) return null;
+                else return values[0];
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.AbsoluteOrdering newAbsoluteOrdering() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException("web-fragment "+VERSION_6_0);
+            }
+            public void setAbsoluteOrdering(org.netbeans.modules.j2ee.dd.api.web.AbsoluteOrdering[] value) throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException("web-fragment "+VERSION_6_0);
+            }
+            public org.netbeans.modules.j2ee.dd.api.web.AbsoluteOrdering[] getAbsoluteOrdering() throws org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException {
+                throw new org.netbeans.modules.j2ee.dd.api.common.VersionNotSupportedException("web-fragment "+VERSION_6_0);
+            }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>emptyType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EmptyType</bean-name>
+    </meta-element>
+    <meta-element>
+        <dtd-name>param-valueType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+            <bean-name>InitParam</bean-name>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.common.InitParam, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "ParamName"; }
+            </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>filterType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+            <bean-name>Filter</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.web.Filter, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+            </implements>
+            <user-code>
+                public String getKeyProperty() { return "FilterName"; }
+            </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>filter-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+            <bean-name>FilterMapping</bean-name>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.web.FilterMapping
+            </implements>
+            <user-code>
+                public String getServletName() {
+                    return this.sizeServletName() > 0 ? (String)this.getValue(SERVLET_NAME, 0) : null;
+                }
+
+                public void setServletName(String value) {
+                    setServletNames(value != null ? new String[]{value} : new String[]{});
+                }
+
+                public String getUrlPattern() {
+                    return this.sizeUrlPattern() > 0 ? (String)this.getValue(URL_PATTERN, 0) : null;
+                }
+
+                public void setUrlPattern(String value) {
+                    setUrlPatterns(value != null ? new String[]{value} : new String[]{});
+                }
+            </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>listenerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Listener</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.Listener
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>servletType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Servlet</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.Servlet, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ServletName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>servlet-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServletMapping</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.ServletMapping25, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "UrlPattern"; }
+
+            public void setUrlPattern(String value) {
+                setUrlPatterns(new String[] {value});
+            }
+
+            public String getUrlPattern() {
+                String[] urlPatterns = getUrlPatterns();
+                if (urlPatterns != null &amp;&amp; urlPatterns.length > 0) {
+                    return urlPatterns[0];
+                }
+                return null;
+            }
+
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>session-configType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SessionConfig</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.SessionConfig
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>mime-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MimeMapping</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.MimeMapping, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "Extension"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>welcome-file-listType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WelcomeFileList</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.WelcomeFileList
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>error-pageType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ErrorPage</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.ErrorPage, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ErrorCode"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+            <dtd-name>jsp-configType</dtd-name>
+            <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+            <bean-name>JspConfig</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.web.JspConfig
+            </implements>
+    </meta-element>
+    <meta-element>
+            <dtd-name>security-constraintType</dtd-name>
+            <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+            <bean-name>SecurityConstraint</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.web.SecurityConstraint
+            </implements>
+    </meta-element>
+    <meta-element>
+            <dtd-name>login-configType</dtd-name>
+            <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+            <bean-name>LoginConfig</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.web.LoginConfig
+            </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>security-roleType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SecurityRole</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.SecurityRole, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "RoleName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destinationType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestination</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.MessageDestination, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "MessageDestinationName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+            <dtd-name>locale-encoding-mapping-listType</dtd-name>
+            <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+            <bean-name>LocaleEncodingMappingList</bean-name>
+            <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+            <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends>
+            <implements> 
+                org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMappingList
+            </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>locale-encoding-mappingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocaleEncodingMapping</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.LocaleEncodingMapping, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "Locale"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>localeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocaleType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>encodingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EncodingType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>string</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>String</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>descriptionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DescriptionType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdStringType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdStringType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>display-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DisplayNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>iconType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Icon</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.Icon
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>pathType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PathType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>env-entryType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EnvEntry</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.EnvEntry, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EnvEntryName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.EjbRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EjbRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-local-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbLocalRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.EjbLocalRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "EjbRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>resource-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResourceRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ResourceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ResRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>resource-env-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResourceEnvRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ResourceEnvRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ResourceEnvRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.MessageDestinationRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "MessageDestinationRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element> 
+        <dtd-name>persistence-context-refType</dtd-name> 
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceContextRefType</bean-name> 
+    </meta-element> 
+    <meta-element> 
+        <dtd-name>persistence-unit-refType</dtd-name> 
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceUnitRefType</bean-name> 
+    </meta-element> 
+    <meta-element> 
+        <dtd-name>lifecycle-callbackType</dtd-name> 
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LifecycleCallbackType</bean-name> 
+    </meta-element> 
+    <meta-element>
+        <dtd-name>fully-qualified-classType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FullyQualifiedClassType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>java-identifierType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JavaIdentifierType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jndi-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JndiNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element> 
+        <dtd-name>persistence-context-typeType</dtd-name> 
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PersistenceContextTypeType</bean-name> 
+        <wrapper-class>java.lang.String</wrapper-class> 
+    </meta-element> 
+    <meta-element> 
+        <dtd-name>propertyType</dtd-name> 
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PropertyType</bean-name> 
+    </meta-element> 
+    <meta-element>
+        <dtd-name>message-destination-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-usageType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationUsageType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>message-destination-linkType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MessageDestinationLinkType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>injection-targetType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>InjectionTarget</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.InjectionTarget</implements>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.EnclosingBean</extends> 
+    </meta-element>
+    <meta-element>
+        <dtd-name>res-authType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResAuthType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>res-sharing-scopeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ResSharingScopeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRef</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "ServiceRefName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdAnyURIType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdAnyURIType</bean-name>
+        <wrapper-class>java.net.URI</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdQNameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdQNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>port-component-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>PortComponentRef</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.PortComponentRef
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_handlerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandler</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "HandlerName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_handler-chainsType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChains</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements> 
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_handler-chainType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChain</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements> 
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_qname-pattern</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefQnamePattern</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>service-ref_protocol-bindingListType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefProtocolBindingListType</bean-name>
+        <wrapper-class>String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-ref-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRefNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-ref-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbRefTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>local-homeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocalHomeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>localType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LocalType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ejb-linkType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EjbLinkType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>homeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>HomeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>remoteType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RemoteType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>env-entry-type-valuesType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>EnvEntryTypeValuesType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>role-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RoleNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>auth-methodType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>AuthMethodType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>form-login-configType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FormLoginConfig</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.FormLoginConfig
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>war-pathType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WarPathType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>web-resource-collectionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>WebResourceCollection</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.WebResourceCollection, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "WebResourceName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>auth-constraintType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>AuthConstraint</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.AuthConstraint
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>user-data-constraintType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>UserDataConstraint</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.UserDataConstraint
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>transport-guaranteeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>TransportGuaranteeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>url-patternType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>UrlPatternType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>http-methodType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>HttpMethodType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>taglibType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>Taglib</bean-name>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.Taglib, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "TaglibUri"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jsp-property-groupType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JspPropertyGroup</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.web.JspPropertyGroup
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>true-falseType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>TrueFalseType</bean-name>
+        <wrapper-class>boolean</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>error-codeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ErrorCodeType</bean-name>
+        <wrapper-class>Integer</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>string</dtd-name>
+        <namespace>http://www.w3.org/2001/XMLSchema</namespace>
+        <bean-name>String</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>mime-typeType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>MimeTypeType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>xsdIntegerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>XsdIntegerType</bean-name>
+        <wrapper-class>java.math.BigInteger</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>servlet-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServletNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>nonEmptyStringType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>NonEmptyStringType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>load-on-startupType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>LoadOnStartupType</bean-name>
+        <wrapper-class>java.math.BigInteger</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>run-asType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RunAs</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.RunAs
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>security-role-refType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>SecurityRoleRef</bean-name>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.DescriptionBeanMultiple</extends>
+        <implements> 
+            org.netbeans.modules.j2ee.dd.api.common.SecurityRoleRef, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "RoleName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+        <dtd-name>jsp-fileType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>JspFileType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>filter-nameType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>FilterNameType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>dispatcherType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>DispatcherType</bean-name>
+        <wrapper-class>java.lang.String</wrapper-class>
+    </meta-element>
+    <meta-element>
+        <dtd-name>absoluteOrderingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>AbsoluteOrdering</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.AbsoluteOrdering
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>orderingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RelativeOrdering</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.RelativeOrdering
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ordering-orderingType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RelativeOrderingItems</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.RelativeOrderingItems
+        </implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>ordering-othersType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>RelativeOrderingOthersItem</bean-name>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.web.RelativeOrderingOthersItem
+        </implements>
+    </meta-element>
+
+    <!-- changes added for EE6: -->
+
+    <meta-element>
+        <dtd-name>handlerType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandler</bean-name>
+        <comparator-class>org.netbeans.modules.j2ee.dd.impl.common.Comparator</comparator-class>
+        <extends>org.netbeans.modules.j2ee.dd.impl.common.ComponentBeanMultiple</extends>
+        <implements>
+            org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandler, org.netbeans.modules.j2ee.dd.impl.common.KeyBean
+        </implements>
+        <user-code>
+            public String getKeyProperty() { return "HandlerName"; }
+        </user-code>
+    </meta-element>
+    <meta-element>
+           <dtd-name>handler-chainsType</dtd-name>
+           <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+           <bean-name>ServiceRefHandlerChains</bean-name>
+           <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChains</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>handler-chainType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>ServiceRefHandlerChainType</bean-name>
+        <implements>org.netbeans.modules.j2ee.dd.api.common.ServiceRefHandlerChain</implements>
+    </meta-element>
+    <meta-element>
+        <dtd-name>dewey-versionType</dtd-name>
+        <namespace>https://jakarta.ee/xml/ns/jakartaee</namespace>
+        <bean-name>version</bean-name>
+        <wrapper-class>java.math.BigDecimal</wrapper-class>
+    </meta-element>
+</metaDD>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.xsd b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.xsd
new file mode 100644
index 0000000..08ae453
--- /dev/null
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/resources/web-fragment_6_0.xsd
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="6.0">
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+      
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+      
+      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: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+      
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      This is the XML Schema for the Servlet 6.0 deployment descriptor.
+      The deployment descriptor must be named "META-INF/web-fragment.xml"
+      in the web fragment's jar file.  All Servlet deployment descriptors
+      must indicate the web application schema by using the Jakarta EE
+      namespace:
+      
+      https://jakarta.ee/xml/ns/jakartaee
+      
+      and by indicating the version of the schema by
+      using the version element as shown below:
+      
+      <web-fragment xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="6.0">
+      ...
+      </web-fragment>
+      
+      The instance documents may indicate the published version of
+      the schema using the xsi:schemaLocation attribute for Jakarta EE
+      namespace with the following location:
+      
+      https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd
+      
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all Jakarta EE
+      deployment descriptor elements unless indicated otherwise.
+      
+      - In elements that specify a pathname to a file within the
+      same JAR file, relative filenames (i.e., those not
+      starting with "/") are considered relative to the root of
+      the JAR file's namespace.  Absolute filenames (i.e., those
+      starting with "/") also specify names in the root of the
+      JAR file's namespace.  In general, relative names are
+      preferred.  The exception is .war files where absolute
+      names are preferred for consistency with the Servlet API.
+      
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="web-common_6_0.xsd"/>
+
+
+<!-- **************************************************** -->
+
+  <xsd:element name="web-fragment"
+               type="jakartaee:web-fragmentType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        The web-fragment element is the root of the deployment
+        descriptor for a web fragment.  Note that the sub-elements
+        of this element can be in the arbitrary order. Because of
+        that, the multiplicity of the elements of distributable,
+        session-config, welcome-file-list, jsp-config, login-config,
+        and locale-encoding-mapping-list was changed from "?" to "*"
+        in this schema.  However, the deployment descriptor instance
+        file must not contain multiple elements of session-config,
+        jsp-config, and login-config. When there are multiple elements of
+        welcome-file-list or locale-encoding-mapping-list, the container
+        must concatenate the element contents.  The multiple occurence
+        of the element distributable is redundant and the container
+        treats that case exactly in the same way when there is only
+        one distributable.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="web-common-servlet-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The servlet element contains the name of a servlet.
+          The name must be unique within the web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet"/>
+      <xsd:field xpath="jakartaee:servlet-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-filter-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The filter element contains the name of a filter.
+          The name must be unique within the web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:filter"/>
+      <xsd:field xpath="jakartaee:filter-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-ejb-local-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-local-ref-name element contains the name of an 
+          enterprise bean reference. The enterprise bean reference
+          is an entry in the web application's environment and is relative
+          to the java:comp/env context.  The name must be unique within
+          the web application.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-local-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-ejb-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The ejb-ref-name element contains the name of an  
+          enterprise bean reference. The enterprise bean reference 
+          is an entry in the web application's environment and is relative 
+          to the java:comp/env context.  The name must be unique within
+          the web application.
+          
+          It is recommended that name is prefixed with "ejb/".
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:ejb-ref"/>
+      <xsd:field xpath="jakartaee:ejb-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-resource-env-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The resource-env-ref-name element specifies the name of
+          a resource environment reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-env-ref"/>
+      <xsd:field xpath="jakartaee:resource-env-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-message-destination-ref-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The message-destination-ref-name element specifies the name of
+          a message destination reference; its value is the
+          environment entry name used in the web application code.
+          The name is a JNDI name relative to the java:comp/env
+          context and must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:message-destination-ref"/>
+      <xsd:field xpath="jakartaee:message-destination-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-res-ref-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The res-ref-name element specifies the name of a
+          resource manager connection factory reference.  The name
+          is a JNDI name relative to the java:comp/env context.
+          The name must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:resource-ref"/>
+      <xsd:field xpath="jakartaee:res-ref-name"/>
+    </xsd:unique>
+    <xsd:unique name="web-common-env-entry-name-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The env-entry-name element contains the name of a web
+          application's environment entry.  The name is a JNDI
+          name relative to the java:comp/env context.  The name
+          must be unique within a web application.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:env-entry"/>
+      <xsd:field xpath="jakartaee:env-entry-name"/>
+    </xsd:unique>
+    <xsd:key name="web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          A role-name-key is specified to allow the references
+          from the security-role-refs.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:security-role"/>
+      <xsd:field xpath="jakartaee:role-name"/>
+    </xsd:key>
+    <xsd:keyref name="web-common-role-name-references"
+                refer="jakartaee:web-common-role-name-key">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The keyref indicates the references from
+          security-role-ref to a specified role-name.
+          
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:servlet/jakartaee:security-role-ref"/>
+      <xsd:field xpath="jakartaee:role-link"/>
+    </xsd:keyref>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-fragmentType">
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"/>
+      <xsd:group ref="jakartaee:web-commonType"/>
+      <xsd:element name="ordering"
+                   type="jakartaee:orderingType"/>
+    </xsd:choice>
+    <xsd:attributeGroup ref="jakartaee:web-common-attributes"/>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="orderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        Please see section 8.2.2 of the specification for details.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="after"
+                   type="jakartaee:ordering-orderingType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+      <xsd:element name="before"
+                   type="jakartaee:ordering-orderingType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="ordering-orderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+        This element contains a sequence of "name" elements, each of
+        which
+        refers to an application configuration resource by the "name"
+        declared on its web.xml fragment.  This element can also contain
+        a single "others" element which specifies that this document
+        comes
+        before or after other documents within the application.
+        See section 8.2.2 of the specification for details.
+        
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="jakartaee:ordering-othersType"
+                   minOccurs="0"
+                   maxOccurs="1"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/WebAppProxy.java b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/WebAppProxy.java
index 204d05a..2e7b533 100644
--- a/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/WebAppProxy.java
+++ b/enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/WebAppProxy.java
@@ -957,6 +957,9 @@
             } else if (WebApp.VERSION_5_0.equals(version)) {
                 ((org.netbeans.modules.j2ee.dd.impl.web.model_5_0.WebApp)clonedWebApp)._setSchemaLocation
                     ("https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd");
+            } else if (WebApp.VERSION_6_0.equals(version)) {
+                ((org.netbeans.modules.j2ee.dd.impl.web.model_6_0.WebApp)clonedWebApp)._setSchemaLocation
+                    ("https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd");
             }
         }
         proxy.setError(error);
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/Bundle.properties b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/Bundle.properties
index 99398dd..080f26f 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/Bundle.properties
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/Bundle.properties
@@ -37,6 +37,7 @@
 Loaders/text/x-dd-client7.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-client8.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-client9.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
+Loaders/text/x-dd-client10.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-ejbjar2.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-ejbjar2.1/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-ejbjar3.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
@@ -51,10 +52,12 @@
 Loaders/text/x-dd-servlet3.1/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-servlet4.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-servlet5.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
+Loaders/text/x-dd-servlet6.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-servlet-fragment3.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-servlet-fragment3.1/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-servlet-fragment4.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-servlet-fragment5.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
+Loaders/text/x-dd-servlet-fragment6.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-web2.5/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd-web3.0/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
 Loaders/text/x-dd/Factories/org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance=Deployment Descriptor Files
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java
index 17b7e38..257adaa 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/client/ClientDataLoader.java
@@ -41,6 +41,7 @@
     private static final String REQUIRED_MIME_PREFIX_5 = "text/x-dd-client7.0"; // NOI18N
     private static final String REQUIRED_MIME_PREFIX_6 = "text/x-dd-client8.0"; // NOI18N
     private static final String REQUIRED_MIME_PREFIX_7 = "text/x-dd-client9.0"; // NOI18N
+    private static final String REQUIRED_MIME_PREFIX_8 = "text/x-dd-client10.0"; // NOI18N
     
     public ClientDataLoader() {
         super("org.netbeans.modules.j2ee.ddloaders.client.ClientDataObject");  // NOI18N
@@ -66,6 +67,7 @@
         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_5);
         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_6);
         getExtensions().addMimeType(REQUIRED_MIME_PREFIX_7);
+        getExtensions().addMimeType(REQUIRED_MIME_PREFIX_8);
     }
     
     @Override
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/ejb/EjbJar40DataLoader.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/ejb/EjbJar40DataLoader.java
index d36a98f..eaecc2a 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/ejb/EjbJar40DataLoader.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/ejb/EjbJar40DataLoader.java
@@ -19,7 +19,7 @@
 package org.netbeans.modules.j2ee.ddloaders.ejb;
 
 /**
- * Recognizes ejb-jar.xml for Jakarta EE 9/9.1, ejb-jar with version number 4.0.
+ * Recognizes ejb-jar.xml for Jakarta EE 9/9.1/10, ejb-jar with version number 4.0.
  * Needed for providing a different set of actions than for older versions 
  * of ejb-jar.xml.
  * See #76967.
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/dd-loaders-mime-resolver.xml b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/dd-loaders-mime-resolver.xml
index dbc4422..35deb02 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/dd-loaders-mime-resolver.xml
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/dd-loaders-mime-resolver.xml
@@ -87,6 +87,16 @@
     </file>
     <file>
         <ext name="xml"/>
+        <resolver mime="text/x-dd-servlet6.0">
+            <xml-rule>
+            	<element name="web-app" ns="https://jakarta.ee/xml/ns/jakartaee">
+                    <attr name="version" text="6.0"/>
+                </element>
+            </xml-rule>
+        </resolver>
+    </file>
+    <file>
+        <ext name="xml"/>
         <resolver mime="text/x-dd-servlet-fragment3.0">
             <xml-rule>
             	<element name="web-fragment" ns="http://java.sun.com/xml/ns/javaee">
@@ -127,6 +137,16 @@
     </file>
     <file>
         <ext name="xml"/>
+        <resolver mime="text/x-dd-servlet-fragment6.0">
+            <xml-rule>
+            	<element name="web-fragment" ns="https://jakarta.ee/xml/ns/jakartaee">
+                    <attr name="version" text="6.0"/>
+                </element>
+            </xml-rule>
+        </resolver>
+    </file>
+    <file>
+        <ext name="xml"/>
         <resolver mime="text/x-dd-ejbjar2.0">
             <xml-rule>
             	<doctype public-id="-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"/>
@@ -253,6 +273,16 @@
     </file>
     <file>
         <ext name="xml"/>
+        <resolver mime="text/x-dd-client10.0">
+            <xml-rule>
+                <element name="application-client" ns="https://jakarta.ee/xml/ns/jakartaee">
+                    <attr name="version" text="10"/>
+                </element>
+            </xml-rule>
+        </resolver>
+    </file>
+    <file>
+        <ext name="xml"/>
         <resolver mime="text/x-dd-application1.4">
             <xml-rule>
                 <element name="application" ns="http://java.sun.com/xml/ns/j2ee">
@@ -311,4 +341,14 @@
             </xml-rule>
         </resolver>
     </file>
+    <file>
+        <ext name="xml"/>
+        <resolver mime="text/x-dd-application10.0">
+            <xml-rule>
+                <element name="application" ns="https://jakarta.ee/xml/ns/jakartaee">
+                    <attr name="version" text="10"/>
+                </element>
+            </xml-rule>
+        </resolver>
+    </file>
 </MIME-resolver>
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/layer.xml b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/layer.xml
index 4c4ee6b..ecddad4 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/layer.xml
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/resources/layer.xml
@@ -543,6 +543,88 @@
                     </file> 
                     </folder>
             </folder>
+            <folder name="x-dd-web6.0">
+                <folder name="Factories">
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
+                        <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.j2ee.ddloaders.Bundle"/>
+                    </file>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWeb60DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJarDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJar40DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-client-ClientDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
+                </folder>
+                <folder name="Actions">
+                    <file name="org-netbeans-modules-xml-tools-actions-CheckAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/XML/org-netbeans-modules-xml-tools-actions-CheckAction.instance"/>
+                        <attr name="position" intvalue="1300"/>
+                    </file>
+                    <file name="org-netbeans-modules-xml-tools-actions-ValidateAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/XML/org-netbeans-modules-xml-tools-actions-ValidateAction.instance"/>
+                        <attr name="position" intvalue="1400"/>
+                    </file>
+                    <file name="org-openide-actions-CopyAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CopyAction.instance"/>
+                        <attr name="position" intvalue="600"/>
+                    </file>
+                    <file name="org-openide-actions-CutAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CutAction.instance"/>
+                        <attr name="position" intvalue="500"/>
+                    </file>
+                    <file name="org-openide-actions-DeleteAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-DeleteAction.instance"/>
+                        <attr name="position" intvalue="900"/>
+                    </file>
+                    <file name="org-openide-actions-EditAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-EditAction.instance"/>
+                        <attr name="position" intvalue="200"/>
+                    </file>
+                    <file name="org-openide-actions-FileSystemAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-FileSystemAction.instance"/>
+                        <attr name="position" intvalue="300"/>
+                    </file>
+                    <file name="org-openide-actions-OpenAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-OpenAction.instance"/>
+                        <attr name="position" intvalue="100"/>
+                    </file>
+                    <file name="org-openide-actions-PasteAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-PasteAction.instance"/>
+                        <attr name="position" intvalue="700"/>
+                    </file>
+                    <file name="org-openide-actions-PropertiesAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-PropertiesAction.instance"/>
+                        <attr name="position" intvalue="1700"/>
+                    </file>
+                    <file name="org-openide-actions-SaveAsTemplateAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-SaveAsTemplateAction.instance"/>
+                        <attr name="position" intvalue="1100"/>
+                    </file>
+                    <file name="org-openide-actions-ToolsAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-ToolsAction.instance"/>
+                        <attr name="position" intvalue="1600"/>
+                    </file>
+                    <file name="sep-1.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="400"/>
+                    </file>
+                    <file name="sep-2.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="800"/>
+                    </file>
+                    <file name="sep-3.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="1000"/>
+                    </file>
+                    <file name="sep-4.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="1200"/>
+                    </file>
+                    <file name="sep-5.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="1500"/>
+                    </file> 
+                    </folder>
+            </folder>
             <folder name="x-dd-web-fragment3.0">
                 <folder name="Factories">
                     <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
@@ -871,6 +953,88 @@
                     </file>
                     </folder>
             </folder>
+            <folder name="x-dd-web-fragment6.0">
+                <folder name="Factories">
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
+                        <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.j2ee.ddloaders.Bundle"/>
+                    </file>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWebFragment60DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJarDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJar40DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-client-ClientDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
+                </folder>
+                <folder name="Actions">
+                    <file name="org-netbeans-modules-xml-tools-actions-CheckAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/XML/org-netbeans-modules-xml-tools-actions-CheckAction.instance"/>
+                        <attr name="position" intvalue="1300"/>
+                    </file>
+                    <file name="org-netbeans-modules-xml-tools-actions-ValidateAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/XML/org-netbeans-modules-xml-tools-actions-ValidateAction.instance"/>
+                        <attr name="position" intvalue="1400"/>
+                    </file>
+                    <file name="org-openide-actions-CopyAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CopyAction.instance"/>
+                        <attr name="position" intvalue="600"/>
+                    </file>
+                    <file name="org-openide-actions-CutAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-CutAction.instance"/>
+                        <attr name="position" intvalue="500"/>
+                    </file>
+                    <file name="org-openide-actions-DeleteAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-DeleteAction.instance"/>
+                        <attr name="position" intvalue="900"/>
+                    </file>
+                    <file name="org-openide-actions-EditAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-EditAction.instance"/>
+                        <attr name="position" intvalue="200"/>
+                    </file>
+                    <file name="org-openide-actions-FileSystemAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-FileSystemAction.instance"/>
+                        <attr name="position" intvalue="300"/>
+                    </file>
+                    <file name="org-openide-actions-OpenAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-OpenAction.instance"/>
+                        <attr name="position" intvalue="100"/>
+                    </file>
+                    <file name="org-openide-actions-PasteAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/Edit/org-openide-actions-PasteAction.instance"/>
+                        <attr name="position" intvalue="700"/>
+                    </file>
+                    <file name="org-openide-actions-PropertiesAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-PropertiesAction.instance"/>
+                        <attr name="position" intvalue="1700"/>
+                    </file>
+                    <file name="org-openide-actions-SaveAsTemplateAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-SaveAsTemplateAction.instance"/>
+                        <attr name="position" intvalue="1100"/>
+                    </file>
+                    <file name="org-openide-actions-ToolsAction.shadow">
+                        <attr name="originalFile" stringvalue="Actions/System/org-openide-actions-ToolsAction.instance"/>
+                        <attr name="position" intvalue="1600"/>
+                    </file>
+                    <file name="sep-1.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="400"/>
+                    </file>
+                    <file name="sep-2.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="800"/>
+                    </file>
+                    <file name="sep-3.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="1000"/>
+                    </file>
+                    <file name="sep-4.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="1200"/>
+                    </file>
+                    <file name="sep-5.instance">
+                        <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
+                        <attr name="position" intvalue="1500"/>
+                    </file>
+                    </folder>
+            </folder>
             <!-- Actions for ejb-jar.xml version 3.0 (see issue 76967)-->
             <folder name="x-dd-ejbjar3.0">
                 <folder name="Factories">
@@ -985,7 +1149,7 @@
                     <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
                         <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.j2ee.ddloaders.Bundle"/>
                     </file>
-                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWeb50DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWeb60DataLoader.instance"/>
                     <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJarDataLoader.instance"/>
                     <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJar40DataLoader.instance"/>
                     <file name="org-netbeans-modules-j2ee-ddloaders-client-ClientDataLoader.instance"/>
@@ -1158,6 +1322,18 @@
                     <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
                 </folder>
             </folder>
+            <folder name="x-dd-servlet6.0">
+                <folder name="Factories">
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
+                        <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.j2ee.ddloaders.Bundle"/>
+                    </file>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWeb60DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJarDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJar40DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-client-ClientDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
+                </folder>
+            </folder>
             <folder name="x-dd-servlet-fragment3.0">
                 <folder name="Factories">
                     <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
@@ -1206,6 +1382,18 @@
                     <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
                 </folder>
             </folder>
+            <folder name="x-dd-servlet-fragment6.0">
+                <folder name="Factories">
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
+                        <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.j2ee.ddloaders.Bundle"/>
+                    </file>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWebFragment60DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJarDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJar40DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-client-ClientDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
+                </folder>
+            </folder>
             <folder name="x-dd-ejbjar2.0">
                 <folder name="Factories">
                     <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
@@ -1314,6 +1502,18 @@
                     <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
                 </folder>
             </folder>
+            <folder name="x-dd-client10.0">
+                <folder name="Factories">
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
+                        <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.j2ee.ddloaders.Bundle"/>
+                    </file>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWeb60DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJarDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJar40DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-client-ClientDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
+                </folder>
+            </folder>
             <folder name="x-dd-application1.4">
                 <folder name="Factories">
                     <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
@@ -1386,6 +1586,18 @@
                     <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
                 </folder>
             </folder>
+            <folder name="x-dd-application10.0">
+                <folder name="Factories">
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDDataLoader.instance">
+                        <attr name="SystemFileSystem.localizingBundle" stringvalue="org.netbeans.modules.j2ee.ddloaders.Bundle"/>
+                    </file>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-web-DDWeb60DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJarDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-ejb-EjbJar40DataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-client-ClientDataLoader.instance"/>
+                    <file name="org-netbeans-modules-j2ee-ddloaders-app-EarDataLoader.instance"/>
+                </folder>
+            </folder>
         </folder>
     </folder>
 </filesystem>
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDDataObject.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDDataObject.java
index fafe03c..fb6e01d 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDDataObject.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDDataObject.java
@@ -128,7 +128,8 @@
                 DDWeb30DataLoader.REQUIRED_MIME, DDWebFragment30DataLoader.REQUIRED_MIME, 
                 DDWeb30DataLoader.REQUIRED_MIME_31, DDWebFragment30DataLoader.REQUIRED_MIME_31, 
                 DDWeb40DataLoader.REQUIRED_MIME_40, DDWebFragment40DataLoader.REQUIRED_MIME_40, 
-                DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50},
+                DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50, 
+                DDWeb60DataLoader.REQUIRED_MIME_60, DDWebFragment60DataLoader.REQUIRED_MIME_60},
         iconBase="org/netbeans/modules/j2ee/ddloaders/web/resources/DDDataIcon.gif",
         persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
         preferredID="multiview_xml",
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDWeb60DataLoader.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDWeb60DataLoader.java
new file mode 100644
index 0000000..e8623d2
--- /dev/null
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDWeb60DataLoader.java
@@ -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.
+ */
+package org.netbeans.modules.j2ee.ddloaders.web;
+
+import java.io.IOException;
+import org.openide.filesystems.FileObject;
+import org.openide.loaders.DataObjectExistsException;
+import org.openide.loaders.MultiDataObject;
+
+/**
+ * A data loader for web.xml version 6.0. Required for providing
+ * a different action context than for older versions - see #85570.
+ * 
+ */
+public class DDWeb60DataLoader extends DDDataLoader {
+
+    private static final long serialVersionUID = 1L;
+
+    public static final String REQUIRED_MIME_60 = "text/x-dd-servlet6.0"; // NOI18N
+
+    public DDWeb60DataLoader() {
+        super("org.netbeans.modules.j2ee.ddloaders.web.DDDataObject");  // NOI18N
+    }
+
+    @Override
+    protected String actionsContext() {
+        return "Loaders/text/x-dd-web6.0/Actions/"; // NOI18N
+    }
+
+    @Override
+    protected String[] getSupportedMimeTypes() {
+        return new String[]{REQUIRED_MIME_60};
+    }
+
+    @Override
+    protected MultiDataObject createMultiObject(FileObject primaryFile) throws DataObjectExistsException, IOException {
+        return createMultiObject(primaryFile, REQUIRED_MIME_60);
+    }
+
+}
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDWebFragment60DataLoader.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDWebFragment60DataLoader.java
new file mode 100644
index 0000000..e3bed5a
--- /dev/null
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/DDWebFragment60DataLoader.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 org.netbeans.modules.j2ee.ddloaders.web;
+
+import java.io.IOException;
+import org.openide.filesystems.FileObject;
+import org.openide.loaders.DataObjectExistsException;
+import org.openide.loaders.MultiDataObject;
+
+/**
+ * A data loader for web-fragment.xml version 6.0. Required for providing
+ * a different action context than for older versions - see #85570.
+ * 
+ * @author pepness
+ */
+public class DDWebFragment60DataLoader extends DDDataLoader {
+
+    private static final long serialVersionUID = 1L;
+
+    public static final String REQUIRED_MIME_60 = "text/x-dd-servlet-fragment6.0"; // NOI18N
+
+    public DDWebFragment60DataLoader() {
+        super("org.netbeans.modules.j2ee.ddloaders.web.DDFragmentDataObject");  // NOI18N
+    }
+
+    @Override
+    protected String actionsContext() {
+        return "Loaders/text/x-dd-web-fragment6.0/Actions/"; // NOI18N
+    }
+
+    @Override
+    protected String[] getSupportedMimeTypes() {
+        return new String[]{REQUIRED_MIME_60};
+    }
+
+    @Override
+    protected MultiDataObject createMultiObject(FileObject primaryFile) throws DataObjectExistsException, IOException {
+        return new DDFragmentDataObject(primaryFile, this, REQUIRED_MIME_60);
+    }
+
+}
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/FiltersMultiViewElement.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/FiltersMultiViewElement.java
index dc0b92b..d8a735d 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/FiltersMultiViewElement.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/FiltersMultiViewElement.java
@@ -46,7 +46,8 @@
         DDWeb30DataLoader.REQUIRED_MIME, DDWebFragment30DataLoader.REQUIRED_MIME, 
         DDWeb30DataLoader.REQUIRED_MIME_31, DDWebFragment30DataLoader.REQUIRED_MIME_31, 
         DDWeb40DataLoader.REQUIRED_MIME_40, DDWebFragment40DataLoader.REQUIRED_MIME_40,
-        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50},
+        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50,
+        DDWeb60DataLoader.REQUIRED_MIME_60, DDWebFragment60DataLoader.REQUIRED_MIME_60},
     position=700
 )
 public class FiltersMultiViewElement extends ToolBarMultiViewElement implements java.beans.PropertyChangeListener {
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/OverviewMultiViewElement.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/OverviewMultiViewElement.java
index 071c7d1..63e6076 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/OverviewMultiViewElement.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/OverviewMultiViewElement.java
@@ -45,7 +45,8 @@
         DDWeb30DataLoader.REQUIRED_MIME, DDWebFragment30DataLoader.REQUIRED_MIME, 
         DDWeb30DataLoader.REQUIRED_MIME_31, DDWebFragment30DataLoader.REQUIRED_MIME_31, 
         DDWeb40DataLoader.REQUIRED_MIME_40, DDWebFragment40DataLoader.REQUIRED_MIME_40, 
-        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50},
+        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50, 
+        DDWeb60DataLoader.REQUIRED_MIME_60, DDWebFragment60DataLoader.REQUIRED_MIME_60},
     position=500
 )
 public class OverviewMultiViewElement extends ToolBarMultiViewElement implements java.beans.PropertyChangeListener {
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/PagesMultiViewElement.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/PagesMultiViewElement.java
index 1be675d..056f4c8 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/PagesMultiViewElement.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/PagesMultiViewElement.java
@@ -46,7 +46,8 @@
         DDWeb30DataLoader.REQUIRED_MIME, DDWebFragment30DataLoader.REQUIRED_MIME, 
         DDWeb30DataLoader.REQUIRED_MIME_31, DDWebFragment30DataLoader.REQUIRED_MIME_31, 
         DDWeb40DataLoader.REQUIRED_MIME_40, DDWebFragment40DataLoader.REQUIRED_MIME_40, 
-        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50},
+        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50, 
+        DDWeb60DataLoader.REQUIRED_MIME_60, DDWebFragment60DataLoader.REQUIRED_MIME_60},
     position=800
 )
 public class PagesMultiViewElement extends ToolBarMultiViewElement implements java.beans.PropertyChangeListener {
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ReferencesMultiViewElement.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ReferencesMultiViewElement.java
index e651295..ba32598 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ReferencesMultiViewElement.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ReferencesMultiViewElement.java
@@ -50,7 +50,8 @@
         DDWeb30DataLoader.REQUIRED_MIME, DDWebFragment30DataLoader.REQUIRED_MIME, 
         DDWeb30DataLoader.REQUIRED_MIME_31, DDWebFragment30DataLoader.REQUIRED_MIME_31,
         DDWeb40DataLoader.REQUIRED_MIME_40, DDWebFragment40DataLoader.REQUIRED_MIME_40, 
-        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50},
+        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50, 
+        DDWeb60DataLoader.REQUIRED_MIME_60, DDWebFragment60DataLoader.REQUIRED_MIME_60},
     position=900
 )
 public class ReferencesMultiViewElement extends ToolBarMultiViewElement implements java.beans.PropertyChangeListener {
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/SecurityMultiViewElement.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/SecurityMultiViewElement.java
index a581812..75bb30f 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/SecurityMultiViewElement.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/SecurityMultiViewElement.java
@@ -31,9 +31,11 @@
 import org.netbeans.modules.j2ee.ddloaders.web.DDWeb30DataLoader;
 import org.netbeans.modules.j2ee.ddloaders.web.DDWeb40DataLoader;
 import org.netbeans.modules.j2ee.ddloaders.web.DDWeb50DataLoader;
+import org.netbeans.modules.j2ee.ddloaders.web.DDWeb60DataLoader;
 import org.netbeans.modules.j2ee.ddloaders.web.DDWebFragment30DataLoader;
 import org.netbeans.modules.j2ee.ddloaders.web.DDWebFragment40DataLoader;
 import org.netbeans.modules.j2ee.ddloaders.web.DDWebFragment50DataLoader;
+import org.netbeans.modules.j2ee.ddloaders.web.DDWebFragment60DataLoader;
 import org.netbeans.modules.xml.multiview.ToolBarMultiViewElement;
 import org.netbeans.modules.xml.multiview.ui.ConfirmDialog;
 import org.netbeans.modules.xml.multiview.ui.SectionContainer;
@@ -66,7 +68,8 @@
         DDWeb30DataLoader.REQUIRED_MIME, DDWebFragment30DataLoader.REQUIRED_MIME, 
         DDWeb30DataLoader.REQUIRED_MIME_31, DDWebFragment30DataLoader.REQUIRED_MIME_31,
         DDWeb40DataLoader.REQUIRED_MIME_40, DDWebFragment40DataLoader.REQUIRED_MIME_40, 
-        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50},
+        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50, 
+        DDWeb60DataLoader.REQUIRED_MIME_60, DDWebFragment60DataLoader.REQUIRED_MIME_60},
     position=1000
 )
 public class SecurityMultiViewElement extends ToolBarMultiViewElement
diff --git a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ServletsMultiViewElement.java b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ServletsMultiViewElement.java
index 63183d8..443b135 100644
--- a/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ServletsMultiViewElement.java
+++ b/enterprise/j2ee.ddloaders/src/org/netbeans/modules/j2ee/ddloaders/web/multiview/ServletsMultiViewElement.java
@@ -48,7 +48,8 @@
         DDWeb30DataLoader.REQUIRED_MIME, DDWebFragment30DataLoader.REQUIRED_MIME, 
         DDWeb30DataLoader.REQUIRED_MIME_31, DDWebFragment30DataLoader.REQUIRED_MIME_31,
         DDWeb40DataLoader.REQUIRED_MIME_40, DDWebFragment40DataLoader.REQUIRED_MIME_40, 
-        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50},
+        DDWeb50DataLoader.REQUIRED_MIME_50, DDWebFragment50DataLoader.REQUIRED_MIME_50, 
+        DDWeb60DataLoader.REQUIRED_MIME_60, DDWebFragment60DataLoader.REQUIRED_MIME_60},
     position=600
 )
 public class ServletsMultiViewElement extends ToolBarMultiViewElement implements java.beans.PropertyChangeListener {
diff --git a/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java b/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java
index bd4287d..af66245 100644
--- a/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java
+++ b/enterprise/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ProjectEar.java
@@ -310,7 +310,9 @@
         if (p == null) {
             p = Profile.JAVA_EE_7_FULL;
         }
-        if (Profile.JAKARTA_EE_9_1_FULL.equals(p) || Profile.JAKARTA_EE_9_FULL.equals(p)) {
+        if (Profile.JAKARTA_EE_10_FULL.equals(p) || Profile.JAKARTA_EE_10_FULL.equals(p)) {
+            return Application.VERSION_10;
+        } else if (Profile.JAKARTA_EE_9_1_FULL.equals(p) || Profile.JAKARTA_EE_9_FULL.equals(p)) {
             return Application.VERSION_9;
         } else if (Profile.JAKARTA_EE_8_FULL.equals(p) || Profile.JAVA_EE_8_FULL.equals(p)) {
             return Application.VERSION_8;
diff --git a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/Utils.java b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/Utils.java
index 4446799..b3ca3d2 100644
--- a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/Utils.java
+++ b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/Utils.java
@@ -242,33 +242,34 @@
         boolean isCallerFreeform = enterpriseProject.getClass().getName().equals("org.netbeans.modules.ant.freeform.FreeformProject");
 
         boolean isCallerEE6WebProject = isEE6WebProject(enterpriseProject);
-        boolean isCallerEE9WebProject = isEE9WebProject(enterpriseProject);
+        boolean isCallerEE10WebProject = isEE10WebProject(enterpriseProject);
 
         List<Project> filteredResults = new ArrayList<Project>(allProjects.length);
         for (int i = 0; i < allProjects.length; i++) {
             boolean isEJBModule = false;
             J2eeModuleProvider j2eeModuleProvider = allProjects[i].getLookup().lookup(J2eeModuleProvider.class);
             if (j2eeModuleProvider != null){
-                    Type type = j2eeModuleProvider.getJ2eeModule().getType();
-                    EjbJar[] ejbJars = EjbJar.getEjbJars(allProjects[i]);
-                    Profile profile = ejbJars.length > 0 ? ejbJars[0].getJ2eeProfile() : null;
+                Type type = j2eeModuleProvider.getJ2eeModule().getType();
+                EjbJar[] ejbJars = EjbJar.getEjbJars(allProjects[i]);
+                Profile profile = ejbJars.length > 0 ? ejbJars[0].getJ2eeProfile() : null;
 
-                    if (J2eeModule.Type.EJB.equals(type) || (J2eeModule.Type.WAR.equals(type) &&
-                                (Profile.JAVA_EE_6_WEB.equals(profile) || Profile.JAVA_EE_6_FULL.equals(profile) ||
-                                Profile.JAVA_EE_7_WEB.equals(profile) || Profile.JAVA_EE_7_FULL.equals(profile) ||
-                                Profile.JAVA_EE_8_WEB.equals(profile) || Profile.JAVA_EE_8_FULL.equals(profile) ||
-                                Profile.JAKARTA_EE_8_WEB.equals(profile) || Profile.JAKARTA_EE_8_FULL.equals(profile) ||
-                                Profile.JAKARTA_EE_9_WEB.equals(profile) || Profile.JAKARTA_EE_9_FULL.equals(profile) ||
-                                Profile.JAKARTA_EE_9_1_WEB.equals(profile) || Profile.JAKARTA_EE_9_1_FULL.equals(profile)))){
-                        isEJBModule = true;
-                    }
+                if (J2eeModule.Type.EJB.equals(type) || (J2eeModule.Type.WAR.equals(type)
+                        && (Profile.JAVA_EE_6_WEB.equals(profile) || Profile.JAVA_EE_6_FULL.equals(profile)
+                        || Profile.JAVA_EE_7_WEB.equals(profile) || Profile.JAVA_EE_7_FULL.equals(profile)
+                        || Profile.JAVA_EE_8_WEB.equals(profile) || Profile.JAVA_EE_8_FULL.equals(profile)
+                        || Profile.JAKARTA_EE_8_WEB.equals(profile) || Profile.JAKARTA_EE_8_FULL.equals(profile)
+                        || Profile.JAKARTA_EE_9_WEB.equals(profile) || Profile.JAKARTA_EE_9_FULL.equals(profile)
+                        || Profile.JAKARTA_EE_9_1_WEB.equals(profile) || Profile.JAKARTA_EE_9_1_FULL.equals(profile)
+                        || Profile.JAKARTA_EE_10_WEB.equals(profile) || Profile.JAKARTA_EE_10_FULL.equals(profile)))) {
+                    isEJBModule = true;
+                }
             }
 
             // If the caller project is NOT a freeform project, include all EJB modules
             // If the caller project is a freeform project, include caller itself only
             // If the caller project is a Java EE 6 web project, include itself in the list
             if ((isEJBModule && !isCallerFreeform) ||
-                    (enterpriseProject.equals(allProjects[i]) && (isCallerFreeform || isCallerEE6WebProject || isCallerEE9WebProject) ) ) {
+                    (enterpriseProject.equals(allProjects[i]) && (isCallerFreeform || isCallerEE6WebProject || isCallerEE10WebProject) ) ) {
                 filteredResults.add(allProjects[i]);
             }
         }
@@ -279,7 +280,7 @@
         return J2eeProjectCapabilities.forProject(enterpriseProject).isEjb31LiteSupported();
     }
     
-    public static boolean isEE9WebProject(Project enterpriseProject) {
+    public static boolean isEE10WebProject(Project enterpriseProject) {
         return J2eeProjectCapabilities.forProject(enterpriseProject).isEjb40LiteSupported();
     }
 
diff --git a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/dd/EjbJarXmlWizardIterator.java b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/dd/EjbJarXmlWizardIterator.java
index fae1fa7..a0bf95e 100644
--- a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/dd/EjbJarXmlWizardIterator.java
+++ b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/dd/EjbJarXmlWizardIterator.java
@@ -94,7 +94,7 @@
             String resource;
             // see #213631 - caused by fact that EJB DD schemas have different numbering than WEB DD schemas
             //   (so Java EE6 Web-DD is of the version 3.0, but Ejb-DD is of the version 3.1)
-            if (j2eeProfile == Profile.JAKARTA_EE_9_WEB || j2eeProfile == Profile.JAKARTA_EE_9_1_WEB) {
+            if (j2eeProfile == Profile.JAKARTA_EE_9_WEB || j2eeProfile == Profile.JAKARTA_EE_9_1_WEB || j2eeProfile == Profile.JAKARTA_EE_10_WEB) {
                 resource = "org-netbeans-modules-j2ee-ejbjarproject/ejb-jar-4.0.xml";
             } else if (j2eeProfile == Profile.JAVA_EE_7_WEB || j2eeProfile == Profile.JAVA_EE_8_WEB || j2eeProfile == Profile.JAKARTA_EE_8_WEB) {
                 resource = "org-netbeans-modules-j2ee-ejbjarproject/ejb-jar-3.2.xml";
diff --git a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/AppServerValidationPanel.java b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/AppServerValidationPanel.java
index 4fbc2f4..928acd1 100644
--- a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/AppServerValidationPanel.java
+++ b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/AppServerValidationPanel.java
@@ -56,12 +56,13 @@
         }
 
         WebModule wm = WebModule.getWebModule(project.getProjectDirectory());
-        if (wm != null && (wm.getJ2eeProfile() == Profile.JAVA_EE_6_FULL || wm.getJ2eeProfile() == Profile.JAVA_EE_6_WEB ||
-                wm.getJ2eeProfile() == Profile.JAVA_EE_7_FULL || wm.getJ2eeProfile() == Profile.JAVA_EE_7_WEB ||
-                wm.getJ2eeProfile() == Profile.JAVA_EE_8_FULL || wm.getJ2eeProfile() == Profile.JAVA_EE_8_WEB ||
-                wm.getJ2eeProfile() == Profile.JAKARTA_EE_8_FULL || wm.getJ2eeProfile() == Profile.JAKARTA_EE_8_WEB ||
-                wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_WEB || wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_FULL ||
-                wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_1_WEB || wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_1_FULL)) {
+        if (wm != null && (wm.getJ2eeProfile() == Profile.JAVA_EE_6_FULL || wm.getJ2eeProfile() == Profile.JAVA_EE_6_WEB
+                || wm.getJ2eeProfile() == Profile.JAVA_EE_7_FULL || wm.getJ2eeProfile() == Profile.JAVA_EE_7_WEB
+                || wm.getJ2eeProfile() == Profile.JAVA_EE_8_FULL || wm.getJ2eeProfile() == Profile.JAVA_EE_8_WEB
+                || wm.getJ2eeProfile() == Profile.JAKARTA_EE_8_FULL || wm.getJ2eeProfile() == Profile.JAKARTA_EE_8_WEB
+                || wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_WEB || wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_FULL
+                || wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_1_WEB || wm.getJ2eeProfile() == Profile.JAKARTA_EE_9_1_FULL
+                || wm.getJ2eeProfile() == Profile.JAKARTA_EE_10_WEB || wm.getJ2eeProfile() == Profile.JAKARTA_EE_10_FULL)) {
             // check that server is EJB lite sufficient
             EjbSupport ejbSupport = EjbSupport.getInstance(j2eePlatform);
             if (!ejbSupport.isEjb31LiteSupported(j2eePlatform)) {
diff --git a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/EjbFacadeVisualPanel2.java b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/EjbFacadeVisualPanel2.java
index a908a9f..79c078a 100644
--- a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/EjbFacadeVisualPanel2.java
+++ b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/jpa/dao/EjbFacadeVisualPanel2.java
@@ -74,9 +74,11 @@
                     ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_7_FULL) ||
                     ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_8_FULL) ||
                     ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_8_FULL);
-            boolean serverSupportsEJB40 = ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_FULL) ||
-                    ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_1_FULL);
-            if (!projectCap.isEjb31Supported() && !serverSupportsEJB31 && !projectCap.isEjb40Supported()&& !serverSupportsEJB40){
+            boolean serverSupportsEJB40 = ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_FULL)
+                    || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_1_FULL)
+                    || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_10_FULL);
+            if (!projectCap.isEjb31Supported() && !serverSupportsEJB31 
+                    && !projectCap.isEjb40Supported()&& !serverSupportsEJB40){
                 remoteCheckBox.setVisible(false);
                 remoteCheckBox.setEnabled(false);
             }
diff --git a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MdbWizard.java b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MdbWizard.java
index be76ad2..fa47cd8 100644
--- a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MdbWizard.java
+++ b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MdbWizard.java
@@ -74,6 +74,7 @@
         "jakarta.jakartaee-web-api-8.0.0", //NOI18N
         "jakarta.jakartaee-web-api-9.0.0", //NOI18N
         "jakarta.jakartaee-web-api-9.1.0", //NOI18N
+        "jakarta.jakartaee-web-api-10.0.0", //NOI18N
     };
     private static final String[] SESSION_STEPS = new String[]{
         NbBundle.getMessage(MdbWizard.class, "LBL_SpecifyEJBInfo"), //NOI18N
@@ -87,6 +88,7 @@
         MAVEN_JAVAEE_API_LIBS.put(Profile.JAKARTA_EE_8_FULL, "jakarta.jakartaee-api-8.0.0"); //NOI18N
         MAVEN_JAVAEE_API_LIBS.put(Profile.JAKARTA_EE_9_FULL, "jakarta.jakartaee-api-9.0.0"); //NOI18N
         MAVEN_JAVAEE_API_LIBS.put(Profile.JAKARTA_EE_9_1_FULL, "jakarta.jakartaee-api-9.1.0"); //NOI18N
+        MAVEN_JAVAEE_API_LIBS.put(Profile.JAKARTA_EE_10_FULL, "jakarta.jakartaee-api-10.0.0"); //NOI18N
     }
 
     @Override
@@ -184,7 +186,9 @@
     private Profile getTargetFullProfile() {
         Profile profile = JavaEEProjectSettings.getProfile(Templates.getProject(wiz));
         if (profile != null) {
-            if (profile.isAtLeast(Profile.JAKARTA_EE_9_1_WEB)) {
+            if (profile.isAtLeast(Profile.JAKARTA_EE_10_WEB)) {
+              return Profile.JAKARTA_EE_10_FULL;
+            } else if (profile.isAtLeast(Profile.JAKARTA_EE_9_1_WEB)) {
               return Profile.JAKARTA_EE_9_1_FULL;
             } else if (profile.isAtLeast(Profile.JAKARTA_EE_9_WEB)) {
               return Profile.JAKARTA_EE_9_FULL;
diff --git a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/session/SessionEJBWizard.java b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/session/SessionEJBWizard.java
index 50e9a99..731ba81 100644
--- a/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/session/SessionEJBWizard.java
+++ b/enterprise/j2ee.ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/session/SessionEJBWizard.java
@@ -88,12 +88,13 @@
         EjbJar ejbModule = EjbJar.getEjbJar(pkg);
         // TODO: UI - add checkbox for Java EE 5 to create also EJB 2.1 style EJBs
         Profile profile = ejbModule.getJ2eeProfile();
-        boolean isSimplified = Profile.JAVA_EE_5.equals(profile) || Profile.JAVA_EE_6_FULL.equals(profile) || Profile.JAVA_EE_6_WEB.equals(profile) ||
-                 Profile.JAVA_EE_7_FULL.equals(profile) || Profile.JAVA_EE_7_WEB.equals(profile) ||
-                 Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_WEB.equals(profile) ||
-                 Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_8_WEB.equals(profile) ||
-                 Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_9_WEB.equals(profile) ||
-                 Profile.JAKARTA_EE_9_1_FULL.equals(profile) || Profile.JAKARTA_EE_9_1_WEB.equals(profile);
+        boolean isSimplified = Profile.JAVA_EE_5.equals(profile) || Profile.JAVA_EE_6_FULL.equals(profile) || Profile.JAVA_EE_6_WEB.equals(profile)
+                || Profile.JAVA_EE_7_FULL.equals(profile) || Profile.JAVA_EE_7_WEB.equals(profile)
+                || Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_WEB.equals(profile)
+                || Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_8_WEB.equals(profile)
+                || Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_9_WEB.equals(profile)
+                || Profile.JAKARTA_EE_9_1_FULL.equals(profile) || Profile.JAKARTA_EE_9_1_WEB.equals(profile)
+                || Profile.JAKARTA_EE_10_FULL.equals(profile) || Profile.JAKARTA_EE_10_WEB.equals(profile);
         SessionGenerator sessionGenerator = SessionGenerator.create(
                 Templates.getTargetName(wiz),
                 pkg,
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSClientSupport.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSClientSupport.java
index 19d717a..97274f6 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSClientSupport.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSClientSupport.java
@@ -111,6 +111,10 @@
                 return JAKARTA_EE_VERSION_91;
             } else if (Profile.JAKARTA_EE_9_1_FULL.equals(ejbModule.getJ2eeProfile())) {
                 return JAKARTA_EE_VERSION_91;
+            } else if (Profile.JAKARTA_EE_10_WEB.equals(ejbModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
+            } else if (Profile.JAKARTA_EE_10_FULL.equals(ejbModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
             } else if (Profile.JAVA_EE_5.equals(ejbModule.getJ2eeProfile())) {
                 return JAVA_EE_VERSION_15;
             }
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSSupport.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSSupport.java
index 34b834f..71cbc81 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSSupport.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/jaxws/EjbProjectJAXWSSupport.java
@@ -182,6 +182,10 @@
                 return JAKARTA_EE_VERSION_91;
             } else if (Profile.JAKARTA_EE_9_1_FULL.equals(ejbModule.getJ2eeProfile())) {
                 return JAKARTA_EE_VERSION_91;
+            } else if (Profile.JAKARTA_EE_10_WEB.equals(ejbModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
+            } else if (Profile.JAKARTA_EE_10_FULL.equals(ejbModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
             } else if (Profile.JAVA_EE_5.equals(ejbModule.getJ2eeProfile())) {
                 return JAVA_EE_VERSION_15;
             }
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java
index 56e2467..57082ee 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java
@@ -323,7 +323,7 @@
         SpecificationVersion minimalSourceLevel = null;
         Profile profile = Profile.fromPropertiesString(evaluator.getProperty(J2EE_PLATFORM));
 
-        if (Profile.JAKARTA_EE_9_1_FULL.equals(profile)) {
+        if (Profile.JAKARTA_EE_9_1_FULL.equals(profile) || Profile.JAKARTA_EE_10_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("11");
         } else if (Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("1.8");
diff --git a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/wizards/NewEjbJarProjectWizardIterator.java b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/wizards/NewEjbJarProjectWizardIterator.java
index 1ea021d..afaa702 100644
--- a/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/wizards/NewEjbJarProjectWizardIterator.java
+++ b/enterprise/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/wizards/NewEjbJarProjectWizardIterator.java
@@ -227,9 +227,9 @@
     public final void removeChangeListener(ChangeListener l) {}
 
     private static String adaptSourceLevelToJavaEEProfile(Profile javaEEProfile, String defaultSourceLevel) {
-        if (javaEEProfile.isAtLeast(Profile.JAKARTA_EE_9_1_WEB)) {
+        if (javaEEProfile.isAtLeast(Profile.JAKARTA_EE_9_1_WEB) || javaEEProfile.isAtLeast(Profile.JAKARTA_EE_10_WEB)) {
             return "11"; //NOI18N
-        } else if (javaEEProfile.isAtLeast(Profile.JAVA_EE_8_WEB)) {
+        } else if (javaEEProfile.isAtLeast(Profile.JAVA_EE_8_WEB) || javaEEProfile.isAtLeast(Profile.JAKARTA_EE_9_WEB)) {
             return "1.8"; //NOI18N
         } else if (javaEEProfile.isAtLeast(Profile.JAVA_EE_7_WEB)) {
             return "1.7"; //NOI18N
diff --git a/enterprise/j2ee.ejbverification/src/org/netbeans/modules/j2ee/ejbverification/rules/PersistentTimerInEjbLite.java b/enterprise/j2ee.ejbverification/src/org/netbeans/modules/j2ee/ejbverification/rules/PersistentTimerInEjbLite.java
index a56da6f..bf46687 100644
--- a/enterprise/j2ee.ejbverification/src/org/netbeans/modules/j2ee/ejbverification/rules/PersistentTimerInEjbLite.java
+++ b/enterprise/j2ee.ejbverification/src/org/netbeans/modules/j2ee/ejbverification/rules/PersistentTimerInEjbLite.java
@@ -125,6 +125,8 @@
             return false;
         } else if(platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_9_1_FULL)) {
             return false;
+        } else if(platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_10_FULL)) {
+            return false;
         } else {
             return true;
         }
diff --git a/enterprise/j2ee.kit/manifest.mf b/enterprise/j2ee.kit/manifest.mf
index 39fe6a9..39012b6 100644
--- a/enterprise/j2ee.kit/manifest.mf
+++ b/enterprise/j2ee.kit/manifest.mf
@@ -2,4 +2,4 @@
 OpenIDE-Module: org.netbeans.modules.j2ee.kit
 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/j2ee/kit/Bundle.properties
 OpenIDE-Module-Specification-Version: 1.44
-
+OpenIDE-Module-Recommends: jakartaee10.api, jakartaee10.platform
diff --git a/enterprise/j2ee.sun.dd/src/org/netbeans/modules/j2ee/sun/dd/api/ASDDVersion.java b/enterprise/j2ee.sun.dd/src/org/netbeans/modules/j2ee/sun/dd/api/ASDDVersion.java
index 473e90f..8d9f9a0 100644
--- a/enterprise/j2ee.sun.dd/src/org/netbeans/modules/j2ee/sun/dd/api/ASDDVersion.java
+++ b/enterprise/j2ee.sun.dd/src/org/netbeans/modules/j2ee/sun/dd/api/ASDDVersion.java
@@ -336,6 +336,32 @@
         601,
         "GlassFish Server 6" // NOI18N
     );
+    /** Represents GF Server 7
+     */
+    public static final ASDDVersion GLASSFISH_7 = new ASDDVersion(
+        "7.0", 100,	// NOI18N
+        DTDRegistry.GLASSFISH_WEBAPP_301_DTD_PUBLIC_ID,
+        DTDRegistry.GLASSFISH_WEBAPP_301_DTD_SYSTEM_ID,
+        SunWebApp.VERSION_3_0_1,
+        301,
+        DTDRegistry.GLASSFISH_EJBJAR_311_DTD_PUBLIC_ID,
+        DTDRegistry.GLASSFISH_EJBJAR_311_DTD_SYSTEM_ID,
+        SunEjbJar.VERSION_3_1_1,
+        311,
+        DTDRegistry.SUN_CMP_MAPPING_810_DTD_PUBLIC_ID,
+        DTDRegistry.SUN_CMP_MAPPING_810_DTD_SYSTEM_ID,
+        "1.2",
+        120,
+        DTDRegistry.GLASSFISH_APPLICATION_601_DTD_PUBLIC_ID,
+        DTDRegistry.GLASSFISH_APPLICATION_601_DTD_SYSTEM_ID,
+        SunApplication.VERSION_6_0_1,
+        601,
+        DTDRegistry.GLASSFISH_APPCLIENT_601_DTD_PUBLIC_ID,
+        DTDRegistry.GLASSFISH_APPCLIENT_601_DTD_SYSTEM_ID,
+        SunApplicationClient.VERSION_6_0_1,
+        601,
+        "GlassFish Server 7" // NOI18N
+    );
     /** Represents Sun Java System Web Server 7.0
      */
     public static final ASDDVersion SUN_WEBSERVER_7_0 = new ASDDVersion(
diff --git a/enterprise/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/layer.xml b/enterprise/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/layer.xml
index 083edc1..05b211e 100644
--- a/enterprise/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/layer.xml
+++ b/enterprise/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/layer.xml
@@ -60,6 +60,7 @@
                 <attr name="config-GlassFishJakartaEE8/Instances/" boolvalue="true"/>
                 <attr name="config-GlassFishJakartaEE9/Instances/" boolvalue="true"/>
                 <attr name="config-GlassFishJakartaEE91/Instances/" boolvalue="true"/>
+                <attr name="config-GlassFishJakartaEE10/Instances/" boolvalue="true"/>
                 <attr name="config-GlassFishEE6WC/Instances/" boolvalue="true"/>
             </file>
         </folder>
@@ -135,7 +136,7 @@
     <folder name="OptionsExport">
         <folder name="Advanced">
             <file name="J2EE">
-                <attr name="include" stringvalue="config/(J2EE|GlassFish|GlassFishEE6|GlassFishEE6WC||GlassFishEE7|GlassFishEE8|GlassFishJakartaEE8|GlassFishJakartaEE9|GlassFishJakartaEE91)/.*"/>
+                <attr name="include" stringvalue="config/(J2EE|GlassFish|GlassFishEE6|GlassFishEE6WC||GlassFishEE7|GlassFishEE8|GlassFishJakartaEE8|GlassFishJakartaEE9|GlassFishJakartaEE91|GlassFishJakartaEE10)/.*"/>
                 <attr name="displayName" bundlevalue="org.netbeans.modules.j2ee.deployment.impl.Bundle#J2EE.Options.Export.displayName"/>
             </file>
         </folder>
diff --git a/enterprise/jakartaee10.api/build.xml b/enterprise/jakartaee10.api/build.xml
new file mode 100644
index 0000000..0d7cb51
--- /dev/null
+++ b/enterprise/jakartaee10.api/build.xml
@@ -0,0 +1,25 @@
+<?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 basedir="." default="build" name="enterprise/jakartaee10.api">
+    <description>Builds, tests, and runs the project org.netbeans.modules.jakartaee10.api</description>
+    <import file="../../nbbuild/templates/projectized.xml"/>
+</project>
diff --git a/enterprise/jakartaee10.api/external/binaries-list b/enterprise/jakartaee10.api/external/binaries-list
new file mode 100644
index 0000000..a395012
--- /dev/null
+++ b/enterprise/jakartaee10.api/external/binaries-list
@@ -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.
+F16FBBE6C912D5A5A67BC2F8FF1AB251C04B62DF jakarta.platform:jakarta.jakartaee-api:10.0.0
+42CDD78356FEE801CBCE5E9EBE54A35DFEF4D1EA jakarta.platform:jakarta.jakartaee-web-api:10.0.0
\ No newline at end of file
diff --git a/enterprise/jakartaee10.api/external/jakarta.jakartaee-api-10.0.0-license.txt b/enterprise/jakartaee10.api/external/jakarta.jakartaee-api-10.0.0-license.txt
new file mode 100644
index 0000000..d681201
--- /dev/null
+++ b/enterprise/jakartaee10.api/external/jakarta.jakartaee-api-10.0.0-license.txt
@@ -0,0 +1,93 @@
+Name: JakartaEE API 10.0.0
+Version: 10.0.0
+License: EPL-v20
+Description: JakartaEE API 10.0.0
+Origin: Eclipse Foundation (https://mvnrepository.com/artifact/jakarta.platform/jakarta.jakartaee-api/10.0.0)
+
+
+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/enterprise/jakartaee10.api/external/jakarta.jakartaee-web-api-10.0.0-license.txt b/enterprise/jakartaee10.api/external/jakarta.jakartaee-web-api-10.0.0-license.txt
new file mode 100644
index 0000000..f244d24
--- /dev/null
+++ b/enterprise/jakartaee10.api/external/jakarta.jakartaee-web-api-10.0.0-license.txt
@@ -0,0 +1,93 @@
+Name: JakartaEE Web API 10.0.0
+Version: 10.0.0
+License: EPL-v20
+Description: JakartaEE Web API 10.0.0
+Origin: Eclipse Foundation (https://mvnrepository.com/artifact/jakarta.platform/jakarta.jakartaee-web-api/10.0.0)
+
+
+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/enterprise/jakartaee10.api/manifest.mf b/enterprise/jakartaee10.api/manifest.mf
new file mode 100644
index 0000000..f128009
--- /dev/null
+++ b/enterprise/jakartaee10.api/manifest.mf
@@ -0,0 +1,8 @@
+Manifest-Version: 1.0
+AutoUpdate-Show-In-Client: false
+OpenIDE-Module: org.netbeans.modules.jakartaee10.api
+OpenIDE-Module-Layer: org/netbeans/modules/jakartaee10/api/layer.xml
+OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/jakartaee10/api/Bundle.properties
+OpenIDE-Module-Specification-Version: 1.18
+OpenIDE-Module-Java-Dependencies: Java > 11
+OpenIDE-Module-Provides: jakartaee10.api
diff --git a/enterprise/jakartaee10.api/nbproject/project.properties b/enterprise/jakartaee10.api/nbproject/project.properties
new file mode 100644
index 0000000..0f1ff89
--- /dev/null
+++ b/enterprise/jakartaee10.api/nbproject/project.properties
@@ -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.
+
+is.autoload=true
+javac.source=1.8
+release.external/jakarta.jakartaee-api-10.0.0.jar=modules/ext/jakarta.jakartaee-api-10.0.0.jar
+release.external/jakarta.jakartaee-web-api-10.0.0.jar=modules/ext/jakarta.jakartaee-web-api-10.0.0.jar
diff --git a/enterprise/jakartaee10.api/nbproject/project.xml b/enterprise/jakartaee10.api/nbproject/project.xml
new file mode 100644
index 0000000..4a8bb24
--- /dev/null
+++ b/enterprise/jakartaee10.api/nbproject/project.xml
@@ -0,0 +1,31 @@
+<?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 xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.apisupport.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+            <code-name-base>org.netbeans.modules.jakartaee10.api</code-name-base>
+            <module-dependencies/>
+            <public-packages/>
+        </data>
+    </configuration>
+</project>
diff --git a/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/Bundle.properties b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/Bundle.properties
new file mode 100644
index 0000000..9babe44
--- /dev/null
+++ b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/Bundle.properties
@@ -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.
+OpenIDE-Module-Display-Category=Jakarta EE
+OpenIDE-Module-Long-Description=\
+    Library wrapper which provides JakartaEE 10 API (full API and web profile API)
+OpenIDE-Module-Name=Jakarta EE 10 API Library
+OpenIDE-Module-Short-Description=Jakarta EE 10 API Library
+
+#library display name
+jakartaee-api-10.0=Jakarta EE 10 API Library
+jakartaee-web-api-10.0=Jakarta EE Web 10 API Library
diff --git a/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/jakartaee-api-10.0.xml b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/jakartaee-api-10.0.xml
new file mode 100644
index 0000000..71f545e
--- /dev/null
+++ b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/jakartaee-api-10.0.xml
@@ -0,0 +1,41 @@
+<?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.
+
+-->
+<library version="3.0" xmlns="http://www.netbeans.org/ns/library-declaration/3">
+    <name>jakartaee-api-10.0</name>
+    <type>j2se</type>
+    <localizing-bundle>org/netbeans/modules/jakartaee10/api/Bundle</localizing-bundle>
+    <volume>
+        <type>classpath</type>
+	<resource>jar:nbinst://org.netbeans.modules.jakartaee10.api/modules/ext/jakarta.jakartaee-api-10.0.0.jar!/</resource>
+    </volume>
+    <volume>
+        <type>javadoc</type>
+        <resource>jar:nbinst://org.netbeans.modules.jakartaee10.platform/docs/jakartaee10-doc-api.jar!/</resource>
+    </volume>
+    <properties>
+        <property>
+            <name>maven-dependencies</name>
+            <value>jakarta.platform:jakarta.jakartaee-api:10.0.0:jar</value>
+        </property>
+    </properties>
+</library>
diff --git a/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/jakartaee-web-api-10.0.xml b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/jakartaee-web-api-10.0.xml
new file mode 100644
index 0000000..100f88a
--- /dev/null
+++ b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/jakartaee-web-api-10.0.xml
@@ -0,0 +1,41 @@
+<?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.
+
+-->
+<library version="3.0" xmlns="http://www.netbeans.org/ns/library-declaration/3">
+    <name>jakartaee-web-api-10.0</name>
+    <type>j2se</type>
+    <localizing-bundle>org/netbeans/modules/jakartaee10/api/Bundle</localizing-bundle>
+    <volume>
+        <type>classpath</type>
+	<resource>jar:nbinst://org.netbeans.modules.jakartaee10.api/modules/ext/jakarta.jakartaee-web-api-10.0.0.jar!/</resource>
+    </volume>
+    <volume>
+        <type>javadoc</type>
+        <resource>jar:nbinst://org.netbeans.modules.jakartaee10.platform/docs/jakartaee10-doc-api.jar!/</resource>
+    </volume>
+    <properties>
+        <property>
+            <name>maven-dependencies</name>
+            <value>jakarta.platform:jakarta.jakartaee-web-api:10.0.0:jar</value>
+        </property>
+    </properties>
+</library>
diff --git a/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/layer.xml b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/layer.xml
new file mode 100644
index 0000000..906131e
--- /dev/null
+++ b/enterprise/jakartaee10.api/src/org/netbeans/modules/jakartaee10/api/layer.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.
+
+-->
+
+<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
+<filesystem>
+  <folder name="org-netbeans-api-project-libraries">
+    <folder name="Libraries">
+      <file name="jakartaee-api-10.0.xml" url="jakartaee-api-10.0.xml">
+        <attr name="displayName" bundlevalue="org/netbeans/modules/jakartaee10/api/Bundle#jakartaee-api-10.0"/>
+      </file>
+      <file name="jakartaee-web-api-10.0.xml" url="jakartaee-web-api-10.0.xml">
+        <attr name="displayName" bundlevalue="org/netbeans/modules/jakartaee10/api/Bundle#jakartaee-web-api-10.0"/>
+      </file>
+    </folder>
+  </folder>
+</filesystem>
diff --git a/enterprise/jakartaee10.platform/arch.xml b/enterprise/jakartaee10.platform/arch.xml
new file mode 100644
index 0000000..e9279b1
--- /dev/null
+++ b/enterprise/jakartaee10.platform/arch.xml
@@ -0,0 +1,908 @@
+<?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.
+
+-->
+<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
+  <!ENTITY api-questions SYSTEM "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
+]>
+
+<api-answers
+  question-version="1.10"
+  author="pepness88@gmail.com"
+>
+
+  &api-questions;
+
+
+<!--
+        <question id="arch-overall" when="init">
+            Describe the overall architecture.
+            <hint>
+            What will be API for
+            <a href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi">
+                clients and what support API</a>?
+            What parts will be pluggable?
+            How will plug-ins be registered? Please use <code>&lt;api type="export"/&gt;</code>
+            to describe your general APIs.
+            If possible please provide
+            simple diagrams.
+            </hint>
+        </question>
+-->
+ <answer id="arch-overall">
+  <p>
+   This module is an empty module, it only contains javahelp documentation for jakartaee functionality.
+   </p>
+ </answer>
+
+
+
+<!--
+        <question id="arch-quality" when="init">
+            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a>
+            of your code be tested and
+            how are future regressions going to be prevented?
+            <hint>
+            What kind of testing do
+            you want to use? How much functionality, in which areas,
+            should be covered by the tests?
+            </hint>
+        </question>
+-->
+ <answer id="arch-quality">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="arch-time" when="init">
+            What are the time estimates of the work?
+            <hint>
+            Please express your estimates of how long the design, implementation,
+            stabilization are likely to last. How many people will be needed to
+            implement this and what is the expected milestone by which the work should be
+            ready?
+            </hint>
+        </question>
+-->
+ <answer id="arch-time">
+  <p>
+   Done.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="arch-usecases" when="init">
+            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase">
+            use cases</a> of the new API. Who will use it under
+            what circumstances? What kind of code would typically need to be written
+            to use the module?
+        </question>
+-->
+ <answer id="arch-usecases">
+  <p>
+   No usecases.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="arch-what" when="init">
+            What is this project good for?
+            <hint>
+            Please provide here a few lines describing the project,
+            what problem it should solve, provide links to documentation,
+            specifications, etc.
+            </hint>
+        </question>
+-->
+ <answer id="arch-what">
+  <p>
+   Container for javahelp docs for jakartaee.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="compat-i18n" when="impl">
+            Is your module correctly internationalized?
+            <hint>
+            Correct internationalization means that it obeys instructions
+            at <a href="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html">
+            NetBeans I18N pages</a>.
+            </hint>
+        </question>
+-->
+ <answer id="compat-i18n">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="compat-standards" when="init">
+            Does the module implement or define any standards? Is the
+            implementation exact or does it deviate somehow?
+        </question>
+-->
+ <answer id="compat-standards">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="compat-version" when="impl">
+            Can your module coexist with earlier and future
+            versions of itself? Can you correctly read all old settings? Will future
+            versions be able to read your current settings? Can you read
+            or politely ignore settings stored by a future version?
+
+            <hint>
+            Very helpful for reading settings is to store version number
+            there, so future versions can decide whether how to read/convert
+            the settings and older versions can ignore the new ones.
+            </hint>
+        </question>
+-->
+ <answer id="compat-version">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="dep-jre" when="final">
+            Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
+            <hint>
+            It is expected that if your module runs on 1.x that it will run
+            on 1.x+1 if no, state that please. Also describe here cases where
+            you run different code on different versions of JRE and why.
+            </hint>
+        </question>
+-->
+ <answer id="dep-jre">
+  <p>
+   1.8
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="dep-jrejdk" when="final">
+            Do you require the JDK or is the JRE enough?
+        </question>
+-->
+ <answer id="dep-jrejdk">
+  <p>
+   JRE
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="dep-nb" when="init">
+            What other NetBeans projects and modules does this one depend on?
+            <hint>
+            If you want, describe such projects as imported APIs using
+            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
+            </hint>
+        </question>
+-->
+ <answer id="dep-nb">
+  <p>
+   None.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="dep-non-nb" when="init">
+            What other projects outside NetBeans does this one depend on?
+
+            <hint>
+            Some non-NetBeans projects are packaged as NetBeans modules
+            (see <a href="http://libs.netbeans.org/">libraries</a>) and
+            it is preferred to use this approach when more modules may
+            depend on such third-party library.
+            </hint>
+        </question>
+-->
+ <answer id="dep-non-nb">
+  <p>
+   None.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="dep-platform" when="init">
+            On which platforms does your module run? Does it run in the same
+            way on each?
+            <hint>
+            If your module is using JNI or deals with special differences of
+            OSes like filesystems, etc. please describe here what they are.
+            </hint>
+        </question>
+-->
+ <answer id="dep-platform">
+  <p>
+   Runs everywhere.
+  </p>
+ </answer>
+
+
+
+ <answer id="deploy-dependencies">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="deploy-jar" when="impl">
+            Do you deploy just module JAR file(s) or other files as well?
+            <hint>
+            If your module consists of just one module JAR file, just confirm that.
+            If it uses more than one JAR, describe where they are located, how
+            they refer to each other.
+            If it consist of module JAR(s) and other files, please describe
+            what is their purpose, why other files are necessary. Please
+            make sure that installation/uninstallation leaves the system
+            in state as it was before installation.
+            </hint>
+        </question>
+-->
+ <answer id="deploy-jar">
+  <p>
+   docs/jakartaee10-doc-api.jar, modules/docs/org-netbeans-modules-jakartaee10-platform.jar
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="deploy-nbm" when="impl">
+            Can you deploy an NBM via the Update Center?
+            <hint>
+            If not why?
+            </hint>
+        </question>
+-->
+ <answer id="deploy-nbm">
+  <p>
+   Yes.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="deploy-packages" when="init">
+            Are packages of your module made inaccessible by not declaring them
+            public?
+
+            <hint>
+            NetBeans module system allows restriction of access rights to
+            public classes of your module from other modules. This prevents
+            unwanted dependencies of others on your code and should be used
+            whenever possible (<a href="http://www.netbeans.org/download/javadoc/OpenAPIs/org/openide/doc-files/upgrade.html#3.4-public-packages">
+            public packages
+            </a>). If you do not restrict access to your classes you are
+            making it too easy for other people to misuse your implementation
+            details, that is why you should have good reason for not
+            restricting package access.
+            </hint>
+        </question>
+-->
+ <answer id="deploy-packages">
+  <p>
+   Yes.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="deploy-shared" when="final">
+            Do you need to be installed in the shared location only, or in the user directory only,
+            or can your module be installed anywhere?
+            <hint>
+            Installation location shall not matter, if it does explain why.
+            Consider also whether <code>InstalledFileLocator</code> can help.
+            </hint>
+        </question>
+-->
+ <answer id="deploy-shared">
+  <p>
+   Anywhere.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-classloader" when="impl">
+            Does your code create its own class loader(s)?
+            <hint>
+            A bit unusual. Please explain why and what for.
+            </hint>
+        </question>
+-->
+ <answer id="exec-classloader">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-component" when="impl">
+            Is execution of your code influenced by any (string) property
+            of any of your components?
+
+            <hint>
+            Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
+            or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
+            a behavior of some code. This of course forms an interface that should
+            be documented. Also if one depends on some interface that an object
+            implements (<code>component instanceof Runnable</code>) that forms an
+            API as well.
+            </hint>
+        </question>
+-->
+ <answer id="exec-component">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-introspection" when="impl">
+            Does your module use any kind of runtime type information (<code>instanceof</code>,
+            work with <code>java.lang.Class</code>, etc.)?
+            <hint>
+            Check for cases when you have an object of type A and you also
+            expect it to (possibly) be of type B and do some special action. That
+            should be documented. The same applies on operations in meta-level
+            (Class.isInstance(...), Class.isAssignableFrom(...), etc.).
+            </hint>
+        </question>
+-->
+ <answer id="exec-introspection">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-privateaccess" when="final">
+            Are you aware of any other parts of the system calling some of
+            your methods by reflection?
+            <hint>
+            If so, describe the "contract" as an API. Likely private or friend one, but
+            still API and consider rewrite of it.
+            </hint>
+        </question>
+-->
+ <answer id="exec-privateaccess">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-process" when="impl">
+            Do you execute an external process from your module? How do you ensure
+            that the result is the same on different platforms? Do you parse output?
+            Do you depend on result code?
+            <hint>
+            If you feed an input, parse the output please declare that as an API.
+            </hint>
+        </question>
+-->
+ <answer id="exec-process">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-property" when="impl">
+            Is execution of your code influenced by any environment or
+            Java system (<code>System.getProperty</code>) property?
+
+            <hint>
+            If there is a property that can change the behavior of your
+            code, somebody will likely use it. You should describe what it does
+            and the <a href="http://openide.netbeans.org/tutorial/api-design.html#life">stability category</a>
+            of this API. You may use
+            <pre>
+                &lt;api type="export" group="property" name="id" category="private" url="http://..."&gt;
+                    description of the property, where it is used, what it influence, etc.
+                &lt;/api&gt;
+            </pre>
+            </hint>
+        </question>
+-->
+ <answer id="exec-property">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-reflection" when="impl">
+            Does your code use Java Reflection to execute other code?
+            <hint>
+            This usually indicates a missing or insufficient API in the other
+            part of the system. If the other side is not aware of your dependency
+            this contract can be easily broken.
+            </hint>
+        </question>
+-->
+ <answer id="exec-reflection">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="exec-threading" when="impl">
+            What threading models, if any, does your module adhere to?
+            <hint>
+                If your module calls foreign APIs which have a specific threading model,
+                indicate how you comply with the requirements for multithreaded access
+                (synchronization, mutexes, etc.) applicable to those APIs.
+                If your module defines any APIs, or has complex internal structures
+                that might be used from multiple threads, declare how you protect
+                data against concurrent access, race conditions, deadlocks, etc.,
+                and whether such rules are enforced by runtime warnings, errors, assertions, etc.
+                Examples: a class might be non-thread-safe (like Java Collections); might
+                be fully thread-safe (internal locking); might require access through a mutex
+                (and may or may not automatically acquire that mutex on behalf of a client method);
+                might be able to run only in the event queue; etc.
+                Also describe when any events are fired: synchronously, asynchronously, etc.
+                Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations">Threading Recommendations</a> (in progress)
+            </hint>
+        </question>
+-->
+ <answer id="exec-threading">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="format-clipboard" when="impl">
+            Which data flavors (if any) does your code read from or insert to
+            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
+
+            <hint>
+            Often Node's deal with clipboard by usage of <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
+            Check your code for overriding these methods.
+            </hint>
+        </question>
+-->
+ <answer id="format-clipboard">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="format-dnd" when="impl">
+            Which protocols (if any) does your code understand during Drag &amp; Drop?
+            <hint>
+            Often Node's deal with clipboard by usage of <code>Node.drag, Node.getDropType</code>.
+            Check your code for overriding these methods. Btw. if they are not overridden, they
+            by default delegate to <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
+            </hint>
+        </question>
+-->
+ <answer id="format-dnd">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="format-types" when="impl">
+            Which protocols and file formats (if any) does your module read or write on disk,
+            or transmit or receive over the network?
+        </question>
+-->
+ <answer id="format-types">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="lookup-lookup" when="init">
+            Does your module use <code>org.openide.util.Lookup</code>
+            or any similar technology to find any components to communicate with? Which ones?
+
+            <hint>
+            Please describe the interfaces you are searching for, where
+            are defined, whether you are searching for just one or more of them,
+            if the order is important, etc. Also classify the stability of such
+            API contract. For that use &lt;api group=&amp;lookup&amp; /&gt; tag.
+            </hint>
+        </question>
+-->
+ <answer id="lookup-lookup">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="lookup-register" when="final">
+            Do you register anything into lookup for other code to find?
+            <hint>
+            Do you register using layer file or using <code>META-INF/services</code>?
+            Who is supposed to find your component?
+            </hint>
+        </question>
+-->
+ <answer id="lookup-register">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="lookup-remove" when="final">
+            Do you remove entries of other modules from lookup?
+            <hint>
+            Why? Of course, that is possible, but it can be dangerous. Is the module
+            your are masking resource from aware of what you are doing?
+            </hint>
+        </question>
+-->
+ <answer id="lookup-remove">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-exit" when="final">
+            Does your module run any code on exit?
+        </question>
+-->
+ <answer id="perf-exit">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-huge_dialogs" when="final">
+            Does your module contain any dialogs or wizards with a large number of
+            GUI controls such as combo boxes, lists, trees, or text areas?
+        </question>
+-->
+ <answer id="perf-huge_dialogs">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-limit" when="init">
+            Are there any hard-coded or practical limits in the number or size of
+            elements your code can handle?
+        </question>
+-->
+ <answer id="perf-limit">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-mem" when="final">
+            How much memory does your component consume? Estimate
+            with a relation to the number of windows, etc.
+        </question>
+-->
+ <answer id="perf-mem">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-menus" when="final">
+            Does your module use dynamically updated context menus, or
+            context-sensitive actions with complicated enablement logic?
+        </question>
+-->
+ <answer id="perf-menus">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-progress" when="final">
+            Does your module execute any long-running tasks?
+
+            <hint>Long running tasks should never block
+            AWT thread as it badly hurts the UI
+            <a href="http://performance.netbeans.org/responsiveness/issues.html">
+            responsiveness</a>.
+            Tasks like connecting over
+            network, computing huge amount of data, compilation
+            be done asynchronously (for example
+            using <code>RequestProcessor</code>), definitively it should
+            not block AWT thread.
+            </hint>
+        </question>
+-->
+ <answer id="perf-progress">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-scale" when="init">
+            Which external criteria influence the performance of your
+            program (size of file in editor, number of files in menu,
+            in source directory, etc.) and how well your code scales?
+            <hint>
+            Please include some estimates, there are other more detailed
+            questions to answer in later phases of implementation.
+            </hint>
+        </question>
+-->
+ <answer id="perf-scale">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-spi" when="init">
+            How the performance of the plugged in code will be enforced?
+            <hint>
+            If you allow foreign code to be plugged into your own module, how
+            do you enforce that it will behave correctly and quickly and will not
+            negatively influence the performance of your own module?
+            </hint>
+        </question>
+-->
+ <answer id="perf-spi">
+  <p>
+   N/A
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-startup" when="final">
+            Does your module run any code on startup?
+        </question>
+-->
+ <answer id="perf-startup">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="perf-wakeup" when="final">
+            Does any piece of your code wake up periodically and do something
+            even when the system is otherwise idle (no user interaction)?
+        </question>
+-->
+ <answer id="perf-wakeup">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="resources-file" when="final">
+            Does your module use <code>java.io.File</code> directly?
+
+            <hint>
+            NetBeans provide a logical wrapper over plain files called
+            <code>org.openide.filesystems.FileObject</code> that
+            provides uniform access to such resources and is the preferred
+            way that should be used. But of course there can be situations when
+            this is not suitable.
+            </hint>
+        </question>
+-->
+ <answer id="resources-file">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="resources-layer" when="final">
+            Does your module provide own layer? Does it create any files or
+            folders in it? What it is trying to communicate by that and with which
+            components?
+
+            <hint>
+            NetBeans allows automatic and declarative installation of resources
+            by module layers. Module register files into appropriate places
+            and other components use that information to perform their task
+            (build menu, toolbar, window layout, list of templates, set of
+            options, etc.).
+            </hint>
+        </question>
+-->
+ <answer id="resources-layer">
+  <p>
+   javahelp helpse registration
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="resources-mask" when="final">
+            Does your module mask/hide/override any resources provided by other modules in
+            their layers?
+
+            <hint>
+            If you mask a file provided by another module, you probably depend
+            on that and do not want the other module to (for example) change
+            the file's name. That module shall thus make that file available as an API
+            of some stability category.
+            </hint>
+        </question>
+-->
+ <answer id="resources-mask">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="resources-read" when="final">
+            Does your module read any resources from layers? For what purpose?
+
+            <hint>
+            As this is some kind of intermodule dependency, it is a kind of API.
+            Please describe it and classify according to
+            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
+            common stability categories</a>.
+            </hint>
+        </question>
+-->
+ <answer id="resources-read">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="security-grant" when="final">
+            Does your code grant additional rights to some other code?
+            <hint>Avoid using a class loader that adds extra
+            permissions to loaded code unless really necessary.
+            Also note that your API implementation
+            can also expose unneeded permissions to enemy code by
+            calling AccessController.doPrivileged().</hint>
+        </question>
+-->
+ <answer id="security-grant">
+  <p>
+   No.
+  </p>
+ </answer>
+
+
+
+<!--
+        <question id="security-policy" when="final">
+            Does your functionality require modifications to the standard policy file?
+            <hint>Your code might pass control to third-party code not
+            coming from trusted domains. This could be code downloaded over the
+            network or code coming from libraries that are not bundled
+            with NetBeans. Which permissions need to be granted to which domains?</hint>
+        </question>
+-->
+ <answer id="security-policy">
+  <p>
+   No.
+  </p>
+ </answer>
+
+</api-answers>
diff --git a/enterprise/jakartaee10.platform/build.xml b/enterprise/jakartaee10.platform/build.xml
new file mode 100644
index 0000000..5f93b46
--- /dev/null
+++ b/enterprise/jakartaee10.platform/build.xml
@@ -0,0 +1,47 @@
+<?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 basedir="." default="build" name="enterprise/jakartaee10.platform">
+
+    <import file="../../nbbuild/templates/projectized.xml"/>
+    <property file="nbproject/project.properties" />
+
+    <!-- Hook into harness "-process.release.files" task -->
+    <target name="-process.release.files" depends="prepare-doc"/>
+
+    <!-- Check if generated doc file was already generated -->
+    <target name="-check-prepared-doc">
+        <condition property="jakartaee10.platform.doccreated" value="present">
+            <and>
+                <available file="external/generated-jakarta.jakartaee-api-10.0.0-javadoc.jar" />
+            </and>
+        </condition>
+    </target>
+
+    <target name="prepare-doc" depends="-check-prepared-doc" unless="jakartaee10.platform.doccreated">
+        <delete file="external/generated-jakarta.jakartaee-api-10.0.0-javadoc.jar" />
+
+        <!-- repackage doc file into the format netbeans used prior to switching to the maven central artefact -->
+        <jar destfile="external/generated-jakarta.jakartaee-api-10.0.0-javadoc.jar">
+            <zipfileset src="external/jakarta.jakartaee-api-10.0.0-javadoc.jar" includes="**" prefix="docs/api" />
+        </jar>
+    </target>
+</project>
diff --git a/enterprise/jakartaee10.platform/external/binaries-list b/enterprise/jakartaee10.platform/external/binaries-list
new file mode 100644
index 0000000..909cc27
--- /dev/null
+++ b/enterprise/jakartaee10.platform/external/binaries-list
@@ -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.
+
+76C9D4EF8DB32F9D33105DD054A4E7F6140C1FC5 jakarta.platform:jakarta.jakartaee-api:10.0.0:javadoc
diff --git a/enterprise/jakartaee10.platform/external/generated-jakarta.jakartaee-api-10.0.0-javadoc-license.txt b/enterprise/jakartaee10.platform/external/generated-jakarta.jakartaee-api-10.0.0-javadoc-license.txt
new file mode 100644
index 0000000..eec93ad
--- /dev/null
+++ b/enterprise/jakartaee10.platform/external/generated-jakarta.jakartaee-api-10.0.0-javadoc-license.txt
@@ -0,0 +1,93 @@
+Name: JakartaEE API 10.0.0 Documentation
+Version: 10.0.0
+License: EPL-v20
+Description: JakartaEE API 10.0.0 Documentation
+Origin: Generated from jakarta.jakartaee-api-10.0.0-javadoc.jar
+Type: generated
+
+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/enterprise/jakartaee10.platform/external/jakarta.jakartaee-api-10.0.0-javadoc-license.txt b/enterprise/jakartaee10.platform/external/jakarta.jakartaee-api-10.0.0-javadoc-license.txt
new file mode 100644
index 0000000..6a77166
--- /dev/null
+++ b/enterprise/jakartaee10.platform/external/jakarta.jakartaee-api-10.0.0-javadoc-license.txt
@@ -0,0 +1,93 @@
+Name: JakartaEE API 10.0.0 Documentation
+Version: 10.0.0
+License: EPL-v20
+Description: JakartaEE API 10.0.0 Documentation
+Origin: Eclipse Foundation (https://mvnrepository.com/artifact/jakarta.platform/jakarta.jakartaee-api/10.0.0)
+
+
+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/enterprise/jakartaee10.platform/manifest.mf b/enterprise/jakartaee10.platform/manifest.mf
new file mode 100644
index 0000000..916e1c1
--- /dev/null
+++ b/enterprise/jakartaee10.platform/manifest.mf
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+OpenIDE-Module: org.netbeans.modules.jakartaee10.platform/1
+OpenIDE-Module-Specification-Version: 1.18
+OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/jakartaee10/platform/Bundle.properties
+AutoUpdate-Show-In-Client: false
+OpenIDE-Module-Java-Dependencies: Java > 11
+OpenIDE-Module-Provides: jakartaee10.platform
diff --git a/enterprise/jakartaee10.platform/nbproject/project.properties b/enterprise/jakartaee10.platform/nbproject/project.properties
new file mode 100644
index 0000000..c95d748
--- /dev/null
+++ b/enterprise/jakartaee10.platform/nbproject/project.properties
@@ -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.
+
+is.autoload=true
+javac.compilerargs=-Xlint:all -Xlint:-serial
+javac.source=1.8
+release.external/generated-jakarta.jakartaee-api-10.0.0-javadoc.jar=docs/jakartaee10-doc-api.jar
+
+javadoc.arch=${basedir}/arch.xml
diff --git a/enterprise/jakartaee10.platform/nbproject/project.xml b/enterprise/jakartaee10.platform/nbproject/project.xml
new file mode 100644
index 0000000..681e01c
--- /dev/null
+++ b/enterprise/jakartaee10.platform/nbproject/project.xml
@@ -0,0 +1,32 @@
+<?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 xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.apisupport.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/nb-module-project/2">
+            <code-name-base>org.netbeans.modules.jakartaee10.platform</code-name-base>
+            <module-dependencies>
+                </module-dependencies>
+           <public-packages/>
+        </data>
+    </configuration>
+</project>
diff --git a/enterprise/jakartaee10.platform/src/org/netbeans/modules/jakartaee10/platform/Bundle.properties b/enterprise/jakartaee10.platform/src/org/netbeans/modules/jakartaee10/platform/Bundle.properties
new file mode 100644
index 0000000..fc7387d
--- /dev/null
+++ b/enterprise/jakartaee10.platform/src/org/netbeans/modules/jakartaee10/platform/Bundle.properties
@@ -0,0 +1,22 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# module description
+OpenIDE-Module-Name=Jakarta EE Documentation
+OpenIDE-Module-Display-Category=Jakarta EE
+OpenIDE-Module-Short-Description=Jakarta EE Documentation
+OpenIDE-Module-Long-Description=Documentation for the NetBeans Jakarta EE support and Jakarta EE Javadoc
diff --git a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/PersistenceProviderSupplierImpl.java b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/PersistenceProviderSupplierImpl.java
index c22c5ec..1b83055 100644
--- a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/PersistenceProviderSupplierImpl.java
+++ b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/PersistenceProviderSupplierImpl.java
@@ -81,7 +81,8 @@
 
             boolean defaultFound = false; // see issue #225071
 
-            lessEE7 = !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_9_1_WEB) && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_9_1_FULL)
+            lessEE7 = !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_10_WEB) && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_10_FULL)
+                    && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_9_1_WEB) && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_9_1_FULL)
                     && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_9_WEB) && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_9_FULL)
                     && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_8_WEB) && !platform.getSupportedProfiles().contains(Profile.JAKARTA_EE_8_FULL) 
                     && !platform.getSupportedProfiles().contains(Profile.JAVA_EE_8_WEB) && !platform.getSupportedProfiles().contains(Profile.JAVA_EE_8_FULL) 
diff --git a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/Bundle.properties b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/Bundle.properties
index 9e07f4d..1e7cddc 100644
--- a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/Bundle.properties
+++ b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/Bundle.properties
@@ -137,9 +137,9 @@
 MSG_RecommendationSetSourceLevel8=<html>Note: Source Level 8 will be set for Java EE 8, Jakarta EE 8 and Jakarta EE 9 project.
 MSG_RecommendationJDK8=<html>Recommendation: JDK 8 should be used for Java EE 8, Jakarta EE 8 and Jakarta EE 9 projects.
 
-MSG_RecommendationSetJdk11=<html>Note: JDK 11 will be used for Jakarta EE 9.1 projects.
-MSG_RecommendationSetSourceLevel11=<html>Note: Source Level 11 will be set for Jakarta EE 9.1 project.
-MSG_RecommendationJDK11=<html>Recommendation: JDK 11 should be used for Jakarta EE 9.1 projects.
+MSG_RecommendationSetJdk11=<html>Note: JDK 11 will be used for Jakarta EE 9.1 and Jakarta EE 10 projects.
+MSG_RecommendationSetSourceLevel11=<html>Note: Source Level 11 will be set for Jakarta EE 9.1 and Jakarta EE 10 project.
+MSG_RecommendationJDK11=<html>Recommendation: JDK 11 should be used for Jakarta EE 9.1 and Jakarta EE 10 projects.
 
 #Import wizard - existing sources
 LBL_IW_ImportTitle=Add Existing Sources
diff --git a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java
index 46f6881..eb71051 100644
--- a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java
+++ b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/J2eeVersionWarningPanel.java
@@ -235,6 +235,11 @@
                 isAcceptableSourceLevel("11", sourceLevel, acceptableSourceLevels)) { // NOI18N
             return null;
         }
+        // no warning if 11 is the default for jakartaee10
+        if ((j2eeProfile == Profile.JAKARTA_EE_10_FULL || j2eeProfile == Profile.JAKARTA_EE_10_WEB) &&
+                isAcceptableSourceLevel("11", sourceLevel, acceptableSourceLevels)) { // NOI18N
+            return null;
+        }
         
         if (j2eeProfile == Profile.JAVA_EE_5) {
             JavaPlatform[] java15Platforms = getJavaPlatforms("1.5"); //NOI18N
@@ -278,7 +283,8 @@
                     return WARN_JDK_8_REQUIRED;
                 }
             }
-        } else if (j2eeProfile == Profile.JAKARTA_EE_9_1_FULL || j2eeProfile == Profile.JAKARTA_EE_9_1_WEB) {
+        } else if (j2eeProfile == Profile.JAKARTA_EE_9_1_FULL || j2eeProfile == Profile.JAKARTA_EE_9_1_WEB
+                || j2eeProfile == Profile.JAKARTA_EE_10_FULL || j2eeProfile == Profile.JAKARTA_EE_10_WEB) {
             JavaPlatform[] java11Platforms = getJavaPlatforms("11"); //NOI18N
             if (java11Platforms.length > 0) {
                 return WARN_SET_JDK_11;
diff --git a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java
index 10e0d54..971bd51 100644
--- a/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java
+++ b/enterprise/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/wizard/ProjectServerPanel.java
@@ -423,24 +423,26 @@
         if (serverInstanceWrapper != null) {
             try {
                 J2eePlatform j2eePlatform = Deployment.getDefault().getServerInstance(serverInstanceWrapper.getServerInstanceID()).getJ2eePlatform();
-                Set<Profile> profiles = new TreeSet<Profile>(Profile.UI_COMPARATOR);
+                Set<Profile> profiles = new TreeSet<>(Profile.UI_COMPARATOR);
                 profiles.addAll(j2eePlatform.getSupportedProfiles(j2eeModuleType));
                 for (Profile profile : profiles) {
                     // j2ee 1.3 and 1.4 is not supported anymore
                     if (Profile.J2EE_13.equals(profile) || Profile.J2EE_14.equals(profile)) {
                         continue;
                     }
-                    if (j2eeModuleType ==J2eeModule.Type.WAR) {
-                        if (Profile.JAVA_EE_6_FULL.equals(profile) || Profile.JAVA_EE_7_FULL.equals(profile) || 
-                                Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_8_FULL.equals(profile) || 
-                                Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_9_1_FULL.equals(profile)) {
+                    if (j2eeModuleType == J2eeModule.Type.WAR) {
+                        if (Profile.JAVA_EE_6_FULL.equals(profile) || Profile.JAVA_EE_7_FULL.equals(profile)
+                                || Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_8_FULL.equals(profile)
+                                || Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_9_1_FULL.equals(profile)
+                                || Profile.JAKARTA_EE_10_FULL.equals(profile)) {
                             // for web apps always offer only JAVA_EE_6_WEB profile and skip full one
                             continue;
                         }
                     } else {
-                        if (Profile.JAVA_EE_6_WEB.equals(profile) || Profile.JAVA_EE_7_WEB.equals(profile) || 
-                                Profile.JAVA_EE_8_WEB.equals(profile) || Profile.JAKARTA_EE_8_WEB.equals(profile) || 
-                                Profile.JAKARTA_EE_9_WEB.equals(profile) || Profile.JAKARTA_EE_9_1_WEB.equals(profile)) {
+                        if (Profile.JAVA_EE_6_WEB.equals(profile) || Profile.JAVA_EE_7_WEB.equals(profile)
+                                || Profile.JAVA_EE_8_WEB.equals(profile) || Profile.JAKARTA_EE_8_WEB.equals(profile)
+                                || Profile.JAKARTA_EE_9_WEB.equals(profile) || Profile.JAKARTA_EE_9_1_WEB.equals(profile)
+                                || Profile.JAKARTA_EE_10_WEB.equals(profile)) {
                             // for EE apps always skip web profile
                             continue;
                         }
@@ -983,6 +985,8 @@
                 j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAVA_EE_8_FULL));
             } else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_9_0).equals(version)) {
                 j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAKARTA_EE_9_FULL));
+            } else if(new BigDecimal(org.netbeans.modules.j2ee.dd.api.client.AppClient.VERSION_10_0).equals(version)) {
+                j2eeSpecComboBox.setSelectedItem(new ProfileItem(Profile.JAKARTA_EE_10_FULL));
             }
         } catch (IOException e) {
             String message = NbBundle.getMessage(ProjectServerPanel.class, "MSG_AppClientXmlCorrupted"); // NOI18N
diff --git a/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/WildflyJ2eePlatformFactory.java b/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/WildflyJ2eePlatformFactory.java
index f0b081e..d4f0d05 100644
--- a/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/WildflyJ2eePlatformFactory.java
+++ b/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/WildflyJ2eePlatformFactory.java
@@ -110,8 +110,15 @@
             WILDFLY_PROFILES.add(Profile.JAVA_EE_7_FULL);
             WILDFLY_PROFILES.add(Profile.JAVA_EE_8_WEB);
             WILDFLY_PROFILES.add(Profile.JAVA_EE_8_FULL);
+            WILDFLY_PROFILES.add(Profile.JAKARTA_EE_8_FULL);
         }
+        private static final Set<Profile> JAKARTAEE_FULL_PROFILES = new HashSet<Profile>();
 
+        static {
+            JAKARTAEE_FULL_PROFILES.add(Profile.JAKARTA_EE_9_FULL);
+            JAKARTAEE_FULL_PROFILES.add(Profile.JAKARTA_EE_9_1_FULL);
+            JAKARTAEE_FULL_PROFILES.add(Profile.JAKARTA_EE_10_FULL);
+        }
         private static final Set<Profile> EAP6_PROFILES = new HashSet<Profile>();
 
         static {
@@ -125,6 +132,18 @@
             WILDFLY_WEB_PROFILES.add(Profile.JAVA_EE_6_WEB);
             WILDFLY_WEB_PROFILES.add(Profile.JAVA_EE_7_WEB);
             WILDFLY_WEB_PROFILES.add(Profile.JAVA_EE_8_WEB);
+            WILDFLY_WEB_PROFILES.add(Profile.JAKARTA_EE_8_WEB);
+            WILDFLY_WEB_PROFILES.add(Profile.JAKARTA_EE_9_WEB);
+            WILDFLY_WEB_PROFILES.add(Profile.JAKARTA_EE_9_1_WEB);
+            WILDFLY_WEB_PROFILES.add(Profile.JAKARTA_EE_10_WEB);
+        }
+
+        private static final Set<Profile> JAKARTAEE_WEB_PROFILES = new HashSet<Profile>();
+
+        static {
+            JAKARTAEE_WEB_PROFILES.add(Profile.JAKARTA_EE_9_WEB);
+            JAKARTAEE_WEB_PROFILES.add(Profile.JAKARTA_EE_9_1_WEB);
+            JAKARTAEE_WEB_PROFILES.add(Profile.JAKARTA_EE_10_WEB);
         }
         private LibraryImplementation[] libraries;
 
@@ -137,12 +156,22 @@
         @Override
         public Set<org.netbeans.api.j2ee.core.Profile> getSupportedProfiles() {
             if (this.properties.isWildfly()) {
-                if(this.properties.isServletOnly()) {
+                if (this.properties.isServletOnly()) {
+                    if (this.properties.getServerVersion().compareToIgnoreUpdate(WildflyPluginUtils.WILDFLY_27_0_0) >= 0) {
+                        return Collections.unmodifiableSet(JAKARTAEE_WEB_PROFILES);
+                    }
                     return Collections.unmodifiableSet(WILDFLY_WEB_PROFILES);
                 }
+                if (this.properties.getServerVersion().compareToIgnoreUpdate(WildflyPluginUtils.WILDFLY_27_0_0) >= 0) {
+                    Set<org.netbeans.api.j2ee.core.Profile> allJakarta = new HashSet<>(
+                            (int) Math.ceil((JAKARTAEE_FULL_PROFILES.size()+JAKARTAEE_WEB_PROFILES.size()) / 0.75));
+                    allJakarta.addAll(JAKARTAEE_FULL_PROFILES);
+                    allJakarta.addAll(JAKARTAEE_WEB_PROFILES);
+                    return Collections.unmodifiableSet(allJakarta);
+                }
                 return Collections.unmodifiableSet(WILDFLY_PROFILES);
             }
-            if(this.properties.getServerVersion().compareToIgnoreUpdate(WildflyPluginUtils.EAP_7_0) >= 0) {
+            if (this.properties.getServerVersion().compareToIgnoreUpdate(WildflyPluginUtils.EAP_7_0) >= 0) {
                 return Collections.unmodifiableSet(WILDFLY_PROFILES);
             }
             return Collections.unmodifiableSet(EAP6_PROFILES);
@@ -150,10 +179,7 @@
 
         @Override
         public Set<org.netbeans.api.j2ee.core.Profile> getSupportedProfiles(Type moduleType) {
-            if (this.properties.isWildfly()) {
-                return Collections.unmodifiableSet(WILDFLY_PROFILES);
-            }
-            return Collections.unmodifiableSet(EAP6_PROFILES);
+            return getSupportedProfiles();
         }
 
         @Override
@@ -169,6 +195,9 @@
             versions.add("1.8"); // NOI18N
             versions.add("1.9"); // NOI18N
             versions.add("11"); // NOI18N
+            if (this.properties.getServerVersion().compareToIgnoreUpdate(WildflyPluginUtils.EAP_7_0) >= 0) {
+                versions.add("17"); // NOI18N
+            }
             return versions;
         }
 
@@ -280,6 +309,12 @@
             if ("jpa2.1".equals(toolName)) { // NOI18N
                 return this.properties.isWildfly();
             }
+            if ("jpa3.0".equals(toolName)) { // NOI18N
+                return this.properties.isWildfly();
+            }
+            if ("jpa3.1".equals(toolName)) { // NOI18N
+                return this.properties.isWildfly();
+            }
 
             if ("hibernatePersistenceProviderIsDefault2.0".equals(toolName)) {
                 return true;
diff --git a/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/ui/WildflyPluginUtils.java b/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/ui/WildflyPluginUtils.java
index cdee875..f404e9e 100644
--- a/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/ui/WildflyPluginUtils.java
+++ b/enterprise/javaee.wildfly/src/org/netbeans/modules/javaee/wildfly/ide/ui/WildflyPluginUtils.java
@@ -89,6 +89,22 @@
 
     public static final Version WILDFLY_19_0_0 = new Version("19.0.0", true); // NOI18N
 
+    public static final Version WILDFLY_20_0_0 = new Version("20.0.0", true); // NOI18N
+
+    public static final Version WILDFLY_21_0_0 = new Version("21.0.0", true); // NOI18N
+
+    public static final Version WILDFLY_22_0_0 = new Version("22.0.0", true); // NOI18N
+
+    public static final Version WILDFLY_23_0_0 = new Version("23.0.0", true); // NOI18N
+
+    public static final Version WILDFLY_24_0_0 = new Version("24.0.0", true); // NOI18N
+
+    public static final Version WILDFLY_25_0_0 = new Version("25.0.0", true); // NOI18N
+
+    public static final Version WILDFLY_26_0_0 = new Version("26.0.0", true); // NOI18N
+
+    public static final Version WILDFLY_27_0_0 = new Version("27.0.0", true); // NOI18N
+
     private static final Logger LOGGER = Logger.getLogger(WildflyPluginUtils.class.getName());
 
     public static final String LIB = "lib" + separatorChar;
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/customizer/impl/CustomizerRunWeb.java b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/customizer/impl/CustomizerRunWeb.java
index 38a44f0..1935576 100644
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/customizer/impl/CustomizerRunWeb.java
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/customizer/impl/CustomizerRunWeb.java
@@ -112,6 +112,7 @@
         WEB_PROFILES.add(Profile.JAKARTA_EE_8_WEB);
         WEB_PROFILES.add(Profile.JAKARTA_EE_9_WEB);
         WEB_PROFILES.add(Profile.JAKARTA_EE_9_1_WEB);
+        WEB_PROFILES.add(Profile.JAKARTA_EE_10_WEB);
 
         FULL_PROFILES = new TreeSet<>(Profile.UI_COMPARATOR);
         FULL_PROFILES.add(Profile.JAVA_EE_5);
@@ -121,6 +122,7 @@
         FULL_PROFILES.add(Profile.JAKARTA_EE_8_FULL);
         FULL_PROFILES.add(Profile.JAKARTA_EE_9_FULL);
         FULL_PROFILES.add(Profile.JAKARTA_EE_9_1_FULL);
+        FULL_PROFILES.add(Profile.JAKARTA_EE_10_FULL);
     }
 
     @Messages({
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/ServerSelectionHelper.java b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/ServerSelectionHelper.java
index ba8fb53..4b4162a 100644
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/ServerSelectionHelper.java
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/ServerSelectionHelper.java
@@ -155,6 +155,7 @@
         // If <No Server> option was selected, show all supported profiles except Java EE 7 profiles
         if (ExecutionChecker.DEV_NULL.equals(serverInstance)) {
             if (J2eeModule.Type.WAR.equals(projectType)) {
+                profiles.add(Profile.JAKARTA_EE_10_WEB);
                 profiles.add(Profile.JAKARTA_EE_9_1_WEB);
                 profiles.add(Profile.JAKARTA_EE_9_WEB);
                 profiles.add(Profile.JAKARTA_EE_8_WEB);
@@ -162,6 +163,7 @@
                 profiles.add(Profile.JAVA_EE_7_WEB);
                 profiles.add(Profile.JAVA_EE_6_WEB);
             } else {
+                profiles.add(Profile.JAKARTA_EE_10_FULL);
                 profiles.add(Profile.JAKARTA_EE_9_1_FULL);
                 profiles.add(Profile.JAKARTA_EE_9_FULL);
                 profiles.add(Profile.JAKARTA_EE_8_FULL);
@@ -174,7 +176,7 @@
             try {
                 J2eePlatform pfm = findServerInstance(serverInstance).getJ2eePlatform();
                 Set<Profile> supported = pfm.getSupportedProfiles(projectType);
-                profiles.addAll(findServerInstance(serverInstance).getJ2eePlatform().getSupportedProfiles(projectType));
+                profiles.addAll(supported);
             } catch (InstanceRemovedException ex) {
                 // If selected instance was removed during the process we can easily refresh Server model list and update versions again
                 initServerModel(null);
@@ -186,6 +188,7 @@
 
             // We want to have Java EE 6 Full profile for all project types except Web project
             if (J2eeModule.Type.WAR.equals(projectType)) {
+                profiles.remove(Profile.JAKARTA_EE_10_FULL);
                 profiles.remove(Profile.JAKARTA_EE_9_1_FULL);
                 profiles.remove(Profile.JAKARTA_EE_9_FULL);
                 profiles.remove(Profile.JAKARTA_EE_8_FULL);
@@ -193,6 +196,7 @@
                 profiles.remove(Profile.JAVA_EE_7_FULL);
                 profiles.remove(Profile.JAVA_EE_6_FULL);
             } else {
+                profiles.remove(Profile.JAKARTA_EE_10_WEB);
                 profiles.remove(Profile.JAKARTA_EE_9_1_WEB);
                 profiles.remove(Profile.JAKARTA_EE_9_WEB);
                 profiles.remove(Profile.JAKARTA_EE_8_WEB);
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/BaseJ2eeArchetypeProvider.java b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/BaseJ2eeArchetypeProvider.java
index 27d7523..50fb87d 100755
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/BaseJ2eeArchetypeProvider.java
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/BaseJ2eeArchetypeProvider.java
@@ -97,6 +97,11 @@
                 NbBundle.getMessage(BaseJ2eeArchetypeProvider.class,"mvn.archetypeVersion.JakartaEE9_1"),
                NbBundle.getMessage(BaseJ2eeArchetypeProvider.class,"mvn.archetypeArtifactId.JakartaEE9_1"));
 
+        Archetype jakartaEE10_0Archetype = createArchetype(
+                NbBundle.getMessage(BaseJ2eeArchetypeProvider.class,"mvn.archetypeGroupId.JakartaEE10_0"),
+                NbBundle.getMessage(BaseJ2eeArchetypeProvider.class,"mvn.archetypeVersion.JakartaEE10_0"),
+               NbBundle.getMessage(BaseJ2eeArchetypeProvider.class,"mvn.archetypeArtifactId.JakartaEE10_0"));
+
         map.put(Profile.JAVA_EE_8_FULL, javaEE8Archetype);
         map.put(Profile.JAVA_EE_8_WEB, javaEE8Archetype);
         map.put(Profile.JAKARTA_EE_8_FULL, jakartaEE8Archetype);
@@ -105,6 +110,8 @@
         map.put(Profile.JAKARTA_EE_9_WEB, jakartaEE9Archetype);
         map.put(Profile.JAKARTA_EE_9_1_FULL, jakartaEE9_1Archetype);
         map.put(Profile.JAKARTA_EE_9_1_WEB, jakartaEE9_1Archetype);
+        map.put(Profile.JAKARTA_EE_10_FULL, jakartaEE10_0Archetype);
+        map.put(Profile.JAKARTA_EE_10_WEB, jakartaEE10_0Archetype);
     }
 
     private Archetype createMojoArchetype(String version, String artifactId) {
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/Bundle.properties b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/Bundle.properties
index 43cbf08..b274428 100644
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/Bundle.properties
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/Bundle.properties
@@ -16,6 +16,9 @@
 # under the License.
 
 # Maven Archetype Properties
+mvn.archetypeGroupId.JakartaEE10_0=io.github.juneau001
+mvn.archetypeVersion.JakartaEE10_0=1.0.0
+mvn.archetypeArtifactId.JakartaEE10_0=webapp-jakartaee10
 mvn.archetypeGroupId.JakartaEE9_1=io.github.juneau001
 mvn.archetypeVersion.JakartaEE9_1=1.1.0
 mvn.archetypeArtifactId.JakartaEE9_1=webapp-jakartaee91
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/J2eeArchetypeFactory.java b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/J2eeArchetypeFactory.java
index 81790ae..6014fd3 100755
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/J2eeArchetypeFactory.java
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/ui/wizard/archetype/J2eeArchetypeFactory.java
@@ -90,6 +90,7 @@
     private static class AppClientArchetypes extends BaseJ2eeArchetypeProvider {
         @Override
         protected void setUpProjectArchetypes() {
+            addJakartaEEArchetype(Profile.JAKARTA_EE_10_FULL,"mvn.archetypeGroupId.JakartaEE10_0","mvn.archetypeVersion.JakartaEE10_0","mvn.archetypeArtifactId.JakartaEE10_0");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_1_FULL,"mvn.archetypeGroupId.JakartaEE9_1","mvn.archetypeVersion.JakartaEE9_1","mvn.archetypeArtifactId.JakartaEE9_1");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_FULL,"mvn.archetypeGroupId.JakartaEE9","mvn.archetypeVersion.JakartaEE9","mvn.archetypeArtifactId.JakartaEE9");
             addJakartaEEArchetype(Profile.JAKARTA_EE_8_FULL,"mvn.archetypeGroupId.JakartaEE8","mvn.archetypeVersion.JakartaEE8","mvn.archetypeArtifactId.JakartaEE8");
@@ -104,6 +105,7 @@
     private static class EaArchetypes extends BaseJ2eeArchetypeProvider {
         @Override
         protected void setUpProjectArchetypes() {
+            addJakartaEEArchetype(Profile.JAKARTA_EE_10_FULL,"mvn.archetypeGroupId.JakartaEE10_0","mvn.archetypeVersion.JakartaEE10_0","mvn.archetypeArtifactId.JakartaEE10_0");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_1_FULL,"mvn.archetypeGroupId.JakartaEE9_1","mvn.archetypeVersion.JakartaEE9_1","mvn.archetypeArtifactId.JakartaEE9_1");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_FULL,"mvn.archetypeGroupId.JakartaEE9","mvn.archetypeVersion.JakartaEE9","mvn.archetypeArtifactId.JakartaEE9");
             addJakartaEEArchetype(Profile.JAKARTA_EE_8_FULL,"mvn.archetypeGroupId.JakartaEE8","mvn.archetypeVersion.JakartaEE8","mvn.archetypeArtifactId.JakartaEE8");
@@ -116,6 +118,7 @@
     private static class EarArchetypes extends BaseJ2eeArchetypeProvider {
         @Override
         protected void setUpProjectArchetypes() {
+            addJakartaEEArchetype(Profile.JAKARTA_EE_10_FULL,"mvn.archetypeGroupId.JakartaEE10_0","mvn.archetypeVersion.JakartaEE10_0","mvn.archetypeArtifactId.JakartaEE10_0");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_1_FULL,"mvn.archetypeGroupId.JakartaEE9_1","mvn.archetypeVersion.JakartaEE9_1","mvn.archetypeArtifactId.JakartaEE9_1");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_FULL,"mvn.archetypeGroupId.JakartaEE9","mvn.archetypeVersion.JakartaEE9","mvn.archetypeArtifactId.JakartaEE9");
             addJakartaEEArchetype(Profile.JAKARTA_EE_8_FULL,"mvn.archetypeGroupId.JakartaEE8","mvn.archetypeVersion.JakartaEE8","mvn.archetypeArtifactId.JakartaEE8");
@@ -130,6 +133,7 @@
     private static class EjbArchetypes extends BaseJ2eeArchetypeProvider {
         @Override
         protected void setUpProjectArchetypes() {
+            addJakartaEEArchetype(Profile.JAKARTA_EE_10_FULL,"mvn.archetypeGroupId.JakartaEE10_0","mvn.archetypeVersion.JakartaEE10_0","mvn.archetypeArtifactId.JakartaEE10_0");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_1_FULL,"mvn.archetypeGroupId.JakartaEE9_1","mvn.archetypeVersion.JakartaEE9_1","mvn.archetypeArtifactId.JakartaEE9_1");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_FULL,"mvn.archetypeGroupId.JakartaEE9","mvn.archetypeVersion.JakartaEE9","mvn.archetypeArtifactId.JakartaEE9");
             addJakartaEEArchetype(Profile.JAKARTA_EE_8_FULL,"mvn.archetypeGroupId.JakartaEE8","mvn.archetypeVersion.JakartaEE8","mvn.archetypeArtifactId.JakartaEE8");
@@ -144,6 +148,7 @@
     private static class WebArchetypes extends BaseJ2eeArchetypeProvider {
         @Override
         protected void setUpProjectArchetypes() {
+            addJakartaEEArchetype(Profile.JAKARTA_EE_10_WEB,"mvn.archetypeGroupId.JakartaEE10_0","mvn.archetypeVersion.JakartaEE10_0","mvn.archetypeArtifactId.JakartaEE10_0");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_1_WEB,"mvn.archetypeGroupId.JakartaEE9_1","mvn.archetypeVersion.JakartaEE9_1","mvn.archetypeArtifactId.JakartaEE9_1");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_WEB,"mvn.archetypeGroupId.JakartaEE9","mvn.archetypeVersion.JakartaEE9","mvn.archetypeArtifactId.JakartaEE9");
             addJakartaEEArchetype(Profile.JAKARTA_EE_8_WEB,"mvn.archetypeGroupId.JakartaEE8","mvn.archetypeVersion.JakartaEE8","mvn.archetypeArtifactId.JakartaEE8");
@@ -157,6 +162,7 @@
             // using Java EE 6 Full profile, then the same profile applies to Ejb, Web and Parent project creation - In that case
             // application is looking for Java EE 6 Full archetype to create the Web project with it, so we need to have it here
             // or otherwise Java EE project would not be created properly
+            addJakartaEEArchetype(Profile.JAKARTA_EE_10_FULL,"mvn.archetypeGroupId.JakartaEE10_0","mvn.archetypeVersion.JakartaEE10_0","mvn.archetypeArtifactId.JakartaEE10_0");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_1_FULL,"mvn.archetypeGroupId.JakartaEE9_1","mvn.archetypeVersion.JakartaEE9_1","mvn.archetypeArtifactId.JakartaEE9_1");
             addJakartaEEArchetype(Profile.JAKARTA_EE_9_FULL,"mvn.archetypeGroupId.JakartaEE9","mvn.archetypeVersion.JakartaEE9","mvn.archetypeArtifactId.JakartaEE9");
             addJakartaEEArchetype(Profile.JAKARTA_EE_8_FULL,"mvn.archetypeGroupId.JakartaEE8","mvn.archetypeVersion.JakartaEE8","mvn.archetypeArtifactId.JakartaEE8");
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebModuleImpl.java b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebModuleImpl.java
index 63151fa..e3f9619 100644
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebModuleImpl.java
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebModuleImpl.java
@@ -153,6 +153,9 @@
             if (Profile.JAKARTA_EE_9_1_FULL.equals(pomProfile)) {
                 return Profile.JAKARTA_EE_9_1_WEB;
             }
+            if (Profile.JAKARTA_EE_10_FULL.equals(pomProfile)) {
+                return Profile.JAKARTA_EE_10_WEB;
+            }
             return pomProfile;
         }
 
@@ -190,6 +193,9 @@
                 if (WebApp.VERSION_5_0.equals(waVersion)) {
                     return Profile.JAKARTA_EE_9_WEB;
                 }
+                if (WebApp.VERSION_6_0.equals(waVersion)) {
+                    return Profile.JAKARTA_EE_10_WEB;
+                }
             } catch (IOException exc) {
                 ErrorManager.getDefault().notify(exc);
             }
@@ -230,6 +236,8 @@
         List<DependencyDesc> jakartaEE9Full = new ArrayList<>();
         List<DependencyDesc> jakartaEE91Web = new ArrayList<>();
         List<DependencyDesc> jakartaEE91Full = new ArrayList<>();
+        List<DependencyDesc> jakartaEE10Web = new ArrayList<>();
+        List<DependencyDesc> jakartaEE10Full = new ArrayList<>();
 
         // Java EE specification
         javaEE5.add(new DependencyDesc("javaee", "javaee-api", "5.0"));
@@ -246,6 +254,8 @@
         jakartaEE9Full.add(new DependencyDesc("jakarta.platform","jakarta.jakartaee-web-api","9.0.0"));
         jakartaEE91Web.add(new DependencyDesc("jakarta.platform","jakarta.jakartaee-api","9.1.0"));
         jakartaEE91Full.add(new DependencyDesc("jakarta.platform","jakarta.jakartaee-web-api","9.1.0"));
+        jakartaEE10Web.add(new DependencyDesc("jakarta.platform","jakarta.jakartaee-api","10.0.0"));
+        jakartaEE10Full.add(new DependencyDesc("jakarta.platform","jakarta.jakartaee-web-api","10.0.0"));
 
         // GlassFish implementations
         javaEE5.add(new DependencyDesc("org.glassfish.main.extras", "glassfish-embedded-all", "2"));
@@ -262,6 +272,8 @@
         jakartaEE9Web.add(new DependencyDesc("org.glassfish.main.extras", "glassfish-embedded-web", "6.0.0"));
         jakartaEE91Full.add(new DependencyDesc("org.glassfish.main.extras", "glassfish-embedded-all", "6.2.5"));
         jakartaEE91Web.add(new DependencyDesc("org.glassfish.main.extras", "glassfish-embedded-web", "6.2.5"));
+        jakartaEE10Full.add(new DependencyDesc("org.glassfish.main.extras", "glassfish-embedded-all", "7.0.0-M4"));
+        jakartaEE10Web.add(new DependencyDesc("org.glassfish.main.extras", "glassfish-embedded-web", "7.0.0-M4"));
         
 
         // WebLogic implementations
@@ -297,6 +309,8 @@
         javaEEMap.put(Profile.JAKARTA_EE_9_FULL, jakartaEE9Full);
         javaEEMap.put(Profile.JAKARTA_EE_9_1_WEB, jakartaEE91Web);
         javaEEMap.put(Profile.JAKARTA_EE_9_1_FULL, jakartaEE91Full);
+        javaEEMap.put(Profile.JAKARTA_EE_10_WEB, jakartaEE10Web);
+        javaEEMap.put(Profile.JAKARTA_EE_10_FULL, jakartaEE10Full);
     }
 
     private static class DependencyDesc {
diff --git a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebRecoPrivTemplates.java b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebRecoPrivTemplates.java
index 23d3647..0a8f600 100644
--- a/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebRecoPrivTemplates.java
+++ b/enterprise/maven.j2ee/src/org/netbeans/modules/maven/j2ee/web/WebRecoPrivTemplates.java
@@ -191,12 +191,13 @@
     }
 
     private boolean isServerSupportingEJB31() {
-        if (ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_6_FULL) ||
-            ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_7_FULL) ||
-            ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_8_FULL) ||
-            ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_8_FULL) ||
-            ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_FULL) ||
-            ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_1_FULL)) {
+        if (ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_6_FULL)
+                || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_7_FULL)
+                || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_8_FULL)
+                || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_8_FULL)
+                || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_FULL)
+                || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_1_FULL)
+                || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_10_FULL)) {
 
             return true;
         }
diff --git a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEMavenTestBase.java b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEMavenTestBase.java
index 90efd2a..ea3554e 100644
--- a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEMavenTestBase.java
+++ b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEMavenTestBase.java
@@ -55,6 +55,7 @@
     public  final String ECLIPSEGLASSFISH = "gfv510ee8"; //NOI18N
     public  final String ECLIPSEGLASSFISH6 = "gfv6ee9"; //NOI18N
     public  final String ECLIPSEGLASSFISH610 = "gfv610ee9"; //NOI18N
+    public  final String ECLIPSEGLASSFISH7 = "gfv700ee10"; //NOI18N
     public  final String TOMCAT = "Tomcat"; //NOI18N
     public  final String JBOSS = "JBoss"; //NOI18N
 
diff --git a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEProjectSettingsImplTest.java b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEProjectSettingsImplTest.java
index ec42268..8d5b2d8 100644
--- a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEProjectSettingsImplTest.java
+++ b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/JavaEEProjectSettingsImplTest.java
@@ -51,6 +51,8 @@
     }
 
     public void checkProjectForProfileChange(Project prj) {
+        JavaEEProjectSettings.setProfile(prj, Profile.JAKARTA_EE_10_FULL);
+        assertEquals(Profile.JAKARTA_EE_10_FULL, JavaEEProjectSettings.getProfile(prj));
         JavaEEProjectSettings.setProfile(prj, Profile.JAKARTA_EE_9_1_FULL);
         assertEquals(Profile.JAKARTA_EE_9_1_FULL, JavaEEProjectSettings.getProfile(prj));
         JavaEEProjectSettings.setProfile(prj, Profile.JAKARTA_EE_9_FULL);
diff --git a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/utils/CreateDDTest.java b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/utils/CreateDDTest.java
index cfa2a11..9d90624 100644
--- a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/utils/CreateDDTest.java
+++ b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/utils/CreateDDTest.java
@@ -75,6 +75,14 @@
 
         assertEquals(false, isWebDDpresent(project));
     }
+        
+    // gfv700ee10 - Jakarta EE 10
+    public void testCreateDDIfRequired_nullServerPassed_glassfish7() {
+        MavenProjectSupport.setServerID(project, ECLIPSEGLASSFISH7);
+        MavenProjectSupport.createWebXMLIfRequired(project, null);
+
+        assertEquals(false, isWebDDpresent(project));
+    }
 
     public void testCreateDDIfRequired_nullServerPassed_tomcat() {
         MavenProjectSupport.setServerID(project, TOMCAT);
@@ -125,6 +133,12 @@
         assertEquals(false, isWebDDpresent(project));
     }
 
+    // gfv700ee10 - Jakarta EE 10
+    public void testCreateDDIfRequired_glassfish7Passed() {
+        MavenProjectSupport.createWebXMLIfRequired(project, ECLIPSEGLASSFISH7);
+        assertEquals(false, isWebDDpresent(project));
+    }
+
     public void testCreateDDIfRequired_tomcatPassed() {
         MavenProjectSupport.createWebXMLIfRequired(project, TOMCAT);
         assertEquals(false, isWebDDpresent(project));
diff --git a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/web/WebModuleImplTest.java b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/web/WebModuleImplTest.java
index 8800f0f..138f2ac 100644
--- a/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/web/WebModuleImplTest.java
+++ b/enterprise/maven.j2ee/test/unit/src/org/netbeans/modules/maven/j2ee/web/WebModuleImplTest.java
@@ -144,6 +144,14 @@
         checkJ2eeProfile(Profile.JAKARTA_EE_9_1_WEB, "jakarta.platform", "jakarta.jakartaee-web-api", "9.1.0"); //NOI18N
     }
 
+    public void testGetJ2eeProfile_warProject_jakartaEE10FullSpecification() throws IOException {
+        checkJ2eeProfile(Profile.JAKARTA_EE_10_WEB, "jakarta.platform", "jakarta.jakartaee-api", "10.0.0"); //NOI18N
+    }
+
+    public void testGetJ2eeProfile_jakartaEE10WebSpecification() throws IOException {
+        checkJ2eeProfile(Profile.JAKARTA_EE_10_WEB, "jakarta.platform", "jakarta.jakartaee-web-api", "10.0.0"); //NOI18N
+    }
+
     public void testGetJ2eeProfile_javaEE5Full_glassfish() throws IOException {
         checkJ2eeProfile(Profile.JAVA_EE_5, "org.glassfish.main.extras", "glassfish-embedded-all", "2"); //NOI18N
     }
@@ -199,6 +207,14 @@
     public void testGetJ2eeProfile_jakartaEE91Web_glassfish() throws IOException {
         checkJ2eeProfile(Profile.JAKARTA_EE_9_1_WEB, "org.glassfish.main.extras", "glassfish-embedded-web", "6.2.5"); //NOI18N
     }
+    
+    public void testGetJ2eeProfile_warProject_jakartaEE10Full_glassfish() throws IOException {
+        checkJ2eeProfile(Profile.JAKARTA_EE_10_WEB, "org.glassfish.main.extras", "glassfish-embedded-all", "7.0.0-M4"); //NOI18N
+    }
+
+    public void testGetJ2eeProfile_jakartaEE10Web_glassfish() throws IOException {
+        checkJ2eeProfile(Profile.JAKARTA_EE_10_WEB, "org.glassfish.main.extras", "glassfish-embedded-web", "7.0.0-M4"); //NOI18N
+    }
 
     public void testGetJ2eeProfile_javaEE5_weblogic() throws IOException {
         checkJ2eeProfile(Profile.JAVA_EE_5, "weblogic", "weblogic", "10.3.6"); //NOI18N
diff --git a/enterprise/payara.eecommon/nbproject/org-netbeans-modules-payara-eecommon.sig b/enterprise/payara.eecommon/nbproject/org-netbeans-modules-payara-eecommon.sig
index f1607b6..eeb8bb7 100644
--- a/enterprise/payara.eecommon/nbproject/org-netbeans-modules-payara-eecommon.sig
+++ b/enterprise/payara.eecommon/nbproject/org-netbeans-modules-payara-eecommon.sig
@@ -900,6 +900,10 @@
 fld public final static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion APP_CLIENT_1_4
 fld public final static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion APP_CLIENT_5_0
 fld public final static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion APP_CLIENT_6_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion APP_CLIENT_7_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion APP_CLIENT_8_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion APP_CLIENT_9_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion APP_CLIENT_10_0
 meth public int compareTo(java.lang.Object)
 meth public static org.netbeans.modules.payara.eecommon.api.config.AppClientVersion getAppClientVersion(java.lang.String)
 supr org.netbeans.modules.payara.eecommon.api.config.J2EEBaseVersion
@@ -909,6 +913,10 @@
 fld public final static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion APPLICATION_1_4
 fld public final static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion APPLICATION_5_0
 fld public final static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion APPLICATION_6_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion APPLICATION_7_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion APPLICATION_8_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion APPLICATION_9_0
+fld public final static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion APPLICATION_10_0
 meth public int compareTo(java.lang.Object)
 meth public static org.netbeans.modules.payara.eecommon.api.config.ApplicationVersion getApplicationVersion(java.lang.String)
 supr org.netbeans.modules.payara.eecommon.api.config.J2EEBaseVersion
diff --git a/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/AppClientVersion.java b/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/AppClientVersion.java
index 628defb..aa01dcd 100644
--- a/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/AppClientVersion.java
+++ b/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/AppClientVersion.java
@@ -47,13 +47,40 @@
         "5.0", 5000	// NOI18N
         );
 
-
     /** Represents application-client version 6.0
      */
     public static final AppClientVersion APP_CLIENT_6_0 = new AppClientVersion(
         "6.0", 6000,	// NOI18N
         "6.0", 6000	// NOI18N
         );
+    
+    /** Represents application-client version 7.0
+     */
+    public static final AppClientVersion APP_CLIENT_7_0 = new AppClientVersion(
+        "7.0", 7000,	// NOI18N
+        "7.0", 7000	// NOI18N
+        );
+    
+    /** Represents application-client version 8.0
+     */
+    public static final AppClientVersion APP_CLIENT_8_0 = new AppClientVersion(
+        "8.0", 8000,	// NOI18N
+        "8.0", 8000	// NOI18N
+        );
+    
+    /** Represents application-client version 9.0
+     */
+    public static final AppClientVersion APP_CLIENT_9_0 = new AppClientVersion(
+        "9.0", 9000,	// NOI18N
+        "9.0", 9000	// NOI18N
+        );
+    
+    /** Represents application-client version 10.0
+     */
+    public static final AppClientVersion APP_CLIENT_10_0 = new AppClientVersion(
+        "10.0", 10000,	// NOI18N
+        "10.0", 10000	// NOI18N
+        );
     /** -----------------------------------------------------------------------
      *  Implementation
      */
@@ -85,6 +112,16 @@
             result = APP_CLIENT_1_4;
         } else if(APP_CLIENT_5_0.toString().equals(version)) {
             result = APP_CLIENT_5_0;
+        } else if(APP_CLIENT_6_0.toString().equals(version)) {
+            result = APP_CLIENT_6_0;
+        } else if(APP_CLIENT_7_0.toString().equals(version)) {
+            result = APP_CLIENT_7_0;
+        } else if(APP_CLIENT_8_0.toString().equals(version)) {
+            result = APP_CLIENT_8_0;
+        } else if(APP_CLIENT_9_0.toString().equals(version)) {
+            result = APP_CLIENT_9_0;
+        } else if(APP_CLIENT_10_0.toString().equals(version)) {
+            result = APP_CLIENT_10_0;
         }
 
         return result;
diff --git a/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/ApplicationVersion.java b/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/ApplicationVersion.java
index bf6b0e9..0208ea9 100644
--- a/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/ApplicationVersion.java
+++ b/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/ApplicationVersion.java
@@ -54,6 +54,34 @@
         "6.0", 6000	// NOI18N
         );
 
+    /** Represents application version 7.0
+     */
+    public static final ApplicationVersion APPLICATION_7_0 = new ApplicationVersion(
+        "7.0", 7000,	// NOI18N
+        "7.0", 7000	// NOI18N
+        );
+    
+    /** Represents application version 8.0
+     */
+    public static final ApplicationVersion APPLICATION_8_0 = new ApplicationVersion(
+        "8.0", 8000,	// NOI18N
+        "8.0", 8000	// NOI18N
+        );
+    
+    /** Represents application version 9.0
+     */
+    public static final ApplicationVersion APPLICATION_9_0 = new ApplicationVersion(
+        "9.0", 9000,	// NOI18N
+        "9.0", 9000	// NOI18N
+        );
+
+    /** Represents application version 9.0
+     */
+    public static final ApplicationVersion APPLICATION_10_0 = new ApplicationVersion(
+        "10.0", 10000,	// NOI18N
+        "10.0", 10000	// NOI18N
+        );
+
     /** -----------------------------------------------------------------------
      *  Implementation
      */
@@ -87,6 +115,14 @@
             result = APPLICATION_5_0;
         } else if(APPLICATION_6_0.toString().equals(version)) {
             result = APPLICATION_6_0;
+        } else if(APPLICATION_7_0.toString().equals(version)) {
+            result = APPLICATION_7_0;
+        } else if(APPLICATION_8_0.toString().equals(version)) {
+            result = APPLICATION_8_0;
+        } else if(APPLICATION_9_0.toString().equals(version)) {
+            result = APPLICATION_9_0;
+        }else if(APPLICATION_10_0.toString().equals(version)) {
+            result = APPLICATION_10_0;
         }
 
         return result;
diff --git a/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/J2EEVersion.java b/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/J2EEVersion.java
index 4d7e792..d831c64 100644
--- a/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/J2EEVersion.java
+++ b/enterprise/payara.eecommon/src/org/netbeans/modules/payara/eecommon/api/config/J2EEVersion.java
@@ -35,42 +35,42 @@
      * Represents J2EE version 1.3
      */
     public static final J2EEVersion J2EE_1_3 = new J2EEVersion(
-            "1.3", 1300, // NOI18N
+            "1.3", 1300,    // NOI18N
             "1.3", 1300);   // NOI18N
 
     /**
      * Represents J2EE version 1.4
      */
     public static final J2EEVersion J2EE_1_4 = new J2EEVersion(
-            "1.4", 1400, // NOI18N
+            "1.4", 1400,    // NOI18N
             "1.4", 1400);   // NOI18N	
 
     /**
      * Represents JavaEE version 5.0
      */
     public static final J2EEVersion JAVAEE_5_0 = new J2EEVersion(
-            "5.0", 5000, // NOI18N
+            "5.0", 5000,    // NOI18N
             "5.0", 5000);   // NOI18N	
 
     /**
      * Represents JavaEE version 6.0
      */
     public static final J2EEVersion JAVAEE_6_0 = new J2EEVersion(
-            "6.0", 6000, // NOI18N
+            "6.0", 6000,    // NOI18N
             "6.0", 6000);   // NOI18N
 
     /**
      * Represents JavaEE version 7.0
      */
     public static final J2EEVersion JAVAEE_7_0 = new J2EEVersion(
-            "7.0", 7000, // NOI18N
+            "7.0", 7000,    // NOI18N
             "7.0", 7000);   // NOI18N
 
     /**
      * Represents JavaEE version 8.0
      */
     public static final J2EEVersion JAVAEE_8_0 = new J2EEVersion(
-            "8.0", 8000, // NOI18N
+            "8.0", 8000,    // NOI18N
             "8.0", 8000);   // NOI18N
 
     /** 
@@ -80,19 +80,23 @@
             "8.0.0", 80000,    // NOI18N
             "8.0.0", 80000);   // NOI18N
 
-    /** 
-     * Represents Jakarta EE version 9.0.0
+    /** Represents Jakarta EE version 9.0.0
      */
     public static final J2EEVersion JAKARTAEE_9_0 = new J2EEVersion(
             "9.0.0", 90000,    // NOI18N
             "9.0.0", 90000);   // NOI18N
 
-    /** 
-     * Represents Jakarta EE version 9.1.0
+    /** Represents Jakarta EE version 9.1.0
      */
     public static final J2EEVersion JAKARTAEE_9_1 = new J2EEVersion(
             "9.1.0", 91000,    // NOI18N
             "9.1.0", 91000);   // NOI18N
+
+    /** Represents Jakarta EE version 10.0.0
+     */
+    public static final J2EEVersion JAKARTAEE_10_0 = new J2EEVersion(
+            "10.0.0", 100000,    // NOI18N
+            "10.0.0", 100000);   // NOI18N
     
     /**
      * -----------------------------------------------------------------------
@@ -129,16 +133,18 @@
             result = JAVAEE_5_0;
         } else if (JAVAEE_6_0.toString().equals(version)) {
             result = JAVAEE_6_0;
-        } else if(JAVAEE_7_0.toString().equals(version)) {
+        } else if (JAVAEE_7_0.toString().equals(version)) {
             result = JAVAEE_7_0;
-        } else if(JAVAEE_8_0.toString().equals(version)) {
+        } else if (JAVAEE_8_0.toString().equals(version)) {
             result = JAVAEE_8_0;
-        } else if(JAKARTAEE_8_0.toString().equals(version)) {
+        } else if (JAKARTAEE_8_0.toString().equals(version)) {
             result = JAKARTAEE_8_0;
-        } else if(JAKARTAEE_9_0.toString().equals(version)) {
+        } else if (JAKARTAEE_9_0.toString().equals(version)) {
             result = JAKARTAEE_9_0;
-        } else if(JAKARTAEE_9_1.toString().equals(version)) {
+        } else if (JAKARTAEE_9_1.toString().equals(version)) {
             result = JAKARTAEE_9_1;
+        } else if (JAKARTAEE_10_0.toString().equals(version)) {
+            result = JAKARTAEE_10_0;
         }
 
         return result;
diff --git a/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/Hk2JavaEEPlatformImpl.java b/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/Hk2JavaEEPlatformImpl.java
index 58c6421..2d1cd35 100644
--- a/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/Hk2JavaEEPlatformImpl.java
+++ b/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/Hk2JavaEEPlatformImpl.java
@@ -205,6 +205,10 @@
                                break;
                 case v9_1_0:     profiles[index++] = Profile.JAKARTA_EE_9_1_FULL;
                                break;
+                case v10_0_0_web: profiles[index++] = Profile.JAKARTA_EE_10_WEB;
+                               break;
+                case v10_0_0:     profiles[index++] = Profile.JAKARTA_EE_10_FULL;
+                               break;
             }
         } else {
             profiles = new Profile[0];
diff --git a/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/RunTimeDDCatalog.java b/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/RunTimeDDCatalog.java
index 96c552a..3e9920c 100644
--- a/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/RunTimeDDCatalog.java
+++ b/enterprise/payara.jakartaee/src/org/netbeans/modules/payara/jakartaee/RunTimeDDCatalog.java
@@ -97,8 +97,8 @@
         "-//Sun Microsystems Inc.//DTD Application Server 8.1 Domain//EN"                              ,"sun-domain_1_1.dtd",
         "-//Sun Microsystems Inc.//DTD Application Server 9.0 Domain//EN"                              ,"sun-domain_1_2.dtd",
         "-//Sun Microsystems Inc.//DTD Application Server 9.1 Domain//EN"                              ,"sun-domain_1_3.dtd",
-        "-//Sun Microsystems Inc.//DTD Payara Communications Server 1.5 Domain//EN"      ,"sun-domain_1_4.dtd",
-        "-//Sun Microsystems Inc.//DTD Payara Communications Server 2.0 Domain//EN"      ,"sun-domain_1_5.dtd",
+        "-//Sun Microsystems Inc.//DTD GlassFish Communications Server 1.5 Domain//EN"      ,"sun-domain_1_4.dtd",
+        "-//Sun Microsystems Inc.//DTD GlassFish Communications Server 2.0 Domain//EN"      ,"sun-domain_1_5.dtd",
         "-//Sun Microsystems, Inc.//DTD Application Server 9.0 SIP Servlet 1.1//EN"                    , "sun-sip-app_1_1-0.dtd",
         
         "-//Sun Microsystems, Inc.//DTD J2EE Application 1.3//EN"                                       , "application_1_3.dtd",
@@ -133,40 +133,70 @@
     private static final String SchemaToURLMap[] = {
         
         "SCHEMA:http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"                    , "ejb-jar_2_1",
-        
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"                  , "ejb-jar_3_0",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"                  , "ejb-jar_3_1",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"                 , "ejb-jar_3_2",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/ejb-jar_4_0.xsd"                , "ejb-jar_4_0",
         "SCHEMA:http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd"         , "application-client_1_4",
         "SCHEMA:http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"                , "application_1_4",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/application-client_5.xsd"         , "application-client_5",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/application_5.xsd"                , "application_5",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/application-client_6.xsd"         , "application-client_6",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/application_6.xsd"                , "application_6",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/application-client_7.xsd"        , "application-client_7",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"               , "application_7",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/application-client_8.xsd"        , "application-client_8",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd"               , "application_8",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application-client_9.xsd"       , "application-client_9",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application_9.xsd"              , "application_9",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd"       , "application-client_10",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/application_10.xsd"              , "application_10",
         "SCHEMA:http://java.sun.com/xml/ns/j2ee/jax-rpc-ri-config.xsd"              , "jax-rpc-ri-config",
         "SCHEMA:http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"                  , "connector_1_5",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/connector_1_6.xsd"                , "connector_1_6",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd"               , "connector_1_7",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/connector_2_0.xsd"              , "connector_2_0",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/connector_2_1.xsd"              , "connector_2_1",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd"                        , "jsp_2_0.xsd",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/datatypes.dtd"                      , "datatypes",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"                    , "web-app_2_4",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"          , "web-jsptaglibrary_2_0",
         ///"SCHEMA:http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd"                       , "j2ee_1_4",
-        "SCHEMA:http://java.sun.com/xml/ns/j2ee/j2ee_jaxrpc_mapping_1_1.xsd"        , "j2ee_jaxrpc_mapping_1_1",
+        "SCHEMA:http://java.sun.com/xml/ns/j2ee/j2ee_jaxrpc_mapping_1_1.xsd"              , "j2ee_jaxrpc_mapping_1_1",
         "SCHEMA:http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd"             ,"j2ee_web_services_1_1",
-        "SCHEMA:http://java.sun.com/xml/ns/j2ee/j2ee_web_services_client_1_1.xsd"          ,"j2ee_web_services_client_1_1",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"                    , "ejb-jar_3_0",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/application-client_5.xsd"         , "application-client_5",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/application_5.xsd"         , "application_5",
-        "SCHEMA:http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"         , "orm_1_0",
-        "SCHEMA:http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"         , "persistence_1_0",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/javaee_web_services_1_2.xsd"          ,"javaee_web_services_1_2",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_2.xsd"          ,"javaee_web_services_client_1_2",
-
+        "SCHEMA:http://java.sun.com/xml/ns/j2ee/j2ee_web_services_client_1_1.xsd"         ,"j2ee_web_services_client_1_1",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/javaee_web_services_1_2.xsd"            ,"javaee_web_services_1_2",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_2.xsd"     ,"javaee_web_services_client_1_2",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/javaee_web_services_1_3.xsd"            ,"javaee_web_services_1_3",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/javaee_web_services_client_1_3.xsd"     ,"javaee_web_services_client_1_3",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/javaee_web_services_1_4.xsd"           ,"javaee_web_services_1_4",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/javaee/javaee_web_services_client_1_4.xsd"    ,"javaee_web_services_client_1_4",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/jakartaee_web_services_2_0.xsd"          ,"jakartaee_web_services_2_0",
+        "SCHEMA:https://jakarta.ee/xml/ns/jakartaee/jakartaee_web_services_client_2_0.xsd"   ,"jakartaee_web_services_client_2_0",
+        "SCHEMA:http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"                          , "orm_1_0",
+        "SCHEMA:http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"                          , "orm_2_0",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd"                         , "orm_2_1",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/persistence/orm_2_2.xsd"                         , "orm_2_2",
+        "SCHEMA:https://jakarta.ee/xml/ns/persistence/orm/orm_3_0.xsd"                       , "orm_3_0",
+        "SCHEMA:https://jakarta.ee/xml/ns/persistence/orm/orm_3_1.xsd"                       , "orm_3_1",
+        "SCHEMA:http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"                  , "persistence_1_0",
+        "SCHEMA:http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"                  , "persistence_2_0",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"                 , "persistence_2_1",
+        "SCHEMA:http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"                 , "persistence_2_2",
+        "SCHEMA:https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"                   , "persistence_3_0",
     };
     
     private static final String JavaEE6SchemaToURLMap[] = {
 
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"                    , "ejb-jar_3_1",
-        "SCHEMA:http://java.sun.com/xml/ns/j2ee/jsp_2_2.xsd"                        , "jsp_2_2",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"                    , "web-app_3_0",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/web-common_3_0.xsd"                    , "web-common_3_0",
-        "SCHEMA:http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"                    , "web-fragment_3_0",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"              , "ejb-jar_3_1",
+        "SCHEMA:http://java.sun.com/xml/ns/j2ee/jsp_2_2.xsd"                    , "jsp_2_2",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"              , "web-app_3_0",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/web-common_3_0.xsd"           , "web-common_3_0",
+        "SCHEMA:http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"         , "web-fragment_3_0",
         "SCHEMA:http://xmlns.oracle.com/weblogic/jdbc-data-source/1.0/jdbc-data-source.xsd", "jdbc-data-source",
     };
 
-    private static Map<ServerInstanceProvider, RunTimeDDCatalog> ddCatalogMap = new HashMap<ServerInstanceProvider, RunTimeDDCatalog>();
+    private static Map<ServerInstanceProvider, RunTimeDDCatalog> ddCatalogMap = new HashMap<>();
 //    private static RunTimeDDCatalog preludeDDCatalog;
     private static RunTimeDDCatalog defaultDDCatalog;
 
@@ -218,7 +248,7 @@
             return null;
         }
         
-        List<String> list = new ArrayList<String>();
+        List<String> list = new ArrayList<>();
         for (int i=0;i<TypeToURLMap.length;i = i+2){
             list.add(TypeToURLMap[i]);
         }
@@ -334,7 +364,7 @@
     
     }
     
-    private List<CatalogListener> catalogListeners = new ArrayList<CatalogListener>(1);
+    private List<CatalogListener> catalogListeners = new ArrayList<>(1);
     
     /**
      * Optional operation allowing to listen at catalog for changes.
@@ -406,6 +436,8 @@
     
     public static final String J2EE_NS = "http://java.sun.com/xml/ns/j2ee"; // NOI18N
     public static final String JAVAEE_NS = "http://java.sun.com/xml/ns/javaee"; // NOI18N
+    public static final String NEW_JAVAEE_NS = "http://xmlns.jcp.org/xml/ns/javaee"; // NOI18N
+    public static final String JAKARTAEE_NS = "https://jakarta.ee/xml/ns/jakartaee"; // NOI18N
     public static final String RI_CONFIG_NS = "http://java.sun.com/xml/ns/jax-rpc/ri/config"; // NOI18N
 
     public static final String IBM_J2EE_NS = "http://www.ibm.com/webservices/xsd"; // NOI18N
@@ -422,6 +454,18 @@
     private static final String EJBJAR_3_0 = JAVAEE_NS+"/"+EJBJAR_3_0_XSD; // NOI18N
     public static final String EJBJAR_3_0_ID = "SCHEMA:"+EJBJAR_3_0; // NOI18N
     
+    private static final String EJBJAR_3_1_XSD="ejb-jar_3_1.xsd"; // NOI18N
+    private static final String EJBJAR_3_1 = JAVAEE_NS+"/"+EJBJAR_3_1_XSD; // NOI18N
+    public static final String EJBJAR_3_1_ID = "SCHEMA:"+EJBJAR_3_1; // NOI18N
+    
+    private static final String EJBJAR_3_2_XSD="ejb-jar_3_2.xsd"; // NOI18N
+    private static final String EJBJAR_3_2 = NEW_JAVAEE_NS+"/"+EJBJAR_3_2_XSD; // NOI18N
+    public static final String EJBJAR_3_2_ID = "SCHEMA:"+EJBJAR_3_2; // NOI18N
+    
+    private static final String EJBJAR_4_0_XSD="ejb-jar_4_0.xsd"; // NOI18N
+    private static final String EJBJAR_4_0 = JAKARTAEE_NS+"/"+EJBJAR_4_0_XSD; // NOI18N
+    public static final String EJBJAR_4_0_ID = "SCHEMA:"+EJBJAR_4_0; // NOI18N
+    
     private static final String APP_TAG="application"; //NOI18N
     private static final String APP_1_4_XSD="application_1_4.xsd"; // NOI18N
     private static final String APP_1_4= J2EE_NS+"/"+APP_1_4_XSD; // NOI18N
@@ -431,6 +475,25 @@
     private static final String APP_5= JAVAEE_NS+"/"+APP_5_XSD; // NOI18N
     public static final String APP_5_ID = "SCHEMA:"+APP_5; // NOI18N
  
+    private static final String APP_6_XSD="application_6.xsd"; // NOI18N
+    private static final String APP_6= JAVAEE_NS+"/"+APP_6_XSD; // NOI18N
+    public static final String APP_6_ID = "SCHEMA:"+APP_6; // NOI18N
+    
+    private static final String APP_7_XSD="application_7.xsd"; // NOI18N
+    private static final String APP_7= NEW_JAVAEE_NS+"/"+APP_7_XSD; // NOI18N
+    public static final String APP_7_ID = "SCHEMA:"+APP_7; // NOI18N
+    
+    private static final String APP_8_XSD="application_8.xsd"; // NOI18N
+    private static final String APP_8= NEW_JAVAEE_NS+"/"+APP_8_XSD; // NOI18N
+    public static final String APP_8_ID = "SCHEMA:"+APP_8; // NOI18N
+    
+    private static final String APP_9_XSD="application_9.xsd"; // NOI18N
+    private static final String APP_9= JAKARTAEE_NS+"/"+APP_9_XSD; // NOI18N
+    public static final String APP_9_ID = "SCHEMA:"+APP_9; // NOI18N
+    
+    private static final String APP_10_XSD="application_10.xsd"; // NOI18N
+    private static final String APP_10= JAKARTAEE_NS+"/"+APP_10_XSD; // NOI18N
+    public static final String APP_10_ID = "SCHEMA:"+APP_10; // NOI18N
     
     private static final String APPCLIENT_TAG="application-client"; //NOI18N
     private static final String APPCLIENT_1_4_XSD="application-client_1_4.xsd"; // NOI18N
@@ -441,7 +504,26 @@
     private static final String APPCLIENT_5= JAVAEE_NS+"/"+APPCLIENT_5_XSD; // NOI18N
     public static final String APPCLIENT_5_ID = "SCHEMA:"+APPCLIENT_5; // NOI18N
     
+    private static final String APPCLIENT_6_XSD="application-client_6.xsd"; // NOI18N
+    private static final String APPCLIENT_6= JAVAEE_NS+"/"+APPCLIENT_6_XSD; // NOI18N
+    public static final String APPCLIENT_6_ID = "SCHEMA:"+APPCLIENT_6; // NOI18N
     
+    private static final String APPCLIENT_7_XSD="application-client_7.xsd"; // NOI18N
+    private static final String APPCLIENT_7= NEW_JAVAEE_NS+"/"+APPCLIENT_7_XSD; // NOI18N
+    public static final String APPCLIENT_7_ID = "SCHEMA:"+APPCLIENT_7; // NOI18N
+    
+    private static final String APPCLIENT_8_XSD="application-client_8.xsd"; // NOI18N
+    private static final String APPCLIENT_8= NEW_JAVAEE_NS+"/"+APPCLIENT_8_XSD; // NOI18N
+    public static final String APPCLIENT_8_ID = "SCHEMA:"+APPCLIENT_8; // NOI18N
+    
+    private static final String APPCLIENT_9_XSD="application-client_9.xsd"; // NOI18N
+    private static final String APPCLIENT_9= JAKARTAEE_NS+"/"+APPCLIENT_9_XSD; // NOI18N
+    public static final String APPCLIENT_9_ID = "SCHEMA:"+APPCLIENT_9; // NOI18N
+
+    private static final String APPCLIENT_10_XSD="application-client_10.xsd"; // NOI18N
+    private static final String APPCLIENT_10= JAKARTAEE_NS+"/"+APPCLIENT_10_XSD; // NOI18N
+    public static final String APPCLIENT_10_ID = "SCHEMA:"+APPCLIENT_10; // NOI18N
+
     private static final String WEBSERVICES_TAG="webservices"; //NOI18N
     private static final String WEBSERVICES_1_1_XSD="j2ee_web_services_1_1.xsd"; // NOI18N
     private static final String WEBSERVICES_1_1= IBM_J2EE_NS+"/"+WEBSERVICES_1_1_XSD; // NOI18N
@@ -455,34 +537,148 @@
     private static final String WEBSERVICES_1_2= JAVAEE_NS+"/"+WEBSERVICES_1_2_XSD; // NOI18N
     public static final String WEBSERVICES_1_2_ID = "SCHEMA:"+WEBSERVICES_1_2; // NOI18N
 
+    private static final String WEBSERVICES_1_3_XSD="javaee_web_services_1_3.xsd"; // NOI18N
+    private static final String WEBSERVICES_1_3= JAVAEE_NS+"/"+WEBSERVICES_1_3_XSD; // NOI18N
+    public static final String WEBSERVICES_1_3_ID = "SCHEMA:"+WEBSERVICES_1_3; // NOI18N
+    
+    private static final String WEBSERVICES_1_4_XSD="javaee_web_services_1_4.xsd"; // NOI18N
+    private static final String WEBSERVICES_1_4= NEW_JAVAEE_NS+"/"+WEBSERVICES_1_4_XSD; // NOI18N
+    public static final String WEBSERVICES_1_4_ID = "SCHEMA:"+WEBSERVICES_1_4; // NOI18N
+    
+    private static final String WEBSERVICES_2_0_XSD="jakartaee_web_services_2_0.xsd"; // NOI18N
+    private static final String WEBSERVICES_2_0= JAKARTAEE_NS+"/"+WEBSERVICES_2_0_XSD; // NOI18N
+    public static final String WEBSERVICES_2_0_ID = "SCHEMA:"+WEBSERVICES_2_0; // NOI18N
+
     private static final String WEBSERVICES_CLIENT_1_2_XSD="javaee_web_services_client_1_2.xsd"; // NOI18N
     private static final String WEBSERVICES_CLIENT_1_2= JAVAEE_NS+"/"+WEBSERVICES_CLIENT_1_2_XSD; // NOI18N
     public static final String WEBSERVICES_CLIENT_1_2_ID = "SCHEMA:"+WEBSERVICES_CLIENT_1_2; // NOI18N
 
+    private static final String WEBSERVICES_CLIENT_1_3_XSD="javaee_web_services_client_1_3.xsd"; // NOI18N
+    private static final String WEBSERVICES_CLIENT_1_3= JAVAEE_NS+"/"+WEBSERVICES_CLIENT_1_3_XSD; // NOI18N
+    public static final String WEBSERVICES_CLIENT_1_3_ID = "SCHEMA:"+WEBSERVICES_CLIENT_1_3; // NOI18N
+    
+    private static final String WEBSERVICES_CLIENT_1_4_XSD="javaee_web_services_client_1_4.xsd"; // NOI18N
+    private static final String WEBSERVICES_CLIENT_1_4= NEW_JAVAEE_NS+"/"+WEBSERVICES_CLIENT_1_4_XSD; // NOI18N
+    public static final String WEBSERVICES_CLIENT_1_4_ID = "SCHEMA:"+WEBSERVICES_CLIENT_1_4; // NOI18N
+    
+    private static final String WEBSERVICES_CLIENT_2_0_XSD="jakartaee_web_services_client_2_0.xsd"; // NOI18N
+    private static final String WEBSERVICES_CLIENT_2_0= JAKARTAEE_NS+"/"+WEBSERVICES_CLIENT_2_0_XSD; // NOI18N
+    public static final String WEBSERVICES_CLIENT_2_0_ID = "SCHEMA:"+WEBSERVICES_CLIENT_2_0; // NOI18N
+
     private static final String WEBAPP_TAG="web-app"; //NOI18N
     private static final String WEBAPP_2_5_XSD="web-app_2_5.xsd"; // NOI18N
     private static final String WEBAPP_2_5 = JAVAEE_NS+"/"+WEBAPP_2_5_XSD; // NOI18N
     public static final String WEBAPP_2_5_ID = "SCHEMA:"+WEBAPP_2_5; // NOI18N
 
     private static final String WEBAPP_3_0_XSD="web-app_3_0.xsd"; // NOI18N
-
-    private static final String WEBFRAGMENT_3_0_XSD="web-fragment_3_0.xsd"; // NOI18N
+    private static final String WEBAPP_3_0 = JAVAEE_NS+"/"+WEBAPP_3_0_XSD; // NOI18N
+    public static final String WEBAPP_3_0_ID = "SCHEMA:"+WEBAPP_3_0; // NOI18N
 
     private static final String WEBCOMMON_3_0_XSD="web-common_3_0.xsd"; // NOI18N
+    private static final String WEBCOMMON_3_0 = JAVAEE_NS+"/"+WEBCOMMON_3_0_XSD; // NOI18N
+    public static final String WEBCOMMON_3_0_ID = "SCHEMA:"+WEBCOMMON_3_0; // NOI18N
+    
+    private static final String WEBFRAGMENT_3_0_XSD="web-fragment_3_0.xsd"; // NOI18N
+    private static final String WEBFRAGMENT_3_0 = JAVAEE_NS+"/"+WEBFRAGMENT_3_0_XSD; // NOI18N
+    public static final String WEBFRAGMENT_3_0_ID = "SCHEMA:"+WEBFRAGMENT_3_0; // NOI18N
+
+    private static final String WEBAPP_3_1_XSD="web-app_3_1.xsd"; // NOI18N
+    private static final String WEBAPP_3_1 = NEW_JAVAEE_NS+"/"+WEBAPP_3_1_XSD; // NOI18N
+    public static final String WEBAPP_3_1_ID = "SCHEMA:"+WEBAPP_3_1; // NOI18N
+
+    private static final String WEBCOMMON_3_1_XSD="web-common_3_1.xsd"; // NOI18N
+    private static final String WEBCOMMON_3_1 = NEW_JAVAEE_NS+"/"+WEBCOMMON_3_1_XSD; // NOI18N
+    public static final String WEBCOMMON_3_1_ID = "SCHEMA:"+WEBCOMMON_3_1; // NOI18N
+    
+    private static final String WEBFRAGMENT_3_1_XSD="web-fragment_3_1.xsd"; // NOI18N
+    private static final String WEBFRAGMENT_3_1 = NEW_JAVAEE_NS+"/"+WEBFRAGMENT_3_1_XSD; // NOI18N
+    public static final String WEBFRAGMENT_3_1_ID = "SCHEMA:"+WEBFRAGMENT_3_1; // NOI18N
+    
+    private static final String WEBAPP_4_0_XSD="web-app_4_0.xsd"; // NOI18N
+    private static final String WEBAPP_4_0 = NEW_JAVAEE_NS+"/"+WEBAPP_4_0_XSD; // NOI18N
+    public static final String WEBAPP_4_0_ID = "SCHEMA:"+WEBAPP_4_0; // NOI18N
+    
+    private static final String WEBCOMMON_4_0_XSD="web-common_4_0.xsd"; // NOI18N
+    private static final String WEBCOMMON_4_0 = NEW_JAVAEE_NS+"/"+WEBCOMMON_4_0_XSD; // NOI18N
+    public static final String WEBCOMMON_4_0_ID = "SCHEMA:"+WEBCOMMON_4_0; // NOI18N
+    
+    private static final String WEBFRAGMENT_4_0_XSD="web-fragment_4_0.xsd"; // NOI18N
+    private static final String WEBFRAGMENT_4_0 = NEW_JAVAEE_NS+"/"+WEBFRAGMENT_4_0_XSD; // NOI18N
+    public static final String WEBFRAGMENT_4_0_ID = "SCHEMA:"+WEBFRAGMENT_4_0; // NOI18N
+    
+    private static final String WEBAPP_5_0_XSD="web-app_5_0.xsd"; // NOI18N
+    private static final String WEBAPP_5_0 = JAKARTAEE_NS+"/"+WEBAPP_5_0_XSD; // NOI18N
+    public static final String WEBAPP_5_0_ID = "SCHEMA:"+WEBAPP_5_0; // NOI18N
+    
+    private static final String WEBCOMMON_5_0_XSD="web-common_5_0.xsd"; // NOI18N
+    private static final String WEBCOMMON_5_0 = JAKARTAEE_NS+"/"+WEBCOMMON_5_0_XSD; // NOI18N
+    public static final String WEBCOMMON_5_0_ID = "SCHEMA:"+WEBCOMMON_5_0; // NOI18N
+    
+    private static final String WEBFRAGMENT_5_0_XSD="web-fragment_5_0.xsd"; // NOI18N
+    private static final String WEBFRAGMENT_5_0 = JAKARTAEE_NS+"/"+WEBFRAGMENT_5_0_XSD; // NOI18N
+    public static final String WEBFRAGMENT_5_0_ID = "SCHEMA:"+WEBFRAGMENT_5_0; // NOI18N
+
+    private static final String WEBAPP_6_0_XSD="web-app_6_0.xsd"; // NOI18N
+    private static final String WEBAPP_6_0 = JAKARTAEE_NS+"/"+WEBAPP_6_0_XSD; // NOI18N
+    public static final String WEBAPP_6_0_ID = "SCHEMA:"+WEBAPP_6_0; // NOI18N
+    
+    private static final String WEBCOMMON_6_0_XSD="web-common_6_0.xsd"; // NOI18N
+    private static final String WEBCOMMON_6_0 = JAKARTAEE_NS+"/"+WEBCOMMON_6_0_XSD; // NOI18N
+    public static final String WEBCOMMON_6_0_ID = "SCHEMA:"+WEBCOMMON_6_0; // NOI18N
+    
+    private static final String WEBFRAGMENT_6_0_XSD="web-fragment_6_0.xsd"; // NOI18N
+    private static final String WEBFRAGMENT_6_0 = JAKARTAEE_NS+"/"+WEBFRAGMENT_6_0_XSD; // NOI18N
+    public static final String WEBFRAGMENT_6_0_ID = "SCHEMA:"+WEBFRAGMENT_6_0; // NOI18N
 
     public static final String PERSISTENCE_NS = "http://java.sun.com/xml/ns/persistence"; // NOI18N
+    public static final String NEW_PERSISTENCE_NS = "http://xmlns.jcp.org/xml/ns/persistence"; // NOI18N
+    public static final String JAKARTA_PERSISTENCE_NS = "https://jakarta.ee/xml/ns/persistence"; // NOI18N
+    
     private static final String PERSISTENCE_TAG="persistence"; //NOI18N
     private static final String PERSISTENCE_XSD="persistence_1_0.xsd"; // NOI18N
     private static final String PERSISTENCE = PERSISTENCE_NS+"/"+PERSISTENCE_XSD; // NOI18N
     public static final String PERSISTENCE_ID = "SCHEMA:"+PERSISTENCE; // NOI18N    
     
+    private static final String PERSISTENCE_2_0_XSD="persistence_2_0.xsd"; // NOI18N
+    private static final String PERSISTENCE_2_0 = PERSISTENCE_NS+"/"+PERSISTENCE_2_0_XSD; // NOI18N
+    public static final String PERSISTENCE_2_0_ID = "SCHEMA:"+PERSISTENCE_2_0; // NOI18N 
+    
+    private static final String PERSISTENCE_2_1_XSD="persistence_2_1.xsd"; // NOI18N
+    private static final String PERSISTENCE_2_1 = NEW_PERSISTENCE_NS+"/"+PERSISTENCE_2_1_XSD; // NOI18N
+    public static final String PERSISTENCE_2_1_ID = "SCHEMA:"+PERSISTENCE_2_1; // NOI18N 
+    
+    private static final String PERSISTENCE_2_2_XSD="persistence_2_2.xsd"; // NOI18N
+    private static final String PERSISTENCE_2_2 = NEW_PERSISTENCE_NS+"/"+PERSISTENCE_2_2_XSD; // NOI18N
+    public static final String PERSISTENCE_2_2_ID = "SCHEMA:"+PERSISTENCE_2_2; // NOI18N 
+    
+    private static final String PERSISTENCE_3_0_XSD="persistence_3_0.xsd"; // NOI18N
+    private static final String PERSISTENCE_3_0 = JAKARTA_PERSISTENCE_NS+"/"+PERSISTENCE_3_0_XSD; // NOI18N
+    public static final String PERSISTENCE_3_0_ID = "SCHEMA:"+PERSISTENCE_3_0; // NOI18N 
+    
     public static final String PERSISTENCEORM_NS = "http://java.sun.com/xml/ns/persistence/orm"; // NOI18N
+    public static final String NEW_PERSISTENCEORM_NS = "http://xmlns.jcp.org/xml/ns/persistence/orm"; // NOI18N
+    public static final String JAKARTA_PERSISTENCEORM_NS = "https://jakarta.ee/xml/ns/persistence/orm"; // NOI18N
+    
     private static final String PERSISTENCEORM_TAG="entity-mappings"; //NOI18N
     private static final String PERSISTENCEORM_XSD="orm_1_0.xsd"; // NOI18N
     private static final String PERSISTENCEORM = PERSISTENCE_NS+"/"+PERSISTENCEORM_XSD; // NOI18N  yes not ORM NS!!!
     public static final String PERSISTENCEORM_ID = "SCHEMA:"+PERSISTENCEORM; // NOI18N
 
+    private static final String PERSISTENCEORM_2_0_XSD="orm_2_0.xsd"; // NOI18N
+    private static final String PERSISTENCEORM_2_0 = PERSISTENCE_NS+"/"+PERSISTENCEORM_2_0_XSD; // NOI18N  yes not ORM NS!!!
+    public static final String PERSISTENCEORM_2_0_ID = "SCHEMA:"+PERSISTENCEORM_2_0; // NOI18N
 
+    private static final String PERSISTENCEORM_2_1_XSD="orm_2_1.xsd"; // NOI18N
+    private static final String PERSISTENCEORM_2_1 = NEW_PERSISTENCEORM_NS+"/"+PERSISTENCEORM_2_1_XSD; // NOI18N  yes not ORM NS!!!
+    public static final String PERSISTENCEORM_2_1_ID = "SCHEMA:"+PERSISTENCEORM_2_1; // NOI18N
+    
+    private static final String PERSISTENCEORM_2_2_XSD="orm_2_2.xsd"; // NOI18N
+    private static final String PERSISTENCEORM_2_2 = NEW_PERSISTENCEORM_NS+"/"+PERSISTENCEORM_2_2_XSD; // NOI18N  yes not ORM NS!!!
+    public static final String PERSISTENCEORM_2_2_ID = "SCHEMA:"+PERSISTENCEORM_2_2; // NOI18N
+    
+    private static final String PERSISTENCEORM_3_0_XSD="orm_3_0.xsd"; // NOI18N
+    private static final String PERSISTENCEORM_3_0 = JAKARTA_PERSISTENCEORM_NS+"/"+PERSISTENCEORM_3_0_XSD; // NOI18N  yes not ORM NS!!!
+    public static final String PERSISTENCEORM_3_0_ID = "SCHEMA:"+PERSISTENCEORM_3_0; // NOI18N
     
     
     public String getFullURLFromSystemId(String systemId){
@@ -521,69 +717,132 @@
             }catch(Exception e){
                 Logger.getLogger("payara-jakartaee").log(Level.INFO, file.getAbsolutePath(), e); // NOI18N
             }
-
-            
         }
-        if (systemId!=null && systemId.endsWith(EJBJAR_2_1_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+EJBJAR_2_1_XSD);
+        
+        if (systemId != null) {
+            if (systemId.endsWith(EJBJAR_2_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + EJBJAR_2_1_XSD);
+            } else if (systemId.endsWith(EJBJAR_3_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + EJBJAR_3_0_XSD);
+            } else if (systemId.endsWith(EJBJAR_3_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + EJBJAR_3_1_XSD);
+            } else if (systemId.endsWith(EJBJAR_3_2_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + EJBJAR_3_2_XSD);
+            } else if (systemId.endsWith(EJBJAR_4_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + EJBJAR_4_0_XSD);
+            } // application & application-client
+            else if (systemId.endsWith(APP_1_4_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APP_1_4_XSD);
+            } else if (systemId.endsWith(APPCLIENT_1_4_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APPCLIENT_1_4_XSD);
+            } else if (systemId.endsWith(APP_5_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APP_5_XSD);
+            } else if (systemId.endsWith(APPCLIENT_5_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APPCLIENT_5_XSD);
+            } else if (systemId.endsWith(APP_6_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APP_6_XSD);
+            } else if (systemId.endsWith(APPCLIENT_6_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APPCLIENT_6_XSD);
+            } else if (systemId.endsWith(APP_7_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APP_7_XSD);
+            } else if (systemId.endsWith(APPCLIENT_7_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APPCLIENT_7_XSD);
+            } else if (systemId.endsWith(APP_8_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APP_8_XSD);
+            } else if (systemId.endsWith(APPCLIENT_8_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APPCLIENT_8_XSD);
+            } else if (systemId.endsWith(APP_9_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APP_9_XSD);
+            } else if (systemId.endsWith(APPCLIENT_9_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APPCLIENT_9_XSD);
+            } else if (systemId.endsWith(APP_10_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APP_10_XSD);
+            } else if (systemId.endsWith(APPCLIENT_10_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + APPCLIENT_10_XSD);
+            } //web-app, web-common & web-fragment
+            else if (systemId.endsWith(WEBAPP_2_5_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBAPP_2_5_XSD);
+            } else if (systemId.endsWith(WEBAPP_3_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBAPP_3_0_XSD);
+            } else if (systemId.endsWith(WEBFRAGMENT_3_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBFRAGMENT_3_0_XSD);
+            } else if (systemId.endsWith(WEBCOMMON_3_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBCOMMON_3_0_XSD);
+            } else if (systemId.endsWith(WEBAPP_3_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBAPP_3_1_XSD);
+            } else if (systemId.endsWith(WEBFRAGMENT_3_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBFRAGMENT_3_1_XSD);
+            } else if (systemId.endsWith(WEBCOMMON_3_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBCOMMON_3_1_XSD);
+            } else if (systemId.endsWith(WEBAPP_4_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBAPP_4_0_XSD);
+            } else if (systemId.endsWith(WEBFRAGMENT_4_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBFRAGMENT_4_0_XSD);
+            } else if (systemId.endsWith(WEBCOMMON_4_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBCOMMON_4_0_XSD);
+            } else if (systemId.endsWith(WEBAPP_5_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBAPP_5_0_XSD);
+            } else if (systemId.endsWith(WEBFRAGMENT_5_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBFRAGMENT_5_0_XSD);
+            } else if (systemId.endsWith(WEBCOMMON_5_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBCOMMON_5_0_XSD);
+            } else if (systemId.endsWith(WEBAPP_6_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBAPP_6_0_XSD);
+            } else if (systemId.endsWith(WEBFRAGMENT_6_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBFRAGMENT_6_0_XSD);
+            } else if (systemId.endsWith(WEBCOMMON_6_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBCOMMON_6_0_XSD);
+            } //persistence & orm
+            else if (systemId.endsWith(PERSISTENCEORM_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCEORM_XSD);
+            } else if (systemId.endsWith(PERSISTENCE_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCE_XSD);
+            } else if (systemId.endsWith(PERSISTENCEORM_2_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCEORM_2_0_XSD);
+            } else if (systemId.endsWith(PERSISTENCE_2_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCE_2_0_XSD);
+            } else if (systemId.endsWith(PERSISTENCEORM_2_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCEORM_2_1_XSD);
+            } else if (systemId.endsWith(PERSISTENCE_2_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCE_2_1_XSD);
+            } else if (systemId.endsWith(PERSISTENCEORM_2_2_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCEORM_2_2_XSD);
+            } else if (systemId.endsWith(PERSISTENCE_2_2_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCE_2_2_XSD);
+            } else if (systemId.endsWith(PERSISTENCEORM_3_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCEORM_3_0_XSD);
+            } else if (systemId.endsWith(PERSISTENCE_3_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + PERSISTENCE_3_0_XSD);
+            } //webservice & webservice-client
+            else if (systemId.endsWith(WEBSERVICES_1_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_1_1_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_1_2_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_1_2_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_1_3_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_1_3_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_1_4_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_1_4_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_2_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_2_0_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_CLIENT_1_1_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_CLIENT_1_1_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_CLIENT_1_2_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_CLIENT_1_2_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_CLIENT_1_3_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_CLIENT_1_3_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_CLIENT_1_4_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_CLIENT_1_4_XSD);
+            } else if (systemId.endsWith(WEBSERVICES_CLIENT_2_0_XSD)) {
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + WEBSERVICES_CLIENT_2_0_XSD);
+            } else if (systemId.endsWith("jdbc-data-source.xsd")) { //NOI18N
+                return new org.xml.sax.InputSource(SCHEMASLOCATION + "jdbc-data-source.xsd"); //NOI18N
+            } else if (XML_XSD.equals(systemId)) {
+                return new org.xml.sax.InputSource(new java.io.StringReader(XML_XSD_DEF));
+            }
         }
-        else  if (systemId!=null && systemId.endsWith(EJBJAR_3_0_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+EJBJAR_3_0_XSD);
-        }            
-        else if (systemId!=null && systemId.endsWith(APP_1_4_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+APP_1_4_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(APPCLIENT_1_4_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+APPCLIENT_1_4_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(WEBAPP_2_5_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBAPP_2_5_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(WEBAPP_3_0_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBAPP_3_0_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(WEBFRAGMENT_3_0_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBFRAGMENT_3_0_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(WEBCOMMON_3_0_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBCOMMON_3_0_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(APP_5_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+APP_5_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(APPCLIENT_5_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+APPCLIENT_5_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(PERSISTENCEORM_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+PERSISTENCEORM_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(PERSISTENCE_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+PERSISTENCE_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(WEBSERVICES_1_1_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBSERVICES_1_1_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(WEBSERVICES_1_2_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBSERVICES_1_2_XSD);
-        } else if (XML_XSD.equals(systemId)) {
-            return new org.xml.sax.InputSource(new java.io.StringReader(XML_XSD_DEF));
-        }
-        else if (systemId!=null && systemId.endsWith(WEBSERVICES_CLIENT_1_1_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBSERVICES_CLIENT_1_1_XSD);
-        }
-        else if (systemId!=null && systemId.endsWith(WEBSERVICES_CLIENT_1_2_XSD)) {
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+WEBSERVICES_CLIENT_1_2_XSD);
-        } else if (XML_XSD.equals(systemId)) {
-            return new org.xml.sax.InputSource(new java.io.StringReader(XML_XSD_DEF));
-        } else if (systemId != null && systemId.endsWith("jdbc-data-source.xsd")) { //NOI18N
-            return new org.xml.sax.InputSource(SCHEMASLOCATION+"jdbc-data-source.xsd"); //NOI18N
-        } else {
-            return null;
-        }
+        return null;
     }
     
-    
-    
     @Override
     public Enumeration enabled(GrammarEnvironment ctx) {
         if (ctx.getFileObject() == null) return null;
@@ -595,98 +854,16 @@
             } else if (next.getNodeType() == Node.ELEMENT_NODE) {
                 Element element = (Element) next;
                 String tag = element.getTagName();
-                if (EJB_JAR_TAG.equals(tag)) {  // NOI18N
-                    String xmlns = element.getAttribute(XMLNS_ATTR);
-                    if (xmlns!=null && J2EE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-                    else  if (xmlns!=null && JAVAEE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-                }
-                
-                if (APP_TAG.equals(tag)) {  // NOI18N
-                    String xmlns = element.getAttribute(XMLNS_ATTR);
-                    if (xmlns!=null && J2EE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-                    else   if (xmlns!=null && JAVAEE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-                }
-                if (WEBAPP_TAG.equals(tag)) {  // NOI18N
-                    String xmlns = element.getAttribute(XMLNS_ATTR);
-                    if (xmlns!=null && JAVAEE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
+                String xmlns = element.getAttribute(XMLNS_ATTR);
+                if (xmlns != null && (EJB_JAR_TAG.equals(tag) || APP_TAG.equals(tag)
+                        || WEBAPP_TAG.equals(tag) || APPCLIENT_TAG.equals(tag)
+                        || PERSISTENCEORM_TAG.equals(tag) || PERSISTENCE_TAG.equals(tag)
+                        || WEBSERVICES_TAG.equals(tag))) {  // NOI18N
 
-                }
-                if (APPCLIENT_TAG.equals(tag)) {  // NOI18N
-                    String xmlns = element.getAttribute(XMLNS_ATTR);
-                    if (xmlns!=null && J2EE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-                    else   if (xmlns!=null && JAVAEE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-                }                
-                if (PERSISTENCEORM_TAG.equals(tag)) {  // NOI18N
-                    String xmlns = element.getAttribute(XMLNS_ATTR);
-                    if (xmlns!=null && PERSISTENCEORM_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-
-                }
-                
-                if (PERSISTENCE_TAG.equals(tag)) {  // NOI18N
-                    String xmlns = element.getAttribute(XMLNS_ATTR);
-                    if (xmlns!=null && PERSISTENCE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-
-                }
-                
-                if (WEBSERVICES_TAG.equals(tag)) {  // NOI18N
-                    String xmlns = element.getAttribute(XMLNS_ATTR);
-                    if (xmlns!=null && J2EE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    } else   if (xmlns!=null && JAVAEE_NS.equals(xmlns)) {
-                        Vector<Node> v = new Vector<Node>();
-                        v.add(next);
-                        return v.elements();
-                        //   return org.openide.util.Enumerations.singleton(next);
-                    }
-                    else   if (xmlns!=null && IBM_J2EE_NS.equals(xmlns)) {
+                    if (J2EE_NS.equals(xmlns)
+                            || JAVAEE_NS.equals(xmlns)
+                            || NEW_JAVAEE_NS.equals(xmlns)
+                            || JAKARTAEE_NS.equals(xmlns)) {  // NOI18N
                         Vector<Node> v = new Vector<Node>();
                         v.add(next);
                         return v.elements();
@@ -695,7 +872,6 @@
                 }
             }
         }
-        
         return null;
     }
     
@@ -720,47 +896,144 @@
             if (resolver != null) {
                 try {
                     
-                    
                     if (ctx.getFileObject() == null) {
                         return null;
                     }
                     InputSource inputSource = null;                    
                     
                     String mimeType = ctx.getFileObject().getMIMEType();
-                    if (mimeType==null){
+                    if (mimeType == null){
                         return null;
                     }
-                    if (mimeType.equals("text/x-dd-ejbjar3.0")){// NOI18N
+                    switch (mimeType) {
+                        case "text/x-dd-ejbjar4.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(EJBJAR_4_0_ID, "");
+                            break;
+                        case "text/x-dd-ejbjar3.2":  // NOI18N
+                            inputSource = resolver.resolveEntity(EJBJAR_3_2_ID, "");
+                            break;
+                        case "text/x-dd-ejbjar3.1":  // NOI18N
+                            inputSource = resolver.resolveEntity(EJBJAR_3_1_ID, "");
+                            break;
+                        case "text/x-dd-ejbjar3.0":  // NOI18N
                         inputSource = resolver.resolveEntity(EJBJAR_3_0_ID, "");
-                    } else if (mimeType.equals("text/x-dd-ejbjar2.1")) {// NOI18N
+                            break;
+                        case "text/x-dd-ejbjar2.1":  // NOI18N
                         inputSource = resolver.resolveEntity(EJBJAR_2_1_ID, "");
-                    } else if (mimeType.equals("text/x-dd-application5.0")) {// NOI18N
+                            break;
+                        case "text/x-dd-application9.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APP_9_ID, "");
+                            break;
+                        case "text/x-dd-application8.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APP_8_ID, "");
+                            break;
+                        case "text/x-dd-application7.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APP_7_ID, "");
+                            break;
+                        case "text/x-dd-application6.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APP_6_ID, "");
+                            break;
+                        case "text/x-dd-application5.0":  // NOI18N
                         inputSource = resolver.resolveEntity(APP_5_ID, "");
-                    }else if (mimeType.equals("text/x-dd-application1.4")) {// NOI18N
+                            break;
+                        case "text/x-dd-application1.4":  // NOI18N
                         inputSource = resolver.resolveEntity(APP_1_4_ID, "");
-                    }else if (mimeType.equals("text/x-dd-client5.0")) {// NOI18N
+                            break;
+                        case "text/x-dd-client9.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APPCLIENT_9_ID, "");
+                            break;
+                        case "text/x-dd-client8.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APPCLIENT_8_ID, "");
+                            break;
+                        case "text/x-dd-client7.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APPCLIENT_7_ID, "");
+                            break;
+                        case "text/x-dd-client6.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(APPCLIENT_6_ID, "");
+                            break;
+                        case "text/x-dd-client5.0":  // NOI18N
                         inputSource = resolver.resolveEntity(APPCLIENT_5_ID, "");
-                    }else if (mimeType.equals("text/x-dd-client1.4")) {// NOI18N
+                            break;
+                        case "text/x-dd-client1.4":  // NOI18N
                         inputSource = resolver.resolveEntity(APPCLIENT_1_4_ID, "");
-                    }else if (mimeType.equals("text/x-persistence1.0")) {// NOI18N
+                            break;
+                        case "text/x-dd-servlet6.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBAPP_6_0_ID, "");
+                            break;
+                        case "text/x-dd-servlet5.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBAPP_5_0_ID, "");
+                            break;
+                        case "text/x-dd-servlet4.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBAPP_4_0_ID, "");
+                            break;
+                        case "text/x-dd-servlet3.1":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBAPP_3_1_ID, "");
+                            break;
+                        case "text/x-dd-servlet3.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBAPP_3_0_ID, "");
+                            break;
+                        case "text/x-dd-servlet2.5":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBAPP_2_5_ID, "");
+                            break;
+                        case "text/x-dd-servlet-fragment6.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBFRAGMENT_6_0_ID, "");
+                            break;
+                        case "text/x-dd-servlet-fragment5.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBFRAGMENT_5_0_ID, "");
+                            break;
+                        case "text/x-dd-servlet-fragment4.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBFRAGMENT_4_0_ID, "");
+                            break;
+                        case "text/x-dd-servlet-fragment3.1":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBFRAGMENT_3_1_ID, "");
+                            break;
+                        case "text/x-dd-servlet-fragment3.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(WEBFRAGMENT_3_0_ID, "");
+                            break;
+                        case "text/x-persistence3.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCE_3_0_ID, "");
+                            break;
+                        case "text/x-persistence2.2":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCE_2_2_ID, "");
+                            break;
+                        case "text/x-persistence2.1":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCE_2_1_ID, "");
+                            break;
+                        case "text/x-persistence2.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCE_2_0_ID, "");
+                            break;
+                        case "text/x-persistence1.0":  // NOI18N
                         inputSource = resolver.resolveEntity(PERSISTENCE_ID, "");
-                    }else if (mimeType.equals("text/x-orm1.0")) {// NOI18N
+                            break;
+                        case "text/x-orm3.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCEORM_3_0_ID, "");
+                            break;
+                        case "text/x-orm2.2":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCEORM_2_2_ID, "");
+                            break;
+                        case "text/x-orm2.1":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCEORM_2_1_ID, "");
+                            break;
+                        case "text/x-orm2.0":  // NOI18N
+                            inputSource = resolver.resolveEntity(PERSISTENCEORM_2_0_ID, "");
+                            break;
+                        case "text/x-orm1.0":  // NOI18N
                         inputSource = resolver.resolveEntity(PERSISTENCEORM_ID, "");
+                            break;
+                        default:
+                            break;
                     }
 
-                    if (inputSource!=null) {
+                    if (inputSource != null) {
                         return DTDUtil.parseDTD(true, inputSource);
                     }
                     
-                    
                     if (is.getSystemId().endsWith("webservices.xml") ) {  // NOI18N
                         // System.out.println("webservices tag");
                         inputSource = resolver.resolveEntity(WEBSERVICES_1_1_ID, "");
                         if (inputSource!=null) {
                             return DTDUtil.parseDTD(true, inputSource);
                         }
-                        
-                        
                     }
                     
                 } catch(SAXException e) {
diff --git a/enterprise/payara.tooling/nbproject/org-netbeans-modules-payara-tooling.sig b/enterprise/payara.tooling/nbproject/org-netbeans-modules-payara-tooling.sig
index 29e4f93..cde53fd 100644
--- a/enterprise/payara.tooling/nbproject/org-netbeans-modules-payara-tooling.sig
+++ b/enterprise/payara.tooling/nbproject/org-netbeans-modules-payara-tooling.sig
@@ -1860,6 +1860,8 @@
 fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile v9_0_0_web
 fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile v9_1_0
 fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile v9_1_0_web
+fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile v10_0_0
+fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile v10_0_0_web
 innr public final static !enum Type
 innr public final static !enum Version
 meth public java.lang.String toString()
@@ -1893,6 +1895,7 @@
 fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile$Version v8_0_0
 fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile$Version v9_0_0
 fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile$Version v9_1_0
+fld public final static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile$Version v10_0_0
 meth public java.lang.String toString()
 meth public static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile$Version valueOf(java.lang.String)
 meth public static org.netbeans.modules.payara.tooling.server.config.JavaEEProfile$Version[] values()
diff --git a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/JavaEEProfile.java b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/JavaEEProfile.java
index b84d952..c264898 100644
--- a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/JavaEEProfile.java
+++ b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/JavaEEProfile.java
@@ -78,7 +78,13 @@
     v9_1_0_web(Version.v9_1_0, Type.WEB, "9.1.0-web"),
 
     /** JakartaEE 9.1 full profile. */
-    v9_1_0(Version.v9_1_0, Type.FULL, "9.1.0");
+    v9_1_0(Version.v9_1_0, Type.FULL, "9.1.0"),
+    
+    /** JakartaEE 10 web profile. */
+    v10_0_0_web(Version.v10_0_0, Type.WEB, "10.0.0-web"),
+
+    /** JakartaEE 10 full profile. */
+    v10_0_0(Version.v10_0_0, Type.FULL, "10.0.0");
 
     ////////////////////////////////////////////////////////////////////////////
     // Inner enums                                                            //
@@ -136,7 +142,9 @@
         /** JakartaEE 9.0. */
         v9_0_0("9.0.0"),
         /** JakartaEE 9.1. */
-        v9_1_0("9.1.0");
+        v9_1_0("9.1.0"),
+        /** JakartaEE 10.0 */
+        v10_0_0("10.0.0");
 
         /** JavaEE profile type name. */
         private final String name;
diff --git a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/PayaraV6.xml b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/PayaraV6.xml
index 28edae4..b698f53 100644
--- a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/PayaraV6.xml
+++ b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/config/PayaraV6.xml
@@ -32,11 +32,13 @@
         <platform version="16"/>
         <platform version="17"/>
     </java>
-    <javaee version="9.1.0">
+    <javaee version="10.0.0">
         <profile version="9.0.0" type="web"/>
         <profile version="9.0.0" type="full" check="full"/>
         <profile version="9.1.0" type="web"/>
         <profile version="9.1.0" type="full" check="full"/>
+        <profile version="10.0.0" type="web"/>
+        <profile version="10.0.0" type="full" check="full"/>
         <module type="war"/>
         <module type="car" check="full"/>
         <module type="ear" check="full"/>
@@ -86,7 +88,7 @@
             </fileset>
         </classpath>
         <javadocs>
-            <link url="https://repo1.maven.org/maven2/org/glassfish/jersey/jersey-documentation/3.0.3/jersey-documentation-3.0.3-docbook.zip"/>
+            <link url="https://repo1.maven.org/maven2/org/glassfish/jersey/jersey-documentation/3.1.0/jersey-documentation-3.1.0-docbook.zip"/>
         </javadocs>
         <sources>
         </sources>
diff --git a/enterprise/servletjspapi/build.xml b/enterprise/servletjspapi/build.xml
index dae0036..f80622a 100755
--- a/enterprise/servletjspapi/build.xml
+++ b/enterprise/servletjspapi/build.xml
@@ -70,6 +70,7 @@
                     <include name="javaee_7.xsd"/>
                     <include name="javaee_8.xsd"/>
                     <include name="jakartaee_9.xsd"/>
+                    <include name="jakartaee_10.xsd"/>
                     <include name="javaee_web_services_1_2.xsd"/>
                     <include name="javaee_web_services_1_3.xsd"/>
                     <include name="javaee_web_services_1_4.xsd"/>
@@ -83,24 +84,29 @@
                     <include name="jsp_2_2.xsd"/>
                     <include name="jsp_2_3.xsd"/>
                     <include name="jsp_3_0.xsd"/>
+                    <include name="jsp_3_1.xsd"/>
                     <include name="web-app_2_4.xsd"/>
                     <include name="web-app_2_5.xsd"/>
                     <include name="web-app_3_0.xsd"/>
                     <include name="web-app_3_1.xsd"/>
                     <include name="web-app_4_0.xsd"/>
                     <include name="web-app_5_0.xsd"/>
+                    <include name="web-app_6_0.xsd"/>
                     <include name="web-common_3_0.xsd"/>
                     <include name="web-common_3_1.xsd"/>
                     <include name="web-common_4_0.xsd"/>
                     <include name="web-common_5_0.xsd"/>
+                    <include name="web-common_6_0.xsd"/>
                     <include name="web-facelettaglibrary_2_0.xsd"/>
                     <include name="web-facelettaglibrary_2_2.xsd"/>
                     <include name="web-facelettaglibrary_2_3.xsd"/>
                     <include name="web-facelettaglibrary_3_0.xsd"/>
+                    <include name="web-facelettaglibrary_4_0.xsd"/>
                     <include name="web-fragment_3_0.xsd"/>
                     <include name="web-fragment_3_1.xsd"/>
                     <include name="web-fragment_4_0.xsd"/>
                     <include name="web-fragment_5_0.xsd"/>
+                    <include name="web-fragment_6_0.xsd"/>
                     <include name="web-jsptaglibrary_2_0.xsd"/>
                     <include name="web-jsptaglibrary_2_1.xsd"/>
                     <include name="web-jsptaglibrary_3_0.xsd"/>
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
index 25a2d71..228cbca 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
@@ -505,14 +505,12 @@
             }
         } else {
             switch (manager.getTomcatVersion()) {
-//                case TOMCAT_110:
-//                    TODO: Add suport for Jakarta EE 10
-//                    profiles.add(Profile.JAKARTA_EE_10_WEB);
-//                    break;
-//                case TOMCAT_101:
-//                    TODO: Add suport for Jakarta EE 10
-//                    profiles.add(Profile.JAKARTA_EE_10_WEB);
-//                    break;
+                case TOMCAT_110:
+                    profiles.add(Profile.JAKARTA_EE_10_WEB);
+                    break;
+                case TOMCAT_101:
+                    profiles.add(Profile.JAKARTA_EE_10_WEB);
+                    break;
                 case TOMCAT_100:
                     profiles.add(Profile.JAKARTA_EE_9_1_WEB);
                     profiles.add(Profile.JAKARTA_EE_9_WEB);
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java
index bac8169..312ccc8 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/util/TomcatProperties.java
@@ -736,11 +736,10 @@
                 } else {
                     String eeDocs;
                     switch (tm.getTomcatVersion()) {
-//                      TODO: Add support for Jakarta EE 10
-//                      case TOMCAT_110:
-//                      case TOMCAT_101:
-//                           eeDocs = "docs/jakartaee10-doc-api.jar";
-//                           break;
+                        case TOMCAT_110:
+                        case TOMCAT_101:
+                           eeDocs = "docs/jakartaee10-doc-api.jar";
+                           break;
                         case TOMCAT_100:
                             eeDocs = "docs/jakartaee9-doc-api.jar";
                             break;
diff --git a/enterprise/web.beans/src/org/netbeans/modules/web/beans/resources/BeansResolver.xml b/enterprise/web.beans/src/org/netbeans/modules/web/beans/resources/BeansResolver.xml
index 28ad589..9ccab43 100644
--- a/enterprise/web.beans/src/org/netbeans/modules/web/beans/resources/BeansResolver.xml
+++ b/enterprise/web.beans/src/org/netbeans/modules/web/beans/resources/BeansResolver.xml
@@ -30,5 +30,13 @@
             </xml-rule>
         </resolver>
     </file>
+    <file>
+        <ext name="xml"/>
+        <resolver mime="text/x-beans+xml">
+            <xml-rule>
+                <element name="beans" ns="https://jakarta.ee/xml/ns/jakartaee"/>
+            </xml-rule>
+        </resolver>
+    </file>
 </MIME-resolver>
 
diff --git a/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java b/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java
index 3e04bb6..de6f707 100644
--- a/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java
+++ b/enterprise/web.beans/src/org/netbeans/modules/web/beans/wizard/BeansXmlIterator.java
@@ -77,7 +77,9 @@
         Profile profile = null;
         if (project != null) {
             J2eeProjectCapabilities cap = J2eeProjectCapabilities.forProject(project);
-            if (cap != null && cap.isCdi30Supported()) {
+            if (cap != null && cap.isCdi40Supported()) {
+                profile = Profile.JAKARTA_EE_10_FULL;
+            } else if (cap != null && cap.isCdi30Supported()) {
                 profile = Profile.JAKARTA_EE_9_FULL;
             } else if (cap != null && cap.isCdi20Supported()) {
                 profile = Profile.JAVA_EE_8_FULL;
diff --git a/enterprise/web.jsf/licenseinfo.xml b/enterprise/web.jsf/licenseinfo.xml
index 4aa3323..998fba1 100644
--- a/enterprise/web.jsf/licenseinfo.xml
+++ b/enterprise/web.jsf/licenseinfo.xml
@@ -99,6 +99,8 @@
     <fileset>
         <file>src/org/netbeans/modules/web/jsf/resources/web-facelettaglibrary_3_0.xsd</file>
         <file>src/org/netbeans/modules/web/jsf/resources/web-facesconfig_3_0.xsd</file>
+        <file>src/org/netbeans/modules/web/jsf/resources/web-facelettaglibrary_4_0.xsd</file>
+        <file>src/org/netbeans/modules/web/jsf/resources/web-facesconfig_4_0.xsd</file>
         <license ref="EPL-v20" />
         <comment type="CATEGORY_B" />
     </fileset>
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFCatalog.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFCatalog.java
index 4c16abc..30637b5 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFCatalog.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFCatalog.java
@@ -47,6 +47,7 @@
     private static final String URL_JSF_2_2="nbres:/org/netbeans/modules/web/jsf/resources/web-facesconfig_2_2.xsd"; // NOI18N
     private static final String URL_JSF_2_3="nbres:/org/netbeans/modules/web/jsf/resources/web-facesconfig_2_3.xsd"; // NOI18N
     private static final String URL_JSF_3_0="nbres:/org/netbeans/modules/web/jsf/resources/web-facesconfig_3_0.xsd"; // NOI18N
+    private static final String URL_JSF_4_0="nbres:/org/netbeans/modules/web/jsf/resources/web-facesconfig_4_0.xsd"; // NOI18N
 
     public static final String JAVAEE_NS = "http://java.sun.com/xml/ns/javaee";  // NOI18N
     public static final String NEW_JAVAEE_NS = "http://xmlns.jcp.org/xml/ns/javaee"; //NOI18N
@@ -57,18 +58,21 @@
     private static final String JSF_2_2_XSD="web-facesconfig_2_2.xsd"; // NOI18N
     private static final String JSF_2_3_XSD="web-facesconfig_2_3.xsd"; // NOI18N
     private static final String JSF_3_0_XSD="web-facesconfig_3_0.xsd"; // NOI18N
+    private static final String JSF_4_0_XSD="web-facesconfig_4_0.xsd"; // NOI18N
     private static final String JSF_1_2=JAVAEE_NS+"/"+JSF_1_2_XSD; // NOI18N
     private static final String JSF_2_0=JAVAEE_NS+"/"+JSF_2_0_XSD; // NOI18N
     private static final String JSF_2_1=JAVAEE_NS+"/"+JSF_2_1_XSD; // NOI18N
     private static final String JSF_2_2=NEW_JAVAEE_NS+"/"+JSF_2_2_XSD; // NOI18N
     private static final String JSF_2_3=NEW_JAVAEE_NS+"/"+JSF_2_3_XSD; // NOI18N
     private static final String JSF_3_0=JAKARTAEE_NS+"/"+JSF_3_0_XSD; // NOI18N
+    private static final String JSF_4_0=JAKARTAEE_NS+"/"+JSF_4_0_XSD; // NOI18N
     public static final String JSF_ID_1_2="SCHEMA:"+JSF_1_2; // NOI18N
     public static final String JSF_ID_2_0="SCHEMA:"+JSF_2_0; // NOI18N
     public static final String JSF_ID_2_1="SCHEMA:"+JSF_2_1; // NOI18N
     public static final String JSF_ID_2_2="SCHEMA:"+JSF_2_2; // NOI18N
     public static final String JSF_ID_2_3="SCHEMA:"+JSF_2_3; // NOI18N
     public static final String JSF_ID_3_0="SCHEMA:"+JSF_3_0; // NOI18N
+    public static final String JSF_ID_4_0="SCHEMA:"+JSF_4_0; // NOI18N
 
 
     // faces-config resources
@@ -79,14 +83,18 @@
     public static final String RES_FACES_CONFIG_2_2 = "faces-config_2_2.xml";
     public static final String RES_FACES_CONFIG_2_3 = "faces-config_2_3.xml";
     public static final String RES_FACES_CONFIG_3_0 = "faces-config_3_0.xml";
+    public static final String RES_FACES_CONFIG_4_0 = "faces-config_4_0.xml";
 
     //facelets
+    private static final String FILE_FACELETS_TAGLIB_SCHEMA_40="web-facelettaglibrary_4_0.xsd"; //NOI18N
     private static final String FILE_FACELETS_TAGLIB_SCHEMA_30="web-facelettaglibrary_3_0.xsd"; //NOI18N
     private static final String FILE_FACELETS_TAGLIB_SCHEMA_23="web-facelettaglibrary_2_3.xsd"; //NOI18N
     private static final String FILE_FACELETS_TAGLIB_SCHEMA_22="web-facelettaglibrary_2_2.xsd"; //NOI18N
     private static final String FILE_FACELETS_TAGLIB_SCHEMA_20="web-facelettaglibrary_2_0.xsd"; //NOI18N
     private static final String FILE_FACELETS_TAGLIB_DTD_10="facelet-taglib_1_0.dtd"; //NOI18N
 
+    private static final String URL_FACELETS_TAGLIB_SCHEMA_40 = JAKARTAEE_NS + "/" + FILE_FACELETS_TAGLIB_SCHEMA_40; // NOI18N
+    private static final String ID_FACELETS_TAGLIB_SCHEMA_40 ="SCHEMA:" + URL_FACELETS_TAGLIB_SCHEMA_40;
     private static final String URL_FACELETS_TAGLIB_SCHEMA_30 = JAKARTAEE_NS + "/" + FILE_FACELETS_TAGLIB_SCHEMA_30; // NOI18N
     private static final String ID_FACELETS_TAGLIB_SCHEMA_30 ="SCHEMA:" + URL_FACELETS_TAGLIB_SCHEMA_30;
     private static final String URL_FACELETS_TAGLIB_SCHEMA_23 = NEW_JAVAEE_NS + "/" + FILE_FACELETS_TAGLIB_SCHEMA_23; // NOI18N
@@ -97,6 +105,7 @@
     private static final String ID_FACELETS_TAGLIB_SCHEMA_20 ="SCHEMA:" + URL_FACELETS_TAGLIB_SCHEMA_20;
     private static final String ID_FACELETS_TAGLIB_DTD_10 = "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"; //NOI18N
 
+    private static final String RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_40 ="nbres:/org/netbeans/modules/web/jsf/resources/" + FILE_FACELETS_TAGLIB_SCHEMA_40; // NOI18N
     private static final String RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_30 ="nbres:/org/netbeans/modules/web/jsf/resources/" + FILE_FACELETS_TAGLIB_SCHEMA_30; // NOI18N
     private static final String RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_23 ="nbres:/org/netbeans/modules/web/jsf/resources/" + FILE_FACELETS_TAGLIB_SCHEMA_23; // NOI18N
     private static final String RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_22 ="nbres:/org/netbeans/modules/web/jsf/resources/" + FILE_FACELETS_TAGLIB_SCHEMA_22; // NOI18N
@@ -113,7 +122,7 @@
      * @return null if cannot proceed, try later.
      */
     public java.util.Iterator getPublicIDs() {
-        List<String> list = new ArrayList<String>();
+        List<String> list = new ArrayList<>();
         list.add(JSF_ID_1_0);
         list.add(JSF_ID_1_1);
         list.add(JSF_ID_1_2);
@@ -122,11 +131,13 @@
         list.add(JSF_ID_2_2);
         list.add(JSF_ID_2_3);
         list.add(JSF_ID_3_0);
+        list.add(JSF_ID_4_0);
         list.add(ID_FACELETS_TAGLIB_DTD_10);
         list.add(ID_FACELETS_TAGLIB_SCHEMA_20);
         list.add(ID_FACELETS_TAGLIB_SCHEMA_22);
         list.add(ID_FACELETS_TAGLIB_SCHEMA_23);
         list.add(ID_FACELETS_TAGLIB_SCHEMA_30);
+        list.add(ID_FACELETS_TAGLIB_SCHEMA_40);
         return list.listIterator();
     }
 
@@ -151,6 +162,8 @@
             return URL_JSF_2_3;
         else if (JSF_ID_3_0.equals(publicId))
             return URL_JSF_3_0;
+        else if (JSF_ID_4_0.equals(publicId))
+            return URL_JSF_4_0;
         else if (ID_FACELETS_TAGLIB_DTD_10.equals(publicId))
             return RESOURCE_URL_FACELETS_TAGLIB_DTD_10;
         else if(ID_FACELETS_TAGLIB_SCHEMA_20.equals(publicId))
@@ -161,6 +174,8 @@
             return RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_23;
         else if(ID_FACELETS_TAGLIB_SCHEMA_30.equals(publicId))
             return RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_30;
+        else if(ID_FACELETS_TAGLIB_SCHEMA_40.equals(publicId))
+            return RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_40;
         else return null;
     }
 
@@ -216,7 +231,7 @@
     }
 
    /**
-     * Resolves schema definition file for taglib descriptor (spec.1_1, 1_2, 2_0, 2_1, 2_2, 2_3, 3_0)
+     * Resolves schema definition file for taglib descriptor (spec.1_1, 1_2, 2_0, 2_1, 2_2, 2_3, 3_0, 4_0)
      * @param publicId publicId for resolved entity (null in our case)
      * @param systemId systemId for resolved entity
      * @return InputSource for publisId,
@@ -240,6 +255,8 @@
             return new org.xml.sax.InputSource(URL_JSF_2_3);
         } else if (JSF_3_0.equals(systemId)) {
             return new org.xml.sax.InputSource(URL_JSF_3_0);
+        } else if (JSF_4_0.equals(systemId)) {
+            return new org.xml.sax.InputSource(URL_JSF_4_0);
         } else if (URL_FACELETS_TAGLIB_SCHEMA_20.equals(systemId)) {
             return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_20);
         } else if (URL_FACELETS_TAGLIB_SCHEMA_22.equals(systemId)) {
@@ -248,6 +265,8 @@
             return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_23);
         } else if (URL_FACELETS_TAGLIB_SCHEMA_30.equals(systemId)) {
             return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_30);
+        } else if (URL_FACELETS_TAGLIB_SCHEMA_40.equals(systemId)) {
+            return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_40);
         } else if (systemId!=null && systemId.endsWith(JSF_1_2_XSD)) {
             return new org.xml.sax.InputSource(URL_JSF_1_2);
         } else if (systemId!=null && systemId.endsWith(JSF_2_0_XSD)) {
@@ -260,6 +279,8 @@
             return new org.xml.sax.InputSource(URL_JSF_2_3);
         } else if (systemId!=null && systemId.endsWith(JSF_3_0_XSD)) {
             return new org.xml.sax.InputSource(URL_JSF_3_0);
+        } else if (systemId!=null && systemId.endsWith(JSF_4_0_XSD)) {
+            return new org.xml.sax.InputSource(URL_JSF_4_0);
         } else if (systemId!=null && systemId.endsWith(FILE_FACELETS_TAGLIB_SCHEMA_20)) {
             return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_20);
         } else if (systemId!=null && systemId.endsWith(FILE_FACELETS_TAGLIB_SCHEMA_22)) {
@@ -268,6 +289,8 @@
             return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_23);
         } else if (systemId!=null && systemId.endsWith(FILE_FACELETS_TAGLIB_SCHEMA_30)) {
             return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_30);
+        } else if (systemId!=null && systemId.endsWith(FILE_FACELETS_TAGLIB_SCHEMA_40)) {
+            return new org.xml.sax.InputSource(RESOURCE_URL_FACELETS_TAGLIB_SCHEMA_40);
         } else {
             return null;
         }
@@ -310,6 +333,8 @@
                 value = JSFVersion.JSF_2_3;
             } else if (JSF_ID_3_0.equals(dt.getPublicId())) {
                 value = JSFVersion.JSF_3_0;
+            }else if (JSF_ID_4_0.equals(dt.getPublicId())) {
+                value = JSFVersion.JSF_4_0;
             }
         }
         return value;
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFFrameworkProvider.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFFrameworkProvider.java
index 58ec177..299bc58 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFFrameworkProvider.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFFrameworkProvider.java
@@ -576,7 +576,9 @@
                 if (ddRoot != null) {
                     Profile profile = webModule.getJ2eeProfile();
                     if (profile != null && profile.isAtLeast(Profile.JAVA_EE_5) && jsfVersion != null) {
-                        if (jsfVersion.isAtLeast(JSFVersion.JSF_3_0)) {
+                        if (jsfVersion.isAtLeast(JSFVersion.JSF_4_0)) {
+                            facesConfigTemplate = JSFCatalog.RES_FACES_CONFIG_4_0;
+                        } else if (jsfVersion.isAtLeast(JSFVersion.JSF_3_0)) {
                             facesConfigTemplate = JSFCatalog.RES_FACES_CONFIG_3_0;
                         } else if (jsfVersion.isAtLeast(JSFVersion.JSF_2_3)) {
                             facesConfigTemplate = JSFCatalog.RES_FACES_CONFIG_2_3;
@@ -746,7 +748,7 @@
             String shortName;
             try {
                 shortName = Deployment.getDefault().getServerInstance(serverInstanceID).getServerID();
-                if ("gfv610ee9".equals(shortName) || "gfv6ee9".equals(shortName) 
+                if ("gfv700ee10".equals(shortName) || "gfv610ee9".equals(shortName) || "gfv6ee9".equals(shortName) 
                         || "gfv510ee8".equals(shortName) || "gfv5ee8".equals(shortName) 
                         || "gfv5".equals(shortName) || "gfv4ee7".equals(shortName) 
                         || "gfv4".equals(shortName) || "gfv3ee6".equals(shortName) 
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFUtils.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFUtils.java
index 063b951..55bc739 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFUtils.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/JSFUtils.java
@@ -68,6 +68,7 @@
     public static final String DEFAULT_JSF_1_2_NAME = "jsf12";    //NOI18N
     public static final String DEFAULT_JSF_2_0_NAME = "jsf20";    //NOI18N
     public static final String DEFAULT_JSF_3_0_NAME = "jsf30";    //NOI18N
+    public static final String DEFAULT_JSF_4_0_NAME = "jsf40";    //NOI18N
 
     // the name of jstl library
     public static final String DEFAULT_JSTL_1_1_NAME = "jstl11";  //NOI18N
@@ -83,6 +84,7 @@
     public static final String JSF_2_2__API_SPECIFIC_CLASS = "javax.faces.flow.Flow"; //NOI18N
     public static final String JSF_2_3__API_SPECIFIC_CLASS = "javax.faces.push.PushContext"; //NOI18N
     public static final String JSF_3_0__API_SPECIFIC_CLASS = "jakarta.faces.push.PushContext"; //NOI18N
+    public static final String JSF_4_0__API_SPECIFIC_CLASS = "jakarta.faces.lifecycle.ClientWindowScoped"; //NOI18N
     public static final String MYFACES_SPECIFIC_CLASS = "org.apache.myfaces.webapp.StartupServletContextListener"; //NOI18N
 
     //constants for web.xml (Java EE)
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/ConfigurationUtils.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/ConfigurationUtils.java
index 2412aeb..955aa0e 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/ConfigurationUtils.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/ConfigurationUtils.java
@@ -103,7 +103,7 @@
             WebApp webApp = DDProvider.getDefault().getDDRoot(deploymentDescriptor);
             // Try to find according the servlet class name. The javax.faces.webapp.FacesServlet is final, so
             // it can not be extended.
-            if (WebApp.VERSION_5_0.equals(webApp.getVersion())) {
+            if (WebApp.VERSION_6_0.equals(webApp.getVersion()) || WebApp.VERSION_5_0.equals(webApp.getVersion())) {
                 return (Servlet) webApp
                     .findBeanByName("Servlet", "ServletClass", "jakarta.faces.webapp.FacesServlet"); //NOI18N;
             } else {
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/facesmodel/JSFVersion.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/facesmodel/JSFVersion.java
index 7375d54..8e4785d 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/facesmodel/JSFVersion.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/api/facesmodel/JSFVersion.java
@@ -66,11 +66,13 @@
     JSF_2_1("JSF 2.1"),
     JSF_2_2("JSF 2.2"),
     JSF_2_3("JSF 2.3"),
-    JSF_3_0("JSF 3.0");
+    JSF_3_0("JSF 3.0"),
+    JSF_4_0("JSF 4.0");
 
     private static final LinkedHashMap<JSFVersion, String> SPECIFIC_CLASS_NAMES = new LinkedHashMap<>();
 
     static {
+        SPECIFIC_CLASS_NAMES.put(JSFVersion.JSF_4_0, JSFUtils.JSF_4_0__API_SPECIFIC_CLASS);
         SPECIFIC_CLASS_NAMES.put(JSFVersion.JSF_3_0, JSFUtils.JSF_3_0__API_SPECIFIC_CLASS);
         SPECIFIC_CLASS_NAMES.put(JSFVersion.JSF_2_3, JSFUtils.JSF_2_3__API_SPECIFIC_CLASS);
         SPECIFIC_CLASS_NAMES.put(JSFVersion.JSF_2_2, JSFUtils.JSF_2_2__API_SPECIFIC_CLASS);
@@ -212,7 +214,9 @@
     public static JSFVersion forServerLibrary(@NonNull ServerLibrary lib) {
         Parameters.notNull("serverLibrary", lib); //NOI18N
         if ("JavaServer Faces".equals(lib.getSpecificationTitle())) { // NOI18N
-            if (Version.fromJsr277NotationWithFallback("3.0").equals(lib.getSpecificationVersion())) { //NOI18N
+            if (Version.fromJsr277NotationWithFallback("4.0").equals(lib.getSpecificationVersion())) { //NOI18N
+                return JSFVersion.JSF_4_0;
+            } else if (Version.fromJsr277NotationWithFallback("3.0").equals(lib.getSpecificationVersion())) { //NOI18N
                 return JSFVersion.JSF_3_0;
             } else if (Version.fromJsr277NotationWithFallback("2.3").equals(lib.getSpecificationVersion())) { //NOI18N
                 return JSFVersion.JSF_2_3;
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigModelImpl.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigModelImpl.java
index 79d3738..2c6ce50 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigModelImpl.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigModelImpl.java
@@ -90,7 +90,13 @@
     public JSFVersion getVersion() {
         String namespaceURI = getRootComponent().getPeer().getNamespaceURI();
         JSFVersion version = JSFVersion.JSF_1_1;
-        if (JSFConfigQNames.JSF_3_0_NS.equals(namespaceURI)
+        if (JSFConfigQNames.JSF_4_0_NS.equals(namespaceURI)
+                && (getRootComponent().getVersion().equals("4.0") //NOI18N
+                || checkSchemaLocation(
+                    getRootComponent().getPeer(),
+                    "https://jakarta.ee/xml/ns/jakartaee/web-facesconfig_4_0.xsd"))) { //NOI18N
+            version = JSFVersion.JSF_4_0;
+        } else if (JSFConfigQNames.JSF_3_0_NS.equals(namespaceURI)
                 && (getRootComponent().getVersion().equals("3.0") //NOI18N
                 || checkSchemaLocation(
                     getRootComponent().getPeer(),
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigQNames.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigQNames.java
index 7563a2c..14a72a7 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigQNames.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/impl/facesmodel/JSFConfigQNames.java
@@ -204,6 +204,7 @@
     private QName qname_2_2;
     private QName qname_2_3;
     private QName qname_3_0;
+    private QName qname_4_0;
 
 
     public static final String JSF_1_2_NS = "http://java.sun.com/xml/ns/javaee";  //NOI18N
@@ -212,6 +213,7 @@
     public static final String JSF_2_2_NS = "http://xmlns.jcp.org/xml/ns/javaee"; //NOI18N
     public static final String JSF_2_3_NS = "http://xmlns.jcp.org/xml/ns/javaee"; //NOI18N
     public static final String JSF_3_0_NS = "https://jakarta.ee/xml/ns/jakartaee"; //NOI18N
+    public static final String JSF_4_0_NS = "https://jakarta.ee/xml/ns/jakartaee"; //NOI18N
     public static final String JSF_1_1_NS = javax.xml.XMLConstants.NULL_NS_URI;
     public static final String JSFCONFIG_PREFIX = javax.xml.XMLConstants.DEFAULT_NS_PREFIX;
 
@@ -224,6 +226,7 @@
         qname_2_2 = new QName(JSF_2_2_NS, localName, JSFCONFIG_PREFIX);
         qname_2_3 = new QName(JSF_2_3_NS, localName, JSFCONFIG_PREFIX);
         qname_3_0 = new QName(JSF_3_0_NS, localName, JSFCONFIG_PREFIX);
+        qname_4_0 = new QName(JSF_4_0_NS, localName, JSFCONFIG_PREFIX);
     }
 
     public QName getQName(JSFVersion version) {
@@ -240,6 +243,8 @@
             value = qname_2_3;
         } else if (version.equals(JSFVersion.JSF_3_0)) {
             value = qname_3_0;
+        } else if (version.equals(JSFVersion.JSF_4_0)) {
+            value = qname_4_0;
         }
         return value;
     }
@@ -285,6 +290,7 @@
     private static final Set<QName> mappedQNames_2_2 = new HashSet<QName>();
     private static final Set<QName> mappedQNames_2_3 = new HashSet<QName>();
     private static final Set<QName> mappedQNames_3_0 = new HashSet<QName>();
+    private static final Set<QName> mappedQNames_4_0 = new HashSet<QName>();
 
     static {
         mappedQNames_1_1.add(FACES_CONFIG.getQName(JSFVersion.JSF_1_1));
@@ -794,6 +800,105 @@
         mappedQNames_3_0.add(FLOW_DEFINITION.getQName(JSFVersion.JSF_3_0));
         mappedQNames_3_0.add(PROTECTED_VIEWS.getQName(JSFVersion.JSF_3_0));
         
+        mappedQNames_4_0.add(FACES_CONFIG.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(MANAGED_BEAN.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(CONVERTER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(NAVIGATION_RULE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(NAVIGATION_CASE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(DESCRIPTION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(DISPLAY_NAME.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(ICON.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(APPLICATION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VIEW_HANDLER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RESOURCE_BUNDLE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(COMPONENT.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(REFERENCED_BEAN.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RENDER_KIT.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(LIFECYCLE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VALIDATOR.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FACES_CONFIG_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RESOURCE_BUNDLE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(ACTION_LISTENER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(DEFAULT_RENDER_KIT_ID.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(MESSAGE_BUNDLE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(NAVIGATION_HANDLER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(STATE_MANAGER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(EL_RESOLVER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(PROPERTY_RESOLVER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VARIABLE_RESOLVER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(LOCALE_CONFIG.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(APPLICATION_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(DEFAULT_LOCALE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(SUPPORTED_LOCALE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(APPLICATION_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FACES_CONTEXT_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FACELET_CACHE_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(LIFECYCLE_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RENDER_KIT_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FACTORY_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FACET.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(ATTRIBUTE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(PROPERTY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(COMPONENT_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(CONVERTER_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(MANAGED_PROPERTY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(MAP_ENTRIES.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(LIST_ENTRIES.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(MANAGED_BEAN_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(NAVIGATION_RULE_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RENDER_KIT_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(PHASE_LISTENER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(LIFECYCLE_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VALIDATOR_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FACES_CONFIG_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(IF.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(REDIRECT.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VIEW_PARAM.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(PARTIAL_TRAVERSAL.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(SYSTEM_EVENT_LISTENER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RESOURCE_HANDLER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(DEFAULT_VALIDATORS.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(ORDERING.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(AFTER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(BEFORE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(ABSOLUTE_ORDERING.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(OTHERS.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(EXCEPTION_HANDLER_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(EXTERNAL_CONTEXT_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(PARTIAL_VIEW_CONTEXT_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VIEW_DECLARATION_LANGUAGE_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(TAG_HANDLER_DELEGATE_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VISIT_CONTEXT_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(NAME.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RENDERER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(CLIENT_BEHAVIOR_RENDERER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(BEHAVIOR.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(BEHAVIOR_EXTENSION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RESOURCE_LIBRARY_CONTRACTS.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RESOURCE_BUNDLE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(RESOURCE_HANDLER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(URL_PATTERN.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FLOW_HANDLER_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FLASH_FACTORY.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(START_NODE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VIEW.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(VDL_DOCUMENT.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(DEFAULT_OUTCOME.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(SWITCH.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(METHOD_CALL.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FLOW_RETURN.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(INITIALIZER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FINALIZER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FLOW_CALL.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(INBOUND_PARAMETER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(OUTBOUND_PARAMETER.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FLOW_REFERENCE.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FLOW_ID.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(METHOD.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(FLOW_DEFINITION.getQName(JSFVersion.JSF_4_0));
+        mappedQNames_4_0.add(PROTECTED_VIEWS.getQName(JSFVersion.JSF_4_0));
+        
     }
 
     public static Set<QName> getMappedQNames(JSFVersion version) {
@@ -810,6 +915,8 @@
             mappedQNames = mappedQNames_2_3;
         } else if (version.equals(JSFVersion.JSF_3_0)) {
             mappedQNames = mappedQNames_3_0;
+        } else if (version.equals(JSFVersion.JSF_4_0)) {
+            mappedQNames = mappedQNames_4_0;
         }
         return Collections.unmodifiableSet(mappedQNames);
     }
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/faces-config_4_0.xml b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/faces-config_4_0.xml
new file mode 100644
index 0000000..73df577
--- /dev/null
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/faces-config_4_0.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.
+
+-->
+<faces-config version="4.0"
+    xmlns="https://jakarta.ee/xml/ns/jakartaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-facesconfig_4_0.xsd">
+
+</faces-config>
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-facelettaglibrary_4_0.xsd b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-facelettaglibrary_4_0.xsd
new file mode 100644
index 0000000..bc1d4ef
--- /dev/null
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-facelettaglibrary_4_0.xsd
@@ -0,0 +1,751 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            xmlns:xml="http://www.w3.org/XML/1998/namespace"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="4.0">
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+
+      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: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      [
+      <p>The XML Schema for the Tag Libraries in the Jakarta Faces
+      Standard Facelets View Declaration Language (Facelets VDL)
+      (Version 4.0).</p>
+
+      <p>Jakarta Faces 4.0 Facelet Tag Libraries that wish to conform to
+      this schema must declare it in the following manner.</p>
+
+      &lt;facelet-taglib xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-facelettaglibrary_4_0.xsd"
+      version="4.0"&gt;
+
+      ...
+
+      &lt;/facelet-taglib&gt;</pre>
+
+      <p>The instance documents may indicate the published
+      version of the schema using xsi:schemaLocation attribute
+      for jakartaee namespace with the following location:</p>
+
+      <p>https://jakarta.ee/xml/ns/jakartaee/web-facelettaglibrary_4_0.xsd</p>
+
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:element name="facelet-taglib"
+               type="jakartaee:facelet-taglibType">
+    <xsd:unique name="facelet-taglib-tagname-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p>
+
+          tag-names must be unique within a document.
+
+          </p>
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:tag"/>
+      <xsd:field xpath="jakartaee:tag-name"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-behavior-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p>
+
+          Behavior IDs must be unique within a document.
+
+          </p>
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:behavior"/>
+      <xsd:field xpath="jakartaee:behavior-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-converter-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p>
+
+          Converter IDs must be unique within a document.
+
+          </p>
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:converter"/>
+      <xsd:field xpath="jakartaee:converter-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-validator-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p>
+
+          Validator IDs must be unique within a document.
+
+          </p>
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:validator"/>
+      <xsd:field xpath="jakartaee:validator-id"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglibType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        The top level XML element in a facelet tag library XML file.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:choice>
+        <xsd:element name="library-class"
+                     type="jakartaee:fully-qualified-classType"/>
+        <xsd:sequence>
+          <xsd:element name="namespace"
+                       type="jakartaee:string"/>
+          <xsd:element minOccurs="0"
+                       maxOccurs="1"
+                       name="short-name"
+                       type="jakartaee:string">
+            <xsd:annotation>
+              <xsd:documentation>
+                <![CDATA[
+                <p>
+
+                An advisory short name for usages of tags from this tag library.
+
+                </p>
+                ]]>
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:element>
+          <xsd:element minOccurs="0"
+                       maxOccurs="1"
+                       name="composite-library-name"
+                       type="jakartaee:string"/>
+          <xsd:choice minOccurs="0"
+                      maxOccurs="unbounded">
+            <xsd:element name="tag"
+                         type="jakartaee:facelet-taglib-tagType"/>
+            <xsd:element name="function"
+                         type="jakartaee:facelet-taglib-functionType"/>
+          </xsd:choice>
+        </xsd:sequence>
+      </xsd:choice>
+      <xsd:element name="taglib-extension"
+                   type="jakartaee:facelet-taglib-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="version"
+                   type="jakartaee:facelet-taglib-versionType"
+                   use="required"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Extension element for facelet-taglib. It may contain
+        implementation specific content.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tagType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>If the tag library XML
+        file contains individual tag declarations rather than pointing
+        to a library-class or a declaring a composite-library name, the
+        individual tags are enclosed in tag elements.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="tag-name"
+                   type="jakartaee:facelet-taglib-canonical-nameType"/>
+      <xsd:choice>
+        <xsd:element name="handler-class"
+                     type="jakartaee:fully-qualified-classType"/>
+        <xsd:element name="behavior"
+                     type="jakartaee:facelet-taglib-tag-behaviorType"/>
+        <xsd:element name="component"
+                     type="jakartaee:facelet-taglib-tag-componentType"/>
+        <xsd:element name="converter"
+                     type="jakartaee:facelet-taglib-tag-converterType"/>
+        <xsd:element name="validator"
+                     type="jakartaee:facelet-taglib-tag-validatorType"/>
+        <xsd:element name="source"
+                     type="jakartaee:string"/>
+      </xsd:choice>
+      <xsd:element name="attribute"
+                   type="jakartaee:facelet-taglib-tag-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="tag-extension"
+                   type="jakartaee:facelet-taglib-tag-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-attributeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        <p>The attribute element defines an attribute for the nesting
+        tag. The attribute element may have several subelements
+        defining:</p>
+
+        <dl>
+
+        <dt>description</dt><dd><p> a description of the attribute
+        </p></dd>
+
+        <dt>name</dt><dd><p> the name of the attribute
+        </p></dd>
+
+        <dt>required</dt><dd><p> whether the attribute is required or
+        optional
+        </p></dd>
+
+        <dt>type</dt><dd><p> the type of the attribute
+        </p></dd>
+
+        </dl>
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="name"
+                   type="jakartaee:xsdNMTOKENType"/>
+      <xsd:element name="required"
+                   type="jakartaee:generic-booleanType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p>Defines if the nesting attribute is required or
+            optional.</p>
+
+            <p>If not present then the default is "false", i.e
+            the attribute is optional.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:choice>
+        <xsd:element name="type"
+                     type="jakartaee:fully-qualified-classType"
+                     minOccurs="0">
+          <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              <p>
+
+              Defines the Java type of the attributes
+              value. If this element is omitted, the
+              expected type is assumed to be
+              "java.lang.Object".</p>
+
+              ]]>
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="method-signature"
+                     type="jakartaee:string"
+                     minOccurs="0">
+          <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              <p>
+
+              Defines the method signature for a MethodExpression-
+              enabled attribute.  The syntax of the method-signature
+              element is as follows (taken from the function-signature
+              EBNF in web-jsptaglibrary_2_1.xsd):</p>
+
+              <code>
+
+              <p>MethodSignature ::= ReturnType S MethodName S? '(' S? Parameters? S? ')'</p>
+
+              <p>ReturnType        ::= Type</p>
+
+              <p>MethodName        ::= Identifier</p>
+
+              <p>Parameters        ::= Parameter | ( Parameter S? ',' S? Parameters )</p>
+
+              <p>Parameter         ::= Type</p>
+
+              </code>
+
+              <p>Where:</p>
+
+              <ul>
+
+              <li><p><code>Type</code> is a basic type or a fully qualified
+              Java class name (including package name), as per the 'Type'
+              production in the Java Language Specification, Second Edition,
+              Chapter 18.</p></li>
+
+              <li><p><code>Identifier</code> is a Java identifier, as per the
+              'Identifier' production in the Java Language Specification,
+              Second Edition, Chapter 18.</p></li>
+
+              </ul>
+
+              <p>Example:</p>
+
+              <p><code>java.lang.String nickName( java.lang.String, int )</code></p>
+
+              ]]>
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Extension element for tag It may contain
+        implementation specific content.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-functionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        If the tag library XML file contains individual function
+        declarations rather than pointing to a library-class or a
+        declaring a composite-library name, the individual functions are
+        enclosed in function elements.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="function-name"
+                   type="jakartaee:string"/>
+      <xsd:element name="function-class"
+                   type="jakartaee:fully-qualified-classType"/>
+      <xsd:element name="function-signature"
+                   type="jakartaee:string"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-behaviorType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Within a tag element, the behavior element encapsulates
+        information specific to a Faces Behavior.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element minOccurs="1"
+                   maxOccurs="1"
+                   name="behavior-id"
+                   type="jakartaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="handler-class"
+                   type="jakartaee:fully-qualified-classType"/>
+      <xsd:element name="behavior-extension"
+                   type="jakartaee:facelet-taglib-tag-behavior-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-behavior-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Extension element for behavior. It may contain
+        implementation specific content.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-componentType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p><span class="changed_modified_2_2
+        changed_modified_2_3">Within</span> a tag element, the component
+        element encapsulates information specific to a Faces UIComponent.</p>
+
+        <div class="changed_added_2_2 changed_deleted_2_3">
+
+        <p>As of 3.0 of the specification, this requirement is no longer
+        present: This element must have exactly one of
+        <code>&lt;component-type&gt;</code>, <code>&lt;resource-id&gt;</code>,
+        or <code>&lt;handler-class&gt;</code> among its child elements.</p>
+
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="component-type"
+                   type="jakartaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="renderer-type"
+                   type="jakartaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="handler-class"
+                   type="jakartaee:fully-qualified-classType"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="resource-id"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">A valid resource identifier
+            as specified in the Jakarta Faces Specification Document section 2.6.1.3 "Resource Identifiers".
+            For example:</p>
+
+            <p><code>&lt;resource-id&gt;myCC/ccName.xhtml&lt;/resource-id&gt;</code></p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="component-extension"
+                   type="jakartaee:facelet-taglib-tag-component-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-component-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Extension element for component It may contain
+        implementation specific content.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-converterType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Within a tag element, the converter element encapsulates
+        information specific to a Faces Converter.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element minOccurs="1"
+                   maxOccurs="1"
+                   name="converter-id"
+                   type="jakartaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="handler-class"
+                   type="jakartaee:fully-qualified-classType"/>
+      <xsd:element name="converter-extension"
+                   type="jakartaee:facelet-taglib-tag-converter-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-converter-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Extension element for converter It may contain
+        implementation specific content.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-validatorType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Within a tag element, the validator element encapsulates
+        information specific to a Faces Validator.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element minOccurs="1"
+                   maxOccurs="1"
+                   name="validator-id"
+                   type="jakartaee:string"/>
+      <xsd:element minOccurs="0"
+                   maxOccurs="1"
+                   name="handler-class"
+                   type="jakartaee:fully-qualified-classType"/>
+      <xsd:element name="validator-extension"
+                   type="jakartaee:facelet-taglib-tag-validator-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-tag-validator-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        Extension element for validator It may contain
+        implementation specific content.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any namespace="##any"
+               processContents="lax"
+               minOccurs="0"
+               maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="facelet-taglib-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        This type contains the recognized versions of
+        facelet-taglib supported.
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="4.0"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="facelet-taglib-canonical-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>
+
+        <p>Defines the canonical name of a tag or attribute being
+        defined.</p>
+
+        <p>The name must conform to the lexical rules for an NCName</p>
+
+        </p>
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="xsd:NCName">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+</xsd:schema>
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-faces-mime-resolver.xml b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-faces-mime-resolver.xml
index 565a32a..b7750c6 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-faces-mime-resolver.xml
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-faces-mime-resolver.xml
@@ -92,5 +92,24 @@
             </xml-rule>
         </resolver>
     </file>
-
+    <file>
+        <ext name="xml"/>
+            <resolver mime="text/x-jsf+xml">
+            <xml-rule>
+            	<element name="faces-config" ns="https://jakarta.ee/xml/ns/jakartaee">
+                    <attr name="version" text="3.0"/>
+                </element>
+            </xml-rule>
+        </resolver>
+    </file>
+    <file>
+        <ext name="xml"/>
+            <resolver mime="text/x-jsf+xml">
+            <xml-rule>
+            	<element name="faces-config" ns="https://jakarta.ee/xml/ns/jakartaee">
+                    <attr name="version" text="4.0"/>
+                </element>
+            </xml-rule>
+        </resolver>
+    </file>
 </MIME-resolver>
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-facesconfig_4_0.xsd b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-facesconfig_4_0.xsd
new file mode 100644
index 0000000..56e633f
--- /dev/null
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/resources/web-facesconfig_4_0.xsd
@@ -0,0 +1,3447 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee"
+            attributeFormDefault="unqualified"
+            elementFormDefault="qualified"
+            targetNamespace="https://jakarta.ee/xml/ns/jakartaee"
+            version="4.0"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <xsd:include schemaLocation="jakartaee_10.xsd"/>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright (c) 2009, 2021 Oracle and/or its affiliates. All rights reserved.
+
+      This program and the accompanying materials are made available under the
+      terms of the Eclipse Public License v. 2.0, which is available at
+      http://www.eclipse.org/legal/epl-2.0.
+
+      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: GNU General Public License,
+      version 2 with the GNU Classpath Exception, which is available at
+      https://www.gnu.org/software/classpath/license.html.
+
+      SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+      <p>The XML Schema for the Jakarta Faces Application
+      Configuration File (Version 4.0).</p>
+
+      <p>All Jakarta Faces configuration files must indicate
+      the Jakarta Faces schema by indicating the
+      Jakarta Faces namespace:</p>
+
+      <p>https://jakarta.ee/xml/ns/jakartaee</p>
+
+      <p>and by indicating the version of the schema by
+      using the version element as shown below:</p>
+
+      <pre>&lt;faces-config xmlns="https://jakarta.ee/xml/ns/jakartaee"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="..."
+      version="4.0"&gt;
+      ...
+      &lt;/faces-config&gt;</pre>
+
+      <p>The instance documents may indicate the published
+      version of the schema using xsi:schemaLocation attribute
+      for jakartaee namespace with the following location:</p>
+
+      <p>https://jakarta.ee/xml/ns/jakartaee/web-facesconfig_4_0.xsd</p>
+
+      ]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:element name="faces-config"
+               type="jakartaee:faces-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>The "faces-config" element is the root of the configuration
+        information hierarchy, and contains nested elements for all
+        of the other configuration settings.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:unique name="faces-config-behavior-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p>Behavior IDs must be unique within a document.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:behavior"/>
+      <xsd:field xpath="jakartaee:behavior-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-converter-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p>Converter IDs must be unique within a document.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:converter"/>
+      <xsd:field xpath="jakartaee:converter-id"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-converter-for-class-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p>'converter-for-class' element values must be unique
+          within a document.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:converter"/>
+      <xsd:field xpath="jakartaee:converter-for-class"/>
+    </xsd:unique>
+    <xsd:unique name="faces-config-validator-ID-uniqueness">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p> Validator IDs must be unique within a document.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="jakartaee:validator"/>
+      <xsd:field xpath="jakartaee:validator-id"/>
+    </xsd:unique>
+  </xsd:element>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "faces-config" element is the root of the configuration
+        information hierarchy, and contains nested elements for all
+        of the other configuration settings.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="application"
+                   type="jakartaee:faces-config-applicationType"/>
+      <xsd:element name="ordering"
+                   type="jakartaee:faces-config-orderingType"/>
+      <xsd:element name="absolute-ordering"
+                   type="jakartaee:faces-config-absoluteOrderingType"
+                   minOccurs="0"/>
+      <xsd:element name="factory"
+                   type="jakartaee:faces-config-factoryType"/>
+      <xsd:element name="component"
+                   type="jakartaee:faces-config-componentType"/>
+      <xsd:element name="converter"
+                   type="jakartaee:faces-config-converterType"/>
+      <xsd:element name="flow-definition"
+                   type="jakartaee:faces-config-flow-definitionType"/>
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> <span class="changed_modified_2_2">The</span> "name" element
+            within the top level "faces-config"
+            element declares the name of this application
+            configuration resource.  Such names are used
+            in the document ordering scheme specified in section
+            11.3.8 "Ordering of Artifacts" of the Jakarta Faces Specification Document.</p>
+
+            <p class="changed_added_2_2">This value is taken to be the
+            defining document id of any &lt;flow-definition&gt; elements
+            defined in this Application Configuration Resource file.  If this
+            element is not specified, the runtime must take the empty string
+            as its value.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="navigation-rule"
+                   type="jakartaee:faces-config-navigation-ruleType"/>
+      <xsd:element name="protected-views"
+                   type="jakartaee:faces-config-protected-viewsType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="referenced-bean"
+                   type="jakartaee:faces-config-referenced-beanType"/>
+      <xsd:element name="render-kit"
+                   type="jakartaee:faces-config-render-kitType"/>
+      <xsd:element name="lifecycle"
+                   type="jakartaee:faces-config-lifecycleType"/>
+      <xsd:element name="validator"
+                   type="jakartaee:faces-config-validatorType"/>
+      <xsd:element name="behavior"
+                   type="jakartaee:faces-config-behaviorType"/>
+      <xsd:element name="faces-config-extension"
+                   type="jakartaee:faces-config-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:choice>
+    <xsd:attribute name="metadata-complete"
+                   type="xsd:boolean"
+                   use="optional">
+      <xsd:annotation>
+        <xsd:documentation>
+
+          The metadata-complete attribute defines whether this
+          Faces application is complete, or whether
+          the class files available to this module and packaged with
+          this application should be examined for annotations
+          that specify configuration information.
+
+          This attribute is only inspected on the application
+          configuration resource file located at "WEB-INF/faces-config.xml".
+          The presence of this attribute on any application configuration
+          resource other than the one located at "WEB-INF/faces-config.xml",
+          including any files named using the jakarta.faces.CONFIG_FILES
+          attribute, must be ignored.
+
+          If metadata-complete is set to "true", the Faces
+          runtime must ignore any annotations that specify configuration
+          information, which might be present in the class files
+          of the application.
+
+          If metadata-complete is not specified or is set to
+          "false", the Faces runtime must examine the class
+          files of the application for annotations, as specified by
+          the specification.
+
+          If "WEB-INF/faces-config.xml" is not present, the
+          Faces runtime will assume metadata-complete to be "false".
+
+          The value of this attribute will have no impact on
+          runtime annotations such as @ResourceDependency or
+          @ListenerFor.
+
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="version"
+                   type="jakartaee:faces-config-versionType"
+                   use="required"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for faces-config.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-orderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Please see section
+        11.3.8 "Ordering of Artifacts" of the Jakarta Faces Specification Document
+        for the specification of this element.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="after"
+                   type="jakartaee:faces-config-ordering-orderingType"
+                   minOccurs="0"/>
+      <xsd:element name="before"
+                   type="jakartaee:faces-config-ordering-orderingType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-ordering-orderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> This element contains a sequence of "id" elements, each of which
+        refers to an application configuration resource by the "id"
+        declared on its faces-config element.  This element can also contain
+        a single "others" element which specifies that this document comes
+        before or after other documents within the application.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="jakartaee:faces-config-ordering-othersType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-ordering-othersType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> This element indicates that the ordering sub-element in which
+        it was placed should take special action regarding the ordering
+        of this application resource relative to other
+        application configuration resources.
+        See section 11.3.8 "Ordering of Artifacts" of the Jakarta Faces Specification Document
+        for the complete specification.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-absoluteOrderingType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Only relevant if this is placed within the /WEB-INF/faces-config.xml.
+        Please see
+        section 11.3.8 "Ordering of Artifacts" of the Jakarta Faces Specification Document
+        for the specification for details.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="others"
+                   type="jakartaee:faces-config-ordering-othersType"
+                   minOccurs="0"/>
+    </xsd:choice>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-applicationType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "application" element provides a mechanism to define the
+        various per-application-singleton implementation artifacts for
+        a particular web application that is utilizing
+        Jakarta Faces.  For nested elements that are not specified,
+        the Jakarta Faces implementation must provide a suitable
+        default.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="action-listener"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "action-listener" element contains the fully
+            qualified class name of the concrete
+            ActionListener implementation class that will be
+            called during the Invoke Application phase of the
+            request processing lifecycle.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-render-kit-id"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "default-render-kit-id" element allows the
+            application to define a renderkit to be used other
+            than the standard one.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="message-bundle"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The base name of a resource bundle representing
+            the message resources for this application.  See
+            the JavaDocs for the "java.util.ResourceBundle"
+            class for more information on the syntax of
+            resource bundle names.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="navigation-handler"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "navigation-handler" element contains the
+            fully qualified class name of the concrete
+            NavigationHandler implementation class that will
+            be called during the Invoke Application phase
+            of the request processing lifecycle, if the
+            default ActionListener (provided by the Jakarta Faces
+            implementation) is used.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="view-handler"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "view-handler" element contains the fully
+            qualified class name of the concrete ViewHandler
+            implementation class that will be called during
+            the Restore View and Render Response phases of the
+            request processing lifecycle.  The faces
+            implementation must provide a default
+            implementation of this class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="state-manager"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "state-manager" element contains the fully
+            qualified class name of the concrete StateManager
+            implementation class that will be called during
+            the Restore View and Render Response phases of the
+            request processing lifecycle.  The faces
+            implementation must provide a default
+            implementation of this class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="el-resolver"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "el-resolver" element contains the fully
+            qualified class name of the concrete
+            jakarta.el.ELResolver implementation class
+            that will be used during the processing of
+            EL expressions.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-handler"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "resource-handler" element contains the
+            fully qualified class name of the concrete
+            ResourceHandler implementation class that
+            will be used during rendering and decoding
+            of resource requests The standard
+            constructor based decorator pattern used for
+            other application singletons will be
+            honored.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="resource-library-contracts"
+                   type="jakartaee:faces-config-application-resource-library-contractsType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">The "resource-library-contracts" element
+            specifies the mappings between views in the application and resource
+            library contracts that, if present in the application, must be made
+            available for use as templates of the specified views.
+            </p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="search-expression-handler"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_3">The "search-expression-handler"
+            element contains the fully qualified class name of the
+            concrete jakarta.faces.component.search.SearchExpressionHandler
+            implementation class that will be used for processing of a
+            search expression.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="search-keyword-resolver"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_3"> The "search-keyword-resolver"
+            element contains the fully qualified class name of the
+            concrete jakarta.faces.component.search.SearchKeywordResolver
+            implementation class that will be used during the processing
+            of a search expression keyword.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="system-event-listener"
+                   type="jakartaee:faces-config-system-event-listenerType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="locale-config"
+                   type="jakartaee:faces-config-locale-configType"/>
+      <xsd:element name="resource-bundle"
+                   type="jakartaee:faces-config-application-resource-bundleType"/>
+      <xsd:element name="application-extension"
+                   type="jakartaee:faces-config-application-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="default-validators"
+                   type="jakartaee:faces-config-default-validatorsType"/>
+    </xsd:choice>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-application-resource-bundleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The resource-bundle element inside the application element
+        references a java.util.ResourceBundle instance by name
+        using the var element.  ResourceBundles referenced in this
+        manner may be returned by a call to
+        Application.getResourceBundle() passing the current
+        FacesContext for this request and the value of the var
+        element below.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="base-name"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The fully qualified class name of the
+            java.util.ResourceBundle instance.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="var"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The name by which this ResourceBundle instance
+            is retrieved by a call to
+            Application.getResourceBundle().</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-application-resource-library-contractsType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">The "resource-library-contracts" element
+        specifies the mappings between views in the application and resource
+        library contracts that, if present in the application, must be made
+        available for use as templates of the specified views.
+        </p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="contract-mapping"
+                   type="jakartaee:faces-config-application-resource-library-contracts-contract-mappingType"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p classes="changed_added_2_2">Declare a mapping between a collection
+            of views in the application and the list of contracts (if present in the application)
+            that may be used as a source for templates and resources for those views.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-application-resource-library-contracts-contract-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">The "contract-mapping" element
+        specifies the mappings between a collection of views in the application and resource
+        library contracts that, if present in the application, must be made
+        available for use as templates of the specified views.
+        </p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">The "url-pattern" element
+            specifies the collection of views in this application that
+            are allowed to use the corresponding contracts.
+            </p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="contracts"
+                   type="jakartaee:string"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">The "contracts" element
+            is a comma separated list of resource library contracts that,
+            if available to the application, may be used by the views
+            matched by the corresponding "url-pattern"
+            </p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-application-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for application.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-factoryType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "factory" element provides a mechanism to define the
+        various Factories that comprise parts of the implementation
+        of Jakarta Faces.  For nested elements that are not
+        specified, the Jakarta Faces implementation must provide a
+        suitable default.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:choice minOccurs="0"
+                maxOccurs="unbounded">
+      <xsd:element name="application-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "application-factory" element contains the
+            fully qualified class name of the concrete
+            ApplicationFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(APPLICATION_FACTORY) is
+            called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="exception-handler-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "exception-handler-factory" element contains the
+            fully qualified class name of the concrete
+            ExceptionHandlerFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(EXCEPTION_HANDLER_FACTORY)
+            is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="external-context-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "external-context-factory" element contains the
+            fully qualified class name of the concrete
+            ExternalContextFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(EXTERNAL_CONTEXT_FACTORY)
+            is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="faces-context-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "faces-context-factory" element contains the
+            fully qualified class name of the concrete
+            FacesContextFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FACES_CONTEXT_FACTORY)
+            is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facelet-cache-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "facelet-cache-factory" element contains the
+            fully qualified class name of the concrete
+            FaceletCacheFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FACELET_CACHE_FACTORY)
+            is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="partial-view-context-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "partial-view-context-factory" element contains the
+            fully qualified class name of the concrete
+            PartialViewContextFactory implementation class that will
+            be called when FactoryFinder.getFactory
+            (FactoryFinder.PARTIAL_VIEW_CONTEXT_FACTORY) is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lifecycle-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "lifecycle-factory" element contains the fully
+            qualified class name of the concrete LifecycleFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(LIFECYCLE_FACTORY) is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="view-declaration-language-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "view-declaration-language-factory" element contains
+            the fully qualified class name of the concrete
+            ViewDeclarationLanguageFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(VIEW_DECLARATION_FACTORY) is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="tag-handler-delegate-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "tag-handler-delegate-factory" element contains
+            the fully qualified class name of the concrete
+            ViewDeclarationLanguageFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(TAG_HANDLER_DELEGATE_FACTORY) is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="render-kit-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "render-kit-factory" element contains the fully
+            qualified class name of the concrete RenderKitFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(RENDER_KIT_FACTORY) is
+            called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="visit-context-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "visit-context-factory" element contains the fully
+            qualified class name of the concrete VisitContextFactory
+            implementation class that will be called when
+            FactoryFinder.getFactory(VISIT_CONTEXT_FACTORY) is
+            called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="flash-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2"> The "flash-factory" element contains the
+            fully qualified class name of the concrete
+            FaceletFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FLASH_FACTORY) is
+            called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="flow-handler-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "flow-handler-factory" element contains the
+            fully qualified class name of the concrete
+            FlowHandlerFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(FLOW_HANDLER_FACTORY) is
+            called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="client-window-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_3"> The "client-window-factory" element contains the fully
+            qualified class name of the concrete ClientWindowFactory implementation class that
+            will be called when FactoryFinder.getFactory(CLIENT_WINDOW_FACTORY) is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="search-expression-context-factory"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_3"> The
+            "search-expression-context-factory" element contains the
+            fully qualified class name of the concrete
+            SearchExpressionContextFactory implementation class that will
+            be called when
+            FactoryFinder.getFactory(SEARCH_EXPRESSION_CONTEXT_FACTORY)
+            is called.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="factory-extension"
+                   type="jakartaee:faces-config-factory-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:choice>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-factory-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for factory.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-attributeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "attribute" element represents a named, typed, value
+        associated with the parent UIComponent via the generic
+        attributes mechanism.</p>
+
+        <p>Attribute names must be unique within the scope of the parent
+        (or related) component.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="attribute-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "attribute-name" element represents the name under
+            which the corresponding value will be stored, in the
+            generic attributes of the UIComponent we are related
+            to.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "attribute-class" element represents the Java type
+            of the value associated with this attribute name.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-value"
+                   type="jakartaee:faces-config-default-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="suggested-value"
+                   type="jakartaee:faces-config-suggested-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="attribute-extension"
+                   type="jakartaee:faces-config-attribute-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-attribute-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for attribute.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-componentType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "component" element represents a concrete UIComponent
+        implementation class that should be registered under the
+        specified type identifier, along with its associated
+        properties and attributes.  Component types must be unique
+        within the entire web application.</p>
+
+        <p>Nested "attribute" elements identify generic attributes that
+        are recognized by the implementation logic of this component.
+        Nested "property" elements identify JavaBeans properties of
+        the component class that may be exposed for manipulation
+        via tools.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="component-type"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "component-type" element represents the name under
+            which the corresponding UIComponent class should be
+            registered.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="component-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "component-class" element represents the fully
+            qualified class name of a concrete UIComponent
+            implementation class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facet"
+                   type="jakartaee:faces-config-facetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="attribute"
+                   type="jakartaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="property"
+                   type="jakartaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="component-extension"
+                   type="jakartaee:faces-config-component-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-component-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for component.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-default-localeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "default-locale" element declares the default locale
+        for this application instance.</p>
+
+        <p class="modified_added_2_3">
+        To facilitate BCP 47 this element first needs to be parsed by the
+        Locale.forLanguageTag method. If it does not return a Locale with
+        a language the old specification below needs to take effect.
+        </p>
+
+        <p>It must be specified as :language:[_:country:[_:variant:]]
+        without the colons, for example "ja_JP_SJIS".  The
+        separators between the segments may be '-' or '_'.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-localeType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-default-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "default-value" contains the value for the property or
+        attribute in which this element resides.  This value differs
+        from the "suggested-value" in that the property or attribute
+        must take the value, whereas in "suggested-value" taking the
+        value is optional.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-el-expressionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> EL expressions present within a faces config file
+        must start with the character sequence of '#{' and
+        end with '}'.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="#\{.*\}"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-facetType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Define the name and other design-time information for a facet
+        that is associated with a renderer or a component.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="facet-name"
+                   type="jakartaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "facet-name" element represents the facet name
+            under which a UIComponent will be added to its parent.
+            It must be of type "Identifier".</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facet-extension"
+                   type="jakartaee:faces-config-facet-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-facet-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for facet.  It may contain implementation
+        specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-from-view-idType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p><span class="changed_modified_2_2">The</span>
+        value of from-view-id must contain one of the following
+        values:</p>
+
+        <ul>
+
+        <li><p>The exact match for a view identifier that is recognized
+        by the the ViewHandler implementation being used (such as
+        "/index.jsp" if you are using the default ViewHandler).</p></li>
+
+        <li><p class="changed_added_2_2">The exact match of a flow node id
+        in the current flow, or a flow id of another flow.</p></li>
+
+        <li><p> A proper prefix of a view identifier, plus a trailing
+        "*" character.  This pattern indicates that all view
+        identifiers that match the portion of the pattern up to the
+        asterisk will match the surrounding rule.  When more than one
+        match exists, the match with the longest pattern is selected.
+        </p></li>
+
+        <li><p>An "*" character, which means that this pattern applies
+        to all view identifiers.  </p></li>
+
+        </ul>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-from-actionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "from-action" element contains an action reference
+        expression that must have been executed (by the default
+        ActionListener for handling application level events)
+        in order to select the navigation rule.  If not specified,
+        this rule will be relevant no matter which action reference
+        was executed (or if no action reference was executed).</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-ifType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p>The "if" element defines a condition that must resolve
+        to true in order for the navigation case on which it is
+        defined to be matched, with the existing match criteria
+        (action method and outcome) as a prerequiste, if present.
+        The condition is defined declaratively using a value
+        expression in the body of this element. The expression is
+        evaluated at the time the navigation case is being matched.
+        If the "from-outcome" is omitted and this element is
+        present, the navigation handler will match a null outcome
+        and use the condition return value to determine if the
+        case should be considered a match.</p>
+
+        <div class="changed_added_2_2">
+
+        <p>When used in a <code>&lt;switch&gt;</code> within a flow, if the
+        expresion returns <code>true</code>, the
+        <code>&lt;from-outcome&gt;</code> sibling element's outcome is used as
+        the id of the node in the flow graph to which control must be
+        passed.</p>
+
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-parameter-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2"></p>
+
+        <div class="changed_added_2_2">
+
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-converterType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "converter" element represents a concrete Converter
+        implementation class that should be registered under the
+        specified converter identifier.  Converter identifiers must
+        be unique within the entire web application.</p>
+
+        <p>Nested "attribute" elements identify generic attributes that
+        may be configured on the corresponding UIComponent in order
+        to affect the operation of the Converter.  Nested "property"
+        elements identify JavaBeans properties of the Converter
+        implementation class that may be configured to affect the
+        operation of the Converter.  "attribute" and "property"
+        elements are intended to allow component developers to
+        more completely describe their components to tools and users.
+        These elements have no required runtime semantics.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:choice>
+        <xsd:element name="converter-id"
+                     type="jakartaee:string">
+          <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              <p> The "converter-id" element represents the
+              identifier under which the corresponding
+              Converter class should be registered.</p>
+
+              ]]>
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+        <xsd:element name="converter-for-class"
+                     type="jakartaee:fully-qualified-classType">
+          <xsd:annotation>
+            <xsd:documentation>
+              <![CDATA[
+              <p> The "converter-for-class" element represents the
+              fully qualified class name for which a Converter
+              class will be registered.</p>
+
+              ]]>
+            </xsd:documentation>
+          </xsd:annotation>
+        </xsd:element>
+      </xsd:choice>
+      <xsd:element name="converter-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "converter-class" element represents the fully
+            qualified class name of a concrete Converter
+            implementation class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="jakartaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> Nested "attribute" elements identify generic
+            attributes that may be configured on the
+            corresponding UIComponent in order to affect the
+            operation of the Converter.  This attribute is
+            primarily for design-time tools and is not
+            specified to have any meaning at runtime.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> Nested "property" elements identify JavaBeans
+            properties of the Converter implementation class
+            that may be configured to affect the operation of
+            the Converter.  This attribute is primarily for
+            design-time tools and is not specified to have
+            any meaning at runtime.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="converter-extension"
+                   type="jakartaee:faces-config-converter-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-converter-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for converter.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-lifecycleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "lifecycle" element provides a mechanism to specify
+        modifications to the behaviour of the default Lifecycle
+        implementation for this web application.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="phase-listener"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "phase-listener" element contains the fully
+            qualified class name of the concrete PhaseListener
+            implementation class that will be registered on
+            the Lifecycle.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="lifecycle-extension"
+                   type="jakartaee:faces-config-lifecycle-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-lifecycle-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for lifecycle.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-localeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The localeType defines valid locale defined by ISO-639-1
+        and ISO-3166.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="([a-z]{2})[_|\-]?([\p{L}]{2})?[_|\-]?(\w+)?"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-locale-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "locale-config" element allows the app developer to
+        declare the supported locales for this application.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="default-locale"
+                   type="jakartaee:faces-config-default-localeType"
+                   minOccurs="0"/>
+      <xsd:element name="supported-locale"
+                   type="jakartaee:faces-config-supported-localeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-default-validatorsType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "default-validators" element allows the app developer to
+        register a set of validators, referenced by identifier, that
+        are automatically assigned to any EditableValueHolder component
+        in the application, unless overridden or disabled locally.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="validator-id"
+                   type="jakartaee:string"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "validator-id" element represents the identifier
+            of a registered validator.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definitionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Top level element for a flow
+        definition.</p>
+
+        <div class="changed_added_2_2">
+
+        <p>If there is no <code>&lt;start-node&gt;</code> element declared, it
+        is assumed to be <code>&lt;flowName&gt;.xhtml</code>.</p>
+
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="start-node"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">Declare the id of the starting node in the
+            flow graph.  The start node may be any of the node types mentioned in
+            the class javadocs for <code><a target="_"
+            href="jakarta/faces/flow/FlowHandler.html">FlowHandler</a></code>.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="view"
+                   type="jakartaee:faces-config-flow-definition-viewType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="switch"
+                   type="jakartaee:faces-config-flow-definition-switchType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="flow-return"
+                   type="jakartaee:faces-config-flow-definition-flow-returnType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="navigation-rule"
+                   type="jakartaee:faces-config-navigation-ruleType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="flow-call"
+                   type="jakartaee:faces-config-flow-definition-flow-callType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="method-call"
+                   type="jakartaee:faces-config-flow-definition-faces-method-callType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="initializer"
+                   type="jakartaee:faces-config-flow-definition-initializerType"
+                   minOccurs="0"/>
+      <xsd:element name="finalizer"
+                   type="jakartaee:faces-config-flow-definition-finalizerType"
+                   minOccurs="0"/>
+      <xsd:element name="inbound-parameter"
+                   type="jakartaee:faces-config-flow-definition-inbound-parameterType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p class="changed_added_2_2">The id of this flow.  The id
+          must be unique within the Application configuration Resource
+          file in which this flow is defined.  The value of this attribute,
+          combined with the value of the &lt;faces-config&gt;&lt;name&gt; element
+          must globally identify the flow within the application.<p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-faces-method-callType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Invoke a method, passing parameters if necessary.
+        The return from the method is used as the outcome for where to go next in the
+        flow.  If the method is a void method, the default outcome is used.<p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="method"
+                   type="jakartaee:faces-config-flow-definition-faces-method-call-methodType"/>
+      <xsd:element name="default-outcome"
+                   type="jakartaee:string"/>
+      <xsd:element name="parameter"
+                   type="jakartaee:faces-config-flow-definition-flow-call-parameterType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">A parameter to pass when calling the method
+            identified in the "method" element that is a sibling of this element.<p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-faces-method-call-methodType">
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-flow-call-parameterType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">A parameter to pass when calling the method
+        identified in the "method" element that is a sibling of this element.<p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="class"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2"> The optional "class" element within a "parameter" element
+            will be interpreted as the fully qualified class name for the type
+            of the "value" element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="value"
+                   type="jakartaee:faces-config-flow-definition-parameter-valueType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2"> The "value" element within an "parameter"
+            must be a literal string or an EL Expression whose "get" will be called when the "method"
+            associated with this element is invoked.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-viewType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Define a view node in a flow graph.</p>
+
+        <p>This element must contain exactly one
+        <code>&lt;vdl-document&gt;</code> element.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="vdl-document"
+                   type="jakartaee:pathType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2 changed_modified_2_3">
+            Define the path to the vdl-document for the enclosing view.
+            <p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p class="changed_added_2_2">The id of this view.  It must be
+          unique within the flow.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-switchType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Define a switch node in a flow graph.</p>
+
+        <div class="changed_added_2_2">
+
+        <p>This element must contain one or more
+        <code>&lt;case&gt;</code> elements.  When control passes to the
+        <code>&lt;switch&gt;</code> node, each of the cases must be considered
+        in order and control must past to the <code>&lt;from-outcome&gt;</code>
+        of the first one whose <code>&lt;if&gt;</code> expression evaluates to
+        <code>true</code>.</p>
+
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="case"
+                   type="jakartaee:faces-config-flow-definition-switch-caseType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">Defines a case that must be
+            considered in the list of cases in the
+            <code>&lt;switch&gt;</code>.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-outcome"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">Defines the default case that will
+            be taken if none of the other cases in the
+            <code>&lt;switch&gt;</code> are taken.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p class="changed_added_2_2">The id of this switch.  It must be
+          unique within the flow.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-switch-caseType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Defines a case that will
+        be considered in the <code>&lt;switch&gt;</code>.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="if"
+                   type="jakartaee:faces-config-ifType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">If this EL expression evaluates to
+            <code>true</code>, the corresponding <code>from-outcome</code> will
+            be the outcome taken by the enclosing <code>&lt;switch&gt;</code></p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="from-outcome"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p>The "from-outcome" element contains a logical outcome
+            string returned by the execution of an application
+            action method selected via an "actionRef" property
+            (or a literal value specified by an "action" property)
+            of a UICommand component.  If specified, this rule
+            will be relevant only if the outcome value matches
+            this element's value.  If not specified, this rule
+            will be relevant if the outcome value is non-null
+            or, if the "if" element is present, will be relevant
+            for any outcome value, with the assumption that the
+            condition specified in the "if" element ultimately
+            determines if this rule is a match.</p>
+
+            <p class="changed_added_2_2">If used in a faces flow, this element
+            represents the node id to which control will be passed.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID">
+    </xsd:attribute>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-flow-returnType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Define a return node in a flow graph.</p>
+
+        <div class="changed_added_2_2">
+
+        <p>This element must contain exactly one <code>&lt;from-outcome&gt;</code> element.</p>
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="from-outcome"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">This element
+            represents the node id to which control will be passed.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p class="changed_added_2_2">The id of this flow-return.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-flow-callType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Define a call node in a flow graph.</p>
+
+        <div class="changed_added_2_2">
+
+        <p>This element must contain exactly one <code>&lt;flow-reference&gt;</code> element,
+        which must contain exactly one <code>&lt;flow-id&gt;</code> element.</p>
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="flow-reference"
+                   type="jakartaee:faces-config-flow-definition-flow-call-flow-referenceType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">The flow id of the called flow.<p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="outbound-parameter"
+                   type="jakartaee:faces-config-flow-definition-flow-call-outbound-parameterType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">A parameter to pass when calling the flow
+            identified in the "flow-reference" element that is a sibling of this element.<p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"
+                   use="required">
+      <xsd:annotation>
+        <xsd:documentation>
+          <![CDATA[
+          <p class="changed_added_2_2">The id of this flow-return.</p>
+
+          ]]>
+        </xsd:documentation>
+      </xsd:annotation>
+    </xsd:attribute>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-flow-call-flow-referenceType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Identifiy the called flow.</p>
+
+        <div class="changed_added_2_2">
+
+        </div>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="flow-document-id"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p>The document id of the called flow.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="flow-id"
+                   type="jakartaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p>The id of the called flow.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-initializerType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">A <code>MethodExpression</code> that will be invoked when the flow is entered.<p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-finalizerType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">A <code>MethodExpression</code> that will be invoked when the flow is exited.<p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-el-expressionType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-inbound-parameterType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">A named parameter whose value will be populated
+        with a correspondingly named parameter within an "outbound-parameter" element.<p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2"> The "name" element within an "inbound-parameter"
+            element declares the name of this parameter
+            to be passed into a flow.  There must be
+            a sibling "value" element in the same parent as this element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="value"
+                   type="jakartaee:faces-config-flow-definition-parameter-valueType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2"> The "value" element within an "inbound-parameter"
+            must be an EL Expression whose value will be set with the correspondingly
+            named "outbound-parameter" when this flow is entered, if such a
+            parameter exists.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-flow-definition-flow-call-outbound-parameterType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">A named parameter whose value will be
+        passed to a correspondingly named parameter within an "inbound-parameter" element
+        on the target flow.<p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2"> The "name" element within an "outbound-parameter" element
+            declares the name of this parameter to be passed out of a flow.  There must be
+            a sibling "value" element in the same parent as this element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="value"
+                   type="jakartaee:faces-config-flow-definition-parameter-valueType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2"> The "value" element within an "outbound-parameter"
+            must be a literal string or an EL Expression whose "get" will be called when the "flow-call"
+            containing this element is traversed to go to a new flow.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-navigation-caseType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> <span class="changed_modified_2_2">The</span>
+        "navigation-case" element describes a particular
+        combination of conditions that must match for this case to
+        be executed, and the view id of the component tree that
+        should be selected next.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="from-action"
+                   type="jakartaee:faces-config-from-actionType"
+                   minOccurs="0"/>
+      <xsd:element name="from-outcome"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p>The "from-outcome" element contains a logical outcome
+            string returned by the execution of an application
+            action method selected via an "actionRef" property
+            (or a literal value specified by an "action" property)
+            of a UICommand component.  If specified, this rule
+            will be relevant only if the outcome value matches
+            this element's value.  If not specified, this rule
+            will be relevant if the outcome value is non-null
+            or, if the "if" element is present, will be relevant
+            for any outcome value, with the assumption that the
+            condition specified in the "if" element ultimately
+            determines if this rule is a match.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="if"
+                   type="jakartaee:faces-config-ifType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> Please see section 7.4.2 "Default NavigationHandler Algorithm" of the Jakarta Faces Specification Document
+            for the specification of this element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="to-view-id"
+                   type="jakartaee:faces-config-valueType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p><span class="changed_modified_2_2">The "to-view-id" element
+            contains the view identifier (<span class="changed_added_2_2">or
+            flow node id, or flow id</span>)
+            of the next view (<span class="changed_added_2_2">or flow node or
+            flow</span>) that should be displayed if this
+            navigation rule is matched. If the contents is a
+            value expression, it should be resolved by the
+            navigation handler to obtain the view (
+            <span class="changed_added_2_2">or flow node or flow</span>)
+            identifier.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="to-flow-document-id"
+                   type="jakartaee:java-identifierType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p class="changed_added_2_2">The document id of the called flow.
+            If this element appears in a &lt;navigation-case&gt; nested within
+            a &lt;flow-definition&gt;, it must be ignored because navigation
+            cases within flows may only navigate among the view nodes of that
+            flow.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="redirect"
+                   type="jakartaee:faces-config-redirectType"
+                   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-navigation-ruleType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "navigation-rule" element represents an individual
+        decision rule that will be utilized by the default
+        NavigationHandler implementation to make decisions on
+        what view should be displayed next, based on the
+        view id being processed.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="from-view-id"
+                   type="jakartaee:faces-config-from-view-idType"/>
+      <xsd:element name="navigation-case"
+                   type="jakartaee:faces-config-navigation-caseType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="navigation-rule-extension"
+                   type="jakartaee:faces-config-navigation-rule-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-navigation-rule-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for navigation-rule.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-null-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "null-value" element indicates that the managed
+        property in which we are nested will be explicitly
+        set to null if our managed bean is automatically
+        created.  This is different from omitting the managed
+        property element entirely, which will cause no
+        property setter to be called for this property.</p>
+
+        <p>The "null-value" element can only be used when the
+        associated "property-class" identifies a Java class,
+        not a Java primitive.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-propertyType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "property" element represents a JavaBean property of the
+        Java class represented by our parent element.</p>
+
+        <p>Property names must be unique within the scope of the Java
+        class that is represented by the parent element, and must
+        correspond to property names that will be recognized when
+        performing introspection against that class via
+        java.beans.Introspector.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="property-name"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "property-name" element represents the JavaBeans
+            property name under which the corresponding value
+            may be stored.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property-class"
+                   type="jakartaee:java-typeType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "property-class" element represents the Java type
+            of the value associated with this property name.
+            If not specified, it can be inferred from existing
+            classes; however, this element should be specified if
+            the configuration file is going to be the source for
+            generating the corresponding classes.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="default-value"
+                   type="jakartaee:faces-config-default-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="suggested-value"
+                   type="jakartaee:faces-config-suggested-valueType"
+                   minOccurs="0"/>
+      <xsd:element name="property-extension"
+                   type="jakartaee:faces-config-property-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-protected-viewsType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p class="changed_added_2_2">Any view that matches any of the
+        url-patterns in this element may only be reached from another Jakarta Faces
+        view in the same web application. Because the runtime is aware of
+        which views are protected, any navigation from an unprotected
+        view to a protected view is automatically subject to
+        protection.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="url-pattern"
+                   type="jakartaee:url-patternType"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-property-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for property.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-redirectType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "redirect" element indicates that navigation to the
+        specified "to-view-id" should be accomplished by
+        performing an HTTP redirect rather than the usual
+        ViewHandler mechanisms.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="redirect-param"
+                   type="jakartaee:faces-config-redirect-redirectParamType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+    <xsd:attribute name="include-view-params"
+                   type="xsd:boolean"
+                   use="optional"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-redirect-viewParamType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> This element was introduced due to a specification
+        error, and is now deprecated.  The correct name for
+        this element is "redirect-param" and its meaning is
+        documented therein.  The "view-param" element is
+        maintained to preserve backwards compatibility.
+        Implementations must treat this element the same as
+        "redirect-param".</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:string"/>
+      <xsd:element name="value"
+                   type="jakartaee:string"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-redirect-redirectParamType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "redirect-param" element, only valid within
+        a "redirect" element, contains child "name"
+        and "value" elements that must be included in the
+        redirect url when the redirect is performed.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="name"
+                   type="jakartaee:string"/>
+      <xsd:element name="value"
+                   type="jakartaee:string"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-referenced-beanType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "referenced-bean" element represents at design time the
+        promise that a Java object of the specified type will exist at
+        runtime in some scope, under the specified key.  This can be
+        used by design time tools to construct user interface dialogs
+        based on the properties of the specified class.  The presence
+        or absence of a referenced bean element has no impact on the
+        Jakarta Faces runtime environment inside a web application.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="referenced-bean-name"
+                   type="jakartaee:java-identifierType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "referenced-bean-name" element represents the
+            attribute name under which the corresponding
+            referenced bean may be assumed to be stored, in one
+            of 'request', 'session', 'view', 'application'
+            or a custom scope.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="referenced-bean-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "referenced-bean-class" element represents the
+            fully qualified class name of the Java class
+            (either abstract or concrete) or Java interface
+            implemented by the corresponding referenced bean.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-render-kitType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "render-kit" element represents a concrete RenderKit
+        implementation that should be registered under the specified
+        render-kit-id.  If no render-kit-id is specified, the
+        identifier of the default RenderKit
+        (RenderKitFactory.DEFAULT_RENDER_KIT) is assumed.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="render-kit-id"
+                   type="jakartaee:string"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "render-kit-id" element represents an identifier
+            for the RenderKit represented by the parent
+            "render-kit" element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="render-kit-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "render-kit-class" element represents the fully
+            qualified class name of a concrete RenderKit
+            implementation class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="renderer"
+                   type="jakartaee:faces-config-rendererType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="client-behavior-renderer"
+                   type="jakartaee:faces-config-client-behavior-rendererType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="render-kit-extension"
+                   type="jakartaee:faces-config-render-kit-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-client-behavior-rendererType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "client-behavior-renderer" element represents a concrete
+        ClientBehaviorRenderer implementation class that should be
+        registered under the specified behavior renderer type identifier,
+        in the RenderKit associated with the parent "render-kit"
+        element.  Client Behavior renderer type must be unique within the RenderKit
+        associated with the parent "render-kit" element.</p>
+
+        <p>Nested "attribute" elements identify generic component
+        attributes that are recognized by this renderer.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="client-behavior-renderer-type"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "client-behavior-renderer-type" element represents a renderer type
+            identifier for the Client Behavior Renderer represented by the parent
+            "client-behavior-renderer" element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="client-behavior-renderer-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "client-behavior-renderer-class" element represents the fully
+            qualified class name of a concrete Client Behavior Renderer
+            implementation class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-rendererType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "renderer" element represents a concrete Renderer
+        implementation class that should be registered under the
+        specified component family and renderer type identifiers,
+        in the RenderKit associated with the parent "render-kit"
+        element.  Combinations of component family and
+        renderer type must be unique within the RenderKit
+        associated with the parent "render-kit" element.</p>
+
+        <p>Nested "attribute" elements identify generic component
+        attributes that are recognized by this renderer.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="component-family"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "component-family" element represents the
+            component family for which the Renderer represented
+            by the parent "renderer" element will be used.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="renderer-type"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "renderer-type" element represents a renderer type
+            identifier for the Renderer represented by the parent
+            "renderer" element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="renderer-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "renderer-class" element represents the fully
+            qualified class name of a concrete Renderer
+            implementation class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="facet"
+                   type="jakartaee:faces-config-facetType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="attribute"
+                   type="jakartaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+      <xsd:element name="renderer-extension"
+                   type="jakartaee:faces-config-renderer-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-renderer-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for renderer.  It may contain implementation
+        specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-render-kit-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for render-kit.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-suggested-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "suggested-value" contains the value for the property or
+        attribute in which this element resides.  This value is
+        advisory only and is intended for tools to use when
+        populating pallettes.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="jakartaee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-supported-localeType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "supported-locale" element allows authors to declare
+        which locales are supported in this application instance.</p>
+
+        <p class="modified_added_2_3">
+        To facilitate BCP 47 this element first needs to be parsed by the
+        Locale.forLanguageTag method. If it does not return a Locale with
+        a language the old specification below needs to take effect.
+        </p>
+
+        <p>It must be specified as :language:[_:country:[_:variant:]]
+        without the colons, for example "ja_JP_SJIS".  The
+        separators between the segments may be '-' or '_'.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:extension base="jakartaee:faces-config-localeType">
+        <xsd:attribute name="id"
+                       type="xsd:ID"/>
+      </xsd:extension>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-behaviorType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "behavior" element represents a concrete Behavior
+        implementation class that should be registered under the
+        specified behavior identifier.  Behavior identifiers must
+        be unique within the entire web application.</p>
+
+        <p>Nested "attribute" elements identify generic attributes that
+        may be configured on the corresponding UIComponent in order
+        to affect the operation of the Behavior.  Nested "property"
+        elements identify JavaBeans properties of the Behavior
+        implementation class that may be configured to affect the
+        operation of the Behavior.  "attribute" and "property"
+        elements are intended to allow component developers to
+        more completely describe their components to tools and users.
+        These elements have no required runtime semantics.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="behavior-id"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "behavior-id" element represents the identifier
+            under which the corresponding Behavior class should
+            be registered.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="behavior-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "behavior-class" element represents the fully
+            qualified class name of a concrete Behavior
+            implementation class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="jakartaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> Nested "attribute" elements identify generic
+            attributes that may be configured on the
+            corresponding UIComponent in order to affect the
+            operation of the Behavior.  This attribute is
+            primarily for design-time tools and is not
+            specified to have any meaning at runtime.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> Nested "property" elements identify JavaBeans
+            properties of the Behavior implementation class
+            that may be configured to affect the operation of
+            the Behavior.  This attribute is primarily for
+            design-time tools and is not specified to have
+            any meaning at runtime.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="behavior-extension"
+                   type="jakartaee:faces-config-behavior-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-behavior-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for behavior.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-validatorType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "validator" element represents a concrete Validator
+        implementation class that should be registered under the
+        specified validator identifier.  Validator identifiers must
+        be unique within the entire web application.</p>
+
+        <p>Nested "attribute" elements identify generic attributes that
+        may be configured on the corresponding UIComponent in order
+        to affect the operation of the Validator.  Nested "property"
+        elements identify JavaBeans properties of the Validator
+        implementation class that may be configured to affect the
+        operation of the Validator.  "attribute" and "property"
+        elements are intended to allow component developers to
+        more completely describe their components to tools and users.
+        These elements have no required runtime semantics.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:group ref="jakartaee:descriptionGroup"/>
+      <xsd:element name="validator-id"
+                   type="jakartaee:string">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "validator-id" element represents the identifier
+            under which the corresponding Validator class should
+            be registered.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="validator-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "validator-class" element represents the fully
+            qualified class name of a concrete Validator
+            implementation class.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="attribute"
+                   type="jakartaee:faces-config-attributeType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> Nested "attribute" elements identify generic
+            attributes that may be configured on the
+            corresponding UIComponent in order to affect the
+            operation of the Validator.  This attribute is
+            primarily for design-time tools and is not
+            specified to have any meaning at runtime.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="property"
+                   type="jakartaee:faces-config-propertyType"
+                   minOccurs="0"
+                   maxOccurs="unbounded">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> Nested "property" elements identify JavaBeans
+            properties of the Validator implementation class
+            that may be configured to affect the operation of
+            the Validator.  This attribute is primarily for
+            design-time tools and is not specified to have
+            any meaning at runtime.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="validator-extension"
+                   type="jakartaee:faces-config-validator-extensionType"
+                   minOccurs="0"
+                   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-validator-extensionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> Extension element for validator.  It may contain
+        implementation specific content.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:any minOccurs="0"
+               maxOccurs="unbounded"
+               namespace="##any"
+               processContents="lax"/>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-valueType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The "value" element is the String representation of
+        a literal value to which a scalar managed property
+        will be set, or a value binding expression ("#{...}")
+        that will be used to calculate the required value.
+        It will be converted as specified for the actual
+        property type.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:union memberTypes="jakartaee:faces-config-el-expressionType xsd:string"/>
+  </xsd:simpleType>
+
+
+  <!-- **************************************************** -->
+
+  <xsd:complexType name="faces-config-system-event-listenerType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> The presence of this element within the "application" element in
+        an application configuration resource file indicates the
+        developer wants to add an SystemEventListener to this
+        application instance.  Elements nested within this element allow
+        selecting the kinds of events that will be delivered to the
+        listener instance, and allow selecting the kinds of classes that
+        can be the source of events that are delivered to the listener
+        instance.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:sequence>
+      <xsd:element name="system-event-listener-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "system-event-listener-class" element contains
+            the fully qualified class name of the concrete
+            SystemEventListener implementation class that will be
+            called when events of the type specified by the
+            "system-event-class" are sent by the runtime.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="system-event-class"
+                   type="jakartaee:fully-qualified-classType">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "system-event-class" element contains the fully
+            qualified class name of the SystemEvent subclass for
+            which events will be delivered to the class whose fully
+            qualified class name is given by the
+            "system-event-listener-class" element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+      <xsd:element name="source-class"
+                   type="jakartaee:fully-qualified-classType"
+                   minOccurs="0">
+        <xsd:annotation>
+          <xsd:documentation>
+            <![CDATA[
+            <p> The "source-class" element, if present, contains the
+            fully qualified class name of the class that will be the
+            source for the event to be delivered to the class whose
+            fully qualified class name is given by the
+            "system-event-listener-class" element.</p>
+
+            ]]>
+          </xsd:documentation>
+        </xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id"
+                   type="xsd:ID"/>
+  </xsd:complexType>
+
+  <xsd:simpleType name="faces-config-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+        <![CDATA[
+        <p> This type contains the recognized versions of
+        faces-config supported.</p>
+
+        ]]>
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="4.0"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+</xsd:schema>
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/FacesConfigIterator.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/FacesConfigIterator.java
index e828434..ad63cef 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/FacesConfigIterator.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/FacesConfigIterator.java
@@ -150,7 +150,7 @@
                     }
                     if (!found) {
                         InitParam contextParam = (InitParam) ddRoot.createBean(INIT_PARAM);
-                        if(WebApp.VERSION_5_0.equals(ddRoot.getVersion())) {
+                        if(WebApp.VERSION_6_0.equals(ddRoot.getVersion()) || WebApp.VERSION_5_0.equals(ddRoot.getVersion())) {
                             contextParam.setParamName(JAKARTAEE_FACES_CONFIG_PARAM);
                         } else {
                             contextParam.setParamName(FACES_CONFIG_PARAM);
@@ -187,7 +187,9 @@
         // not found on project classpath (case of Maven project with JSF in deps)
         if (jsfVersion == null) {
             Profile profile = wm.getJ2eeProfile();
-            if (profile.isAtLeast(Profile.JAKARTA_EE_9_WEB)) {
+            if (profile.isAtLeast(Profile.JAKARTA_EE_10_WEB)) {
+                return JSFCatalog.RES_FACES_CONFIG_4_0;
+            } else if (profile.isAtLeast(Profile.JAKARTA_EE_9_WEB)) {
                 return JSFCatalog.RES_FACES_CONFIG_3_0;
             } else if (profile.isAtLeast(Profile.JAVA_EE_8_WEB)) {
                 return JSFCatalog.RES_FACES_CONFIG_2_3;
@@ -219,6 +221,8 @@
 
     private static String facesConfigForVersion(JSFVersion jsfVersion) {
         switch (jsfVersion) {
+            case JSF_4_0:
+                return JSFCatalog.RES_FACES_CONFIG_4_0;
             case JSF_3_0:
                 return JSFCatalog.RES_FACES_CONFIG_3_0;
             case JSF_2_3:
diff --git a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/JSFConfigurationPanelVisual.java b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/JSFConfigurationPanelVisual.java
index adc0474..ff85ec7 100644
--- a/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/JSFConfigurationPanelVisual.java
+++ b/enterprise/web.jsf/src/org/netbeans/modules/web/jsf/wizards/JSFConfigurationPanelVisual.java
@@ -1807,7 +1807,9 @@
                     setServerLibraryModel(serverJsfLibraries);
                     if (serverJsfLibraries.isEmpty()) {
                         Library preferredLibrary;
-                        if (getProfile() != null && getProfile().isAtLeast(Profile.JAKARTA_EE_9_WEB)) {
+                        if (getProfile() != null && getProfile().isAtLeast(Profile.JAKARTA_EE_10_WEB)) {
+                            preferredLibrary = LibraryManager.getDefault().getLibrary(JSFUtils.DEFAULT_JSF_4_0_NAME);
+                        } else if (getProfile() != null && getProfile().isAtLeast(Profile.JAKARTA_EE_9_WEB)) {
                             preferredLibrary = LibraryManager.getDefault().getLibrary(JSFUtils.DEFAULT_JSF_3_0_NAME);
                         } else if (getProfile() != null && getProfile().isAtLeast(Profile.JAVA_EE_5)) {
                             preferredLibrary = LibraryManager.getDefault().getLibrary(JSFUtils.DEFAULT_JSF_2_0_NAME);
diff --git a/enterprise/web.project/src/org/netbeans/modules/web/project/ProjectWebModule.java b/enterprise/web.project/src/org/netbeans/modules/web/project/ProjectWebModule.java
index f4740df..bf363cb 100644
--- a/enterprise/web.project/src/org/netbeans/modules/web/project/ProjectWebModule.java
+++ b/enterprise/web.project/src/org/netbeans/modules/web/project/ProjectWebModule.java
@@ -558,7 +558,9 @@
     public String getModuleVersion () {
         // return a version based on the Java EE version
         Profile platformVersion = getJ2eeProfile();
-        if (Profile.JAKARTA_EE_9_1_FULL.equals(platformVersion) || Profile.JAKARTA_EE_9_1_WEB.equals(platformVersion)
+        if (Profile.JAKARTA_EE_10_FULL.equals(platformVersion) || Profile.JAKARTA_EE_10_WEB.equals(platformVersion)) {
+            return WebApp.VERSION_6_0;
+        } else if (Profile.JAKARTA_EE_9_1_FULL.equals(platformVersion) || Profile.JAKARTA_EE_9_1_WEB.equals(platformVersion)
                 || Profile.JAKARTA_EE_9_FULL.equals(platformVersion) || Profile.JAKARTA_EE_9_WEB.equals(platformVersion)) {
             return WebApp.VERSION_5_0;
         } else if (Profile.JAKARTA_EE_8_FULL.equals(platformVersion) || Profile.JAKARTA_EE_8_WEB.equals(platformVersion) 
diff --git a/enterprise/web.project/src/org/netbeans/modules/web/project/WebProject.java b/enterprise/web.project/src/org/netbeans/modules/web/project/WebProject.java
index 76c84da..93fc8f2 100644
--- a/enterprise/web.project/src/org/netbeans/modules/web/project/WebProject.java
+++ b/enterprise/web.project/src/org/netbeans/modules/web/project/WebProject.java
@@ -1586,8 +1586,9 @@
                         ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_7_FULL) ||
                         ProjectUtil.getSupportedProfiles(project).contains(Profile.JAVA_EE_8_FULL) ||
                         ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_8_FULL);
-                serverSupportsEJB40 = ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_FULL) ||
-                        ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_1_FULL);
+                serverSupportsEJB40 = ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_FULL)
+                        || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_9_1_FULL)
+                        || ProjectUtil.getSupportedProfiles(project).contains(Profile.JAKARTA_EE_10_FULL);
                 checked = true;
             }
         }
@@ -2432,12 +2433,13 @@
             List<Lookup> lookups = new ArrayList<>();
             lookups.add(base);
             Profile profile = Profile.fromPropertiesString(project.evaluator().getProperty(WebProjectProperties.J2EE_PLATFORM));
-            if (Profile.JAVA_EE_6_FULL.equals(profile) || Profile.JAVA_EE_6_WEB.equals(profile) ||
-                    Profile.JAVA_EE_7_FULL.equals(profile) || Profile.JAVA_EE_7_WEB.equals(profile) ||
-                    Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_WEB.equals(profile) ||
-                    Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_8_WEB.equals(profile) ||
-                    Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_9_WEB.equals(profile) ||
-                    Profile.JAKARTA_EE_9_1_FULL.equals(profile) || Profile.JAKARTA_EE_9_1_WEB.equals(profile)){
+            if (Profile.JAVA_EE_6_FULL.equals(profile) || Profile.JAVA_EE_6_WEB.equals(profile)
+                    || Profile.JAVA_EE_7_FULL.equals(profile) || Profile.JAVA_EE_7_WEB.equals(profile)
+                    || Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_WEB.equals(profile)
+                    || Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_8_WEB.equals(profile)
+                    || Profile.JAKARTA_EE_9_FULL.equals(profile) || Profile.JAKARTA_EE_9_WEB.equals(profile)
+                    || Profile.JAKARTA_EE_9_1_FULL.equals(profile) || Profile.JAKARTA_EE_9_1_WEB.equals(profile)
+                    || Profile.JAKARTA_EE_10_FULL.equals(profile) || Profile.JAKARTA_EE_10_WEB.equals(profile)) {
                 lookups.add(ee6);
             }
             if ("true".equals(project.evaluator().getProperty(WebProjectProperties.DISPLAY_BROWSER))) {
diff --git a/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSClientSupport.java b/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSClientSupport.java
index fe04308..952597f 100644
--- a/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSClientSupport.java
+++ b/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSClientSupport.java
@@ -134,6 +134,10 @@
                 return JAKARTA_EE_VERSION_91;
             } else if (Profile.JAKARTA_EE_9_1_FULL.equals(webModule.getJ2eeProfile())) {
                 return JAKARTA_EE_VERSION_91;
+            } else if (Profile.JAKARTA_EE_10_WEB.equals(webModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
+            } else if (Profile.JAKARTA_EE_10_FULL.equals(webModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
             } else if (Profile.JAVA_EE_5.equals(webModule.getJ2eeProfile())) {
                 return JAVA_EE_VERSION_15;
             }
diff --git a/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSSupport.java b/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSSupport.java
index d1868e6..755d630 100644
--- a/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSSupport.java
+++ b/enterprise/web.project/src/org/netbeans/modules/web/project/jaxws/WebProjectJAXWSSupport.java
@@ -619,6 +619,10 @@
                 return JAKARTA_EE_VERSION_91;
             } else if (Profile.JAKARTA_EE_9_1_FULL.equals(webModule.getJ2eeProfile())) {
                 return JAKARTA_EE_VERSION_91;
+            } else if (Profile.JAKARTA_EE_10_WEB.equals(webModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
+            } else if (Profile.JAKARTA_EE_10_FULL.equals(webModule.getJ2eeProfile())) {
+                return JAKARTA_EE_VERSION_10;
             } else if (Profile.JAVA_EE_5.equals(webModule.getJ2eeProfile())) {
               return JAVA_EE_VERSION_15;
             }
diff --git a/enterprise/web.project/src/org/netbeans/modules/web/project/ui/customizer/WebProjectProperties.java b/enterprise/web.project/src/org/netbeans/modules/web/project/ui/customizer/WebProjectProperties.java
index 29c88d5..ddaba2a 100644
--- a/enterprise/web.project/src/org/netbeans/modules/web/project/ui/customizer/WebProjectProperties.java
+++ b/enterprise/web.project/src/org/netbeans/modules/web/project/ui/customizer/WebProjectProperties.java
@@ -375,7 +375,7 @@
         PLATFORM_LIST_RENDERER = PlatformUiSupport.createPlatformListCellRenderer();
         SpecificationVersion minimalSourceLevel = null;
         Profile profile = Profile.fromPropertiesString(evaluator.getProperty(J2EE_PLATFORM));
-        if (Profile.JAKARTA_EE_9_1_FULL.equals(profile)) {
+        if (Profile.JAKARTA_EE_9_1_FULL.equals(profile) || Profile.JAKARTA_EE_10_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("11");
         } else if (Profile.JAKARTA_EE_8_FULL.equals(profile) || Profile.JAVA_EE_8_FULL.equals(profile) || Profile.JAKARTA_EE_9_FULL.equals(profile)) {
             minimalSourceLevel = new SpecificationVersion("1.8");
diff --git a/enterprise/web.project/test/unit/src/org/netbeans/modules/web/project/WebProjectTest.java b/enterprise/web.project/test/unit/src/org/netbeans/modules/web/project/WebProjectTest.java
index d007888..61a52f0 100644
--- a/enterprise/web.project/test/unit/src/org/netbeans/modules/web/project/WebProjectTest.java
+++ b/enterprise/web.project/test/unit/src/org/netbeans/modules/web/project/WebProjectTest.java
@@ -111,6 +111,12 @@
         JavaEEProjectSettings.setProfile(webProject, Profile.JAKARTA_EE_9_WEB);
         Profile obtainedProfileJakartaEE9 = JavaEEProjectSettings.getProfile(webProject);
         assertEquals(Profile.JAKARTA_EE_9_WEB, obtainedProfileJakartaEE9);
+        JavaEEProjectSettings.setProfile(webProject, Profile.JAKARTA_EE_9_1_WEB);
+        Profile obtainedProfileJakartaEE91 = JavaEEProjectSettings.getProfile(webProject);
+        assertEquals(Profile.JAKARTA_EE_9_1_WEB, obtainedProfileJakartaEE91);
+        JavaEEProjectSettings.setProfile(webProject, Profile.JAKARTA_EE_10_WEB);
+        Profile obtainedProfileJakartaEE10 = JavaEEProjectSettings.getProfile(webProject);
+        assertEquals(Profile.JAKARTA_EE_10_WEB, obtainedProfileJakartaEE10);
     }
 
     /**
diff --git a/enterprise/websocket/src/org/netbeans/modules/websocket/editor/WebSocketMethodsTask.java b/enterprise/websocket/src/org/netbeans/modules/websocket/editor/WebSocketMethodsTask.java
index 4b4649c..76faede 100644
--- a/enterprise/websocket/src/org/netbeans/modules/websocket/editor/WebSocketMethodsTask.java
+++ b/enterprise/websocket/src/org/netbeans/modules/websocket/editor/WebSocketMethodsTask.java
@@ -130,7 +130,8 @@
                 && !Profile.JAVA_EE_8_FULL.equals(profile)
                 && !Profile.JAKARTA_EE_8_FULL.equals(profile)
                 && !Profile.JAKARTA_EE_9_FULL.equals(profile)
-                && !Profile.JAKARTA_EE_9_1_FULL.equals(profile)) {
+                && !Profile.JAKARTA_EE_9_1_FULL.equals(profile)
+                && !Profile.JAKARTA_EE_10_FULL.equals(profile)) {
             return false;
         }
         return true;
diff --git a/enterprise/websocket/src/org/netbeans/modules/websocket/wizard/WebSocketPanel.java b/enterprise/websocket/src/org/netbeans/modules/websocket/wizard/WebSocketPanel.java
index a816a64..17a7cb1 100644
--- a/enterprise/websocket/src/org/netbeans/modules/websocket/wizard/WebSocketPanel.java
+++ b/enterprise/websocket/src/org/netbeans/modules/websocket/wizard/WebSocketPanel.java
@@ -78,17 +78,18 @@
         WebModule webModule = WebModule.getWebModule(project.getProjectDirectory());
         if (webModule != null) {
             Profile profile = webModule.getJ2eeProfile();
-            if ( !Profile.JAVA_EE_7_FULL.equals(profile) &&
-                    !Profile.JAVA_EE_7_WEB.equals(profile) &&
-                    !Profile.JAVA_EE_8_FULL.equals(profile) &&
-                    !Profile.JAVA_EE_8_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_8_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_8_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_1_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_1_FULL.equals(profile))
-            {
+            if (!Profile.JAVA_EE_7_FULL.equals(profile)
+                    && !Profile.JAVA_EE_7_WEB.equals(profile)
+                    && !Profile.JAVA_EE_8_FULL.equals(profile)
+                    && !Profile.JAVA_EE_8_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_8_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_8_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_9_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_9_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_9_1_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_9_1_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_10_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_10_FULL.equals(profile)) {
                 setErrorMessage(NbBundle.getMessage(WebSocketPanel.class,
                         "MSG_NoJEE7Profile"));          // NOI18N
                 return false;
diff --git a/enterprise/websvc.clientapi/nbproject/org-netbeans-modules-websvc-clientapi.sig b/enterprise/websvc.clientapi/nbproject/org-netbeans-modules-websvc-clientapi.sig
index 79da787..fb905f0 100644
--- a/enterprise/websvc.clientapi/nbproject/org-netbeans-modules-websvc-clientapi.sig
+++ b/enterprise/websvc.clientapi/nbproject/org-netbeans-modules-websvc-clientapi.sig
@@ -214,6 +214,7 @@
 fld protected final static java.lang.String JAKARTA_EE_VERSION_8 = "jakarta-ee-version-8"
 fld protected final static java.lang.String JAKARTA_EE_VERSION_9 = "jakarta-ee-version-9"
 fld protected final static java.lang.String JAKARTA_EE_VERSION_91 = "jakarta-ee-version-91"
+fld protected final static java.lang.String JAKARTA_EE_VERSION_10 = "jakarta-ee-version-10"
 fld protected final static java.lang.String JAVA_EE_VERSION_15 = "java-ee-version-15"
 fld protected final static java.lang.String JAVA_EE_VERSION_16 = "java-ee-version-16"
 fld protected final static java.lang.String JAVA_EE_VERSION_17 = "java-ee-version-17"
diff --git a/enterprise/websvc.clientapi/src/org/netbeans/modules/websvc/spi/jaxws/client/ProjectJAXWSClientSupport.java b/enterprise/websvc.clientapi/src/org/netbeans/modules/websvc/spi/jaxws/client/ProjectJAXWSClientSupport.java
index 69cf08d..757d67d 100644
--- a/enterprise/websvc.clientapi/src/org/netbeans/modules/websvc/spi/jaxws/client/ProjectJAXWSClientSupport.java
+++ b/enterprise/websvc.clientapi/src/org/netbeans/modules/websvc/spi/jaxws/client/ProjectJAXWSClientSupport.java
@@ -85,6 +85,7 @@
     protected static final String JAKARTA_EE_VERSION_8="jakarta-ee-version-8"; //NOI18N
     protected static final String JAKARTA_EE_VERSION_9="jakarta-ee-version-9"; //NOI18N
     protected static final String JAKARTA_EE_VERSION_91="jakarta-ee-version-91"; //NOI18N
+    protected static final String JAKARTA_EE_VERSION_10="jakarta-ee-version-10"; //NOI18N
 
     Project project;
     private AntProjectHelper helper;
diff --git a/enterprise/websvc.jaxwsapi/nbproject/org-netbeans-modules-websvc-jaxwsapi.sig b/enterprise/websvc.jaxwsapi/nbproject/org-netbeans-modules-websvc-jaxwsapi.sig
index bbc9be0..2738b25 100644
--- a/enterprise/websvc.jaxwsapi/nbproject/org-netbeans-modules-websvc-jaxwsapi.sig
+++ b/enterprise/websvc.jaxwsapi/nbproject/org-netbeans-modules-websvc-jaxwsapi.sig
@@ -141,6 +141,7 @@
 fld protected final static java.lang.String JAKARTA_EE_VERSION_8 = "jakarta-ee-version-8"
 fld protected final static java.lang.String JAKARTA_EE_VERSION_9 = "jakarta-ee-version-9"
 fld protected final static java.lang.String JAKARTA_EE_VERSION_91 = "jakarta-ee-version-91"
+fld protected final static java.lang.String JAKARTA_EE_VERSION_10 = "jakarta-ee-version-10"
 fld protected final static java.lang.String JAVA_EE_VERSION_15 = "java-ee-version-15"
 fld protected final static java.lang.String JAVA_EE_VERSION_16 = "java-ee-version-16"
 fld protected final static java.lang.String JAVA_EE_VERSION_17 = "java-ee-version-17"
diff --git a/enterprise/websvc.jaxwsapi/src/org/netbeans/modules/websvc/jaxws/spi/ProjectJAXWSSupport.java b/enterprise/websvc.jaxwsapi/src/org/netbeans/modules/websvc/jaxws/spi/ProjectJAXWSSupport.java
index 4b0c0da..c6bacfa 100644
--- a/enterprise/websvc.jaxwsapi/src/org/netbeans/modules/websvc/jaxws/spi/ProjectJAXWSSupport.java
+++ b/enterprise/websvc.jaxwsapi/src/org/netbeans/modules/websvc/jaxws/spi/ProjectJAXWSSupport.java
@@ -81,6 +81,7 @@
     protected static final String JAKARTA_EE_VERSION_8="jakarta-ee-version-8"; //NOI18N
     protected static final String JAKARTA_EE_VERSION_9="jakarta-ee-version-9"; //NOI18N
     protected static final String JAKARTA_EE_VERSION_91="jakarta-ee-version-91"; //NOI18N
+    protected static final String JAKARTA_EE_VERSION_10="jakarta-ee-version-10"; //NOI18N
 
     private Project project;
     private AntProjectHelper antProjectHelper;
diff --git a/enterprise/websvc.kit/test/qa-functional/src/org/netbeans/modules/ws/qaf/WebServicesTestBase.java b/enterprise/websvc.kit/test/qa-functional/src/org/netbeans/modules/ws/qaf/WebServicesTestBase.java
index 159a88c..b2e0722 100644
--- a/enterprise/websvc.kit/test/qa-functional/src/org/netbeans/modules/ws/qaf/WebServicesTestBase.java
+++ b/enterprise/websvc.kit/test/qa-functional/src/org/netbeans/modules/ws/qaf/WebServicesTestBase.java
@@ -188,7 +188,9 @@
         JAVAEE7,
         JAVAEE8,
         JAKARTAEE8,
-        JAKARTAEE9;
+        JAKARTAEE9,
+        JAKARTAEE91,
+        JAKARTAEE10;
 
         @Override
         public String toString() {
@@ -214,6 +216,12 @@
                case JAKARTAEE9:
                      //Jakarta EE 9
                     return "Jakarta EE 9";
+               case JAKARTAEE91:
+                     //Jakarta EE 9.1
+                    return "Jakarta EE 9.1";
+               case JAKARTAEE10:
+                     //Jakarta EE 10
+                    return "Jakarta EE 10";
             }
             throw new AssertionError("Unknown type: " + this); //NOI18N
         }
@@ -487,7 +495,9 @@
                 jcboVersion.selectItem(javaeeVersion.toString());
             } else {
                 // cannot use display name for Maven project
-                if (JavaEEVersion.JAKARTAEE9.equals(javaeeVersion)) {
+                if (JavaEEVersion.JAKARTAEE91.equals(javaeeVersion) || JavaEEVersion.JAKARTAEE10.equals(javaeeVersion)) {
+                    jcboVersion.selectItem("11");
+                } else if (JavaEEVersion.JAKARTAEE9.equals(javaeeVersion)) {
                     jcboVersion.selectItem("1.8.0");
                 } else if (JavaEEVersion.JAKARTAEE8.equals(javaeeVersion)) {
                     jcboVersion.selectItem("1.8.0");
diff --git a/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/editor/AsyncConverter.java b/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/editor/AsyncConverter.java
index 9958867..0940038 100644
--- a/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/editor/AsyncConverter.java
+++ b/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/editor/AsyncConverter.java
@@ -104,7 +104,9 @@
                 && !Profile.JAKARTA_EE_9_WEB.equals(profile)
                 && !Profile.JAKARTA_EE_9_FULL.equals(profile)
                 && !Profile.JAKARTA_EE_9_1_WEB.equals(profile)
-                && !Profile.JAKARTA_EE_9_1_FULL.equals(profile))
+                && !Profile.JAKARTA_EE_9_1_FULL.equals(profile)
+                && !Profile.JAKARTA_EE_10_WEB.equals(profile)
+                && !Profile.JAKARTA_EE_10_FULL.equals(profile))
         {
             return false;
         }
diff --git a/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/InterceptorPanel.java b/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/InterceptorPanel.java
index 577645a..d86c324 100644
--- a/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/InterceptorPanel.java
+++ b/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/InterceptorPanel.java
@@ -80,17 +80,18 @@
         WebModule webModule = WebModule.getWebModule(project.getProjectDirectory());
         if (webModule != null) {
             Profile profile = webModule.getJ2eeProfile();
-            if ( !Profile.JAVA_EE_7_FULL.equals(profile) &&
-                    !Profile.JAVA_EE_7_WEB.equals(profile) &&
-                    !Profile.JAVA_EE_8_FULL.equals(profile) &&
-                    !Profile.JAVA_EE_8_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_8_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_8_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_1_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_1_WEB.equals(profile))
-            {
+            if (!Profile.JAVA_EE_7_FULL.equals(profile)
+                    && !Profile.JAVA_EE_7_WEB.equals(profile)
+                    && !Profile.JAVA_EE_8_FULL.equals(profile)
+                    && !Profile.JAVA_EE_8_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_8_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_8_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_9_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_9_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_9_1_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_9_1_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_10_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_10_WEB.equals(profile)) {
                 setErrorMessage(NbBundle.getMessage(InterceptorPanel.class,
                         "MSG_NoJEE7Profile"));          // NOI18N
                 return false;
diff --git a/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/JaxRsFilterPanel.java b/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/JaxRsFilterPanel.java
index bc4e4eb..dad4c5b 100644
--- a/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/JaxRsFilterPanel.java
+++ b/enterprise/websvc.rest/src/org/netbeans/modules/websvc/rest/wizard/JaxRsFilterPanel.java
@@ -89,17 +89,18 @@
         WebModule webModule = WebModule.getWebModule(project.getProjectDirectory());
         if (webModule != null) {
             Profile profile = webModule.getJ2eeProfile();
-            if ( !Profile.JAKARTA_EE_9_1_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_1_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_9_WEB.equals(profile) &&
-                    !Profile.JAKARTA_EE_8_FULL.equals(profile) &&
-                    !Profile.JAKARTA_EE_8_WEB.equals(profile) &&
-                    !Profile.JAVA_EE_8_FULL.equals(profile) &&
-                    !Profile.JAVA_EE_8_WEB.equals(profile) &&
-                    !Profile.JAVA_EE_7_FULL.equals(profile) &&
-                    !Profile.JAVA_EE_7_WEB.equals(profile))
-            {
+            if (!Profile.JAKARTA_EE_10_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_10_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_9_1_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_9_1_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_9_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_9_WEB.equals(profile)
+                    && !Profile.JAKARTA_EE_8_FULL.equals(profile)
+                    && !Profile.JAKARTA_EE_8_WEB.equals(profile)
+                    && !Profile.JAVA_EE_8_FULL.equals(profile)
+                    && !Profile.JAVA_EE_8_WEB.equals(profile)
+                    && !Profile.JAVA_EE_7_FULL.equals(profile)
+                    && !Profile.JAVA_EE_7_WEB.equals(profile)) {
                 setErrorMessage(NbBundle.getMessage(JaxRsFilterPanel.class,
                         "MSG_NoJEE7Profile"));          // NOI18N
                 return false;
diff --git a/enterprise/websvc.restapi/nbproject/org-netbeans-modules-websvc-restapi.sig b/enterprise/websvc.restapi/nbproject/org-netbeans-modules-websvc-restapi.sig
index 597a7a4..60e477d 100644
--- a/enterprise/websvc.restapi/nbproject/org-netbeans-modules-websvc-restapi.sig
+++ b/enterprise/websvc.restapi/nbproject/org-netbeans-modules-websvc-restapi.sig
@@ -1,5 +1,5 @@
 #Signature file v4.1
-#Version 1.54
+#Version 1.55
 
 CLSS public abstract interface java.io.Serializable
 
@@ -331,6 +331,7 @@
 meth public boolean isJakartaEE8()
 meth public boolean isJakartaEE9()
 meth public boolean isJakartaEE91()
+meth public boolean isJakartaEE10()
 meth public boolean isRestSupportOn()
 meth public boolean isServerGFV2()
 meth public boolean isServerGFV3()
diff --git a/enterprise/websvc.restapi/src/org/netbeans/modules/websvc/rest/spi/RestSupport.java b/enterprise/websvc.restapi/src/org/netbeans/modules/websvc/rest/spi/RestSupport.java
index ba9657c..577e3e5 100644
--- a/enterprise/websvc.restapi/src/org/netbeans/modules/websvc/rest/spi/RestSupport.java
+++ b/enterprise/websvc.restapi/src/org/netbeans/modules/websvc/rest/spi/RestSupport.java
@@ -503,21 +503,36 @@
                         Profile.JAKARTA_EE_9_FULL.equals(profile);
         boolean isJakartaee91 = Profile.JAKARTA_EE_9_1_WEB.equals(profile) ||
                         Profile.JAKARTA_EE_9_1_FULL.equals(profile);
+        boolean isJakartaee10 = Profile.JAKARTA_EE_10_WEB.equals(profile) ||
+                        Profile.JAKARTA_EE_10_FULL.equals(profile);
         // Fix for BZ#216345: JAVA_EE_6_WEB profile doesn't contain JAX-RS API
-        return (isJee6 && MiscPrivateUtilities.supportsTargetProfile(project, Profile.JAVA_EE_6_FULL)) || isJee7 || isJee8 || isJakartaee8 || isJakartaee9 || isJakartaee91;
+        return (isJee6 && MiscPrivateUtilities.supportsTargetProfile(project, Profile.JAVA_EE_6_FULL)) || isJee7 || isJee8 || isJakartaee8 || isJakartaee9 || isJakartaee91 || isJakartaee10;
     }
 
     /**
-     * Is this JAKARTAEE9 profile project?
+     * Is this JAKARTAEE10 profile project?
      */
-    public boolean isJakartaEE91() {
+    public boolean isJakartaEE10() {
         WebModule webModule = WebModule.getWebModule(project.getProjectDirectory());
         if ( webModule == null ){
             return false;
         }
         Profile profile = webModule.getJ2eeProfile();
-        return Profile.JAKARTA_EE_9_1_WEB.equals(profile) ||
-                        Profile.JAKARTA_EE_9_1_FULL.equals(profile);
+        return Profile.JAKARTA_EE_10_WEB.equals(profile) ||
+                        Profile.JAKARTA_EE_10_FULL.equals(profile);
+    }
+
+    /**
+     * Is this JAKARTAEE91 profile project?
+     */
+    public boolean isJakartaEE91() {
+        WebModule webModule = WebModule.getWebModule(project.getProjectDirectory());
+        if (webModule == null) {
+            return false;
+        }
+        Profile profile = webModule.getJ2eeProfile();
+        return Profile.JAKARTA_EE_9_1_WEB.equals(profile)
+                || Profile.JAKARTA_EE_9_1_FULL.equals(profile);
     }
     
     /**
diff --git a/java/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/libraries/Bundle.properties b/java/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/libraries/Bundle.properties
index 1737a24..5ba34e4 100644
--- a/java/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/libraries/Bundle.properties
+++ b/java/java.j2seplatform/src/org/netbeans/modules/java/j2seplatform/libraries/Bundle.properties
@@ -37,7 +37,7 @@
 CTL_AddSources=Add JAR/Folder...
 CTL_ContentSources=Library Sources:
 TXT_InvalidJavadocRoot=<html><strong><p>Invalid Javadoc root {0}</p></strong>\
-    <p>The Javadoc root does not contain the package-list file.</p>
+    <p>The Javadoc root does not contain the package-list or element-list file.</p>
 TXT_InvalidJavadocRoot2=<html><strong><p>Invalid Javadoc root {0}</p></strong>\
     <p>The Javadoc root does not contain the index-files folder or the index-all.html file.<br>\
     The Javadoc search will not work.</p>
diff --git a/java/java.project/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetection.java b/java/java.project/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetection.java
index 759f7e8..cdd1e85 100644
--- a/java/java.project/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetection.java
+++ b/java/java.project/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetection.java
@@ -227,7 +227,8 @@
             final boolean singleRoot,
             final int depth) {
         final FileObject pkgList = folder.getFileObject("package-list", null); // NOI18N
-        if (pkgList != null) {
+        final FileObject elmList = folder.getFileObject("element-list", null); // NOI18N
+        if (pkgList != null || elmList != null) {
             result.add(folder);
             return singleRoot;
         }
diff --git a/java/java.project/test/unit/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetectionTest.java b/java/java.project/test/unit/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetectionTest.java
index d396988..5d17096 100644
--- a/java/java.project/test/unit/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetectionTest.java
+++ b/java/java.project/test/unit/src/org/netbeans/spi/java/project/support/JavadocAndSourceRootDetectionTest.java
@@ -101,8 +101,10 @@
         final Set<String> expected = new TreeSet<>();
         expected.add(TestFileUtils.writeFile(root, "lib1/dist/javadoc1/package-list", "some content").getParent().getPath());
         expected.add(TestFileUtils.writeFile(root, "lib2/dist/javadoc2/package-list", "some content").getParent().getPath());
-        expected.add(TestFileUtils.writeFile(root, "lib2/dist/javadoc3/package-list", "some content").getParent().getPath());
-        expected.add(TestFileUtils.writeFile(root, "other/lib/dist/javadoc4/package-list", "some content").getParent().getPath());
+        expected.add(TestFileUtils.writeFile(root, "lib3/dist/javadoc3/package-list", "some content").getParent().getPath());
+        expected.add(TestFileUtils.writeFile(root, "lib4/dist/javadoc4/element-list", "some content").getParent().getPath());
+        expected.add(TestFileUtils.writeFile(root, "other/lib1/dist/javadoc5/package-list", "some content").getParent().getPath());
+        expected.add(TestFileUtils.writeFile(root, "other/lib2/dist/javadoc6/element-list", "some content").getParent().getPath());
         final Collection< ? extends FileObject> javadocRoots = JavadocAndSourceRootDetection.findJavadocRoots(root, null);
         final Set<String> result = new TreeSet<>();
         for (FileObject jr : javadocRoots) {
diff --git a/java/javadoc/src/org/netbeans/modules/javadoc/search/IndexBuilder.java b/java/javadoc/src/org/netbeans/modules/javadoc/search/IndexBuilder.java
index 276aa41..110e740 100644
--- a/java/javadoc/src/org/netbeans/modules/javadoc/search/IndexBuilder.java
+++ b/java/javadoc/src/org/netbeans/modules/javadoc/search/IndexBuilder.java
@@ -178,11 +178,10 @@
                 // [PENDING] Display name is not ideal, e.g. "org.openide.windows (NetBeans Input/Output API)"
                 // where simply "NetBeans Input/Output API" is preferable... but standard title filter
                 // regexps are not so powerful (to avoid matching e.g. "Servlets (Main Documentation)").
-                InputStream is = URLUtils.open(fo, "package-list"); // NOI18N
-                if (is != null) {
-                    try {
-                        try {
-                            BufferedReader r = new BufferedReader(new InputStreamReader(is));
+                try (InputStream is = URLUtils.open(fo, "package-list");
+                        InputStream is2 = URLUtils.open(fo, "element-list")) { // NOI18N
+                    if (is != null || is2 != null) {
+                        try (BufferedReader r = new BufferedReader(new InputStreamReader( is != null ? is : is2 ))) {
                             String line = r.readLine();
                             if (line != null && r.readLine() == null) {
                                 // Good, exactly one line as expected. A package name.
@@ -193,14 +192,13 @@
                                 }
                                 // else fall back to index.html if available
                             }
-                        } finally {
-                            is.close();
                         }
-                    } catch (IOException ioe) {
-                            // Oh well, skip this one.
-                        ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, ioe);
                     }
                 }
+                catch (IOException ioe) {
+                    // Oh well, skip this one.
+                    ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL, ioe);
+                }
             }
             if (index != null) {
                 // Try to find a title.
diff --git a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ignored-overlaps b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ignored-overlaps
index c89db0c..5673dc0 100644
--- a/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ignored-overlaps
+++ b/nbbuild/antsrc/org/netbeans/nbbuild/extlibs/ignored-overlaps
@@ -121,3 +121,6 @@
 
 # Used only in unittests for mysql db specific tests
 ide/db.metadata.model/external/mysql-connector-j-8.0.31.jar ide/db.mysql/external/mysql-connector-j-8.0.31.jar
+
+# Jakarta EE API doc is repackaged to align with old NetBeans format, embedded indexes are thus identically and can be ignored.
+enterprise/jakartaee10.platform/external/generated-jakarta.jakartaee-api-10.0.0-javadoc.jar enterprise/jakartaee10.platform/external/jakarta.jakartaee-api-10.0.0-javadoc.jar
diff --git a/nbbuild/cluster.properties b/nbbuild/cluster.properties
index 4fe13ec..3bf36f5 100644
--- a/nbbuild/cluster.properties
+++ b/nbbuild/cluster.properties
@@ -815,6 +815,8 @@
         j2ee.sun.ddui,\
         j2eeapis,\
         j2eeserver,\
+        jakartaee10.api,\
+        jakartaee10.platform,\
         jakartaee8.api,\
         jakartaee8.platform,\
         jakartaee9.api,\
diff --git a/nbbuild/rat-exclusions.txt b/nbbuild/rat-exclusions.txt
index 608b1f8..2a0a171 100644
--- a/nbbuild/rat-exclusions.txt
+++ b/nbbuild/rat-exclusions.txt
@@ -33,12 +33,14 @@
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/application/model_7/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/application/model_8/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/application/model_9/*
+enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/application/model_10/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/client/model_1_4/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/client/model_5_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/client/model_6_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/client/model_7_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/client/model_8_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/client/model_9_0/*
+enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/client/model_10_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/ejb/model_2_1/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/ejb/model_3_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/ejb/model_3_1/*
@@ -50,10 +52,12 @@
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_3_1/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_4_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0/*
+enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_6_0/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_3_0_frag/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_3_1_frag/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_4_0_frag/*
 enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_5_0_frag/*
+enterprise/j2ee.dd/src/org/netbeans/modules/j2ee/dd/impl/web/model_6_0_frag/*
 
 ###### user-specific files  
 **/nbproject/private/**
