[581077] Servlet 6.0 Spec / Jakarta EE 10 support

Change-Id: I50d3b6644ce025f374a054520764892db7385a2a
diff --git a/plugins/org.eclipse.jst.ejb.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.ejb.ui/META-INF/MANIFEST.MF
index ee14424..767e5a7 100644
--- a/plugins/org.eclipse.jst.ejb.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.ejb.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ejb.ui; singleton:=true
-Bundle-Version: 1.1.911.qualifier
+Bundle-Version: 1.1.912.qualifier
 Bundle-Activator: org.eclipse.jst.ejb.ui.internal.plugin.EJBUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -17,22 +17,22 @@
  org.eclipse.jst.ejb.ui.project.facet
 Require-Bundle: org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.common.frameworks.ui;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.3.0)",
+ org.eclipse.wst.common.frameworks.ui;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.jst.j2ee;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.ui.workbench;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.ui.workbench;bundle-version="[3.127.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.26.0,4.0.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,3.0.0)",
- org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.jst.common.annotations.controller;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.jem.util;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.jst.j2ee.ui;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.jst.common.annotations.controller;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.wst.common.modulecore;bundle-version="[1.3.0,2.0.0)",
+ org.eclipse.jem.util;bundle-version="[2.1.0,3.0.0)",
  org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
+ org.eclipse.jdt.core;bundle-version="[3.32.0,4.0.0)",
  org.eclipse.wst.server.core;bundle-version="[1.0.102,2.0.0)",
- org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.web.ui;bundle-version="[1.1.0,2.0.0)",
diff --git a/plugins/org.eclipse.jst.ejb.ui/pom.xml b/plugins/org.eclipse.jst.ejb.ui/pom.xml
index 5f7a2dc..cddae87 100644
--- a/plugins/org.eclipse.jst.ejb.ui/pom.xml
+++ b/plugins/org.eclipse.jst.ejb.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.ejb</groupId>
   <artifactId>org.eclipse.jst.ejb.ui</artifactId>
-  <version>1.1.911-SNAPSHOT</version>
+  <version>1.1.912-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.core/META-INF/MANIFEST.MF
index 6127aad..5f81c15 100644
--- a/plugins/org.eclipse.jst.j2ee.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.core/META-INF/MANIFEST.MF
@@ -1,9 +1,12 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
-Bundle-SymbolicName: org.eclipse.jst.j2ee.core; singleton:=true
-Bundle-Version: 1.4.400.qualifier
+Bundle-SymbolicName: org.eclipse.jst.j2ee.core;singleton:=true
+Automatic-Module-Name: org.eclipse.jst.j2ee.core
+Bundle-Version: 1.4.500.qualifier
+Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.jst.j2ee.core.internal.plugin.J2EECorePlugin
+Bundle-ActivationPolicy: lazy
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
 Export-Package: org.eclipse.jst.j2ee.application,
@@ -117,7 +120,7 @@
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jem.util;bundle-version="[2.0.0,3.0.0)",
- com.ibm.icu;bundle-version="3.8.1",
+ com.ibm.icu;bundle-version="72.1.0",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.common.modulecore,
@@ -125,5 +128,4 @@
  org.eclipse.wst.common.emfworkbench.integration,
  org.eclipse.wst.common.uriresolver;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.jst.common.frameworks;bundle-version="[1.1.400,2.0.0)"
-Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/util/internal/JavaEEQuickPeek.java b/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/util/internal/JavaEEQuickPeek.java
index 5d75854..a7b57bd 100644
--- a/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/util/internal/JavaEEQuickPeek.java
+++ b/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/util/internal/JavaEEQuickPeek.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2021 IBM Corporation and others.
+ * Copyright (c) 2005, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -13,6 +13,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 
+import org.eclipse.jst.j2ee.core.internal.plugin.J2EECorePlugin;
 import org.eclipse.jst.j2ee.internal.J2EEConstants;
 import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
 import org.xml.sax.InputSource;
@@ -28,6 +29,14 @@
 
 	private static final int UNSET = -2;
 
+	static final String SIMPLE_WEBAPP_SCHEMA_2_4 = lastSegment(J2EEConstants.WEBAPP_SCHEMA_2_4);
+	static final String SIMPLE_WEBAPP_SCHEMA_2_5 = lastSegment(J2EEConstants.WEBAPP_SCHEMA_2_5);
+	static final String SIMPLE_WEBAPP_SCHEMA_3_0 = lastSegment(J2EEConstants.WEBAPP_SCHEMA_3_0);
+	static final String SIMPLE_WEBAPP_SCHEMA_3_1 = lastSegment(J2EEConstants.WEBAPP_SCHEMA_3_1);
+	static final String SIMPLE_WEBAPP_SCHEMA_4_0 = lastSegment(J2EEConstants.WEBAPP_SCHEMA_4_0);
+	static final String SIMPLE_WEBAPP_SCHEMA_5_0 = lastSegment(J2EEConstants.WEBAPP_SCHEMA_5_0);
+	static final String SIMPLE_WEBAPP_SCHEMA_6_0 = lastSegment(J2EEConstants.WEBAPP_SCHEMA_6_0);
+
 	private XMLRootHandler handler = null;
 
 	public JavaEEQuickPeek(int type, int version) {
@@ -242,25 +251,33 @@
 				break;
 			case WEB_TYPE:
 				if (publicID != null && systemID != null) {
-					if (publicID.equals(J2EEConstants.WEBAPP_PUBLICID_2_3) && (systemID.equals(J2EEConstants.WEBAPP_SYSTEMID_2_3) || systemID.equals(J2EEConstants.WEBAPP_ALT_SYSTEMID_2_3))) {
+					if (publicID.equals(J2EEConstants.WEBAPP_PUBLICID_2_3) || (systemID.equals(J2EEConstants.WEBAPP_SYSTEMID_2_3) || systemID.equals(J2EEConstants.WEBAPP_ALT_SYSTEMID_2_3))) {
 						version = J2EEVersionConstants.WEB_2_3_ID;
-					} else if (publicID.equals(J2EEConstants.WEBAPP_PUBLICID_2_2) && (systemID.equals(J2EEConstants.WEBAPP_SYSTEMID_2_2) || systemID.equals(J2EEConstants.WEBAPP_ALT_SYSTEMID_2_2))) {
+					} else if (publicID.equals(J2EEConstants.WEBAPP_PUBLICID_2_2) || (systemID.equals(J2EEConstants.WEBAPP_SYSTEMID_2_2) || systemID.equals(J2EEConstants.WEBAPP_ALT_SYSTEMID_2_2))) {
 						version = J2EEVersionConstants.WEB_2_2_ID;
 					}
 				} else if (schemaName != null) {
-					if (schemaName.indexOf(J2EEConstants.WEBAPP_SCHEMA_2_4) != -1) {
-						version = J2EEVersionConstants.WEB_2_4_ID;
-					} else if (schemaName.indexOf(J2EEConstants.WEBAPP_SCHEMA_2_5) != -1) {
-						version = J2EEVersionConstants.WEB_2_5_ID;
-					} else if (schemaName.indexOf(J2EEConstants.WEBAPP_SCHEMA_3_0) != -1) {
-						version = J2EEVersionConstants.WEB_3_0_ID;
-					} else if (schemaName.indexOf(J2EEConstants.WEBAPP_SCHEMA_3_1) != -1) {
-						version = J2EEVersionConstants.WEB_3_1_ID;
-					} else if (schemaName.indexOf(J2EEConstants.WEBAPP_SCHEMA_4_0) != -1) {
-						version = J2EEVersionConstants.WEB_4_0_ID;
-					} else if (schemaName.indexOf(J2EEConstants.WEBAPP_SCHEMA_5_0) != -1) {
+					if (schemaName.indexOf(SIMPLE_WEBAPP_SCHEMA_6_0) != -1) {
+						version = J2EEVersionConstants.WEB_6_0_ID;
+					}
+					else if (schemaName.indexOf(SIMPLE_WEBAPP_SCHEMA_5_0) != -1) {
 						version = J2EEVersionConstants.WEB_5_0_ID;
 					}
+					else if (schemaName.indexOf(SIMPLE_WEBAPP_SCHEMA_4_0) != -1) {
+						version = J2EEVersionConstants.WEB_4_0_ID;
+					}
+					else if (schemaName.indexOf(SIMPLE_WEBAPP_SCHEMA_3_1) != -1) {
+						version = J2EEVersionConstants.WEB_3_1_ID;
+					}
+					else if (schemaName.indexOf(SIMPLE_WEBAPP_SCHEMA_3_0) != -1) {
+						version = J2EEVersionConstants.WEB_3_0_ID;
+					}
+					else if (schemaName.indexOf(SIMPLE_WEBAPP_SCHEMA_2_5) != -1) {
+						version = J2EEVersionConstants.WEB_2_5_ID;
+					}
+					else if (schemaName.indexOf(SIMPLE_WEBAPP_SCHEMA_2_4) != -1) {
+						version = J2EEVersionConstants.WEB_2_4_ID;
+					}
 				} else if (J2EEConstants.J2EE_NS_URL.equals(namespace)) {
 					String versionAttribute = handler.getRootAttributes().getValue("version"); //$NON-NLS-1$
 					if (J2EEVersionConstants.VERSION_2_4_TEXT.equals(versionAttribute)) {
@@ -281,6 +298,15 @@
 						version = J2EEVersionConstants.WEB_4_0_ID;
 					}
 				}
+				if (version == UNSET && handler.getRootAttributes() != null && handler.getRootAttributes().getValue("version") != null) { //$NON-NLS-1$
+					try {
+						float f = Float.parseFloat(handler.getRootAttributes().getValue("version")); //$NON-NLS-1$
+						version = (int) f * 10;
+					}
+					catch (NumberFormatException e) {
+						J2EECorePlugin.logError(e);
+					}
+				}
 				break;
 			case WEBSERVICES_TYPE:
 				if (publicID != null && systemID != null) {
@@ -301,13 +327,15 @@
 				break;
 			case WEBFRAGMENT_TYPE:
 				if (schemaName != null) {
-					if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_3_0) != -1) {
-						version = J2EEVersionConstants.WEBFRAGMENT_3_0_ID;
-					} else if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_3_1) != -1) {
-						version = J2EEVersionConstants.WEBFRAGMENT_3_1_ID;
-					} else if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_4_0) != -1) {
+					if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_4_0) != -1) {
 						version = J2EEVersionConstants.WEBFRAGMENT_4_0_ID;
 					}
+					else if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_3_1) != -1) {
+						version = J2EEVersionConstants.WEBFRAGMENT_3_1_ID;
+					}
+					else if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_3_0) != -1) {
+						version = J2EEVersionConstants.WEBFRAGMENT_3_0_ID;
+					}
 				}
 				break;
 			default:
@@ -320,6 +348,11 @@
 		return version;
 	}
 
+	private static String lastSegment(String s) {
+		String[] segments = s.split("/"); //$NON-NLS-1$
+		return segments[segments.length - 1];
+	}
+
 	/**
 	 * Maps the version returned from {@link #getVersion()} to the Java EE spec
 	 * version. For example, this is an EJB 3.0 deployment descriptor, this
@@ -401,6 +434,9 @@
 				case J2EEVersionConstants.WEB_5_0_ID:
 					javaEEVersion = J2EEVersionConstants.JEE_9_0_ID;
 					break;
+				case J2EEVersionConstants.WEB_6_0_ID:
+					javaEEVersion = J2EEVersionConstants.JEE_10_0_ID;
+					break;
 				}
 				break;
 		case WEBSERVICES_TYPE:
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/JEESAXXMLHandler.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/JEESAXXMLHandler.java
index 5bfe887..204ac9d 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/JEESAXXMLHandler.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/JEESAXXMLHandler.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
+ * Copyright (c) 2005, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -21,6 +21,11 @@
 import org.eclipse.emf.ecore.xmi.impl.SAXXMIHandler;
 
 public class JEESAXXMLHandler extends SAXXMIHandler {
+	/**
+	 * Check the XML Catalog first
+	 */
+    @Override
+	public void processSchemaLocations(String what, String huh) {}
 
 	public JEESAXXMLHandler(XMLResource xmiResource, XMLHelper helper,
 			Map<?, ?> options) {
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/WebAppVersionType.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/WebAppVersionType.java
index 973e200..f8608f9 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/WebAppVersionType.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/WebAppVersionType.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2021 IBM Corporation and others.
+ * Copyright (c) 2007, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -98,7 +98,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	_40(2, "_40", "4.0"), //$NON-NLS-1$ //$NON-NLS-2$
+	_40(3, "_40", "4.0"), //$NON-NLS-1$ //$NON-NLS-2$
 	/**
 	 * The '<em><b>50</b></em>' literal object.
 	 * <!-- begin-user-doc -->
@@ -107,7 +107,17 @@
 	 * @generated
 	 * @ordered
 	 */
-	_50(2, "_50", "5.0"); //$NON-NLS-1$ //$NON-NLS-2$
+	_50(4, "_50", "5.0"), //$NON-NLS-1$ //$NON-NLS-2$
+	/**
+	 * The '<em><b>50</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #_50_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	_60(5, "_60", "6.0"); //$NON-NLS-1$ //$NON-NLS-2$
+
 	/**
 	 * The '<em><b>22</b></em>' literal value.
 	 * <!-- begin-user-doc -->
@@ -209,12 +219,24 @@
 	 * </p>
 	 * <!-- end-user-doc -->
 	 * @see #_50
-	 * @generated
 	 * @ordered
 	 */
 	public static final int _50_VALUE = 5;
 
 	/**
+	 * The '<em><b>50</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>50</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #_60
+	 * @ordered
+	 */
+	public static final int _60_VALUE = 6;
+
+	/**
 	 * An array of all the '<em><b>App Version Type</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -230,6 +252,7 @@
 			_31,
 			_40,
 			_50,
+			_60
 		};
 
 	/**
diff --git a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEConstants.java b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEConstants.java
index 1d002ae..7cf6ef5 100644
--- a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEConstants.java
+++ b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2022 IBM Corporation and others.
+ * Copyright (c) 2001, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -148,7 +148,8 @@
     String WEBAPP_SCHEMA_3_0        =   "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd";//$NON-NLS-1$
     String WEBAPP_SCHEMA_3_1        =   "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd";//$NON-NLS-1$
     String WEBAPP_SCHEMA_4_0        =   "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd";//$NON-NLS-1$
-    String WEBAPP_SCHEMA_5_0        =   "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_5_0.xsd";//$NON-NLS-1$
+    String WEBAPP_SCHEMA_5_0        =   "http://xmlns.jcp.org/xml/ns/javaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd";//$NON-NLS-1$
+    String WEBAPP_SCHEMA_6_0        =   "http://xmlns.jcp.org/xml/ns/javaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd";//$NON-NLS-1$
     /** "WEB-INF/ejb-jar.xml" */
     String EJBJAR_IN_WAR_DD_URI                =   "WEB-INF/ejb-jar.xml"; //$NON-NLS-1$
     //J2C Resource Adapter Constants
@@ -240,13 +241,16 @@
     String WEB_APP_SCHEMA_LOC_3_1           = "http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"; //$NON-NLS-1$
     String WEB_APP_SCHEMA_LOC_4_0           = "http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"; //$NON-NLS-1$
     String WEB_APP_SCHEMA_LOC_5_0           = "https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"; //$NON-NLS-1$
+    String WEB_APP_SCHEMA_LOC_6_0           = "https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"; //$NON-NLS-1$
     String WEB_SERVICES_CLIENT_SCHEMA_LOC_1_1 = "http://www.ibm.com/webservices/xsd/j2ee_web_services_client_1_1.xsd"; //$NON-NLS-1$
     String JSP_SCHEMA_LOC_2_0               =  "http://java.sun.com/xml/ns/j2ee/jsp_2_0.xsd"; //$NON-NLS-1$
     String JSP_SCHEMA_LOC_2_1               =  "http://java.sun.com/xml/ns/javaee/jsp_2_1.xsd"; //$NON-NLS-1$ //EJB3
     String JSP_SCHEMA_LOC_3_0               =  "https://jakarta.ee/xml/ns/jakartaee/jsp_3_0.xsd"; //$NON-NLS-1$ //EJB3
+    String JSP_SCHEMA_LOC_3_1               =  "https://jakarta.ee/xml/ns/jakartaee/jsp_3_1.xsd"; //$NON-NLS-1$ //EJB3
     String WEBFRAGMENT_SCHEMA_LOC_3_0       = "http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"; //$NON-NLS-1$ //Web Fragment3
     String WEBFRAGMENT_SCHEMA_LOC_3_1       = "http://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd"; //$NON-NLS-1$ //Web Fragment3
     String WEBFRAGMENT_SCHEMA_LOC_4_0       = "http://xmlns.jcp.org/xml/ns/javaee/web-fragment_4_0.xsd"; //$NON-NLS-1$ //Web Fragment4
+    String WEBFRAGMENT_SCHEMA_LOC_5_0       = "http://xmlns.jcp.org/xml/ns/javaee/web-fragment_5_0.xsd"; //$NON-NLS-1$
     
     public static final String EAR_MODEL_NAME = "EAR_VALIDATION"; //$NON-NLS-1$
 }
diff --git a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEVersionConstants.java b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEVersionConstants.java
index 4a9a3b4..6fe329b 100644
--- a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEVersionConstants.java
+++ b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/internal/J2EEVersionConstants.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2021 IBM Corporation and others.
+ * Copyright (c) 2001, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -36,6 +36,7 @@
 	public int JEE_7_0_ID = 70;
 	public int JEE_8_0_ID = 80;
 	public int JEE_9_0_ID = 90;
+	public int JEE_10_0_ID = 100;
 	public int EJB_1_0_ID = 10;	
 	public int EJB_1_1_ID = 11;	
 	public int EJB_2_0_ID = 20;	
@@ -51,6 +52,7 @@
 	public int WEB_3_1_ID = 31;
 	public int WEB_4_0_ID = 40;
 	public int WEB_5_0_ID = 50;
+	public int WEB_6_0_ID = 60;
 	public int WEBFRAGMENT_3_0_ID = 30;
 	public int WEBFRAGMENT_3_1_ID = 31;
 	public int WEBFRAGMENT_4_0_ID = 40;
@@ -69,6 +71,7 @@
 	public int SERVLET_3_1 = 31;
 	public int SERVLET_4_0 = 40;
 	public int SERVLET_5_0 = 50;
+	public int SERVLET_6_0 = 60;
 	public int JCA_1_0_ID = 10;
 	public int JCA_1_5_ID = 15;
 	public int JCA_1_6_ID = 16;
diff --git a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/webapplication/internal/impl/WebAppResourceFactory.java b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/webapplication/internal/impl/WebAppResourceFactory.java
index dabf617..cbd624f 100644
--- a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/webapplication/internal/impl/WebAppResourceFactory.java
+++ b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/webapplication/internal/impl/WebAppResourceFactory.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2021 IBM Corporation and others.
+ * Copyright (c) 2001, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,12 +8,7 @@
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
-/*
- * Created on Mar 18, 2003
- *
- * To change this generated comment go to 
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
+
 package org.eclipse.jst.j2ee.webapplication.internal.impl;
 
 import org.eclipse.emf.common.util.URI;
@@ -50,9 +45,11 @@
 		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.WEB_APP_SCHEMA_LOC_3_1, "web-app_3_1.xsd"); //$NON-NLS-1$
 		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.WEB_APP_SCHEMA_LOC_4_0, "web-app_4_0.xsd"); //$NON-NLS-1$
 		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.WEB_APP_SCHEMA_LOC_5_0, "web-app_5_0.xsd"); //$NON-NLS-1$
+		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.WEB_APP_SCHEMA_LOC_6_0, "web-app_6_0.xsd"); //$NON-NLS-1$
 		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.JSP_SCHEMA_LOC_2_0, "jsp_2_0.xsd"); //$NON-NLS-1$
 		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.JSP_SCHEMA_LOC_2_1, "jsp_2_1.xsd"); //$NON-NLS-1$
 		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.JSP_SCHEMA_LOC_3_0, "jsp_3_0.xsd"); //$NON-NLS-1$
+		J2EEXmlDtDEntityResolver.registerDtD(J2EEConstants.JSP_SCHEMA_LOC_3_1, "jsp_3_1.xsd"); //$NON-NLS-1$
 	}
 
 	/** 
diff --git a/plugins/org.eclipse.jst.j2ee.core/pom.xml b/plugins/org.eclipse.jst.j2ee.core/pom.xml
index e870989..b680e23 100644
--- a/plugins/org.eclipse.jst.j2ee.core/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.core/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.core</artifactId>
-  <version>1.4.400-SNAPSHOT</version>
+  <version>1.4.500-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/META-INF/MANIFEST.MF
index e7a214d..cd2f035 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.j2ee.ejb.annotations.ui; singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.1.qualifier
 Bundle-ClassPath: .
 Bundle-Activator: org.eclipse.jst.j2ee.ejb.annotation.ui.internal.EjbAnnotationsUiPlugin
 Bundle-Vendor: %Bundle-Vendor.0
@@ -13,26 +13,26 @@
  org.eclipse.jst.j2ee.ejb.annotation.ui.internal.wizards;x-internal:=true
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.common.frameworks;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.wst.common.frameworks.ui;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.wst.common.frameworks;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.wst.common.frameworks.ui;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.workbench;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.3.0)",
  org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,1.2.0)",
- org.eclipse.jst.j2ee.ejb.annotation.model;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.jst.j2ee.ejb.annotation.model;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.2.0,3.0.0)",
  org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.jst.ejb.ui;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.jem.util;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
  org.eclipse.jdt.core;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.web.ui;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.wst.common.project.facet.ui;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.wst.web.ui;bundle-version="[1.2.0,2.0.0)",
+ org.eclipse.wst.common.project.facet.ui;bundle-version="[1.4.0,2.0.0)",
  org.eclipse.jdt.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jface.text;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.wst.common.project.facet.core;bundle-version="[1.1.0,2.0.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.4.0,2.0.0)",
  org.eclipse.datatools.connectivity;resolution:=optional,
  org.eclipse.datatools.connectivity.ui.dse;resolution:=optional
 Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/pom.xml b/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/pom.xml
index 607c114..95bd8e4 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.ejb.annotations.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.ejb</groupId>
   <artifactId>org.eclipse.jst.j2ee.ejb.annotations.ui</artifactId>
-  <version>1.2.0-SNAPSHOT</version>
+  <version>1.2.1-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF
index 510447f..29b9231 100644
--- a/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.jca.ui/META-INF/MANIFEST.MF
@@ -1,8 +1,9 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
+Automatic-Module-Name: org.eclipse.jst.j2ee.jca.ui
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.j2ee.jca.ui; singleton:=true
-Bundle-Version: 1.1.601.qualifier
+Bundle-Version: 1.1.602.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.jca.ui.internal.plugin.JCAUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -10,7 +11,7 @@
  org.eclipse.jst.j2ee.jca.ui.internal.plugin;x-internal:=true,
  org.eclipse.jst.j2ee.jca.ui.internal.util;x-internal:=true,
  org.eclipse.jst.j2ee.jca.ui.internal.wizard;x-internal:=true
-Require-Bundle: org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,1.2.0)",
+Require-Bundle: org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.common.frameworks.ui;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.workbench;bundle-version="[3.2.0,4.0.0)",
diff --git a/plugins/org.eclipse.jst.j2ee.jca.ui/pom.xml b/plugins/org.eclipse.jst.j2ee.jca.ui/pom.xml
index a8f1ffb..74d23f6 100644
--- a/plugins/org.eclipse.jst.j2ee.jca.ui/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.jca.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.jca.ui</artifactId>
-  <version>1.1.601-SNAPSHOT</version>
+  <version>1.1.602-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.navigator.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.navigator.ui/META-INF/MANIFEST.MF
index bbfaf4d..76b059a 100644
--- a/plugins/org.eclipse.jst.j2ee.navigator.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.navigator.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Plugin.name
 Bundle-SymbolicName: org.eclipse.jst.j2ee.navigator.ui; singleton:=true
-Bundle-Version: 1.1.1000.qualifier
+Bundle-Version: 1.1.1001.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.navigator.internal.plugin.J2EENavigatorPlugin
 Bundle-Vendor: %Plugin.providerName
 Bundle-Localization: plugin
@@ -13,7 +13,7 @@
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jst.j2ee.core;bundle-version="[1.1.0,2.0.0)",
- org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.emf.edit;bundle-version="[2.2.0,3.0.0)",
  org.eclipse.emf.edit.ui;bundle-version="[2.2.0,3.0.0)",
  org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.2.0,2.0.0)",
diff --git a/plugins/org.eclipse.jst.j2ee.navigator.ui/pom.xml b/plugins/org.eclipse.jst.j2ee.navigator.ui/pom.xml
index 72f2b86..b2f874f 100644
--- a/plugins/org.eclipse.jst.j2ee.navigator.ui/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.navigator.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.navigator.ui</artifactId>
-  <version>1.1.1000-SNAPSHOT</version>
+  <version>1.1.1001-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.ui/META-INF/MANIFEST.MF
index b35663f..bc59049 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.j2ee.ui; singleton:=true
-Bundle-Version: 1.1.1100.qualifier
+Bundle-Version: 1.2.0.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
@@ -68,7 +68,7 @@
  org.eclipse.jst.server.core;bundle-version="[1.0.102,2.0.0)",
  org.eclipse.wst.web.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.ui.navigator.resources;bundle-version="[3.2.0,4.0.0)",
- com.ibm.icu;bundle-version="3.8.1",
+ com.ibm.icu;bundle-version="72.1.0",
  org.eclipse.ui.forms;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.navigator;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jst.jee;bundle-version="[1.0.0,1.1.0)",
@@ -77,4 +77,4 @@
  org.eclipse.wst.common.modulecore.ui;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.jst.common.ui;bundle-version="[1.0.0,2.0.0)"
 Eclipse-LazyStart: true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-11
diff --git a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewJavaClassWizardPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewJavaClassWizardPage.java
index c34e7a0..168aaad 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewJavaClassWizardPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/internal/wizard/NewJavaClassWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2022 IBM Corporation and others.
+ * Copyright (c) 2003, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -199,7 +199,7 @@
 	/**
 	 * 
 	 **/
-	private IFolder getDefaultJavaSourceFolder(IProject project) {
+	private IContainer getDefaultJavaSourceFolder(IProject project) {
 		
 		if (project == null)
 			return null;
@@ -233,7 +233,7 @@
 			}
 		}
 
-		return null;
+		return project;
 	}
 	
 	/**
@@ -253,8 +253,6 @@
 		try {
 			result = project.isAccessible() && 
 				project.hasNature(JavaCore.NATURE_ID);
-//				project.hasNature(IModuleConstants.MODULE_NATURE_ID) && 
-//			 	JavaEEProjectUtilities.getJ2EEProjectType(project).equals(projectType);
 		} catch (CoreException ce) {
 			result = false;
 		}
@@ -266,17 +264,14 @@
 	 */
 	private void initializeProjectList() {
 		IProject[] workspaceProjects = ProjectUtilities.getAllProjects();
-		List items = new ArrayList();
+		List<String> items = new ArrayList();
 		for (int i = 0; i < workspaceProjects.length; i++) {
 			IProject project = workspaceProjects[i];
 			if (isProjectValid(project))
 				items.add(project.getName());
 		}
 		if (items.isEmpty()) return;
-		String[] names = new String[items.size()];
-		for (int i = 0; i < items.size(); i++) {
-			names[i] = (String) items.get(i);
-		}
+		String[] names = items.toArray(new String[0]);
 		projectNameCombo.setItems(names);
 		IProject selectedProject = null;
 		try {
@@ -327,9 +322,9 @@
 		if (projectName != null && projectName.length() > 0) {
 			IProject targetProject = ProjectUtilities.getProject(projectName);
 			if (root == null || !root.getJavaProject().getProject().equals(targetProject) || root.isArchive()) {
-				IFolder folder = getDefaultJavaSourceFolder(targetProject);
-				if (folder != null)
-					folderText.setText(folder.getFullPath().toString());
+				IContainer sourceContainer = getDefaultJavaSourceFolder(targetProject);
+				if (sourceContainer != null)
+					folderText.setText(sourceContainer.getFullPath().toString());
 			} else {
 				folderText.setText(root.getPath().toString());
 			}
diff --git a/plugins/org.eclipse.jst.j2ee.ui/pom.xml b/plugins/org.eclipse.jst.j2ee.ui/pom.xml
index 1eebfb1..02411de 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.ui</artifactId>
-  <version>1.1.1100-SNAPSHOT</version>
+  <version>1.2.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
index d16c20f..b87f5dd 100644
--- a/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.web/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: Web Plug-in
 Bundle-SymbolicName: org.eclipse.jst.j2ee.web; singleton:=true
-Bundle-Version: 1.2.100.qualifier
+Bundle-Version: 1.2.200.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.internal.web.plugin.WebPlugin
 Bundle-Vendor: Eclipse.org
 Bundle-Localization: plugin
@@ -44,7 +44,7 @@
  org.eclipse.jem;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.jst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
- com.ibm.icu;bundle-version="3.8.1",
+ com.ibm.icu;bundle-version="72.1.0",
  org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
  org.eclipse.jst.jee;bundle-version="[1.0.100,1.1.0)",
  org.eclipse.core.commands;bundle-version="[3.4.0,4.0.0)"
diff --git a/plugins/org.eclipse.jst.j2ee.web/plugin.xml b/plugins/org.eclipse.jst.j2ee.web/plugin.xml
index 4a40a51..4a9a985 100644
--- a/plugins/org.eclipse.jst.j2ee.web/plugin.xml
+++ b/plugins/org.eclipse.jst.j2ee.web/plugin.xml
@@ -470,6 +470,26 @@
       <group-member id="modules"/>
     </project-facet-version>
 
+    <project-facet-version facet="jst.web" version="6.0">
+      <constraint>
+        <and>
+          <requires facet="jst.java" version="[11"/>
+          <conflicts group="modules"/>
+        </and>
+      </constraint>
+      <group-member id="modules"/>
+    </project-facet-version>
+
+    <project-facet-version facet="jst.web" version="6.1">
+      <constraint>
+        <and>
+          <requires facet="jst.java" version="[11"/>
+          <conflicts group="modules"/>
+        </and>
+      </constraint>
+      <group-member id="modules"/>
+    </project-facet-version>
+
     <action facet="jst.web" type="INSTALL" id="jst.web.install">
       <delegate class="org.eclipse.jst.j2ee.web.project.facet.WebFacetInstallDelegate"/>
       <config-factory class="org.eclipse.jst.j2ee.web.project.facet.WebFacetInstallDataModelProvider"/>
@@ -540,7 +560,27 @@
       <group-member id="modules"/>
     </project-facet-version>
 
-    <action facet="jst.webfragment" version="[3.0-5.0]" type="INSTALL" id="jst.webfragment.install">
+    <project-facet-version facet="jst.webfragment" version="6.0">
+      <constraint>
+        <and>
+          <requires facet="jst.java" version="[11"/>
+          <conflicts group="modules"/>
+        </and>
+      </constraint>
+      <group-member id="modules"/>
+    </project-facet-version>
+
+    <project-facet-version facet="jst.webfragment" version="6.1">
+      <constraint>
+        <and>
+          <requires facet="jst.java" version="[11"/>
+          <conflicts group="modules"/>
+        </and>
+      </constraint>
+      <group-member id="modules"/>
+    </project-facet-version>
+
+    <action facet="jst.webfragment" version="[3.0-6.1]" type="INSTALL" id="jst.webfragment.install">
       <delegate class="org.eclipse.jst.j2ee.web.project.facet.WebFragmentFacetInstallDelegate"/>
       <config-factory class="org.eclipse.jst.j2ee.web.project.facet.WebFragmentFacetInstallDataModelProvider"/>
     </action>
@@ -549,7 +589,7 @@
        <delegate class="org.eclipse.jst.j2ee.project.facet.J2EEFacetRuntimeChangedDelegate"/>
     </event-handler>
     
-	<event-handler type="POST_INSTALL" facet="jst.webfragment" version="[3.0-5.0]">
+	<event-handler type="POST_INSTALL" facet="jst.webfragment" version="[3.0-6.1]">
 		    <delegate class="org.eclipse.jst.j2ee.web.project.facet.WebFragmentFacetPostInstallDelegate"/>
 	   </event-handler>
           
diff --git a/plugins/org.eclipse.jst.j2ee.web/pom.xml b/plugins/org.eclipse.jst.j2ee.web/pom.xml
index 718a789..46b12ed 100644
--- a/plugins/org.eclipse.jst.j2ee.web/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.web/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.web</artifactId>
-  <version>1.2.100-SNAPSHOT</version>
+  <version>1.2.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDelegate.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDelegate.java
index 3572b8d..e0c52e1 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDelegate.java
@@ -109,7 +109,13 @@
 				webroot.createLink(configFolderPath, 0, null); 
 				J2EEModuleVirtualComponent.setDefaultDeploymentDescriptorFolder(webroot, configFolderPath, null); 
 			}
-			if( fv == WebFacetUtils.WEB_50 )
+			if( fv == WebFacetUtils.WEB_60 )
+			{
+				 if(model.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD)){
+		                createWeb60DeploymentDescriptor(project, fv, webinfFolder, monitor);
+		            }
+			}
+			else if( fv == WebFacetUtils.WEB_50 )
 			{
 				 if(model.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD)){
 		                createWeb50DeploymentDescriptor(project, fv, webinfFolder, monitor);
@@ -259,6 +265,23 @@
 		}
 	}
 
+	private void createWeb60DeploymentDescriptor(final IProject project, final IProjectFacetVersion fv, IFolder webinfFolder, IProgressMonitor monitor) throws CoreException {
+		// Create the deployment descriptor (web.xml) if one doesn't exist
+		IFile webxmlFile = webinfFolder.getFile("web.xml"); //$NON-NLS-1$
+		if (!webxmlFile.exists()) {
+			try {
+				// Create a minimal web.xml file, so the model can be initialized
+				final String webXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-app id=\"WebApp_ID\" version=\"6.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-app_6_0.xsd\">\n</web-app>"; //$NON-NLS-1$
+				webxmlFile.create(new ByteArrayInputStream(webXmlContents.getBytes("UTF-8")), true, monitor); //$NON-NLS-1$
+
+				populateDefaultContent(project, fv);
+			}
+			catch (UnsupportedEncodingException e) {
+				WebPlugin.logError(e);
+			}
+		}
+	}
+
 	private void createWeb40DeploymentDescriptor(final IProject project, final IProjectFacetVersion fv,
 												IFolder webinfFolder, IProgressMonitor monitor) throws CoreException {
 		// Create the deployment descriptor (web.xml) if one doesn't exist
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetUtils.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetUtils.java
index 2548cc7..c6ef0ac 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetUtils.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetUtils.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2021 IBM Corporation and others.
+ * Copyright (c) 2003, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -27,6 +27,7 @@
 	public static final IProjectFacetVersion WEB_31 = WEB_FACET.getVersion("3.1"); //$NON-NLS-1$
 	public static final IProjectFacetVersion WEB_40 = WEB_FACET.getVersion("4.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion WEB_50 = WEB_FACET.getVersion("5.0"); //$NON-NLS-1$
+	public static final IProjectFacetVersion WEB_60 = WEB_FACET.getVersion("6.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion WEBFRAGMENT_30 = WEBFRAGMENT_FACET.getVersion("3.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion WEBFRAGMENT_31 = WEBFRAGMENT_FACET.getVersion("3.1"); //$NON-NLS-1$
 	public static final IProjectFacetVersion WEBFRAGMENT_40 = WEBFRAGMENT_FACET.getVersion("4.0"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.jst.j2ee.webservice.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.webservice.ui/META-INF/MANIFEST.MF
index b8affb8..4f1f638 100644
--- a/plugins/org.eclipse.jst.j2ee.webservice.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.webservice.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.j2ee.webservice.ui; singleton:=true
-Bundle-Version: 1.1.800.qualifier
+Bundle-Version: 1.1.801.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.internal.webservice.plugin.WebServiceUIPlugin
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
@@ -13,7 +13,7 @@
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.workbench;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.common.frameworks;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.3.0)",
  org.eclipse.emf.edit;bundle-version="[2.2.0,3.0.0)",
diff --git a/plugins/org.eclipse.jst.j2ee.webservice.ui/pom.xml b/plugins/org.eclipse.jst.j2ee.webservice.ui/pom.xml
index 0d0ccc1..764f099 100644
--- a/plugins/org.eclipse.jst.j2ee.webservice.ui/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.webservice.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.webservice.ui</artifactId>
-  <version>1.1.800-SNAPSHOT</version>
+  <version>1.1.801-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
index 2d31c4d..baefbec 100644
--- a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.j2ee; singleton:=true
-Bundle-Version: 1.2.600.qualifier
+Bundle-Version: 1.2.700.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
@@ -79,7 +79,7 @@
  org.eclipse.jst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.web;bundle-version="[1.1.600,2.0.0)",
- com.ibm.icu;bundle-version="3.8.1",
+ com.ibm.icu;bundle-version="72.1.0",
  org.eclipse.wst.common.environment;bundle-version="[1.0.100,1.1.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.commands;bundle-version="[3.4.0,4.0.0)",
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassDataModelProvider.java
index abad1fb..faab258 100644
--- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/operations/NewJavaClassDataModelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2021 IBM Corporation and others.
+ * Copyright (c) 2003, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -53,7 +53,6 @@
 import org.eclipse.jem.workbench.utility.JemProjectUtilities;
 import org.eclipse.jst.j2ee.internal.common.J2EECommonMessages;
 import org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin;
-import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.common.componentcore.internal.operation.ArtifactEditOperationDataModelProvider;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
@@ -124,7 +123,7 @@
 			J2EEPlugin.logError(e);
 		}
 		// Ensure the selected folder is a valid java source folder for the component
-		IFolder sourcefolder = getJavaSourceFolder();
+		IContainer sourcefolder = getJavaSourceFolder();
 		if (sourcefolder == null || (!sourcefolder.getFullPath().equals(new Path(folderFullPath)))) {
 			String msg = J2EECommonMessages.getResourceString(J2EECommonMessages.ERR_JAVA_CLASS_FOLDER_NOT_SOURCE, new String[]{folderFullPath});
 			return J2EEPlugin.createStatus(IStatus.ERROR, msg);
@@ -149,15 +148,15 @@
 			entries = JavaCore.create(project).getRawClasspath();
 			// Try and return the first source folder
 			for (int i = 0; i < entries.length; i++) {
-				if(entries[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
-					return project.getFolder(entries[i].getPath());
+				if (entries[i].getEntryKind() == IClasspathEntry.CPE_SOURCE && entries[i].getPath().segmentCount() > 1) {
+					return project.getWorkspace().getRoot().getFolder(entries[i].getPath());
 				}
 			}
 		}
 		catch (JavaModelException e) {
 			J2EEPlugin.logError(e);
 		}
-		return null;
+		return project;
 	}
 
 	/**
@@ -516,25 +515,40 @@
 	 * @see #SOURCE_FOLDER
 	 * @see NewJavaClassDataModelProvider#getAllSourceFolders()
 	 * 
-	 * @return IFolder java source folder
+	 * @return IContainer java source folder (or project)
 	 */
-	protected final IFolder getJavaSourceFolder() {
-		IPackageFragmentRoot[] sources = J2EEProjectUtilities.getSourceContainers(getTargetProject());
-		// Ensure there is valid source folder(s)
-		if (sources == null || sources.length == 0)
-			return null;
-		String folderFullPath = getStringProperty(SOURCE_FOLDER);
-		// Get the source folder whose path matches the source folder name value in the data model
-		for (int i = 0; i < sources.length; i++) {
-			if (sources[i].getPath().equals(new Path(folderFullPath))) {
-				try {
-					return (IFolder) sources[i].getCorrespondingResource();
-				} catch (Exception e) {
-					break;
+	protected final IContainer getJavaSourceFolder() {
+//		IPackageFragmentRoot[] sources = J2EEProjectUtilities.getSourceContainers(getTargetProject());
+//		// Ensure there is valid source folder(s)
+//		if (sources == null || sources.length == 0)
+//			return null;
+//		String folderFullPath = getStringProperty(SOURCE_FOLDER);
+//		// Get the source folder whose path matches the source folder name value in the data model
+//		for (int i = 0; i < sources.length; i++) {
+//			if (sources[i].getPath().equals(new Path(folderFullPath))) {
+//				try {
+//					return (IFolder) sources[i].getCorrespondingResource();
+//				} catch (Exception e) {
+//					break;
+//				}
+//			}
+//		}
+
+		IJavaProject javaProject = JavaCore.create(getTargetProject());
+		if (javaProject.exists()) {
+			try {
+				IClasspathEntry[] rawClasspath = javaProject.getRawClasspath();
+				for (int i = 0; i < rawClasspath.length; i++) {
+					if (rawClasspath[i].getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+						return getTargetProject().getWorkspace().getRoot().getFolder(rawClasspath[i].getPath());
+					}
 				}
 			}
+			catch (JavaModelException e) {
+				org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin.logError(e);
+			}
 		}
-		return null;
+		return getTargetProject();
 	}
 
 	/**
diff --git a/plugins/org.eclipse.jst.j2ee/contenttype/org/eclipse/jst/j2ee/contenttype/J2EEContentDescriber.java b/plugins/org.eclipse.jst.j2ee/contenttype/org/eclipse/jst/j2ee/contenttype/J2EEContentDescriber.java
index 8041ca3..90730ff 100644
--- a/plugins/org.eclipse.jst.j2ee/contenttype/org/eclipse/jst/j2ee/contenttype/J2EEContentDescriber.java
+++ b/plugins/org.eclipse.jst.j2ee/contenttype/org/eclipse/jst/j2ee/contenttype/J2EEContentDescriber.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2001, 2007 IBM Corporation and others.
+ * Copyright (c) 2001, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -62,6 +62,11 @@
 			case JavaEEQuickPeek.WEB_2_2_ID:
 			case JavaEEQuickPeek.WEB_2_3_ID:
 			case JavaEEQuickPeek.WEB_2_4_ID:
+			case JavaEEQuickPeek.WEB_3_0_ID:
+			case JavaEEQuickPeek.WEB_3_1_ID:
+			case JavaEEQuickPeek.WEB_4_0_ID:
+			case JavaEEQuickPeek.WEB_5_0_ID:
+			case JavaEEQuickPeek.WEB_6_0_ID:
 				return VALID;
 			}
 			return INVALID;
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/IJ2EEFacetConstants.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/IJ2EEFacetConstants.java
index 41c0fe9..0adafcb 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/IJ2EEFacetConstants.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/facet/IJ2EEFacetConstants.java
@@ -56,6 +56,8 @@
 	public static final IProjectFacetVersion DYNAMIC_WEB_30 = J2EEFacetConstantsProvider.getProjectFacetVersion(DYNAMIC_WEB_FACET, "3.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion DYNAMIC_WEB_31 = J2EEFacetConstantsProvider.getProjectFacetVersion(DYNAMIC_WEB_FACET, "3.1"); //$NON-NLS-1$
 	public static final IProjectFacetVersion DYNAMIC_WEB_40 = J2EEFacetConstantsProvider.getProjectFacetVersion(DYNAMIC_WEB_FACET, "4.0"); //$NON-NLS-1$
+	public static final IProjectFacetVersion DYNAMIC_WEB_50 = J2EEFacetConstantsProvider.getProjectFacetVersion(DYNAMIC_WEB_FACET, "5.0"); //$NON-NLS-1$
+	public static final IProjectFacetVersion DYNAMIC_WEB_60 = J2EEFacetConstantsProvider.getProjectFacetVersion(DYNAMIC_WEB_FACET, "6.0"); //$NON-NLS-1$
 	
 	public static final String DYNAMIC_WEB_XDOCLET = "jst.web.xdoclet"; //$NON-NLS-1$
 	
diff --git a/plugins/org.eclipse.jst.j2ee/pom.xml b/plugins/org.eclipse.jst.j2ee/pom.xml
index 12e28c1..8ae1591 100644
--- a/plugins/org.eclipse.jst.j2ee/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee</artifactId>
-  <version>1.2.600-SNAPSHOT</version>
+  <version>1.2.700-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF
index f40b77f..36e51ca 100644
--- a/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.jee.ui/META-INF/MANIFEST.MF
@@ -1,18 +1,20 @@
 Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
+Automatic-Module-Name: org.eclipse.jst.jee.ui
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.jee.ui;singleton:=true
-Bundle-Version: 1.0.1200.qualifier
+Bundle-Version: 1.0.1201.qualifier
 Bundle-Activator: org.eclipse.jst.jee.ui.plugin.JEEUIPlugin
+Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.common.project.facet.ui;bundle-version="[1.3.0,2.0.0)",
- org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.resources;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.common.modulecore;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.common.frameworks;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.jst.jee;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.jst.jee;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.jem.util;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.wst.web.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.web;bundle-version="[1.1.0,2.0.0)",
@@ -24,7 +26,7 @@
  org.eclipse.wst.common.emfworkbench.integration;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.3.0)",
  org.eclipse.jst.j2ee.web;bundle-version="[1.2.0,2.0.0)",
- org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.103,1.2.0)",
+ org.eclipse.jst.j2ee.ejb;bundle-version="[1.1.103,2.0.0)",
  org.eclipse.jst.j2ee.core;bundle-version="[1.1.102,2.0.0)",
  org.eclipse.wst.common.emf;bundle-version="[1.1.103,2.0.0)",
  org.eclipse.jdt.ui;bundle-version="[3.2.0,4.0.0)",
@@ -38,7 +40,6 @@
  org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.jst.j2ee.jca;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)"
-Eclipse-LazyStart: true
 Bundle-Localization: plugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.jst.jee.ui/pom.xml b/plugins/org.eclipse.jst.jee.ui/pom.xml
index b2ec644..f1530a3 100644
--- a/plugins/org.eclipse.jst.jee.ui/pom.xml
+++ b/plugins/org.eclipse.jst.jee.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.jee.ui</artifactId>
-  <version>1.0.1200-SNAPSHOT</version>
+  <version>1.0.1201-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF
index 0efdfea..ea6e180 100644
--- a/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.jee.web;singleton:=true
-Bundle-Version: 1.0.1000.qualifier
+Bundle-Version: 1.0.1100.qualifier
 Bundle-Activator: org.eclipse.jst.jee.web.Activator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
diff --git a/plugins/org.eclipse.jst.jee.web/pom.xml b/plugins/org.eclipse.jst.jee.web/pom.xml
index dd81d00..0eb3ad0 100644
--- a/plugins/org.eclipse.jst.jee.web/pom.xml
+++ b/plugins/org.eclipse.jst.jee.web/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.jee.web</artifactId>
-  <version>1.0.1000-SNAPSHOT</version>
+  <version>1.0.1100-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25ModelProvider.java b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25ModelProvider.java
index 19943fc..d5b0fe6 100644
--- a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25ModelProvider.java
+++ b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/Web25ModelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2022 IBM Corporation and others.
+ * Copyright (c) 2005, 2023 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -62,11 +62,11 @@
 		war.getDisplayNames().add(dn);
 		
 		String version = J2EEProjectUtilities.getJ2EEProjectVersion(proj);
-		if(version != null && version.equals(J2EEVersionConstants.VERSION_2_5_TEXT)) {
+		if (version != null && version.equals(J2EEVersionConstants.VERSION_2_5_TEXT)) {
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE_NS_URL, J2EEConstants.WEB_APP_SCHEMA_LOC_2_5);
 			war.setVersion(WebAppVersionType._25_LITERAL);
 		}
-		else if(version != null && version.equals(J2EEVersionConstants.VERSION_3_0_TEXT)) {
+		else if (version != null && version.equals(J2EEVersionConstants.VERSION_3_0_TEXT)) {
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE_NS_URL, J2EEConstants.WEB_APP_SCHEMA_LOC_3_0);
 			war.setVersion(WebAppVersionType._30_LITERAL);
 		}
@@ -76,26 +76,25 @@
 			// note that later EMF generations remove the _LITERAL from the enum
 			war.setVersion(WebAppVersionType._31);
 		}
-		else if (version != null && version.equals(J2EEVersionConstants.VERSION_4_0_TEXT)) {
+		else if (J2EEVersionConstants.VERSION_4_0_TEXT.equals(version)) {
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAVAEE7_NS_URL);  //$NON-NLS-1$
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE7_NS_URL, J2EEConstants.WEB_APP_SCHEMA_LOC_4_0);
 			// note that later EMF generations remove the _LITERAL from the enum
 			war.setVersion(WebAppVersionType._40);
 		}
-		else if (version != null && version.equals(J2EEVersionConstants.VERSION_5_0_TEXT)) {
+		else if (J2EEVersionConstants.VERSION_5_0_TEXT.equals(version)) {
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAKARTAEE9_NS_URL);  //$NON-NLS-1$
 			dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE9_NS_URL, J2EEConstants.WEB_APP_SCHEMA_LOC_5_0);
 			// note that later EMF generations remove the _LITERAL from the enum
-			war.setVersion(WebAppVersionType._50);
+			war.setVersion(WebAppVersionType._40);
 		}
-		else
-		{
+		else { //if (J2EEVersionConstants.VERSION_5_0_TEXT.equals(version)) {
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAKARTAEE9_NS_URL);  //$NON-NLS-1$
-			dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE9_NS_URL, J2EEConstants.WEB_APP_SCHEMA_LOC_5_0);
+			dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE9_NS_URL, J2EEConstants.WEB_APP_SCHEMA_LOC_6_0);
 			// note that later EMF generations remove the _LITERAL from the enum
-			war.setVersion(WebAppVersionType._50);
-		}		
-		dd.setWebApp(war);		
+			war.setVersion(WebAppVersionType._60);
+		}
+		dd.setWebApp(war);
 		res.getContents().add((EObject) dd);
 	}
 
diff --git a/plugins/org.eclipse.jst.servlet.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.servlet.ui/META-INF/MANIFEST.MF
index 38ebfc8..cee7759 100644
--- a/plugins/org.eclipse.jst.servlet.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.servlet.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Automatic-Module-Name: org.eclipse.jst.servlet.ui
 Bundle-SymbolicName: org.eclipse.jst.servlet.ui; singleton:=true
-Bundle-Version: 1.1.1500.qualifier
+Bundle-Version: 1.1.1600.qualifier
 Bundle-Activator: org.eclipse.jst.servlet.ui.internal.plugin.ServletUIPlugin
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
@@ -19,7 +19,7 @@
  org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui.workbench;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.jface;bundle-version="[3.2.0,4.0.0)",
- org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.j2ee.ui;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.wst.common.frameworks.ui;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.common.frameworks;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jst.j2ee;bundle-version="[1.1.0,1.3.0)",
@@ -32,7 +32,7 @@
  org.eclipse.jem.util;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.jem;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.emf.ecore;bundle-version="[2.2.0,3.0.0)",
- org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,1.2.0)",
+ org.eclipse.jst.common.frameworks;bundle-version="[1.1.0,2.0.0)",
  org.eclipse.debug.ui;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.server.core;bundle-version="[1.0.102,2.0.0)",
  org.eclipse.jst.server.core;bundle-version="[1.0.102,2.0.0)",
@@ -44,8 +44,8 @@
  org.eclipse.ui.ide;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.emf.edit;bundle-version="[2.2.0,3.0.0)",
  org.eclipse.jst.jee.ui;bundle-version="[1.0.100,1.1.0)",
- org.eclipse.wst.common.modulecore.ui;bundle-version="[1.0.0,1.1.0)",
- org.eclipse.jst.common.ui;bundle-version="[1.0.0,1.1.0)",
+ org.eclipse.wst.common.modulecore.ui;bundle-version="[1.0.0,2.0.0)",
+ org.eclipse.jst.common.ui;bundle-version="[1.0.0,2.0.0)",
  org.eclipse.jst.common.project.facet.core;bundle-version="[1.4.0,2.0.0)"
 Eclipse-LazyStart: true
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.jst.servlet.ui/pom.xml b/plugins/org.eclipse.jst.servlet.ui/pom.xml
index 8acbe42..cc2bc95 100644
--- a/plugins/org.eclipse.jst.servlet.ui/pom.xml
+++ b/plugins/org.eclipse.jst.servlet.ui/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.servlet.ui</artifactId>
-  <version>1.1.1500-SNAPSHOT</version>
+  <version>1.1.1600-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewFilterClassWizardPage.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewFilterClassWizardPage.java
index 6f6b3b2..22b245a 100644
--- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewFilterClassWizardPage.java
+++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewFilterClassWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 SAP AG and others.
+ * Copyright (c) 2007, 2023 SAP AG and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -162,9 +162,11 @@
 		
 		// get the version of the web facet
 		IProjectFacetVersion facetVersion = JavaEEProjectUtilities.getProjectFacetVersion(project, IJ2EEFacetConstants.DYNAMIC_WEB);
-		if (facetVersion == null) 
-			return false;
-		
+		if (facetVersion == null) {
+			// no facet, use generic validity
+			return result;
+		}
+
 		// convert the version to an integer
 		int version = J2EEVersionUtil.convertVersionStringToInt(facetVersion.getVersionString());
 		
diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebClassWizardPage.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebClassWizardPage.java
index e47da0b..7045767 100644
--- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebClassWizardPage.java
+++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/NewWebClassWizardPage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2008 SAP AG and others.
+ * Copyright (c) 2007, 2023 SAP AG and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -28,8 +28,10 @@
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaProject;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.ITypeHierarchy;
+import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jem.util.emf.workbench.ProjectUtilities;
 import org.eclipse.jface.dialogs.Dialog;
@@ -202,19 +204,25 @@
 			return;
 		}
 		IVirtualComponent component = ComponentCore.createComponent(project);
-		if(component.getRootFolder() != null
-				&& component.getRootFolder().getUnderlyingFolder() != null){
-			IVirtualFile ddXmlFile = component.getRootFolder().getFile(new Path(J2EEConstants.WEBAPP_DD_URI));
-			if (!ddXmlFile.exists())
-			{
-				// add a flag into the model to create the DD at the beginning of the operation
-				model.setBooleanProperty(GENERATE_DD, Boolean.TRUE);
+		if (component != null && component.exists()) {
+			if (component.getRootFolder() != null
+					&& component.getRootFolder().getUnderlyingFolder() != null){
+				IVirtualFile ddXmlFile = component.getRootFolder().getFile(new Path(J2EEConstants.WEBAPP_DD_URI));
+				if (!ddXmlFile.exists())
+				{
+					// add a flag into the model to create the DD at the beginning of the operation
+					model.setBooleanProperty(GENERATE_DD, Boolean.TRUE);
+				}
+				else
+				{
+					// don't create a DD, since one already exists.
+					model.setBooleanProperty(GENERATE_DD, Boolean.FALSE);
+				}
 			}
-			else
-			{
-				// don't create a DD, since one already exists.
-				model.setBooleanProperty(GENERATE_DD, Boolean.FALSE);
-			}
+		}
+		else {
+			// Not a module core project, or there's no deployment descriptor
+			model.setBooleanProperty(GENERATE_DD, Boolean.FALSE);
 		}
 	}
 
@@ -270,7 +278,7 @@
 		if (obj instanceof org.eclipse.jst.j2ee.webapplication.Servlet)
 			return true;
 		
-		return isObjectSubclassOf(obj, IServletConstants.QUALIFIED_SERVLET);
+		return isObjectSubclassOf(obj, IServletConstants.QUALIFIED_JAKARTA_GENERIC_SERVLET) || isObjectSubclassOf(obj, IServletConstants.QUALIFIED_GENERIC_SERVLET);
 	}
 	
 	protected boolean isFilter(Object obj) {
@@ -280,7 +288,7 @@
 		if (obj instanceof org.eclipse.jst.j2ee.webapplication.Filter)
 			return true;
 		
-		return isObjectSubclassOf(obj, IServletConstants.QUALIFIED_FILTER);
+		return isObjectSubclassOf(obj, IServletConstants.QUALIFIED_JAKARTA_FILTER) || isObjectSubclassOf(obj, IServletConstants.QUALIFIED_FILTER);
 	}
 	
 	private String getJavaClass(Object obj) {
@@ -437,11 +445,21 @@
 	
 	@Override
 	protected boolean isProjectValid(IProject project) {
+		if (!project.isAccessible())
+			return false;
+
 		boolean result;
 		try {
-			result = project.isAccessible() && 
-				project.hasNature(IModuleConstants.MODULE_NATURE_ID) && 
+			result = project.hasNature(IModuleConstants.MODULE_NATURE_ID) && 
 			 	(JavaEEProjectUtilities.isDynamicWebProject(project) || JavaEEProjectUtilities.isWebFragmentProject(project));
+			if (!result) { // fallback to heuristics
+				IJavaProject javaProject = JavaCore.create(project);
+				if (javaProject.exists()) {
+					if (javaProject.findType(IServletConstants.QUALIFIED_JAKARTA_GENERIC_SERVLET) != null || javaProject.findType(IServletConstants.QUALIFIED_GENERIC_SERVLET) != null) {
+						result = true;
+					}
+				}
+			}
 		} catch (CoreException ce) {
 			result = false;
 		}