Merge pull request #4692 from jGauravGupta/JAKARTA_EE_10.0.0

Jakarta EE 10 - Platform/API/RI support
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/**