diff --git a/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/ejb/ui/project/facet/EjbProjectFirstPage.java b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/ejb/ui/project/facet/EjbProjectFirstPage.java
index dde509e..04c3afe 100644
--- a/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/ejb/ui/project/facet/EjbProjectFirstPage.java
+++ b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/ejb/ui/project/facet/EjbProjectFirstPage.java
@@ -53,8 +53,11 @@
 	    }
 	    else {
 		    facets.add(primaryFacetVersion);
-		    
-		    if(primaryFacetVersion == IJ2EEFacetConstants.EJB_32)
+            if(primaryFacetVersion == IJ2EEFacetConstants.EJB_40)
+            {
+                facets.add(JavaFacet.VERSION_11);
+            }
+            else if(primaryFacetVersion == IJ2EEFacetConstants.EJB_32)
 		    {
 		        facets.add(JavaFacet.VERSION_1_7);
 		    }
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 a7b57bd..df3688c 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
@@ -189,7 +189,11 @@
 						version = J2EEVersionConstants.JEE_7_0_ID;
 					} else if (schemaName.indexOf(J2EEConstants.APP_CLIENT_SCHEMA_8) != -1) {
 						version = J2EEVersionConstants.JEE_8_0_ID;
-					}
+					}else if (schemaName.indexOf(J2EEConstants.APP_CLIENT_SCHEMA_8) != -1) {
+                        version = J2EEVersionConstants.JEE_8_0_ID;
+                    }else if (schemaName.indexOf(J2EEConstants.APP_CLIENT_SCHEMA_10) != -1) {
+                        version = J2EEVersionConstants.JEE_10_0_ID;
+                    }
 				}
 				break;
 			case APPLICATION_TYPE:
@@ -212,7 +216,9 @@
 						version = J2EEVersionConstants.JEE_7_0_ID;
 					} else if (schemaName.indexOf(J2EEConstants.APPLICATION_SCHEMA_8) != -1) {
 						version = J2EEVersionConstants.JEE_8_0_ID;
-					}
+					} else if (schemaName.indexOf(J2EEConstants.APPLICATION_SCHEMA_10) != -1) {
+                        version = J2EEVersionConstants.JEE_10_0_ID;
+                    }
 				}
 				break;
 			case EJB_TYPE:
@@ -231,7 +237,9 @@
 						version = J2EEVersionConstants.EJB_3_1_ID;
 					} else if (schemaName.indexOf(J2EEConstants.EJBJAR_SCHEMA_3_2) != -1) {
 						version = J2EEVersionConstants.EJB_3_2_ID;
-					}
+					} else if (schemaName.indexOf(J2EEConstants.EJBJAR_SCHEMA_4_0) != -1) {
+                        version = J2EEVersionConstants.EJB_4_0_ID;
+                    }
 				}
 				break;
 			case CONNECTOR_TYPE:
@@ -246,7 +254,9 @@
 						version = J2EEVersionConstants.JCA_1_6_ID;
 					} else if (schemaName.indexOf(J2EEConstants.CONNECTOR_SCHEMA_1_7) != -1) {
 						version = J2EEVersionConstants.JCA_1_7_ID;
-					}
+					}else if (schemaName.indexOf(J2EEConstants.CONNECTOR_SCHEMA_2_1) != -1) {
+                        version = J2EEVersionConstants.JCA_2_1_ID;
+                    }
 				}
 				break;
 			case WEB_TYPE:
@@ -297,7 +307,14 @@
 					} else if (J2EEVersionConstants.VERSION_4_0_TEXT.equals(versionAttribute)) {
 						version = J2EEVersionConstants.WEB_4_0_ID;
 					}
-				}
+				}else if (J2EEConstants.JAKARTAEE10_NS_URL.equals(namespace)) {
+                    String versionAttribute = handler.getRootAttributes().getValue("version"); //$NON-NLS-1$
+                    if (J2EEVersionConstants.VERSION_5_0_TEXT.equals(versionAttribute)) {
+                        version = J2EEVersionConstants.WEB_5_0_ID;
+                    } else if (J2EEVersionConstants.VERSION_6_0_TEXT.equals(versionAttribute)) {
+                        version = J2EEVersionConstants.WEB_6_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$
@@ -322,12 +339,20 @@
 						version = J2EEVersionConstants.WEBSERVICES_1_3_ID;
 					}else if (schemaName.equals(J2EEConstants.WEBSERVICE_SCHEMA_1_4)) {
 						version = J2EEVersionConstants.WEBSERVICES_1_4_ID;
-					}
+					}else if (schemaName.equals(J2EEConstants.WEBSERVICE_SCHEMA_2_0)) {
+                        version = J2EEVersionConstants.WEBSERVICES_2_0_ID;
+                    }
 				}
 				break;
 			case WEBFRAGMENT_TYPE:
 				if (schemaName != null) {
-					if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_4_0) != -1) {
+				    if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_6_0) != -1) {
+                        version = J2EEVersionConstants.WEBFRAGMENT_6_0_ID;
+                    }
+                    else if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_5_0) != -1) {
+                        version = J2EEVersionConstants.WEBFRAGMENT_5_0_ID;
+                    }
+                    else 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) {
@@ -336,6 +361,7 @@
 					else if (schemaName.indexOf(J2EEConstants.WEBFRAGMENT_SCHEMA_3_0) != -1) {
 						version = J2EEVersionConstants.WEBFRAGMENT_3_0_ID;
 					}
+					
 				}
 				break;
 			default:
@@ -390,6 +416,9 @@
 				case J2EEVersionConstants.EJB_3_2_ID:
 					javaEEVersion = J2EEConstants.JEE_7_0_ID;
 					break;
+				case J2EEVersionConstants.EJB_4_0_ID:
+                    javaEEVersion = J2EEConstants.JEE_10_0_ID;
+                    break;					
 				}
 				break;
 			case CONNECTOR_TYPE:
@@ -406,6 +435,9 @@
 				case J2EEVersionConstants.JCA_1_7_ID:
 					javaEEVersion = J2EEConstants.JEE_7_0_ID;
 					break;
+				case J2EEVersionConstants.JCA_2_1_ID:
+                    javaEEVersion = J2EEConstants.JEE_10_0_ID;
+                    break;
 				}
 				break;
 			case WEB_TYPE:
@@ -456,6 +488,9 @@
 			case J2EEVersionConstants.WEBSERVICES_1_4_ID:
 				javaEEVersion = J2EEVersionConstants.JEE_7_0_ID;
 				break;
+		    case J2EEVersionConstants.WEBSERVICES_2_0_ID:
+                javaEEVersion = J2EEVersionConstants.JEE_10_0_ID;
+                break;				
 			}
 			break;
 			
@@ -470,6 +505,12 @@
 			case J2EEVersionConstants.WEBFRAGMENT_4_0_ID:
 				javaEEVersion = J2EEVersionConstants.JEE_8_0_ID;
 				break;
+			case J2EEVersionConstants.WEBFRAGMENT_5_0_ID:
+                javaEEVersion = J2EEVersionConstants.JEE_9_0_ID;
+                break;
+            case J2EEVersionConstants.WEBFRAGMENT_6_0_ID:
+                javaEEVersion = J2EEVersionConstants.JEE_10_0_ID;
+                break;
 			}
 			break;
 		}
diff --git a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/J2EEFileUtil.java b/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/J2EEFileUtil.java
index a313a88..208ae3d 100644
--- a/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/J2EEFileUtil.java
+++ b/plugins/org.eclipse.jst.j2ee.core/commonArchive/org/eclipse/jst/j2ee/commonarchivecore/internal/util/J2EEFileUtil.java
@@ -320,7 +320,9 @@
               version = J2EEVersionConstants.EJB_3_1_ID;
            } else if (versionAttr.equals(J2EEVersionConstants.VERSION_3_2_TEXT)) { 
               version = J2EEVersionConstants.EJB_3_2_ID;
-           }
+           } else if (versionAttr.equals(J2EEVersionConstants.VERSION_4_0_TEXT)) { 
+               version = J2EEVersionConstants.EJB_4_0_ID;
+            }
         } else if (isApplicationClientFile(fileURI)) {
            if (null == versionAttr) {
               version = J2EEVersionConstants.J2EE_1_4_ID;
@@ -391,7 +393,9 @@
               version = J2EEVersionConstants.J2EE_1_4_ID;
            }
         } else if (isEJBJarFile(fileURI)) {
-           if ((schemaName.indexOf(J2EEConstants.EJBJAR_SCHEMA_3_2_NS)) != -1) {
+           if ((schemaName.indexOf(J2EEConstants.EJBJAR_SCHEMA_4_0_NS)) != -1) {
+                version = J2EEVersionConstants.EJB_4_0_ID;   
+           } else if ((schemaName.indexOf(J2EEConstants.EJBJAR_SCHEMA_3_2_NS)) != -1) {
               version = J2EEVersionConstants.EJB_3_2_ID;   
            } else if ((schemaName.indexOf(J2EEConstants.EJBJAR_SCHEMA_3_1_NS)) != -1) {
               version = J2EEVersionConstants.EJB_3_1_ID;   
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/application/internal/metadata/ApplicationPackage.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/application/internal/metadata/ApplicationPackage.java
index a68ca55..a4f0b0d 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/application/internal/metadata/ApplicationPackage.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/application/internal/metadata/ApplicationPackage.java
@@ -292,6 +292,7 @@
 	String eNS_URI2 = J2EEConstants.APPLICATION_SCHEMA_LOC_6;
 	String eNS_URI3 = J2EEConstants.APPLICATION_SCHEMA_LOC_7;
 	String eNS_URI4 = J2EEConstants.APPLICATION_SCHEMA_LOC_8;
+	String eNS_URI5 = J2EEConstants.APPLICATION_SCHEMA_LOC_10;
 	/**
 	 * The package namespace name.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/impl/ApplicationclientPackageImpl.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/impl/ApplicationclientPackageImpl.java
index 42c38e3..d937281 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/impl/ApplicationclientPackageImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/impl/ApplicationclientPackageImpl.java
@@ -110,6 +110,8 @@
 		EPackage.Registry.INSTANCE.put(ApplicationclientPackage.eNS_URI, theApplicationclientPackage);
 		EPackage.Registry.INSTANCE.put(ApplicationclientPackage.eNS_URI2, theApplicationclientPackage);
 		EPackage.Registry.INSTANCE.put(ApplicationclientPackage.eNS_URI3, theApplicationclientPackage);
+		EPackage.Registry.INSTANCE.put(ApplicationclientPackage.eNS_URI4, theApplicationclientPackage);
+		EPackage.Registry.INSTANCE.put(ApplicationclientPackage.eNS_URI5, theApplicationclientPackage);
 
 		J2EEInit.initEMFModels();
 		return theApplicationclientPackage;
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/metadata/ApplicationclientPackage.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/metadata/ApplicationclientPackage.java
index 30c3e0b..5e42227 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/metadata/ApplicationclientPackage.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/applicationclient/internal/metadata/ApplicationclientPackage.java
@@ -293,6 +293,7 @@
 	String eNS_URI2 = J2EEConstants.APP_CLIENT_SCHEMA_LOC_6;
 	String eNS_URI3 = J2EEConstants.APP_CLIENT_SCHEMA_LOC_7;
 	String eNS_URI4 = J2EEConstants.APP_CLIENT_SCHEMA_LOC_8;
+	String eNS_URI5 = J2EEConstants.APP_CLIENT_SCHEMA_LOC_10;
 	/**
 	 * The package namespace name.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/impl/JavaeePackageImpl.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/impl/JavaeePackageImpl.java
index 5cd5ff2..30f7706 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/impl/JavaeePackageImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/impl/JavaeePackageImpl.java
@@ -698,7 +698,8 @@
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(JavaeePackage.eNS_URI, theJavaeePackage);
 		EPackage.Registry.INSTANCE.put(JavaeePackage.eNS_URI2, theJavaeePackage);
-
+		EPackage.Registry.INSTANCE.put(JavaeePackage.eNS_URI3, theJavaeePackage);
+		
 		J2EEInit.initEMFModels();
 		return theJavaeePackage;
 	}
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/metadata/JavaeePackage.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/metadata/JavaeePackage.java
index 9a4719e..4c68db6 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/metadata/JavaeePackage.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/metadata/JavaeePackage.java
@@ -243,6 +243,7 @@
 	 */
 	String eNS_URI = J2EEConstants.JAVAEE7_NS_URL;
 	String eNS_URI2 = J2EEConstants.JAVAEE_NS_URL;
+	String eNS_URI3 = J2EEConstants.JAKARTAEE9_NS_URL;
 
 	/**
 	 * The package namespace name.
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/util/JavaEEExtendedMetaData.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/util/JavaEEExtendedMetaData.java
index c6f2dc8..c344ab6 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/util/JavaEEExtendedMetaData.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/core/internal/util/JavaEEExtendedMetaData.java
@@ -107,6 +107,10 @@
 						uri = J2EEConstants.APPLICATION_SCHEMA_LOC_7;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
 					}
+					else if(J2EEVersionConstants.VERSION_10_TEXT.equals(version)) {
+                        uri = J2EEConstants.APPLICATION_SCHEMA_LOC_10;
+                        javaeeUri = J2EEConstants.JAKARTAEE10_NS_URL;
+                    }
 					else {
 						uri = J2EEConstants.APPLICATION_SCHEMA_LOC_8;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
@@ -133,6 +137,10 @@
 						uri = J2EEConstants.APP_CLIENT_SCHEMA_LOC_7;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
 					}
+					else if (J2EEVersionConstants.VERSION_10_TEXT.equals(version)) {
+                        uri = J2EEConstants.APP_CLIENT_SCHEMA_LOC_10;
+                        javaeeUri = J2EEConstants.JAKARTAEE10_NS_URL;
+                    }
 					else {
 						uri = J2EEConstants.APP_CLIENT_SCHEMA_LOC_8;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
@@ -155,8 +163,11 @@
 						uri = J2EEConstants.EJB_JAR_SCHEMA_LOC_3_1;
 						javaeeUri = J2EEConstants.JAVAEE_NS_URL;
 					}
-					else
-					{
+					else if(J2EEVersionConstants.VERSION_4_0_TEXT.equals(version)) {
+                        uri = J2EEConstants.EJB_JAR_SCHEMA_LOC_4_0;
+                        javaeeUri = J2EEConstants.JAKARTAEE10_NS_URL;
+                    }
+					else {
 						uri = J2EEConstants.EJB_JAR_SCHEMA_LOC_3_2;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
 					}
@@ -174,6 +185,10 @@
 						uri = J2EEConstants.CONNECTOR_SCHEMA_LOC_1_6;
 						javaeeUri = J2EEConstants.JAVAEE_NS_URL;
 					}
+					else if(J2EEVersionConstants.VERSION_2_1_TEXT.equals(version)) {
+                        uri = J2EEConstants.CONNECTOR_SCHEMA_LOC_2_1;
+                        javaeeUri = J2EEConstants.JAKARTAEE10_NS_URL;
+                    }
 					else
 					{
 						uri = J2EEConstants.CONNECTOR_SCHEMA_LOC_1_7;
@@ -202,6 +217,14 @@
 						uri = J2EEConstants.WEB_APP_SCHEMA_LOC_3_1;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
 					}
+					else if(J2EEVersionConstants.VERSION_5_0_TEXT.equals(version)) {
+                        uri = J2EEConstants.WEB_APP_SCHEMA_LOC_5_0;
+                        javaeeUri = J2EEConstants.JAKARTAEE9_NS_URL;
+                    }
+					else if(J2EEVersionConstants.VERSION_6_0_TEXT.equals(version)) {
+                        uri = J2EEConstants.WEB_APP_SCHEMA_LOC_6_0;
+                        javaeeUri = J2EEConstants.JAKARTAEE10_NS_URL;
+                    }
 					else {
 						uri = J2EEConstants.WEB_APP_SCHEMA_LOC_4_0;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
@@ -225,6 +248,14 @@
 						uri = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_3_1;
 						javaeeUri = J2EEConstants.JAVAEE7_NS_URL;
 					}
+					else if(J2EEVersionConstants.VERSION_5_0_TEXT.equals(version)) {
+                        uri = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_5_0;
+                        javaeeUri = J2EEConstants.JAKARTAEE9_NS_URL;
+                    }
+					else if(J2EEVersionConstants.VERSION_6_0_TEXT.equals(version)) {
+                        uri = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_6_0;
+                        javaeeUri = J2EEConstants.JAKARTAEE10_NS_URL;
+                    }
 					else
 					{
 						uri = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_4_0;
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/impl/EjbPackageImpl.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/impl/EjbPackageImpl.java
index 3f2871b..2fdf453 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/impl/EjbPackageImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/impl/EjbPackageImpl.java
@@ -617,6 +617,7 @@
 		EPackage.Registry.INSTANCE.put(EjbPackage.eNS_URI, theEjbPackage);
 		EPackage.Registry.INSTANCE.put(EjbPackage.eNS_URI2, theEjbPackage);
 		EPackage.Registry.INSTANCE.put(EjbPackage.eNS_URI3, theEjbPackage);
+		EPackage.Registry.INSTANCE.put(EjbPackage.eNS_URI4, theEjbPackage);
 
 		J2EEInit.initEMFModels();
 		return theEjbPackage;
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/metadata/EjbPackage.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/metadata/EjbPackage.java
index f6458ef..1a49830 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/metadata/EjbPackage.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/metadata/EjbPackage.java
@@ -292,6 +292,7 @@
 	String eNS_URI = J2EEConstants.EJB_JAR_SCHEMA_LOC_3_0;
 	String eNS_URI2 = J2EEConstants.EJB_JAR_SCHEMA_LOC_3_1;
 	String eNS_URI3 = J2EEConstants.EJB_JAR_SCHEMA_LOC_3_2;
+	String eNS_URI4 = J2EEConstants.EJB_JAR_SCHEMA_LOC_4_0;
 
 	/**
 	 * The package namespace name.
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/util/EjbXMLHelperImpl.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/util/EjbXMLHelperImpl.java
index af10232..7424197 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/util/EjbXMLHelperImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/ejb/internal/util/EjbXMLHelperImpl.java
@@ -54,6 +54,9 @@
 			aFeature =  super.getFeature(class1, EjbPackage.eNS_URI2, name, isElement);
 		if (aFeature == null && !EjbPackage.eNS_URI3.equals(namespaceURI))
 			aFeature =  super.getFeature(class1, EjbPackage.eNS_URI3, name, isElement);
+		if (aFeature == null && !EjbPackage.eNS_URI4.equals(namespaceURI))
+            aFeature =  super.getFeature(class1, EjbPackage.eNS_URI4, name, isElement);
+
 		return aFeature;
 	}
 
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/impl/JcaPackageImpl.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/impl/JcaPackageImpl.java
index 4363251..aa10468 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/impl/JcaPackageImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/impl/JcaPackageImpl.java
@@ -252,6 +252,7 @@
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(JcaPackage.eNS_URI, theJcaPackage);
 		EPackage.Registry.INSTANCE.put(JcaPackage.eNS_URI2, theJcaPackage);
+		EPackage.Registry.INSTANCE.put(JcaPackage.eNS_URI3, theJcaPackage);
 
 		J2EEInit.initEMFModels();
 		return theJcaPackage;
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/metadata/JcaPackage.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/metadata/JcaPackage.java
index 8a49589..88f49bc 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/metadata/JcaPackage.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/jca/internal/metadata/JcaPackage.java
@@ -292,6 +292,7 @@
 	 */
 	String eNS_URI = J2EEConstants.CONNECTOR_SCHEMA_LOC_1_6;
 	String eNS_URI2 = J2EEConstants.CONNECTOR_SCHEMA_LOC_1_7;
+	String eNS_URI3 = J2EEConstants.CONNECTOR_SCHEMA_LOC_2_1;
 
 	/**
 	 * The package namespace name.
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/impl/WebPackageImpl.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/impl/WebPackageImpl.java
index 5f11651..c49ae08 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/impl/WebPackageImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/impl/WebPackageImpl.java
@@ -494,6 +494,9 @@
 		EPackage.Registry.INSTANCE.put(WebPackage.eNS_URI, theWebPackage);
 		EPackage.Registry.INSTANCE.put(WebPackage.eNS_URI2, theWebPackage);
 		EPackage.Registry.INSTANCE.put(WebPackage.eNS_URI3, theWebPackage);
+		EPackage.Registry.INSTANCE.put(WebPackage.eNS_URI4, theWebPackage);
+		EPackage.Registry.INSTANCE.put(WebPackage.eNS_URI5, theWebPackage);
+		EPackage.Registry.INSTANCE.put(WebPackage.eNS_URI6, theWebPackage);
 
 		J2EEInit.initEMFModels();
 		return theWebPackage;
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/metadata/WebPackage.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/metadata/WebPackage.java
index d2810d3..150b39a 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/metadata/WebPackage.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/web/internal/metadata/WebPackage.java
@@ -323,6 +323,7 @@
 	String eNS_URI3 = J2EEConstants.WEB_APP_SCHEMA_LOC_3_1;
 	String eNS_URI4 = J2EEConstants.WEB_APP_SCHEMA_LOC_4_0;
 	String eNS_URI5 = J2EEConstants.WEB_APP_SCHEMA_LOC_5_0;
+	String eNS_URI6 = J2EEConstants.WEB_APP_SCHEMA_LOC_6_0;
 
 	/**
 	 * The package namespace name.
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/impl/WebfragmentPackageImpl.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/impl/WebfragmentPackageImpl.java
index 4d25c77..fcdfda7 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/impl/WebfragmentPackageImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/impl/WebfragmentPackageImpl.java
@@ -99,6 +99,10 @@
 		// Update the registry and return the package
 		EPackage.Registry.INSTANCE.put(WebfragmentPackage.eNS_URI, theWebfragmentPackage);
 		EPackage.Registry.INSTANCE.put(WebfragmentPackage.eNS_URI2, theWebfragmentPackage);
+		EPackage.Registry.INSTANCE.put(WebfragmentPackage.eNS_URI3, theWebfragmentPackage);
+		EPackage.Registry.INSTANCE.put(WebfragmentPackage.eNS_URI4, theWebfragmentPackage);
+		EPackage.Registry.INSTANCE.put(WebfragmentPackage.eNS_URI5, theWebfragmentPackage);
+		
 
 		J2EEInit.initEMFModels();
 		return theWebfragmentPackage;
diff --git a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/metadata/WebfragmentPackage.java b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/metadata/WebfragmentPackage.java
index 1b6a139..bc85b47 100644
--- a/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/metadata/WebfragmentPackage.java
+++ b/plugins/org.eclipse.jst.j2ee.core/jee-models/org/eclipse/jst/javaee/webfragment/internal/metadata/WebfragmentPackage.java
@@ -365,6 +365,8 @@
 	String eNS_URI = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_3_0;
 	String eNS_URI2 = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_3_1;
 	String eNS_URI3 = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_4_0;
+	String eNS_URI4 = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_5_0;
+	String eNS_URI5 = J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_6_0;
 	/**
 	 * The package namespace name.
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/EJBResourceImpl.java b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/EJBResourceImpl.java
index 0b5f570..de0a8e8 100644
--- a/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/EJBResourceImpl.java
+++ b/plugins/org.eclipse.jst.j2ee.core/mofj2ee/org/eclipse/jst/j2ee/ejb/internal/impl/EJBResourceImpl.java
@@ -159,6 +159,8 @@
 				return J2EEVersionConstants.JEE_6_0_ID;
 			case J2EEVersionConstants.EJB_3_2_ID :
 				return J2EEVersionConstants.JEE_7_0_ID;
+			case J2EEVersionConstants.EJB_4_0_ID :
+                return J2EEVersionConstants.JEE_10_0_ID;				
 			default :
 			return J2EEVersionConstants.J2EE_1_4_ID;
 		}
@@ -182,6 +184,10 @@
 	public void setModuleVersionID(int id) {
 		super.setVersionID(id);
 		switch (id) {
+		        case (EJB_4_0_ID) :
+		            super.setDoctypeValues(null, null);
+                    primSetVersionID(EJB_4_0_ID);
+                    break;
 				case (EJB_3_2_ID) :
 					super.setDoctypeValues(null, null);
 					primSetVersionID(EJB_3_2_ID);
@@ -216,6 +222,10 @@
 	@Override
 	public void setJ2EEVersionID(int id) {
 	switch (id) {
+	    case (JEE_10_0_ID) :
+            primSetDoctypeValues(null, null);
+            primSetVersionID(EJB_4_0_ID);
+            break;
 		case (JEE_8_0_ID) : 
 		case (JEE_7_0_ID) :
 					primSetDoctypeValues(null, null);
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 7cf6ef5..4704e54 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
@@ -55,6 +55,7 @@
     String APP_CLIENT_SCHEMA_6         =   "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application-client_6.xsd"; //$NON-NLS-1$
     String APP_CLIENT_SCHEMA_7         =   "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application-client_7.xsd"; //$NON-NLS-1$
     String APP_CLIENT_SCHEMA_8         =   "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application-client_8.xsd"; //$NON-NLS-1$
+    String APP_CLIENT_SCHEMA_10        =   "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd"; //$NON-NLS-1$
     
     //Application constants
     /** "Application_ID"                                                                                                    */
@@ -82,6 +83,7 @@
     String APPLICATION_SCHEMA_6         =  "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"; //$NON-NLS-1$ 
     String APPLICATION_SCHEMA_7         =  "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"; //$NON-NLS-1$
     String APPLICATION_SCHEMA_8         =  "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd"; //$NON-NLS-1$
+    String APPLICATION_SCHEMA_10        =  "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/application_10.xsd"; //$NON-NLS-1$
     
     //EJB Jar Constants
     /** "ejb-jar_ID"                                                                                                                */
@@ -109,6 +111,10 @@
     String EJBJAR_SCHEMA_3_1_NS     =   "http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"; //$NON-NLS-1$ 
     String EJBJAR_SCHEMA_3_2        =   "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"; //$NON-NLS-1$ 
     String EJBJAR_SCHEMA_3_2_NS     =   "http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"; //$NON-NLS-1$ 
+    String EJBJAR_SCHEMA_4_0        =   "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/ejb-jar_4_0.xsd"; //$NON-NLS-1$ 
+    String EJBJAR_SCHEMA_4_0_NS     =   "https://jakarta.ee/xml/ns/jakartaee/ejb-jar_4_0.xsd"; //$NON-NLS-1$ 
+    
+   
     
     // EAR constants
     
@@ -124,6 +130,8 @@
     String  WEBFRAGMENT_SCHEMA_3_0 		= 		"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-fragment_3_0.xsd"; //$NON-NLS-1$
     String  WEBFRAGMENT_SCHEMA_3_1 		= 		"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-fragment_3_1.xsd"; //$NON-NLS-1$
     String  WEBFRAGMENT_SCHEMA_4_0 		= 		"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-fragment_4_0.xsd"; //$NON-NLS-1$
+    String  WEBFRAGMENT_SCHEMA_5_0      =       "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-fragment_5_0.xsd"; //$NON-NLS-1$
+    String  WEBFRAGMENT_SCHEMA_6_0      =       "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_0.xsd"; //$NON-NLS-1$
     
     //Web app Constants
     /** "WebApp_ID"                                                                                                                 */
@@ -148,8 +156,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 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$
+    String WEBAPP_SCHEMA_5_0        =   "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd";//$NON-NLS-1$
+    String WEBAPP_SCHEMA_6_0        =   "https://jakarta.ee/xml/ns/jakartaee 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
@@ -169,6 +177,7 @@
     String CONNECTOR_SCHEMA_1_5         =   "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd";//$NON-NLS-1$
     String CONNECTOR_SCHEMA_1_6         =   "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/connector_1_6.xsd";//$NON-NLS-1$
     String CONNECTOR_SCHEMA_1_7         =   "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd";//$NON-NLS-1$
+    String CONNECTOR_SCHEMA_2_1         =   "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/connector_2_1.xsd";//$NON-NLS-1$
     //Web Services Constants
     /** Doc type for webservices deployment descriptors */
     String WEB_SERVICES_CLIENT_DOCTYPE      = "webservicesclient";  //$NON-NLS-1$
@@ -201,7 +210,10 @@
     String WEBSERVICE_SCHEMA_LOC_SUN_1_3 = "http://java.sun.com/xml/ns/javaee/javaee_web_services_1_3.xsd";//$NON-NLS-1$
     String WEBSERVICE_SCHEMA_1_4 = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/javaee_web_services_1_4.xsd";//$NON-NLS-1$
     String WEBSERVICE_SCHEMA_LOC_1_4 = "http://xmlns.jcp.org/xml/ns/javaee/javaee_web_services_1_4.xsd";//$NON-NLS-1$
-        
+    String WEBSERVICE_SCHEMA_2_0 = "https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/jakartaee_web_services_2_0.xsd";//$NON-NLS-1$
+    String WEBSERVICE_SCHEMA_LOC_2_0 = "https://jakarta.ee/xml/ns/jakartaee/jakartaee_web_services_2_0.xsd";//$NON-NLS-1$
+
+    
     //Miscellaneous constants
     /** "UTF-8"                                                                                                                             */
     String DEFAULT_XML_ENCODING             =       "UTF-8"; //$NON-NLS-1$
@@ -215,6 +227,7 @@
     String JAVAEE_NS_URL                    = "http://java.sun.com/xml/ns/javaee"; //$NON-NLS-1$ //EJB3
     String JAVAEE7_NS_URL                   = "http://xmlns.jcp.org/xml/ns/javaee"; //$NON-NLS-1$
     String JAKARTAEE9_NS_URL = "https://jakarta.ee/xml/ns/jakartaee"; //$NON-NLS-1$
+    String JAKARTAEE10_NS_URL = "https://jakarta.ee/xml/ns/jakartaee"; //$NON-NLS-1$
     String J2EE_1_4_XSD_SHORT_NAME          = "j2ee_1_4.xsd"; //$NON-NLS-1$
     String JAVAEE_5_XSD_SHORT_NAME          = "javaee_5.xsd"; //$NON-NLS-1$  //EJB3
     String XSI_NS_URL                       = "http://www.w3.org/2001/XMLSchema-instance"; //$NON-NLS-1$ 
@@ -223,18 +236,23 @@
     String APPLICATION_SCHEMA_LOC_6         = "http://java.sun.com/xml/ns/javaee/application_6.xsd"; //$NON-NLS-1$
     String APPLICATION_SCHEMA_LOC_7         = "http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"; //$NON-NLS-1$
     String APPLICATION_SCHEMA_LOC_8         = "http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd"; //$NON-NLS-1$
+    String APPLICATION_SCHEMA_LOC_10        = "https://jakarta.ee/xml/ns/jakartaee/application_10.xsd"; //$NON-NLS-1$
     String APP_CLIENT_SCHEMA_LOC_1_4        = "http://java.sun.com/xml/ns/j2ee/application-client_1_4.xsd"; //$NON-NLS-1$
     String APP_CLIENT_SCHEMA_LOC_5          = "http://java.sun.com/xml/ns/javaee/application-client_5.xsd"; //$NON-NLS-1$
     String APP_CLIENT_SCHEMA_LOC_6          = "http://java.sun.com/xml/ns/javaee/application-client_6.xsd"; //$NON-NLS-1$
     String APP_CLIENT_SCHEMA_LOC_7          = "http://xmlns.jcp.org/xml/ns/javaee/application-client_7.xsd"; //$NON-NLS-1$
     String APP_CLIENT_SCHEMA_LOC_8          = "http://xmlns.jcp.org/xml/ns/javaee/application-client_8.xsd"; //$NON-NLS-1$
+    String APP_CLIENT_SCHEMA_LOC_10         = "https://jakarta.ee/xml/ns/jakartaee/application-client_10.xsd"; //$NON-NLS-1$
     String EJB_JAR_SCHEMA_LOC_2_1           = "http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"; //$NON-NLS-1$
     String EJB_JAR_SCHEMA_LOC_3_0    		= "http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"; //$NON-NLS-1$
     String EJB_JAR_SCHEMA_LOC_3_1    		= "http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"; //$NON-NLS-1$
     String EJB_JAR_SCHEMA_LOC_3_2    		= "http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd"; //$NON-NLS-1$
+    String EJB_JAR_SCHEMA_LOC_4_0           = "https://jakarta.ee/xml/ns/jakartaee/ejb-jar_4_0.xsd"; //$NON-NLS-1$
     String CONNECTOR_SCHEMA_LOC_1_5         = "http://java.sun.com/xml/ns/j2ee/connector_1_5.xsd"; //$NON-NLS-1$
     String CONNECTOR_SCHEMA_LOC_1_6         = "http://java.sun.com/xml/ns/javaee/connector_1_6.xsd"; //$NON-NLS-1$
     String CONNECTOR_SCHEMA_LOC_1_7         = "http://xmlns.jcp.org/xml/ns/javaee/connector_1_7.xsd"; //$NON-NLS-1$
+    String CONNECTOR_SCHEMA_LOC_2_1         = "https://jakarta.ee/xml/ns/jakartaee/connector_2_1.xsd"; //$NON-NLS-1$
+    
     String WEB_APP_SCHEMA_LOC_2_4           = "http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"; //$NON-NLS-1$
     String WEB_APP_SCHEMA_LOC_2_5           = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"; //$NON-NLS-1$
     String WEB_APP_SCHEMA_LOC_3_0           = "http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"; //$NON-NLS-1$
@@ -251,6 +269,7 @@
     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$
+    String WEBFRAGMENT_SCHEMA_LOC_6_0       = "https://jakarta.ee/xml/ns/jakartaee/web-fragment_6_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 6fe329b..1cac170 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
@@ -44,6 +44,7 @@
 	public int EJB_3_0_ID = 30;
 	public int EJB_3_1_ID = 31;
 	public int EJB_3_2_ID = 32;
+	public int EJB_4_0_ID = 40;
 	public int WEB_2_2_ID = 22;
 	public int WEB_2_3_ID = 23;
 	public int WEB_2_4_ID = 24;
@@ -56,6 +57,8 @@
 	public int WEBFRAGMENT_3_0_ID = 30;
 	public int WEBFRAGMENT_3_1_ID = 31;
 	public int WEBFRAGMENT_4_0_ID = 40;
+	public int WEBFRAGMENT_5_0_ID = 50;
+	public int WEBFRAGMENT_6_0_ID = 60;
 	public int TAGLIB_1_1_ID = 11;
 	public int TAGLIB_1_2_ID = 12;
 	public int TAGLIB_2_0_ID = 20;
@@ -76,11 +79,13 @@
 	public int JCA_1_5_ID = 15;
 	public int JCA_1_6_ID = 16;
 	public int JCA_1_7_ID = 17;
+	public int JCA_2_1_ID = 21;
 	public int WEBSERVICES_1_0_ID = 10;
 	public int WEBSERVICES_1_1_ID = 11;
 	public int WEBSERVICES_1_2_ID = 12;
 	public int WEBSERVICES_1_3_ID = 13;
 	public int WEBSERVICES_1_4_ID = 14;
+	public int WEBSERVICES_2_0_ID = 20;
 	public String J2EE_1_4_TEXT 		= "1.4"; //$NON-NLS-1$
 	
 
@@ -108,6 +113,7 @@
 	public int VERSION_6_0 = 60; 
 	public int VERSION_7_0 = 70;
 	public int VERSION_8_0 = 80;
+	public int VERSION_10_0 = 100;
 	
 	public String VERSION_1_0_TEXT		= "1.0"; //$NON-NLS-1$
 	public String VERSION_1_1_TEXT    	= "1.1"; //$NON-NLS-1$
@@ -132,10 +138,12 @@
 	public String VERSION_6_0_TEXT		= "6.0"; //$NON-NLS-1$
 	public String VERSION_7_0_TEXT		= "7.0"; //$NON-NLS-1$
 	public String VERSION_8_0_TEXT		= "8.0"; //$NON-NLS-1$
+	public String VERSION_10_0_TEXT     = "10.0"; //$NON-NLS-1$
 	public String VERSION_5_TEXT        = "5";   //$NON-NLS-1$
 	public String VERSION_6_TEXT        = "6";   //$NON-NLS-1$
 	public String VERSION_7_TEXT        = "7";   //$NON-NLS-1$
 	public String VERSION_8_TEXT        = "8";	//$NON-NLS-1$
 	public String VERSION_9_TEXT        = "9";	//$NON-NLS-1$
+	public String VERSION_10_TEXT        = "10"; //$NON-NLS-1$
 					
 }
diff --git a/plugins/org.eclipse.jst.j2ee.ejb/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.ejb/META-INF/MANIFEST.MF
index 2eb5b77..72f7967 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.ejb/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.j2ee.ejb; singleton:=true
-Bundle-Version: 1.1.901.qualifier
+Bundle-Version: 1.1.902.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.ejb.internal.plugin.EjbPlugin
 Bundle-Vendor: %Bundle-Vendor.0
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/ejb/project/facet/EjbFacetInstallDelegate.java b/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/ejb/project/facet/EjbFacetInstallDelegate.java
index 5a0bea9..d6f1ae2 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/ejb/project/facet/EjbFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee.ejb/ejbcreation/org/eclipse/jst/j2ee/ejb/project/facet/EjbFacetInstallDelegate.java
@@ -102,7 +102,7 @@
 				}
 			}
 			
-			if( fv == IJ2EEFacetConstants.EJB_32 || fv == IJ2EEFacetConstants.EJB_31 || fv == IJ2EEFacetConstants.EJB_30)
+			if(fv == IJ2EEFacetConstants.EJB_40 || fv == IJ2EEFacetConstants.EJB_32 || fv == IJ2EEFacetConstants.EJB_31 || fv == IJ2EEFacetConstants.EJB_30)
             {
                 if(model.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD)){
                     // Create the deployment descriptor (ejb-jar.xml) if one doesn't exist
@@ -110,7 +110,9 @@
                     if (!ejbJarXmlFile.exists()) {
                         try {
                         	String ejbJarXmlContents = null;
-                        	if(fv == IJ2EEFacetConstants.EJB_32) {
+                            if(fv == IJ2EEFacetConstants.EJB_40) {
+                                ejbJarXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ejb-jar 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/ejb-jar_4_0.xsd\">\n  <display-name>" + XMLWriter.getEscaped(project.getName()) +" </display-name> \n </ejb-jar>"; //$NON-NLS-1$ //$NON-NLS-2$
+                            } else if(fv == IJ2EEFacetConstants.EJB_32) {
 	                            ejbJarXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ejb-jar version=\"3.2\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/ejb-jar_3_2.xsd\">\n  <display-name>" + XMLWriter.getEscaped(project.getName()) +" </display-name> \n </ejb-jar>"; //$NON-NLS-1$ //$NON-NLS-2$
                         	} else if(fv == IJ2EEFacetConstants.EJB_31) {
 	                            ejbJarXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ejb-jar version=\"3.1\" xmlns=\"http://java.sun.com/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd\">\n  <display-name>" + XMLWriter.getEscaped(project.getName()) +" </display-name> \n </ejb-jar>"; //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/plugins/org.eclipse.jst.j2ee.ejb/plugin.xml b/plugins/org.eclipse.jst.j2ee.ejb/plugin.xml
index 92d134c..2cbb80b 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb/plugin.xml
+++ b/plugins/org.eclipse.jst.j2ee.ejb/plugin.xml
@@ -208,6 +208,16 @@
       	<group-member id="modules"/>
     </project-facet-version>
     
+	<project-facet-version facet="jst.ejb" version="4.0">
+		<constraint>
+ 	       <and>
+ 		       	<requires facet="jst.java" version="[11"/>
+ 	         	<conflicts group="modules"/>
+ 	       </and>
+    	</constraint>
+      	<group-member id="modules"/>
+    </project-facet-version>  
+    
     <action facet="jst.ejb" type="INSTALL" id="jst.ejb.install">
       <delegate class="org.eclipse.jst.j2ee.ejb.project.facet.EjbFacetInstallDelegate"/>
       <config-factory class="org.eclipse.jst.j2ee.internal.ejb.project.operations.EjbFacetInstallDataModelProvider"/>
diff --git a/plugins/org.eclipse.jst.j2ee.ejb/pom.xml b/plugins/org.eclipse.jst.j2ee.ejb/pom.xml
index d469041..56eba7b 100644
--- a/plugins/org.eclipse.jst.j2ee.ejb/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.ejb/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.ejb</groupId>
   <artifactId>org.eclipse.jst.j2ee.ejb</artifactId>
-  <version>1.1.901-SNAPSHOT</version>
+  <version>1.1.902-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorProjectFirstPage.java b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorProjectFirstPage.java
index 51dcf35..0265969 100644
--- a/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorProjectFirstPage.java
+++ b/plugins/org.eclipse.jst.j2ee.jca.ui/jca_ui/org/eclipse/jst/j2ee/jca/ui/internal/wizard/ConnectorProjectFirstPage.java
@@ -52,8 +52,11 @@
 	    }
 	    else {
 		    facets.add(primaryFacetVersion);
-		    
-		    if( primaryFacetVersion == IJ2EEFacetConstants.JCA_17)
+		    if( primaryFacetVersion == IJ2EEFacetConstants.JCA_21)
+            {
+                facets.add(JavaFacet.VERSION_11);
+            }		    
+		    else if( primaryFacetVersion == IJ2EEFacetConstants.JCA_17)
 		    {
 		        facets.add(JavaFacet.VERSION_1_7);
 		    }
diff --git a/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF
index 98c4b07..e2a60ac 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee.jca/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.j2ee.jca; singleton:=true
-Bundle-Version: 1.1.1000.qualifier
+Bundle-Version: 1.1.1001.qualifier
 Bundle-Activator: org.eclipse.jst.j2ee.jca.internal.plugin.JcaPlugin
 Bundle-Vendor: %pluginVendor
 Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/internal/jca/project/facet/ConnectorFacetInstallDataModelProvider.java b/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/internal/jca/project/facet/ConnectorFacetInstallDataModelProvider.java
index 4d6cddc..97d5dd0 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/internal/jca/project/facet/ConnectorFacetInstallDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/internal/jca/project/facet/ConnectorFacetInstallDataModelProvider.java
@@ -66,6 +66,9 @@
 			if(J2EEVersionConstants.VERSION_1_7_TEXT.equals(facetVersion)) {
 				return Boolean.valueOf(J2EEPlugin.getDefault().getJ2EEPreferences().getBoolean(J2EEPreferences.Keys.EE7_CONNECTOR_GENERATE_DD));
 			}
+			if(J2EEVersionConstants.VERSION_2_1_TEXT.equals(facetVersion)) {
+                return Boolean.valueOf(J2EEPlugin.getDefault().getJ2EEPreferences().getBoolean(J2EEPreferences.Keys.EE10_CONNECTOR_GENERATE_DD));
+            }
 			return Boolean.TRUE;
 		}
 		return super.getDefaultProperty(propertyName);
diff --git a/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/jca/project/facet/ConnectorFacetInstallDelegate.java b/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/jca/project/facet/ConnectorFacetInstallDelegate.java
index d2555d8..fade953 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/jca/project/facet/ConnectorFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/jca/project/facet/ConnectorFacetInstallDelegate.java
@@ -68,6 +68,7 @@
 	public static final String CONNECTOR_XML_TEMPLATE_15		= "rartp15.xml"; //$NON-NLS-1$
 	public static final String CONNECTOR_XML_TEMPLATE_16		= "rartp16.xml"; //$NON-NLS-1$
 	public static final String CONNECTOR_XML_TEMPLATE_17		= "rartp17.xml"; //$NON-NLS-1$
+	public static final String CONNECTOR_XML_TEMPLATE_21        = "rartp21.xml"; //$NON-NLS-1$
 	
 	public void execute(IProject project, IProjectFacetVersion fv, Object config, IProgressMonitor monitor) throws CoreException {
 		if (monitor != null) {
@@ -106,7 +107,27 @@
 			IPath configFolderpath = pjpath.append(configFolderName);
 			sourceFolder = ws.getRoot().getFolder(configFolderpath);
 
-			if( fv == IJ2EEFacetConstants.JCA_17)
+			if( fv == IJ2EEFacetConstants.JCA_21)
+            {
+                if(model.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD)){
+                    // Create the deployment descriptor (ra.xml) if one doesn't exist
+                    IFile rarFile = sourceFolder.getFile(new Path(J2EEConstants.RAR_DD_URI));
+                    if (!rarFile.exists()) {
+                        try {
+                            if(!rarFile.getParent().exists()
+                                    && (rarFile.getParent().getType() ==  IResource.FOLDER)){
+                                ((IFolder)rarFile.getParent()).create(true, true, monitor);
+                            }
+                            InputStream in = getClass().getResourceAsStream(CONNECTOR_XML_TEMPLATE_21);
+                            rarFile.create(in, true, monitor);
+                            populateDefaultContent(project, fv);
+                        } catch (CoreException e) {
+                            J2EEPlugin.logError(e);
+                        }
+                    }
+                }
+            }			
+			else if( fv == IJ2EEFacetConstants.JCA_17)
 			{
 		        if(model.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD)){
 		            // Create the deployment descriptor (ra.xml) if one doesn't exist
diff --git a/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/jca/project/facet/rartp21.xml b/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/jca/project/facet/rartp21.xml
new file mode 100644
index 0000000..61ff511
--- /dev/null
+++ b/plugins/org.eclipse.jst.j2ee.jca/jca/org/eclipse/jst/j2ee/jca/project/facet/rartp21.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<connector id="Connector_ID" version="2.1" 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/connector_2_1.xsd"> 
+	<description></description>
+	<vendor-name></vendor-name>
+  	<eis-type></eis-type>
+  	<resourceadapter-version></resourceadapter-version>                                  
+  	<resourceadapter>
+  	</resourceadapter>
+</connector>
diff --git a/plugins/org.eclipse.jst.j2ee.jca/plugin.xml b/plugins/org.eclipse.jst.j2ee.jca/plugin.xml
index 374905a..db68610 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/plugin.xml
+++ b/plugins/org.eclipse.jst.j2ee.jca/plugin.xml
@@ -128,12 +128,22 @@
       <group-member id="modules"/>
     </project-facet-version>
 
-    <action facet="jst.connector" version="[1.0-1.7]" type="INSTALL" id="jst.connector.install">
+   	<project-facet-version facet="jst.connector" version="2.1">
+      <constraint>
+        <and>
+          <requires facet="jst.java" version="[11"/>
+          <conflicts group="modules"/>
+        </and>
+      </constraint>
+      <group-member id="modules"/>
+    </project-facet-version>
+
+    <action facet="jst.connector" version="[1.0-2.1]" type="INSTALL" id="jst.connector.install">
       <delegate class="org.eclipse.jst.j2ee.jca.project.facet.ConnectorFacetInstallDelegate"/>
       <config-factory class="org.eclipse.jst.j2ee.jca.project.facet.ConnectorFacetInstallDataModelProvider"/>
     </action>
     
-    <event-handler facet="jst.connector" version="[1.0-1.7]" type="POST_INSTALL">
+    <event-handler facet="jst.connector" version="[1.0-2.1]" type="POST_INSTALL">
       <delegate class="org.eclipse.jst.j2ee.jca.project.facet.ConnectorFacetPostInstallDelegate"/>
     </event-handler>
     
diff --git a/plugins/org.eclipse.jst.j2ee.jca/pom.xml b/plugins/org.eclipse.jst.j2ee.jca/pom.xml
index 335202e..b7dd4c9 100644
--- a/plugins/org.eclipse.jst.j2ee.jca/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee.jca/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.j2ee.jca</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/j2ee_ui/org/eclipse/jst/j2ee/ui/project/facet/appclient/AppClientProjectFirstPage.java b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/ui/project/facet/appclient/AppClientProjectFirstPage.java
index ebfc3ec..d4984f8 100644
--- a/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/ui/project/facet/appclient/AppClientProjectFirstPage.java
+++ b/plugins/org.eclipse.jst.j2ee.ui/j2ee_ui/org/eclipse/jst/j2ee/ui/project/facet/appclient/AppClientProjectFirstPage.java
@@ -53,7 +53,10 @@
 	    }
 	    else {
 		    facets.add( primaryFacetVersion );
-		    if (primaryFacetVersion == IJ2EEFacetConstants.APPLICATION_CLIENT_80) {
+	        if (primaryFacetVersion == IJ2EEFacetConstants.APPLICATION_CLIENT_100) {
+                  facets.add(JavaFacet.VERSION_11);
+	        }
+	        else if (primaryFacetVersion == IJ2EEFacetConstants.APPLICATION_CLIENT_80) {
 		    		facets.add(JavaFacet.VERSION_1_8);
 		    }
 		    else if( primaryFacetVersion == IJ2EEFacetConstants.APPLICATION_CLIENT_70)
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDataModelProvider.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDataModelProvider.java
index 455c0f8..2c13347 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFacetInstallDataModelProvider.java
@@ -112,6 +112,9 @@
 			else if(J2EEVersionConstants.VERSION_5_0_TEXT.equals(facetVersion)) {
 				return Boolean.valueOf(J2EEPlugin.getDefault().getJ2EEPreferences().getBoolean(J2EEPreferences.Keys.EE9_DYNAMIC_WEB_GENERATE_DD));
 			}
+			else if(J2EEVersionConstants.VERSION_6_0_TEXT.equals(facetVersion)) {
+                return Boolean.valueOf(J2EEPlugin.getDefault().getJ2EEPreferences().getBoolean(J2EEPreferences.Keys.EE10_DYNAMIC_WEB_GENERATE_DD));
+            }
 			return Boolean.TRUE;
 		}else if (propertyName.equals(INSTALL_WEB_LIBRARY)){
 			return J2EEComponentClasspathContainerUtils.getDefaultUseWebAppLibraries();
diff --git a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDelegate.java b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDelegate.java
index a026e6f..680de64 100644
--- a/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee.web/webproject/org/eclipse/jst/j2ee/web/project/facet/WebFragmentFacetInstallDelegate.java
@@ -126,7 +126,13 @@
 			
 			final String webFragXmlContents;
 			
-			if (fv == IJ2EEFacetConstants.WEBFRAGMENT_40) {
+			if (fv == IJ2EEFacetConstants.WEBFRAGMENT_60) {
+                webFragXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-fragment id=\"WebFragment_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-fragment_6_0.xsd\">\n<display-name>" + XMLWriter.getEscaped(project.getName())+ "</display-name> \n <name>"+ XMLWriter.getEscaped(projectNamewithoutSpecialChars) +  "</name> \n </web-fragment>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+            }
+			else if (fv == IJ2EEFacetConstants.WEBFRAGMENT_50) {
+                webFragXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-fragment id=\"WebFragment_ID\" version=\"5.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-fragment_5_0.xsd\">\n<display-name>" + XMLWriter.getEscaped(project.getName())+ "</display-name> \n <name>"+ XMLWriter.getEscaped(projectNamewithoutSpecialChars) +  "</name> \n </web-fragment>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+            } 			
+			else if (fv == IJ2EEFacetConstants.WEBFRAGMENT_40) {
 				webFragXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<web-fragment id=\"WebFragment_ID\" version=\"4.0\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-fragment_4_0.xsd\">\n<display-name>" + XMLWriter.getEscaped(project.getName())+ "</display-name> \n <name>"+ XMLWriter.getEscaped(projectNamewithoutSpecialChars) +  "</name> \n </web-fragment>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			} 
 			else if( fv == IJ2EEFacetConstants.WEBFRAGMENT_31 ) {
diff --git a/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/project/facet/AppClientFacetInstallDelegate.java b/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/project/facet/AppClientFacetInstallDelegate.java
index 00c4ee7..57b1ca8 100644
--- a/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/project/facet/AppClientFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee/appclientcreation/org/eclipse/jst/j2ee/project/facet/AppClientFacetInstallDelegate.java
@@ -115,7 +115,8 @@
 		IPath configFolderpath = pjpath.append(configFolderName);
 		sourceFolder = ws.getRoot().getFolder(configFolderpath);
 
-        if( fv == IJ2EEFacetConstants.APPLICATION_CLIENT_80 ||
+        if(fv == IJ2EEFacetConstants.APPLICATION_CLIENT_100 ||
+                fv == IJ2EEFacetConstants.APPLICATION_CLIENT_80 ||
         		fv == IJ2EEFacetConstants.APPLICATION_CLIENT_70 ||
             fv == IJ2EEFacetConstants.APPLICATION_CLIENT_60 ||
             fv == IJ2EEFacetConstants.APPLICATION_CLIENT_50 )
@@ -130,7 +131,10 @@
 	                        ((IFolder)appClientFile.getParent()).create(true, true, monitor);
 	                    }
 	                    String appClientXmlContents = null;
-	                    if (fv == IJ2EEFacetConstants.APPLICATION_CLIENT_80) {
+                        if (fv == IJ2EEFacetConstants.APPLICATION_CLIENT_100) {
+                            appClientXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<application-client version=\"10\" 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\">\n <display-name>" + XMLWriter.getEscaped(project.getName()) +  "</display-name> \n </application-client>"; //$NON-NLS-1$ //$NON-NLS-2$
+                        }
+                        else if (fv == IJ2EEFacetConstants.APPLICATION_CLIENT_80) {
 	                    	appClientXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<application-client version=\"8\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application-client_8.xsd\">\n <display-name>" + XMLWriter.getEscaped(project.getName()) +  "</display-name> \n </application-client>"; //$NON-NLS-1$ //$NON-NLS-2$
 	                    }
 	                    else if (fv == IJ2EEFacetConstants.APPLICATION_CLIENT_70) {
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
index 03dbdbb..c9548a0 100644
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
+++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
@@ -221,7 +221,9 @@
 						version = J2EEVersionConstants.EJB_3_1_ID;
 					} else if (versionStr.equals(J2EEVersionConstants.VERSION_3_2_TEXT)) {
 						version = J2EEVersionConstants.EJB_3_2_ID;
-					}
+					} else if (versionStr.equals(J2EEVersionConstants.VERSION_4_0_TEXT)) {
+                        version = J2EEVersionConstants.EJB_4_0_ID;
+                    }
 					break;
 				case J2EEVersionConstants.WEB_TYPE:
 					if (versionStr.equals(J2EEVersionConstants.VERSION_2_2_TEXT)) {
diff --git a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/J2EEVersionUtil.java b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/J2EEVersionUtil.java
index ed42814..c4d1dda 100644
--- a/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/J2EEVersionUtil.java
+++ b/plugins/org.eclipse.jst.j2ee/common/org/eclipse/jst/j2ee/internal/common/J2EEVersionUtil.java
@@ -50,6 +50,9 @@
 
 		case J2EEVersionConstants.SERVLET_5_0:
 			return J2EEVersionConstants.VERSION_5_0_TEXT;
+			
+		case J2EEVersionConstants.SERVLET_6_0:
+            return J2EEVersionConstants.VERSION_6_0_TEXT;			
 		}
 		return ""; //$NON-NLS-1$
 
@@ -78,6 +81,8 @@
 		
 		case J2EEVersionConstants.EJB_3_2_ID:
 			return J2EEVersionConstants.VERSION_3_2_TEXT;
+	    case J2EEVersionConstants.EJB_4_0_ID:
+            return J2EEVersionConstants.VERSION_4_0_TEXT;			
 		}
 		return ""; //$NON-NLS-1$
 	}
@@ -96,6 +101,9 @@
 		case J2EEVersionConstants.JCA_1_7_ID:
 			return J2EEVersionConstants.VERSION_1_7_TEXT;
 
+        case J2EEVersionConstants.JCA_2_1_ID:
+            return J2EEVersionConstants.VERSION_2_1_TEXT;
+			
 		}
 		return ""; //$NON-NLS-1$
 	}
@@ -122,7 +130,9 @@
 		
 		case J2EEVersionConstants.JEE_8_0_ID:
 			return J2EEVersionConstants.VERSION_8_0_TEXT;
-			
+
+		case J2EEVersionConstants.JEE_10_0_ID:
+            return J2EEVersionConstants.VERSION_10_0_TEXT;			
 		}
 		return "";//$NON-NLS-1$
 	}
@@ -142,6 +152,8 @@
 			return J2EEVersionConstants.JEE_7_0_ID;
 		if (version.equals(J2EEVersionConstants.VERSION_8_0_TEXT))
 			return J2EEVersionConstants.JEE_8_0_ID;
+		if (version.equals(J2EEVersionConstants.VERSION_10_0_TEXT))
+            return J2EEVersionConstants.JEE_10_0_ID;		
 		// default
 		return J2EEVersionConstants.JEE_5_0_ID;
 	}
@@ -159,6 +171,9 @@
 			return J2EEVersionConstants.JEE_6_0_ID;
 		if (version.equals(J2EEVersionConstants.VERSION_3_2_TEXT))
 			return J2EEVersionConstants.JEE_7_0_ID;
+	    if (version.equals(J2EEVersionConstants.VERSION_4_0_TEXT))
+	        return J2EEVersionConstants.JEE_10_0_ID;
+
 		// default
 		return J2EEVersionConstants.JEE_5_0_ID;
 	}
@@ -180,6 +195,8 @@
 			return J2EEVersionConstants.JEE_8_0_ID;
 		if (version.equals(J2EEVersionConstants.VERSION_5_0_TEXT))
 			return J2EEVersionConstants.JEE_9_0_ID;
+		if (version.equals(J2EEVersionConstants.VERSION_6_0_TEXT))
+            return J2EEVersionConstants.JEE_10_0_ID;
 		// default
 		return J2EEVersionConstants.JEE_8_0_ID;
 	}
@@ -195,6 +212,9 @@
 			return J2EEVersionConstants.J2EE_1_4_ID;
 		if (version.equals(J2EEVersionConstants.VERSION_1_6_TEXT))
 			return J2EEVersionConstants.JEE_6_0_ID;
+		if (version.equals(J2EEVersionConstants.VERSION_2_1_TEXT))
+            return J2EEVersionConstants.JEE_10_0_ID;
+
 		// default
 		return J2EEVersionConstants.JEE_6_0_ID;
 	}
@@ -214,6 +234,8 @@
 			case J2EEVersionConstants.JEE_7_0_ID:
 			case J2EEVersionConstants.JEE_8_0_ID:
 				return J2EEVersionConstants.EJB_3_2_ID;
+			case J2EEVersionConstants.JEE_10_0_ID:
+                return J2EEVersionConstants.EJB_4_0_ID;				
 		}
 		// default
 		return J2EEVersionConstants.EJB_3_1_ID;
@@ -235,6 +257,11 @@
 				return J2EEVersionConstants.WEB_3_1_ID;
 			case J2EEVersionConstants.JEE_8_0_ID:
 				return J2EEVersionConstants.WEB_4_0_ID;
+	        case J2EEVersionConstants.JEE_9_0_ID:
+	            return J2EEVersionConstants.WEB_5_0_ID;
+            case J2EEVersionConstants.JEE_10_0_ID:
+                return J2EEVersionConstants.WEB_6_0_ID;
+	
 		}
 		// default
 		return J2EEVersionConstants.WEB_3_0_ID;
@@ -252,6 +279,8 @@
 			case J2EEVersionConstants.JEE_7_0_ID:
 			case J2EEVersionConstants.JEE_8_0_ID:
 				return J2EEVersionConstants.JCA_1_7_ID;
+			case J2EEVersionConstants.JEE_10_0_ID:
+                return J2EEVersionConstants.JCA_2_1_ID;	
 		}
 		// default
 		return J2EEVersionConstants.JCA_1_6_ID;
@@ -344,6 +373,9 @@
 		else if (J2EEVersionConstants.VERSION_8_0_TEXT.equals(version))
 			nVersion = J2EEVersionConstants.VERSION_8_0;
 		
+		else if (J2EEVersionConstants.VERSION_10_0_TEXT.equals(version))
+            nVersion = J2EEVersionConstants.VERSION_10_0;
+		
 		return nVersion;
 	}
 	public static String convertVersionIntToString(int version) {
@@ -418,6 +450,9 @@
 		else if (version == J2EEVersionConstants.VERSION_8_0)
 			nVersion = J2EEVersionConstants.VERSION_8_0_TEXT;
 		
+		else if (version == J2EEVersionConstants.VERSION_10_0)
+            nVersion = J2EEVersionConstants.VERSION_10_0_TEXT;
+		
 		return nVersion;
 	}
 	
@@ -442,6 +477,9 @@
 			case J2EEVersionConstants.JEE_8_0_ID:
 				javaFacetVersion = JavaFacet.VERSION_1_8;
 				break;
+			case J2EEVersionConstants.JEE_10_0_ID:
+                javaFacetVersion = JavaFacet.VERSION_11;
+                break;	
 		}
 		
 		return javaFacetVersion;
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java
index 41f0972..bb3892f 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java
@@ -317,7 +317,9 @@
 		IProjectFacetVersion javaFacetVersion = null;
 		IRuntime runtime = (IRuntime)getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
 		if(runtime != null){
-			if(runtime.supports(JavaFacet.VERSION_1_8)){
+		    if(runtime.supports(JavaFacet.VERSION_11)){
+                javaFacetVersion = JavaFacet.VERSION_11;
+            }else if(runtime.supports(JavaFacet.VERSION_1_8)){
 				javaFacetVersion = JavaFacet.VERSION_1_8;
 			} else if(runtime.supports(JavaFacet.VERSION_1_7)){
 				javaFacetVersion = JavaFacet.VERSION_1_7;
@@ -348,6 +350,9 @@
 				break;
 			case J2EEVersionConstants.JEE_8_0_ID:
 				javaFacetVersion = JavaFacet.VERSION_1_8;
+	        case J2EEVersionConstants.JEE_10_0_ID:
+	            javaFacetVersion = JavaFacet.VERSION_11;
+	
 			}
 		}
 		if(javaFacetVersion != null){
@@ -435,6 +440,7 @@
 		int EE5 = 1;
 		int EE7 = 2;
 		int EE8 = 3;
+		int EE10 = 4;
 		switch(archiveType){
 		case JavaEEQuickPeek.APPLICATION_TYPE:
 			ddURI = J2EEConstants.APPLICATION_DD_URI;
@@ -442,10 +448,12 @@
 			highestProjectFacetVersion[EE5] = IJ2EEFacetConstants.ENTERPRISE_APPLICATION_50;
 			highestProjectFacetVersion[EE7] = IJ2EEFacetConstants.ENTERPRISE_APPLICATION_70;
 			highestProjectFacetVersion[EE8] = IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80;
+			highestProjectFacetVersion[EE10] = IJ2EEFacetConstants.ENTERPRISE_APPLICATION_100;
 			highestJQPVersion[EE6] = JavaEEQuickPeek.VERSION_6_0;
 			highestJQPVersion[EE5] = JavaEEQuickPeek.VERSION_5_0;
 			highestJQPVersion[EE7] = JavaEEQuickPeek.VERSION_7_0;
 			highestJQPVersion[EE8] = JavaEEQuickPeek.VERSION_8_0;
+			highestJQPVersion[EE10] = JavaEEQuickPeek.VERSION_10_0;
 			break;
 		case JavaEEQuickPeek.APPLICATION_CLIENT_TYPE:
 			ddURI = J2EEConstants.APP_CLIENT_DD_URI;
@@ -453,10 +461,12 @@
 			highestProjectFacetVersion[EE5] = IJ2EEFacetConstants.APPLICATION_CLIENT_50;
 			highestProjectFacetVersion[EE7] = IJ2EEFacetConstants.APPLICATION_CLIENT_70;
 			highestProjectFacetVersion[EE8] = IJ2EEFacetConstants.APPLICATION_CLIENT_80;
+			highestProjectFacetVersion[EE10] = IJ2EEFacetConstants.APPLICATION_CLIENT_100;
 			highestJQPVersion[EE6] = JavaEEQuickPeek.VERSION_6_0;
 			highestJQPVersion[EE5] = JavaEEQuickPeek.VERSION_5_0;
 			highestJQPVersion[EE7] = JavaEEQuickPeek.VERSION_7_0;
 			highestJQPVersion[EE8] = JavaEEQuickPeek.VERSION_8_0;
+			highestJQPVersion[EE10] = JavaEEQuickPeek.VERSION_10_0;
 			break;
 		case JavaEEQuickPeek.EJB_TYPE:
 			ddURI = J2EEConstants.EJBJAR_DD_URI;
@@ -464,10 +474,12 @@
 			highestProjectFacetVersion[EE5] = IJ2EEFacetConstants.EJB_30;
 			highestProjectFacetVersion[EE7] = IJ2EEFacetConstants.EJB_32;
 			highestProjectFacetVersion[EE8] = IJ2EEFacetConstants.EJB_32;
+			highestProjectFacetVersion[EE10] = IJ2EEFacetConstants.EJB_40;
 			highestJQPVersion[EE6] = JavaEEQuickPeek.VERSION_3_1;
 			highestJQPVersion[EE5] = JavaEEQuickPeek.VERSION_3_0;
 			highestJQPVersion[EE7] = JavaEEQuickPeek.VERSION_3_2;
 			highestJQPVersion[EE8] = JavaEEQuickPeek.VERSION_3_2;
+			highestJQPVersion[EE10] = JavaEEQuickPeek.VERSION_4_0;
 			break;
 		case JavaEEQuickPeek.WEB_TYPE:
 			ddURI = J2EEConstants.WEBAPP_DD_URI;
@@ -475,19 +487,23 @@
 			highestProjectFacetVersion[EE5] = IJ2EEFacetConstants.DYNAMIC_WEB_25;
 			highestProjectFacetVersion[EE7] = IJ2EEFacetConstants.DYNAMIC_WEB_31;
 			highestProjectFacetVersion[EE8] = IJ2EEFacetConstants.DYNAMIC_WEB_40;
+			highestProjectFacetVersion[EE10] = IJ2EEFacetConstants.DYNAMIC_WEB_60;
 			highestJQPVersion[EE6] = JavaEEQuickPeek.VERSION_3_0;
 			highestJQPVersion[EE5] = JavaEEQuickPeek.VERSION_2_5;
 			highestJQPVersion[EE7] = JavaEEQuickPeek.VERSION_3_1;
 			highestJQPVersion[EE8] = JavaEEQuickPeek.VERSION_4_0;
+			highestJQPVersion[EE10] = JavaEEQuickPeek.VERSION_6_0;
 			break;
 		case JavaEEQuickPeek.CONNECTOR_TYPE:
 			ddURI = J2EEConstants.RAR_DD_URI;
 			highestProjectFacetVersion[EE6] = IJ2EEFacetConstants.JCA_16;
 			highestProjectFacetVersion[EE7] = IJ2EEFacetConstants.JCA_17;
 			highestProjectFacetVersion[EE8] = IJ2EEFacetConstants.JCA_17;
+			highestProjectFacetVersion[EE10] = IJ2EEFacetConstants.JCA_21;
 			highestJQPVersion[EE6] = JavaEEQuickPeek.VERSION_1_6;
 			highestJQPVersion[EE7] = JavaEEQuickPeek.VERSION_1_7;
 			highestJQPVersion[EE8] = JavaEEQuickPeek.VERSION_1_7;
+			highestJQPVersion[EE10] = JavaEEQuickPeek.VERSION_2_1;
 			break;
 		default:
 			return jqp;
@@ -500,7 +516,9 @@
 		IRuntime runtime = (IRuntime)getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
 		if(archiveType == JavaEEQuickPeek.CONNECTOR_TYPE || runtime == null || runtime.supports(highestProjectFacetVersion[EE8]) ){
 			return new JavaEEQuickPeek(jqp.getType(), highestJQPVersion[EE8]);
-		} else if(runtime.supports(highestProjectFacetVersion[EE7]) ){
+		} else if(runtime.supports(highestProjectFacetVersion[EE10]) ){
+            return new JavaEEQuickPeek(jqp.getType(), highestJQPVersion[EE10]);  
+        } else if(runtime.supports(highestProjectFacetVersion[EE7]) ){
 			return new JavaEEQuickPeek(jqp.getType(), highestJQPVersion[EE7]);	
 		} else if(runtime.supports(highestProjectFacetVersion[EE6]) ){
 			return new JavaEEQuickPeek(jqp.getType(), highestJQPVersion[EE6]);
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/EarFacetInstallDelegate.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/EarFacetInstallDelegate.java
index fd36cc1..10c9715 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/EarFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/project/facet/EarFacetInstallDelegate.java
@@ -73,7 +73,7 @@
 				J2EEPlugin.logError(e);
 			}
 			
-			if( fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_70 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_60 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_50) {
+			if(fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_100 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_70 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_60 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_50) {
 				if(model.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD)){
 					// Create the deployment descriptor (application.xml) if one doesn't exist
 					IFile appXmlFile = earroot.getUnderlyingFolder().getFile(new Path(J2EEConstants.APPLICATION_DD_URI));
@@ -84,7 +84,9 @@
 								((IFolder)appXmlFile.getParent()).create(true, true, monitor);
 							}
 							String appXmlContents = null;
-							if (fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80) {
+							if (fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_100) {
+                                appXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<application id=\"Application_ID\" version=\"10\" 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\">\n <display-name>" + XMLWriter.getEscaped(project.getName()) +  "</display-name> \n </application> "; //$NON-NLS-1$ //$NON-NLS-2$
+                            }else if (fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80) {
 								appXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<application id=\"Application_ID\" version=\"8\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd\">\n <display-name>" + XMLWriter.getEscaped(project.getName()) +  "</display-name> \n </application> "; //$NON-NLS-1$ //$NON-NLS-2$
 							}
 							else if(fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_70) {
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/EarUtilities.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/EarUtilities.java
index 23255bb..f25ff0f 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/EarUtilities.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/EarUtilities.java
@@ -383,6 +383,9 @@
 
 			if (DYNAMIC_WEB.equals(moduleProjectFacetId)) {
 				switch (earVersion) {
+                case J2EEVersionConstants.VERSION_10_0:
+                    retVal.add(DYNAMIC_WEB_60);
+                    //$FALL-THROUGH$
 				case J2EEVersionConstants.VERSION_8_0:
 					retVal.add(DYNAMIC_WEB_40);
 					//$FALL-THROUGH$
@@ -407,6 +410,9 @@
 				}
 			} else if (EJB.equals(moduleProjectFacetId)) {
 				switch (earVersion) {
+				case J2EEVersionConstants.VERSION_10_0:
+                    retVal.add(EJB_40);
+                    //$FALL-THROUGH$
 				case J2EEVersionConstants.VERSION_8_0:
 				case J2EEVersionConstants.VERSION_7_0:
 					retVal.add(EJB_32);
@@ -428,6 +434,8 @@
 				}
 			} else if (JCA.equals(moduleProjectFacetId)) {
 				switch (earVersion) {
+                case J2EEVersionConstants.VERSION_10_0:
+                    retVal.add(JCA_21);
 				case J2EEVersionConstants.VERSION_8_0:
 				case J2EEVersionConstants.VERSION_7_0:
 					retVal.add(JCA_17);
@@ -445,6 +453,9 @@
 				}
 			} else if (APPLICATION_CLIENT.equals(moduleProjectFacetId)) {
 				switch (earVersion) {
+                case J2EEVersionConstants.VERSION_10_0:
+                    retVal.add(APPLICATION_CLIENT_100);
+                    //$FALL-THROUGH$
 				case J2EEVersionConstants.VERSION_8_0:
 					retVal.add(APPLICATION_CLIENT_80);
 					//$FALL-THROUGH$
diff --git a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/JavaEEProjectUtilities.java b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/JavaEEProjectUtilities.java
index 46baac2..55ecffb 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/JavaEEProjectUtilities.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eecreation/org/eclipse/jst/j2ee/project/JavaEEProjectUtilities.java
@@ -465,15 +465,15 @@
 
 	private static int getLatestVersion(IProject project) {
 		if (isEARProject(project) || isApplicationClientProject(project))
-			return J2EEVersionConstants.VERSION_8_0;
+			return J2EEVersionConstants.VERSION_10_0;
 		if (isEJBProject(project))
-			return J2EEVersionConstants.VERSION_3_2;
+			return J2EEVersionConstants.VERSION_4_0;
 		if (isDynamicWebProject(project))
-			return J2EEVersionConstants.VERSION_4_0;
+			return J2EEVersionConstants.VERSION_6_0;
 		if (isWebFragmentProject(project))
-			return J2EEVersionConstants.VERSION_4_0;
+			return J2EEVersionConstants.VERSION_6_0;
 		if (isJCAProject(project))
-			return J2EEVersionConstants.VERSION_1_7;
+			return J2EEVersionConstants.VERSION_2_1;
 		return J2EEVersionConstants.UNKNOWN;
 			
 	}
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 0adafcb..aa8042f 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
@@ -27,6 +27,7 @@
 	public static final IProjectFacetVersion ENTERPRISE_APPLICATION_60 = J2EEFacetConstantsProvider.getProjectFacetVersion(ENTERPRISE_APPLICATION_FACET, "6.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion ENTERPRISE_APPLICATION_70 = J2EEFacetConstantsProvider.getProjectFacetVersion(ENTERPRISE_APPLICATION_FACET, "7.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion ENTERPRISE_APPLICATION_80 = J2EEFacetConstantsProvider.getProjectFacetVersion(ENTERPRISE_APPLICATION_FACET, "8.0"); //$NON-NLS-1$
+	public static final IProjectFacetVersion ENTERPRISE_APPLICATION_100 = J2EEFacetConstantsProvider.getProjectFacetVersion(ENTERPRISE_APPLICATION_FACET, "10.0"); //$NON-NLS-1$
 	
 	public static final String APPLICATION_CLIENT = IModuleConstants.JST_APPCLIENT_MODULE;
 	public IProjectFacet APPLICATION_CLIENT_FACET = J2EEFacetConstantsProvider.getProjectFacet(APPLICATION_CLIENT);
@@ -37,6 +38,7 @@
 	public static final IProjectFacetVersion APPLICATION_CLIENT_60 = J2EEFacetConstantsProvider.getProjectFacetVersion(APPLICATION_CLIENT_FACET, "6.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion APPLICATION_CLIENT_70 = J2EEFacetConstantsProvider.getProjectFacetVersion(APPLICATION_CLIENT_FACET, "7.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion APPLICATION_CLIENT_80 = J2EEFacetConstantsProvider.getProjectFacetVersion(APPLICATION_CLIENT_FACET, "8.0"); //$NON-NLS-1$
+	public static final IProjectFacetVersion APPLICATION_CLIENT_100 = J2EEFacetConstantsProvider.getProjectFacetVersion(APPLICATION_CLIENT_FACET, "10.0"); //$NON-NLS-1$
 	
 	public static final String EJB = IModuleConstants.JST_EJB_MODULE;
 	public IProjectFacet EJB_FACET = J2EEFacetConstantsProvider.getProjectFacet(EJB);
@@ -46,6 +48,7 @@
 	public static final IProjectFacetVersion EJB_30 = J2EEFacetConstantsProvider.getProjectFacetVersion(EJB_FACET, "3.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion EJB_31 = J2EEFacetConstantsProvider.getProjectFacetVersion(EJB_FACET, "3.1"); //$NON-NLS-1$
 	public static final IProjectFacetVersion EJB_32 = J2EEFacetConstantsProvider.getProjectFacetVersion(EJB_FACET, "3.2"); //$NON-NLS-1$
+	public static final IProjectFacetVersion EJB_40 = J2EEFacetConstantsProvider.getProjectFacetVersion(EJB_FACET, "4.0"); //$NON-NLS-1$
 
 	public static final String DYNAMIC_WEB = IModuleConstants.JST_WEB_MODULE;
 	public IProjectFacet DYNAMIC_WEB_FACET = J2EEFacetConstantsProvider.getProjectFacet(DYNAMIC_WEB);
@@ -71,6 +74,7 @@
 	public static final IProjectFacetVersion JCA_15 = J2EEFacetConstantsProvider.getProjectFacetVersion(JCA_FACET, "1.5"); //$NON-NLS-1$
 	public static final IProjectFacetVersion JCA_16 = J2EEFacetConstantsProvider.getProjectFacetVersion(JCA_FACET, "1.6"); //$NON-NLS-1$
 	public static final IProjectFacetVersion JCA_17 = J2EEFacetConstantsProvider.getProjectFacetVersion(JCA_FACET, "1.7"); //$NON-NLS-1$
+	public static final IProjectFacetVersion JCA_21 = J2EEFacetConstantsProvider.getProjectFacetVersion(JCA_FACET, "2.1"); //$NON-NLS-1$
 
 	public static final String STATIC_WEB = IModuleConstants.WST_WEB_MODULE;
 
@@ -80,6 +84,8 @@
 	public static final IProjectFacetVersion WEBFRAGMENT_30 = J2EEFacetConstantsProvider.getProjectFacetVersion(WEBFRAGMENT_FACET, "3.0"); //$NON-NLS-1$
 	public static final IProjectFacetVersion WEBFRAGMENT_31 = J2EEFacetConstantsProvider.getProjectFacetVersion(WEBFRAGMENT_FACET, "3.1"); //$NON-NLS-1$
 	public static final IProjectFacetVersion WEBFRAGMENT_40 = J2EEFacetConstantsProvider.getProjectFacetVersion(WEBFRAGMENT_FACET, "4.0"); //$NON-NLS-1$
+	public static final IProjectFacetVersion WEBFRAGMENT_50 = J2EEFacetConstantsProvider.getProjectFacetVersion(WEBFRAGMENT_FACET, "5.0"); //$NON-NLS-1$
+	public static final IProjectFacetVersion WEBFRAGMENT_60 = J2EEFacetConstantsProvider.getProjectFacetVersion(WEBFRAGMENT_FACET, "6.0"); //$NON-NLS-1$
 	
 
 	/**
diff --git a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/JavaEEPreferencesInitializer.java b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/JavaEEPreferencesInitializer.java
index 4fd0263..e83889b 100644
--- a/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/JavaEEPreferencesInitializer.java
+++ b/plugins/org.eclipse.jst.j2ee/j2eeplugin/org/eclipse/jst/j2ee/internal/plugin/JavaEEPreferencesInitializer.java
@@ -99,6 +99,9 @@
 		 * @since 3.24
 		 */
 		static final String EE9_DYNAMIC_WEB_GENERATE_DD = "ee9_dynamic_web_generate_dd"; //$NON-NLS-1$
+		
+	    static final String EE10_DYNAMIC_WEB_GENERATE_DD = "ee10_dynamic_web_generate_dd"; //$NON-NLS-1$
+
 		/**
 		 * @since 2.0
 		 */
@@ -151,6 +154,8 @@
 	     */
 		static final String EE7_CONNECTOR_GENERATE_DD = "ee7_connector_generate_dd"; //$NON-NLS-1$
 		
+		static final String EE10_CONNECTOR_GENERATE_DD = "ee10_connector_generate_dd"; //$NON-NLS-1$
+		
 		/**
 		 * Used to determine if the business interface annotations should be added to the bean class during EJB creation. 
 		 */
diff --git a/plugins/org.eclipse.jst.j2ee/plugin.xml b/plugins/org.eclipse.jst.j2ee/plugin.xml
index d54bb7a..909fa59 100644
--- a/plugins/org.eclipse.jst.j2ee/plugin.xml
+++ b/plugins/org.eclipse.jst.j2ee/plugin.xml
@@ -463,6 +463,16 @@
       </constraint>
       <group-member id="modules"/>     
     </project-facet-version>    
+
+    <project-facet-version facet="jst.ear" version="10.0">
+      <constraint>
+        <and>
+          <conflicts group="modules"/>
+          <conflicts facet="jst.java"/>
+        </and>
+      </constraint>
+      <group-member id="modules"/>     
+    </project-facet-version>    
             
     <action facet="jst.ear" type="INSTALL" id="jst.ear.install">
       <delegate class="org.eclipse.jst.j2ee.project.facet.EarFacetInstallDelegate"/>
@@ -584,6 +594,16 @@
       </constraint>
       <group-member id="modules"/>     
     </project-facet-version>
+    
+    <project-facet-version facet="jst.appclient" version="10.0">
+      <constraint>
+        <and>
+          <requires facet="jst.java" version="[11"/>
+          <conflicts group="modules"/>
+        </and>
+      </constraint>
+      <group-member id="modules"/>     
+    </project-facet-version>
                 
     <action type="install" facet="jst.appclient" id="jst.appclient.install">
       <delegate class="org.eclipse.jst.j2ee.project.facet.AppClientFacetInstallDelegate"/>
@@ -618,7 +638,7 @@
           facet="jst.ear"
           id="jst.ear.versionchange.legacy"
           type="VERSION_CHANGE"
-          version="[1.4-8.0]">
+          version="[1.4-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -628,7 +648,7 @@
           facet="jst.ear"
           id="jst.ear.versionchange.ee5"
           type="VERSION_CHANGE"
-          version="[5.0-8.0]">
+          version="[5.0-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -638,7 +658,7 @@
           facet="jst.ear"
           id="jst.ear.versionchange.ee6"
           type="VERSION_CHANGE"
-          version="[6.0-8.0]">
+          version="[6.0-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -648,17 +668,27 @@
           facet="jst.ear"
           id="jst.ear.versionchange.ee7"
           type="VERSION_CHANGE"
-          version="[7.0-8.0]">
+          version="[7.0-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
        <property name="from.versions" value="7.0"/>
     </action>
+     <action
+          facet="jst.ear"
+          id="jst.ear.versionchange.ee8"
+          type="VERSION_CHANGE"
+          version="[8.0-10.0]">
+       <delegate
+             class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
+       </delegate>
+       <property name="from.versions" value="10.0"/>
+    </action>
     <action
           facet="jst.appclient"
           id="jst.appclient.versionchange.legacy"
           type="VERSION_CHANGE"
-          version="[1.4-8.0]">
+          version="[1.4-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -668,7 +698,7 @@
           facet="jst.appclient"
           id="jst.appclient.versionchange.ee5"
           type="VERSION_CHANGE"
-          version="[5.0-8.0]">
+          version="[5.0-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -678,7 +708,7 @@
           facet="jst.appclient"
           id="jst.appclient.versionchange.ee6"
           type="VERSION_CHANGE"
-          version="[6.0-8.0]">
+          version="[6.0-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -688,17 +718,27 @@
           facet="jst.appclient"
           id="jst.appclient.versionchange.ee7"
           type="VERSION_CHANGE"
-          version="[7.0-8.0]">
+          version="[7.0-10.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
        <property name="from.versions" value="7.0"/> 
     </action>
+ 	<action
+          facet="jst.appclient"
+          id="jst.appclient.versionchange.ee8"
+          type="VERSION_CHANGE"
+          version="[8.0-10.0]">
+       <delegate
+             class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
+       </delegate>
+       <property name="from.versions" value="8.0"/> 
+    </action> 
     <action
           facet="jst.ejb"
           id="jst.ejb.versionchange.legacy"
           type="VERSION_CHANGE"
-          version="[2.1-3.2]">
+          version="[2.1-4.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -708,7 +748,7 @@
           facet="jst.ejb"
           id="jst.ejb.versionchange.ee5"
           type="VERSION_CHANGE"
-          version="[3.0-3.2]">
+          version="[3.0-4.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -718,17 +758,27 @@
           facet="jst.ejb"
           id="jst.ejb.versionchange.ee6"
           type="VERSION_CHANGE"
-          version="[3.1-3.2]">
+          version="[3.1-4.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
        <property name="from.versions" value="3.1"/>
     </action>
     <action
+          facet="jst.ejb"
+          id="jst.ejb.versionchange.ee8"
+          type="VERSION_CHANGE"
+          version="[3.2-4.0]">
+       <delegate
+             class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
+       </delegate>
+       <property name="from.versions" value="3.2"/>
+    </action>
+    <action
           facet="jst.web"
           id="jst.web.versionchange.legacy"
           type="VERSION_CHANGE"
-          version="[2.4-4.0]">
+          version="[2.4-6.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -738,7 +788,7 @@
           facet="jst.web"
           id="jst.web.versionchange.ee5"
           type="VERSION_CHANGE"
-          version="[2.5-4.0]">
+          version="[2.5-6.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -748,7 +798,7 @@
           facet="jst.web"
           id="jst.web.versionchange.ee6"
           type="VERSION_CHANGE"
-          version="[3.0-4.0]">
+          version="[3.0-6.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -758,13 +808,23 @@
           facet="jst.web"
           id="jst.web.versionchange.ee7"
           type="VERSION_CHANGE"
-          version="[3.1-4.0]">
+          version="[3.1-6.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
        <property name="from.versions" value="3.1"/>
     </action>
     <action
+          facet="jst.web"
+          id="jst.web.versionchange.ee8"
+          type="VERSION_CHANGE"
+          version="[4.0-6.0]">
+       <delegate
+             class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
+       </delegate>
+       <property name="from.versions" value="4.0"/>
+    </action>
+    <action
           facet="jst.webfragment"
           id="jst.webfragment.versionchange.ee6"
           type="VERSION_CHANGE"
@@ -778,7 +838,7 @@
           facet="jst.webfragment"
           id="jst.webfragment.versionchange.ee7"
           type="VERSION_CHANGE"
-          version="[3.1-4.0]">
+          version="[3.1-6.0]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -788,7 +848,7 @@
           facet="jst.connector"
           id="jst.connector.versionchange.ee5"
           type="VERSION_CHANGE"
-          version="[1.5-1.7]">
+          version="[1.5-2.1]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
@@ -798,12 +858,23 @@
           facet="jst.connector"
           id="jst.connector.versionchange.ee6"
           type="VERSION_CHANGE"
-          version="[1.6-1.7]">
+          version="[1.6-2.1]">
        <delegate
              class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
        </delegate>
        <property name="from.versions" value="1.6"/>
+    </action>
+     <action
+          facet="jst.connector"
+          id="jst.connector.versionchange.ee7"
+          type="VERSION_CHANGE"
+          version="[1.7-2.1]">
+       <delegate
+             class="org.eclipse.jst.j2ee.project.facet.J2EEFacetVersionChangeDelegate">
+       </delegate>
+       <property name="from.versions" value="1.7"/>
     </action>     
+         
   </extension>
   
   <extension point="org.eclipse.wst.common.project.facet.core.validators">
diff --git a/plugins/org.eclipse.jst.jee.ejb/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.jee.ejb/META-INF/MANIFEST.MF
index 8ab4add..3c26d08 100644
--- a/plugins/org.eclipse.jst.jee.ejb/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.jee.ejb/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.jee.ejb;singleton:=true
-Bundle-Version: 1.0.500.qualifier
+Bundle-Version: 1.0.501.qualifier
 Bundle-Activator: org.eclipse.jst.jee.ejb.Activator
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.wst.common.modulecore;bundle-version="[1.1.0,2.0.0)",
diff --git a/plugins/org.eclipse.jst.jee.ejb/ejb/org/eclipse/jst/jee/model/internal/Ejb3ModelProvider.java b/plugins/org.eclipse.jst.jee.ejb/ejb/org/eclipse/jst/jee/model/internal/Ejb3ModelProvider.java
index 20b2aeb..0d8534b 100644
--- a/plugins/org.eclipse.jst.jee.ejb/ejb/org/eclipse/jst/jee/model/internal/Ejb3ModelProvider.java
+++ b/plugins/org.eclipse.jst.jee.ejb/ejb/org/eclipse/jst/jee/model/internal/Ejb3ModelProvider.java
@@ -70,6 +70,10 @@
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE_NS_URL, J2EEConstants.EJB_JAR_SCHEMA_LOC_3_1);
 			jar.setVersion(J2EEVersionConstants.VERSION_3_1_TEXT);
 		}
+        else if(version != null && version.equals(J2EEVersionConstants.VERSION_4_0_TEXT)) {
+            dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE9_NS_URL, J2EEConstants.EJB_JAR_SCHEMA_LOC_4_0);
+            jar.setVersion(J2EEVersionConstants.VERSION_4_0_TEXT);
+        }
 		else {
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAVAEE7_NS_URL);  //$NON-NLS-1$
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE7_NS_URL, J2EEConstants.EJB_JAR_SCHEMA_LOC_3_2);
diff --git a/plugins/org.eclipse.jst.jee.ejb/plugin.xml b/plugins/org.eclipse.jst.jee.ejb/plugin.xml
index b9c46a9..d326369 100644
--- a/plugins/org.eclipse.jst.jee.ejb/plugin.xml
+++ b/plugins/org.eclipse.jst.jee.ejb/plugin.xml
@@ -11,7 +11,7 @@
             	<modelProvider factoryClass="org.eclipse.jst.jee.model.internal.Ejb3MergedModelProviderFactory"/>
 <!--	<modelProvider factoryClass="org.eclipse.jst.jee.model.internal.Ejb3ModelProviderFactory"/>-->		
 
-      		<facet id="jst.ejb" versions="3.0,3.1,3.2"/>
+      		<facet id="jst.ejb" versions="3.0,3.1,3.2,4.0"/>
       	</provider>
    </extension>      
    <extension
diff --git a/plugins/org.eclipse.jst.jee.ejb/pom.xml b/plugins/org.eclipse.jst.jee.ejb/pom.xml
index 0718bc4..cfc456c 100644
--- a/plugins/org.eclipse.jst.jee.ejb/pom.xml
+++ b/plugins/org.eclipse.jst.jee.ejb/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.ejb</groupId>
   <artifactId>org.eclipse.jst.jee.ejb</artifactId>
-  <version>1.0.500-SNAPSHOT</version>
+  <version>1.0.501-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/plugins/org.eclipse.jst.jee.ui/plugin.xml b/plugins/org.eclipse.jst.jee.ui/plugin.xml
index 079c68a..ec720d7 100644
--- a/plugins/org.eclipse.jst.jee.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.jee.ui/plugin.xml
@@ -575,6 +575,11 @@
                        property="org.eclipse.wst.common.project.facet.core.projectFacet"
                        value="jst.ejb:3.2">
                  </test>
+                  <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                       value="jst.ejb:4.0">
+                 </test>
               </or>
            </adapt>
 			<instanceof value="org.eclipse.jst.jee.ui.internal.navigator.AbstractDDNode" />
@@ -822,6 +827,11 @@
                        property="org.eclipse.wst.common.project.facet.core.projectFacet"
                        value="jst.web:5.0">
                  </test>
+                 <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                       value="jst.web:6.0">
+                 </test>
               </or>
            </adapt>
    <instanceof
@@ -1023,6 +1033,11 @@
                     property="org.eclipse.wst.common.project.facet.core.projectFacet"
                     value="jst.ear:8.0">
                 </test>
+                 <test
+                    forcePluginActivation="true"
+                    property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                    value="jst.ear:10.0">
+                </test>
               </or>
            </adapt>
            <instanceof
@@ -1303,6 +1318,11 @@
                     property="org.eclipse.wst.common.project.facet.core.projectFacet"
                     value="jst.appclient:8.0">
               </test>
+               <test
+                    forcePluginActivation="true"
+                    property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                    value="jst.appclient:10.0">
+              </test>
               </or>
            </adapt>
            <instanceof
@@ -1367,6 +1387,11 @@
                        property="org.eclipse.wst.common.project.facet.core.projectFacet"
                        value="jst.connector:1.7">
                  </test>
+                  <test
+                       forcePluginActivation="true"
+                       property="org.eclipse.wst.common.project.facet.core.projectFacet"
+                       value="jst.connector:2.1">
+                 </test>
               </or>
            </adapt>
            <instanceof
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ejb3LabelProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ejb3LabelProvider.java
index f0882f2..19b3ee4 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ejb3LabelProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/Ejb3LabelProvider.java
@@ -50,6 +50,7 @@
 	private Image ejb30Image;
 	private Image ejb31Image;
 	private Image ejb32Image;
+	private Image ejb40Image;
 	private Image sessionBeanImage;
 	private Image mdbImage;
 	private Image cmpImage;
@@ -57,6 +58,7 @@
 	private Image resourceRefImage;
 	private Image serviceRefImage;
 	private Image activationConfigImage;
+   
 
 	public Ejb3LabelProvider() {
 		new J2EEAdapterFactoryLabelProvider(new DynamicAdapterFactory(IJ2EENavigatorConstants.VIEWER_ID));
@@ -76,7 +78,9 @@
 				return getEjb31Image();
 			} else if (J2EEVersionConstants.VERSION_3_2_TEXT.equals(version)) {
 				return getEjb32Image();
-			}
+			} else if (J2EEVersionConstants.VERSION_4_0_TEXT.equals(version)) {
+                return getEjb40Image();
+            }
 			return getEjb30Image();
 		} else if(element instanceof AbstractDDNode) {
 			return ((AbstractDDNode) element).getImage();
@@ -166,6 +170,13 @@
 		return ejb32Image;
 	}
 	
+	private Image getEjb40Image() {
+        if (ejb40Image == null) {
+            ejb40Image = JEEUIPlugin.getDefault().getImageDescriptor(JEEUIPluginIcons.IMG_EJBEE10MODEL).createImage();
+        }
+        return ejb40Image;
+    }
+	
 	private Image getSessionBeanImage() {
 		if (sessionBeanImage == null) {
 			URL url = (URL) J2EEPlugin.getPlugin().getImage("sessionBean_obj"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java
index 849ad29..a10b419 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/appclient/GroupAppClientProvider.java
@@ -50,6 +50,7 @@
 	private Image appClient60Image;
 	private Image appClient70Image;
 	private Image appClient80Image;
+	private Image appClient100Image;
 	
 	private IFile ddFile;
 
@@ -92,7 +93,10 @@
 			return getAppClient70Image();
 		} else if (J2EEVersionConstants.VERSION_8_TEXT.equals(version)) {
 			return getAppClient80Image();
-		}
+        } else if (J2EEVersionConstants.VERSION_10_TEXT.equals(version)) {
+	        return getAppClient100Image();
+	    }
+
 		return getAppClient50Image();
 	}
 	
@@ -143,4 +147,12 @@
 		}
 		return appClient80Image;
 	}
+	
+	private Image getAppClient100Image() {
+        if (appClient100Image == null) {
+            appClient100Image = JEEUIPlugin.getDefault().getImageDescriptor(JEEUIPluginIcons.APP_CLIENT100).createImage();
+        }
+        return appClient100Image;
+    }
+	
 }
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
index 8ab03cf..ead4444 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ear/GroupEARProvider.java
@@ -48,6 +48,7 @@
 	private static Image ear60Image;
 	private static Image ear70Image;
 	private static Image ear80Image;
+	private static Image ear100Image;
 	private EARVirtualComponent earComponent;
 	private IFile ddFile;
 	
@@ -85,7 +86,8 @@
 					(facetedProject.hasProjectFacet(earFacet.getVersion(J2EEVersionConstants.VERSION_5_0_TEXT)) 
 					|| facetedProject.hasProjectFacet(earFacet.getVersion(J2EEVersionConstants.VERSION_6_0_TEXT))
 					|| facetedProject.hasProjectFacet(earFacet.getVersion(J2EEVersionConstants.VERSION_7_0_TEXT))
-					|| facetedProject.hasProjectFacet(earFacet.getVersion(J2EEVersionConstants.VERSION_8_0_TEXT)))) {
+					|| facetedProject.hasProjectFacet(earFacet.getVersion(J2EEVersionConstants.VERSION_8_0_TEXT))
+					        || facetedProject.hasProjectFacet(earFacet.getVersion(J2EEVersionConstants.VERSION_10_0_TEXT)))) {
 
 				if (bundledLibsNode == null) {
 					BundledNode bundledLibsDirectoryNode = new BundledNode(project, Messages.LIBRARY_DIRECTORY + ": " + EarUtilities.getEARLibDir(earComponent), null);//$NON-NLS-1$
@@ -120,7 +122,9 @@
 			return getEar70Image();
 		} else if (J2EEVersionConstants.VERSION_8_TEXT.equals(version)) {
 			return getEar80Image();
-		}
+		}else if (J2EEVersionConstants.VERSION_10_TEXT.equals(version)) {
+            return getEar100Image();
+        }
 		return getEar50Image();
 	}
 
@@ -167,4 +171,11 @@
 		}
 		return ear80Image;
 	}
+	
+	private Image getEar100Image() {
+        if (ear100Image == null) {
+            ear100Image = JEEUIPlugin.getDefault().getImageDescriptor(JEEUIPluginIcons.EAR10_IMAGE).createImage();
+        }
+        return ear100Image;
+    }
 }
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java
index 50c3714..e6dc6a6 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/ra/RaGroupContentProvider.java
@@ -29,6 +29,7 @@
 	private IProject project;
 	private Image CONNECTOR_IMAGE;
 	private Image CONNECTOR_17_IMAGE;
+	private Image CONNECTOR_21_IMAGE;
 
 	public RaGroupContentProvider(JavaEEObject javaee, IProject project) {
 		super(javaee);
@@ -54,7 +55,10 @@
 			retVal = getConnector16Image();
 		} else if (J2EEVersionConstants.VERSION_1_7_TEXT.equals(version)) {
 			retVal = getConnector17Image();
-		} 
+		} else if (J2EEVersionConstants.VERSION_2_1_TEXT.equals(version)) {
+	        retVal = getConnector21Image();
+	    } 
+ 
 		return retVal;
 	}
 	
@@ -77,4 +81,12 @@
 		}
 		return CONNECTOR_17_IMAGE;
 	}
+	
+	private Image getConnector21Image() {
+        if (CONNECTOR_21_IMAGE == null) {
+            CONNECTOR_21_IMAGE = JEEUIPlugin.getDefault().getImage(JEEUIPluginIcons.IMG_EE10CONNECTOR);
+        }
+        return CONNECTOR_21_IMAGE;
+    }
+	
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java
index 0433aee..5e12b04 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/internal/navigator/web/WebAppProvider.java
@@ -58,6 +58,7 @@
 	private Image web31Image;
 	private Image web40Image;
 	private Image web50Image;
+	private Image web60Image;
 	
 	private IProject prjct = null;
 	private IFile ddFile = null;
@@ -112,7 +113,9 @@
 			return getWeb40Image();
 		} else if (J2EEVersionConstants.VERSION_5_0_TEXT.equals(version)) {
 			return getWeb50Image();
-		}
+		} else if (J2EEVersionConstants.VERSION_6_0_TEXT.equals(version)) {
+            return getWeb60Image();
+        }
 		return getWeb25Image();
 	}
 
@@ -178,4 +181,11 @@
 		}
 		return web50Image;
 	}
+	
+	private Image getWeb60Image() {
+        if (web60Image == null) {
+            web60Image = JEEUIPlugin.getDefault().getImageDescriptor(JEEUIPluginIcons.IMG_WEBEE10MODEL).createImage();
+        }
+        return web60Image;
+    }
 }
diff --git a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
index 3493f49..bf80b06 100644
--- a/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
+++ b/plugins/org.eclipse.jst.jee.ui/src/org/eclipse/jst/jee/ui/plugin/JEEUIPluginIcons.java
@@ -16,13 +16,16 @@
 	public static String IMG_EJBEEMODEL = "30_ejbjar_obj"; //$NON-NLS-1$
 	public static String IMG_EJBEE6MODEL = "31_ejbjar_obj"; //$NON-NLS-1$
 	public static String IMG_EJBEE7MODEL = "32_ejbjar_obj"; //$NON-NLS-1$
+	public static String IMG_EJBEE10MODEL = "32_ejbjar_obj"; //$NON-NLS-1$
 	public static String IMG_WEBEEMODEL = "webapp_25"; //$NON-NLS-1$
 	public static String IMG_WEBEE6MODEL = "webapp_30"; //$NON-NLS-1$
 	public static String IMG_WEBEE7MODEL = "webapp_31"; //$NON-NLS-1$
 	public static String IMG_WEBEE8MODEL = "webapp_40"; //$NON-NLS-1$
 	public static String IMG_WEBEE9MODEL = "webapp_50"; //$NON-NLS-1$
+	public static String IMG_WEBEE10MODEL = "webapp_50"; //$NON-NLS-1$
 	public static String IMG_CONNECTOR = "connection"; //$NON-NLS-1$
 	public static String IMG_EE7CONNECTOR = "connector_17"; //$NON-NLS-1$
+	public static String IMG_EE10CONNECTOR = "connector_17"; //$NON-NLS-1$
 	public static String IMG_CONFIG_PROP = "config_prop_obj"; //$NON-NLS-1$
 	public static String IMG_LICENSE = "license_obj"; //$NON-NLS-1$
 	public static String IMG_RESOURCE_ADAPTER = "resource_adapter_obj"; //$NON-NLS-1$
@@ -48,9 +51,11 @@
 	public static String EAR6_IMAGE = "ear_60"; //$NON-NLS-1$
 	public static String EAR7_IMAGE = "ear_70"; //$NON-NLS-1$
 	public static String EAR8_IMAGE = "ear_80"; //$NON-NLS-1$
+	public static String EAR10_IMAGE = "ear_80"; //$NON-NLS-1$
 	public static String APP_CLIENT50 = "appclient_50"; //$NON-NLS-1$
 	public static String APP_CLIENT60 = "appclient_60"; //$NON-NLS-1$
 	public static String APP_CLIENT70 = "appclient_70"; //$NON-NLS-1$
 	public static String APP_CLIENT80 = "appclient_80"; //$NON-NLS-1$
+	public static String APP_CLIENT100 = "appclient_80"; //$NON-NLS-1$
 
 }
\ No newline at end of file
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 d5b0fe6..66e444b 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
@@ -89,8 +89,8 @@
 			war.setVersion(WebAppVersionType._40);
 		}
 		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_6_0);
+			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAKARTAEE10_NS_URL);  //$NON-NLS-1$
+			dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE10_NS_URL, J2EEConstants.WEB_APP_SCHEMA_LOC_6_0);
 			// note that later EMF generations remove the _LITERAL from the enum
 			war.setVersion(WebAppVersionType._60);
 		}
diff --git a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/WebFragment30ModelProvider.java b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/WebFragment30ModelProvider.java
index c454fc8..f3c3c30 100644
--- a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/WebFragment30ModelProvider.java
+++ b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/WebFragment30ModelProvider.java
@@ -73,6 +73,18 @@
 			// note that later EMF generations remove the _LITERAL from the enum
 			webFragment.setVersion(WebAppVersionType._31);
 		}
+	    else if (version != null && version.equals(J2EEVersionConstants.VERSION_5_0_TEXT)) {
+            dd.getXMLNSPrefixMap().put("", J2EEConstants.JAKARTAEE9_NS_URL);  //$NON-NLS-1$
+            dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE9_NS_URL, J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_5_0);
+            // note that later EMF generations remove the _LITERAL from the enum
+            webFragment.setVersion(WebAppVersionType._50);
+        }
+	    else if (version != null && version.equals(J2EEVersionConstants.VERSION_6_0_TEXT)) {
+            dd.getXMLNSPrefixMap().put("", J2EEConstants.JAKARTAEE10_NS_URL);  //$NON-NLS-1$
+            dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE10_NS_URL, J2EEConstants.WEBFRAGMENT_SCHEMA_LOC_6_0);
+            // note that later EMF generations remove the _LITERAL from the enum
+            webFragment.setVersion(WebAppVersionType._60);
+        }		
 		else
 		{
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAVAEE7_NS_URL);  //$NON-NLS-1$
diff --git a/plugins/org.eclipse.jst.jee/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.jee/META-INF/MANIFEST.MF
index be3eec9..a8f8abc 100644
--- a/plugins/org.eclipse.jst.jee/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.jee/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name.0
 Bundle-SymbolicName: org.eclipse.jst.jee;singleton:=true
-Bundle-Version: 1.0.1100.qualifier
+Bundle-Version: 1.0.1101.qualifier
 Bundle-Activator: org.eclipse.jst.jee.JEEPlugin
 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/earproject/org/eclipse/jst/jee/project/facet/EarFacetInstallDelegate.java b/plugins/org.eclipse.jst.jee/earproject/org/eclipse/jst/jee/project/facet/EarFacetInstallDelegate.java
index 9cb3eb3..59c5934 100644
--- a/plugins/org.eclipse.jst.jee/earproject/org/eclipse/jst/jee/project/facet/EarFacetInstallDelegate.java
+++ b/plugins/org.eclipse.jst.jee/earproject/org/eclipse/jst/jee/project/facet/EarFacetInstallDelegate.java
@@ -73,7 +73,7 @@
 				JEEPlugin.logError(e);
 			}
 			
-			if( fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_70 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_60 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_50) {
+			if(fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_100 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_70 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_60 || fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_50) {
 				if(model.getBooleanProperty(IJ2EEFacetInstallDataModelProperties.GENERATE_DD)){
 					// Create the deployment descriptor (web.xml) if one doesn't exist
 					IFile appXmlFile = earroot.getUnderlyingFolder().getFile(new Path(J2EEConstants.APPLICATION_DD_URI));
@@ -84,7 +84,10 @@
 								((IFolder)appXmlFile.getParent()).create(true, true, monitor);
 							}
 							String appXmlContents = null;
-							if(fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80) {
+	                        if(fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80) {
+                                appXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<application id=\"Application_ID\" version=\"10\" 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\">\n <display-name>" + XMLWriter.getEscaped(project.getName()) +  "</display-name> \n </application> "; //$NON-NLS-1$ //$NON-NLS-2$
+                            }
+							else if(fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_80) {
 								appXmlContents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<application id=\"Application_ID\" version=\"8\" xmlns=\"http://xmlns.jcp.org/xml/ns/javaee\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/application_8.xsd\">\n <display-name>" + XMLWriter.getEscaped(project.getName()) +  "</display-name> \n </application> "; //$NON-NLS-1$ //$NON-NLS-2$
 							}
 							else if(fv == IJ2EEFacetConstants.ENTERPRISE_APPLICATION_70) {
diff --git a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/contenttype/JEE10ContentDescriber.java b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/contenttype/JEE10ContentDescriber.java
new file mode 100644
index 0000000..9151b8b
--- /dev/null
+++ b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/contenttype/JEE10ContentDescriber.java
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ * Copyright (c) 2001, 2021 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
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.jee.contenttype;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.content.IContentDescriber;
+import org.eclipse.core.runtime.content.IContentDescription;
+import org.eclipse.jst.jee.util.internal.JavaEEQuickPeek;
+
+/**
+ * A content describer for detecting a jakarta ee module
+ */
+public final class JEE10ContentDescriber implements IContentDescriber {
+	public JEE10ContentDescriber() {
+		super();
+	}
+
+	public final static QualifiedName JEEVERSION = new QualifiedName("jee-version", "10.0"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	public int describe(InputStream contents, IContentDescription description) throws IOException {
+
+		JavaEEQuickPeek quickPeek = new JavaEEQuickPeek(contents);
+		switch (quickPeek.getType()) {
+		case JavaEEQuickPeek.APPLICATION_CLIENT_TYPE:
+			switch (quickPeek.getVersion()) {
+			case JavaEEQuickPeek.JEE_10_0_ID:
+				return VALID;
+			}
+			return INVALID;
+		case JavaEEQuickPeek.APPLICATION_TYPE:
+			switch (quickPeek.getVersion()) {
+			case JavaEEQuickPeek.JEE_10_0_ID:
+				return VALID;
+			}
+			return INVALID;
+		case JavaEEQuickPeek.EJB_TYPE:
+			switch (quickPeek.getVersion()) {
+			case JavaEEQuickPeek.EJB_4_0_ID:
+				return VALID;
+			}
+			return INVALID;
+		case JavaEEQuickPeek.WEB_TYPE:
+			switch (quickPeek.getVersion()) {
+			case JavaEEQuickPeek.WEB_6_0_ID:
+				return VALID;
+			}
+			return INVALID;
+		case JavaEEQuickPeek.WEBFRAGMENT_TYPE:
+			switch (quickPeek.getVersion()) {
+			case JavaEEQuickPeek.WEBFRAGMENT_6_0_ID:
+				return VALID;
+			}
+			return INVALID;
+		case JavaEEQuickPeek.CONNECTOR_TYPE:
+			switch (quickPeek.getVersion()) {
+			case JavaEEQuickPeek.JCA_2_1_ID:
+				return VALID;
+			}
+			return INVALID;
+		}
+
+		return INVALID;
+	}
+
+	public QualifiedName[] getSupportedOptions() {
+
+		return new QualifiedName[] { JEEVERSION };
+	}
+
+}
diff --git a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/AppClient5ModelProvider.java b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/AppClient5ModelProvider.java
index 18dd20e..e1b4210 100644
--- a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/AppClient5ModelProvider.java
+++ b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/AppClient5ModelProvider.java
@@ -73,6 +73,11 @@
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE7_NS_URL, J2EEConstants.APP_CLIENT_SCHEMA_LOC_7);
 			client.setVersion(J2EEVersionConstants.VERSION_7_TEXT);
 		}
+		else if(version != null && version.equals(J2EEVersionConstants.VERSION_10_0_TEXT)) {
+            dd.getXMLNSPrefixMap().put("", J2EEConstants.JAKARTAEE10_NS_URL);  //$NON-NLS-1$
+            dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE10_NS_URL, J2EEConstants.APP_CLIENT_SCHEMA_LOC_10);
+            client.setVersion(J2EEVersionConstants.VERSION_10_TEXT);
+        }
 		else {
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAVAEE7_NS_URL);  //$NON-NLS-1$
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE7_NS_URL, J2EEConstants.APP_CLIENT_SCHEMA_LOC_8);
diff --git a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/Connector16ModelProvider.java b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/Connector16ModelProvider.java
index 1db4ef8..a7ba261 100644
--- a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/Connector16ModelProvider.java
+++ b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/Connector16ModelProvider.java
@@ -65,6 +65,10 @@
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE_NS_URL, J2EEConstants.CONNECTOR_SCHEMA_LOC_1_6);
 			connector.setVersion(J2EEVersionConstants.VERSION_1_6_TEXT);
 		}
+		else if(version != null && version.equals(J2EEVersionConstants.VERSION_2_1_TEXT)) {
+            dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE_NS_URL, J2EEConstants.CONNECTOR_SCHEMA_LOC_2_1);
+            connector.setVersion(J2EEVersionConstants.VERSION_2_1_TEXT);
+        }
 		else 
 		{
 			// default to 1.7 for now
diff --git a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/EAR5ModelProvider.java b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/EAR5ModelProvider.java
index bf53059..bda9df8 100644
--- a/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/EAR5ModelProvider.java
+++ b/plugins/org.eclipse.jst.jee/jeecreation/org/eclipse/jst/jee/model/internal/EAR5ModelProvider.java
@@ -109,7 +109,11 @@
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAVAEE7_NS_URL);  //$NON-NLS-1$
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE7_NS_URL, J2EEConstants.APPLICATION_SCHEMA_LOC_7);
 			ear.setVersion(J2EEVersionConstants.VERSION_7_TEXT);
-		} else {
+		} else if(version != null && version.equals(J2EEVersionConstants.VERSION_10_0_TEXT)){
+            dd.getXMLNSPrefixMap().put("", J2EEConstants.JAKARTAEE10_NS_URL);  //$NON-NLS-1$
+            dd.getXSISchemaLocation().put(J2EEConstants.JAKARTAEE10_NS_URL, J2EEConstants.APPLICATION_SCHEMA_LOC_10);
+            ear.setVersion(J2EEVersionConstants.VERSION_10_TEXT);
+        } else {
 			dd.getXMLNSPrefixMap().put("", J2EEConstants.JAVAEE7_NS_URL);  //$NON-NLS-1$
 			dd.getXSISchemaLocation().put(J2EEConstants.JAVAEE7_NS_URL, J2EEConstants.APPLICATION_SCHEMA_LOC_8);
 			ear.setVersion(J2EEVersionConstants.VERSION_8_TEXT);
diff --git a/plugins/org.eclipse.jst.jee/plugin.properties b/plugins/org.eclipse.jst.jee/plugin.properties
index f4cdd5f..bbde925 100644
--- a/plugins/org.eclipse.jst.jee/plugin.properties
+++ b/plugins/org.eclipse.jst.jee/plugin.properties
@@ -34,3 +34,9 @@
 ee8earContentType=Java EE 8 EAR Content
 ee8appclientContentType=Java EE 8 Application Client Content
 ee9webContentType=Jakarta EE 9 Web Content
+ee10connectorContentType=Jakarta EE 10 Connector Content
+ee10ejbContentType=Jakarta EE 10 EJB Content
+ee10webContentType=Jakarta EE 10 Web Content
+ee10webfragmentContentType=Jakarta EE 10 Web Fragment Content
+ee10earContentType=Jakarta EE 10 EAR Content
+ee10appclientContentType=Jakarta EE 10 Application Client Content
diff --git a/plugins/org.eclipse.jst.jee/plugin.xml b/plugins/org.eclipse.jst.jee/plugin.xml
index 5cd00cb..0047029 100644
--- a/plugins/org.eclipse.jst.jee/plugin.xml
+++ b/plugins/org.eclipse.jst.jee/plugin.xml
@@ -182,6 +182,54 @@
               contentTypeId="org.eclipse.jst.jee.ee8webfragmentDD">
         </contentTypeBinding>
      </resourceFactory>     
+     <resourceFactory
+           class="org.eclipse.jst.javaee.jca.internal.util.JcaResourceFactoryImpl"
+           isDefault="false"
+           shortSegment="ra.xml">
+        <contentTypeBinding
+              contentTypeId="org.eclipse.jst.jee.ee10connectorDD">
+        </contentTypeBinding>
+     </resourceFactory>
+     <resourceFactory
+           class="org.eclipse.jst.javaee.web.internal.util.WebResourceFactoryImpl"
+           isDefault="false"
+           shortSegment="web.xml">
+        <contentTypeBinding
+              contentTypeId="org.eclipse.jst.jee.ee10webDD">
+        </contentTypeBinding>
+     </resourceFactory>
+     <resourceFactory
+           class="org.eclipse.jst.javaee.ejb.internal.util.EjbResourceFactoryImpl"
+           isDefault="false"
+           shortSegment="ejb-jar.xml">
+        <contentTypeBinding
+              contentTypeId="org.eclipse.jst.jee.ee10ejbDD">
+        </contentTypeBinding>
+     </resourceFactory>
+     <resourceFactory
+           class="org.eclipse.jst.javaee.applicationclient.internal.util.ApplicationclientResourceFactoryImpl"
+           isDefault="false"
+           shortSegment="application-client.xml">
+        <contentTypeBinding
+              contentTypeId="org.eclipse.jst.jee.ee10appclientDD">
+        </contentTypeBinding>
+     </resourceFactory>
+     <resourceFactory
+           class="org.eclipse.jst.javaee.application.internal.util.ApplicationResourceFactoryImpl"
+           isDefault="false"
+           shortSegment="application.xml">
+        <contentTypeBinding
+              contentTypeId="org.eclipse.jst.jee.ee10earDD">
+        </contentTypeBinding>
+     </resourceFactory>
+     <resourceFactory
+           class="org.eclipse.jst.javaee.webfragment.internal.util.WebfragmentResourceFactoryImpl"
+           isDefault="false"
+           shortSegment="web-fragment.xml">
+        <contentTypeBinding
+              contentTypeId="org.eclipse.jst.jee.ee10webfragmentDD">
+        </contentTypeBinding>
+     </resourceFactory>          
   </extension>
   
   <extension
@@ -249,23 +297,23 @@
             id="org.eclipse.jst.jee.server">
          <moduleType
                types="jst.ear"
-               versions="8.0,7.0,6.0,5.0">
+               versions="10.0,8.0,7.0,6.0,5.0">
          </moduleType>
          <moduleType
                types="jst.appclient"
-               versions="8.0,7.0,6.0,5.0,1.2,1.3,1.4">
+               versions="10.0,8.0,7.0,6.0,5.0,1.2,1.3,1.4">
          </moduleType>
          <moduleType
                types="jst.web"
-               versions="5.0,4.0,3.1,3.0,2.5,2.4,2.3,2.2">
+               versions="6.0,5.0,4.0,3.1,3.0,2.5,2.4,2.3,2.2">
          </moduleType>
          <moduleType
                types="jst.ejb"
-               versions="3.2,3.1,3.0,1.1,2.0,2.1">
+               versions="4.0,3.2,3.1,3.0,1.1,2.0,2.1">
          </moduleType>
          <moduleType
                types="jst.connector"
-               versions="1.7,1.6,1.5,1.0">
+               versions="2.1,1.7,1.6,1.5,1.0">
          </moduleType>
          <moduleType
                types="jst.utility"
@@ -273,7 +321,7 @@
          </moduleType>
          <moduleType
                types="jst.webfragment"
-               versions="5.0,4.0,3.1,3.0">
+               versions="6.0,5.0,4.0,3.1,3.0">
          </moduleType> 
          <enablement>
 			<or>
@@ -282,7 +330,7 @@
 		  		<test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.utility:1.0]"/>
 	  			<test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.connector:1.7]"/>
 	  			<test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.web:5.0]"/>
-	  			<test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.ear:[5.0-8.0]"/>
+	  			<test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.ear:[5.0-10.0]"/>
 	  			<test property="org.eclipse.wst.common.project.facet.core.projectFacet" value="jst.webfragment:5.0]"/>
 			</or>
 		</enablement>        
@@ -610,12 +658,99 @@
          </describer>
       </content-type>
   	</extension> 
+
+  	<extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            file-names="ejb-jar.xml"
+            id="ee10ejbDD"
+            base-type="org.eclipse.core.runtime.xml"
+            name="%ee10ejbContentType"
+            priority="high">
+         <describer
+               class="org.eclipse.jst.jee.contenttype.JEE10ContentDescriber">
+         </describer>
+      </content-type>
+  	</extension>
+  	
+  	<extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            file-names="web.xml"
+            id="ee10webDD"
+            base-type="org.eclipse.core.runtime.xml"
+            name="%ee10webContentType"
+            priority="high">
+         <describer
+               class="org.eclipse.jst.jee.contenttype.JEE10ContentDescriber">
+         </describer>
+      </content-type>
+  	</extension> 
+  	
+  	<extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            file-names="web-fragment.xml"
+            id="ee10webfragmentDD"
+            base-type="org.eclipse.core.runtime.xml"
+            name="%ee10webfragmentContentType"
+            priority="high">
+         <describer
+               class="org.eclipse.jst.jee.contenttype.JEE10ContentDescriber">
+         </describer>
+      </content-type>
+  	</extension>
+  	  	   	
+ 	<extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            file-names="application.xml"
+            id="ee10earDD"
+            base-type="org.eclipse.core.runtime.xml"
+            name="%ee10earContentType"
+            priority="high">
+         <describer
+               class="org.eclipse.jst.jee.contenttype.JEE10ContentDescriber">
+         </describer>
+      </content-type>
+  	</extension>
+  	
+  	<extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            file-names="application-client.xml"
+            id="ee10appclientDD"
+            base-type="org.eclipse.core.runtime.xml"
+            name="%ee10appclientContentType"
+            priority="high">
+         <describer
+               class="org.eclipse.jst.jee.contenttype.JEE10ContentDescriber">
+         </describer>
+      </content-type>
+  	</extension>
+ 
+  	 <extension
+         point="org.eclipse.core.contenttype.contentTypes">
+      <content-type
+            file-names="ra.xml"
+            id="ee10connectorDD"
+            base-type="org.eclipse.core.runtime.xml"
+            name="%ee10connectorContentType"
+            priority="high">
+         <describer
+               class="org.eclipse.jst.jee.contenttype.JEE10ContentDescriber">
+         </describer>
+      </content-type>
+  	</extension>
+  
+
+
   	
   	<extension
         point="org.eclipse.jst.j2ee.J2EEModelProvider">
       	<provider>
         	<modelProvider factoryClass="org.eclipse.jst.jee.model.internal.EAR5ModelProviderFactory"/>	
-      		<facet id="jst.ear" versions="5.0,6.0,7.0,8.0"/>
+      		<facet id="jst.ear" versions="5.0,6.0,7.0,8.0,10.0"/>
       	</provider>
   </extension> 
 
@@ -623,7 +758,7 @@
         point="org.eclipse.jst.j2ee.J2EEModelProvider">
       	<provider>
         	<modelProvider factoryClass="org.eclipse.jst.jee.model.internal.AppClient5ModelProviderFactory"/>	
-      		<facet id="jst.appclient" versions="5.0,6.0,7.0,8.0"/>
+      		<facet id="jst.appclient" versions="5.0,6.0,7.0,8.0,10.0"/>
       	</provider>
    </extension>
 
@@ -631,7 +766,7 @@
         point="org.eclipse.jst.j2ee.J2EEModelProvider">
       	<provider>
         	<modelProvider factoryClass="org.eclipse.jst.jee.model.internal.Connector16ModelProviderFactory"/>
-      		<facet id="jst.connector" versions="1.6,1.7"/>
+      		<facet id="jst.connector" versions="1.6,1.7,2.1"/>
       	</provider>
    </extension>
 
diff --git a/plugins/org.eclipse.jst.jee/pom.xml b/plugins/org.eclipse.jst.jee/pom.xml
index be9d74e..ce56d03 100644
--- a/plugins/org.eclipse.jst.jee/pom.xml
+++ b/plugins/org.eclipse.jst.jee/pom.xml
@@ -21,6 +21,6 @@
 
   <groupId>org.eclipse.webtools.javaee</groupId>
   <artifactId>org.eclipse.jst.jee</artifactId>
-  <version>1.0.1100-SNAPSHOT</version>
+  <version>1.0.1101-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveResources/loose_module_workspace/.metadata/.plugins/com.ibm.etools.j2ee/looseApp.xmi b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveResources/loose_module_workspace/.metadata/.plugins/com.ibm.etools.j2ee/looseApp.xmi
deleted file mode 100644
index 1e3ae0b..0000000
--- a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveResources/loose_module_workspace/.metadata/.plugins/com.ibm.etools.j2ee/looseApp.xmi
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseApplication xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig="commonarchive.looseconfig.xmi" uri="\d:\work\WTP\org.eclipse.jst.j2ee.core.tests\commonArchiveResources\loose_module_workspace\LooseEAR" binariesPath="\d:\work\WTP\org.eclipse.jst.j2ee.core.tests\commonArchiveResources\loose_module_workspace\LooseEAR" resourcesPath="\d:\work\WTP\org.eclipse.jst.j2ee.core.tests\commonArchiveResources\loose_module_workspace\LooseEAR">
-  <looseArchives xsi:type="org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseModule" uri="LooseEAREjb.jar" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEAREjb\bin" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEAREjb\bin"/>
-  <looseArchives xsi:type="org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseWARFile" uri="LooseEARWeb.war" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEARWeb\webApplication" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEARWeb\webApplication">
-    <looseLibs uri="WEB-INF/lib/library.jar" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaWebLib\bin" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaWebLib\bin"/>
-  </looseArchives>
-  <looseArchives xsi:type="org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseLibrary" uri="util.jar" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaUtil\bin" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaUtil\bin"/>
-</org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseApplication>
diff --git a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveResources/loose_module_workspace/.metadata/.plugins/com.ibm.etools.j2ee/looseConfig.xmi b/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveResources/loose_module_workspace/.metadata/.plugins/com.ibm.etools.j2ee/looseConfig.xmi
deleted file mode 100644
index 64ffaf7..0000000
--- a/tests/org.eclipse.jst.j2ee.core.tests/commonArchiveResources/loose_module_workspace/.metadata/.plugins/com.ibm.etools.j2ee/looseConfig.xmi
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseConfiguration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig="commonarchive.looseconfig.xmi">
-  <applications uri="\d:\work\WTP\org.eclipse.jst.j2ee.core.tests\commonArchiveResources\loose_module_workspace\LooseEAR" binariesPath="\d:\work\WTP\org.eclipse.jst.j2ee.core.tests\commonArchiveResources\loose_module_workspace\LooseEAR" resourcesPath="\d:\work\WTP\org.eclipse.jst.j2ee.core.tests\commonArchiveResources\loose_module_workspace\LooseEAR">
-    <looseArchives xsi:type="org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseModule" uri="LooseEAREjb.jar" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEAREjb\bin" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEAREjb\bin"/>
-    <looseArchives xsi:type="org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseWARFile" uri="LooseEARWeb.war" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEARWeb\webApplication" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseEARWeb\webApplication">
-      <looseLibs uri="WEB-INF/lib/library.jar" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaWebLib\bin" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaWebLib\bin"/>
-    </looseArchives>
-    <looseArchives xsi:type="org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseLibrary" uri="util.jar" binariesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaUtil\bin" resourcesPath="/d:/work/WTP/org.eclipse.jst.j2ee.core.tests/commonArchiveResources\loose_module_workspace\LooseJavaUtil\bin"/>
-  </applications>
-</org.eclipse.jst.j2ee.internal.commonarchivecore.looseconfig:LooseConfiguration>
