diff --git a/bundles/eclipselink/pom.xml b/bundles/eclipselink/pom.xml
index 6d2711f..92e003d 100644
--- a/bundles/eclipselink/pom.xml
+++ b/bundles/eclipselink/pom.xml
@@ -76,8 +76,8 @@
             <optional>true</optional>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
             <optional>true</optional>
         </dependency>
         <dependency>
diff --git a/bundles/eclipselink/src/main/assembly/eclipselink.zip.xml b/bundles/eclipselink/src/main/assembly/eclipselink.zip.xml
index a1469b1..af4b3cc 100644
--- a/bundles/eclipselink/src/main/assembly/eclipselink.zip.xml
+++ b/bundles/eclipselink/src/main/assembly/eclipselink.zip.xml
@@ -83,8 +83,10 @@
                 <include>jakarta.xml.bind:jakarta.xml.bind-api</include>
                 <include>jakarta.validation:jakarta.validation-api</include>
                 <include>jakarta.json:jakarta.json-api</include>
-                <include>com.sun.activation:jakarta.activation</include>
-                <include>com.sun.mail:jakarta.mail</include>
+                <include>jakarta.activation:jakarta.activation-api</include>
+                <include>org.eclipse.angus:angus-activation</include>
+                <include>jakarta.mail:jakarta.mail-api</include>
+                <include>org.eclipse.angus:angus-mail</include>
                 <include>com.sun.xml.bind:jaxb-core</include>
                 <include>com.sun.xml.bind:jaxb-xjc</include>
                 <include>org.eclipse.parsson:parsson</include>
diff --git a/bundles/others/pom.xml b/bundles/others/pom.xml
index 17ed878..cbb870e 100644
--- a/bundles/others/pom.xml
+++ b/bundles/others/pom.xml
@@ -149,8 +149,8 @@
             <artifactId>angus-activation</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
         <dependency>
             <groupId>com.sun.xml.bind</groupId>
diff --git a/bundles/p2site/pom.xml b/bundles/p2site/pom.xml
index 6a6f6ff..27123e2 100644
--- a/bundles/p2site/pom.xml
+++ b/bundles/p2site/pom.xml
@@ -125,8 +125,8 @@
             <artifactId>angus-activation</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
         <dependency>
             <groupId>com.sun.xml.bind</groupId>
diff --git a/bundles/tests/src/test/java/org/eclipse/persistence/testing/osgi/OSGITestHelper.java b/bundles/tests/src/test/java/org/eclipse/persistence/testing/osgi/OSGITestHelper.java
index 8a649ad..56764f6 100644
--- a/bundles/tests/src/test/java/org/eclipse/persistence/testing/osgi/OSGITestHelper.java
+++ b/bundles/tests/src/test/java/org/eclipse/persistence/testing/osgi/OSGITestHelper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2016, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -31,7 +31,7 @@
 public class OSGITestHelper {
     // Environment variables defined in antbuild.properties/antbuild.xml
     private static final String PLUGINS_DIR = System.getProperty("plugins.dir","target/osgi-test-plugins/");
-    private static final String ACTIVATION_JAR = System.getProperty("activation.jar", "jakarta.activation.jar");
+    private static final String ACTIVATION_JAR = System.getProperty("activation.jar", "jakarta.activation-api.jar");
     private static final String JAXB_API_JAR = System.getProperty("jaxb-api.jar", "jakarta.xml.bind-api.jar");
     private static final String JAXB_OSGI = System.getProperty("jaxb-osgi.jar", "jaxb-xjc.jar");
     private static final String JAXRS_JAR = System.getProperty("jaxrs.jar", "jakarta.ws.rs-api.jar");
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
index 7e09c22..17c0004 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/descriptors/ClassDescriptor.java
@@ -156,7 +156,7 @@
  * @see org.eclipse.persistence.oxm.XMLDescriptor
  */
 public class ClassDescriptor extends CoreDescriptor<AttributeGroup, DescriptorEventManager, DatabaseField, InheritancePolicy, InstantiationPolicy, Vector, ObjectBuilder> implements Cloneable, Serializable {
-    protected Class javaClass;
+    protected Class<?> javaClass;
     protected String javaClassName;
     protected Vector<DatabaseTable> tables;
     protected transient DatabaseTable defaultTable;
@@ -1485,7 +1485,7 @@ public void convertClassNamesToClasses(ClassLoader classLoader){
         Class redirectorClass = null;
 
         if (getJavaClassName() != null){
-            Class descriptorClass = null;
+            Class<?> descriptorClass = null;
             try{
                 if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){
                     try {
@@ -5034,7 +5034,7 @@ public void setHasRelationships(boolean hasRelationships) {
     * Every descriptor maps one and only one class.
     */
     @Override
-    public void setJavaClass(Class theJavaClass) {
+    public void setJavaClass(Class<?> theJavaClass) {
         javaClass = theJavaClass;
     }
 
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/DescriptorException.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/DescriptorException.java
index 43247fe..ac0349b 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/DescriptorException.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/DescriptorException.java
@@ -1260,7 +1260,6 @@ public static DescriptorException nullForNonNullAggregate(Object object, Databas
 
     public static DescriptorException nullPointerWhileConstructorInstantiation(ClassDescriptor descriptor, Throwable exception) {
         Object[] args = {  };
-
         DescriptorException descriptorException = new DescriptorException(ExceptionMessageGenerator.buildMessage(DescriptorException.class, NULL_POINTER_WHILE_CONSTRUCTOR_INSTANTIATION, args), descriptor, exception);
         descriptorException.setErrorCode(NULL_POINTER_WHILE_CONSTRUCTOR_INSTANTIATION);
         return descriptorException;
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java
index 8eb6437..c02ae21 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/exceptions/IntegrityChecker.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/i18n/ExceptionLocalizationResource.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/i18n/ExceptionLocalizationResource.java
index 54e22ec..2aa7455 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/i18n/ExceptionLocalizationResource.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/localization/i18n/ExceptionLocalizationResource.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  * Copyright (c) 1998, 2018 IBM Corporation and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -183,6 +183,7 @@ public class ExceptionLocalizationResource extends ListResourceBundle {
                                            { "sdo_helper_invalid_target_for_typehelper", "The provided target Class [{0}] must be EclipseLink SDOTypeHelper class." },
                                            { "sdo_helper_invalid_target_for_xmlhelper", "The provided target Class [{0}] must be one of EclipseLink SDOXMLHelper, EclipseLink XMLMarshaller or EclipseLink XMLUnmarshaller." },
                                            { "sdo_helper_invalid_target_for_xsdhelper", "The provided target Class [{0}] must be EclipseLink SDOXSDHelper class." },
+                                           { "jaxb_context_factory_property_invalid", "Property eclipselink.moxy.factory value {0} is invalid" },
                                            { "jaxb_helper_invalid_jaxbcontext", "The provided JAXBContext [{0}] is not an EclipseLink JAXBContext, and therefore could not be converted." },
                                            { "jaxb_helper_invalid_unmarshaller", "The provided Unmarshaller [{0}] is not an EclipseLink JAXBUnmarshaller, and therefore could not be converted." },
                                            { "jaxb_helper_invalid_marshaller", "The provided Marshaller [{0}] is not an EclipseLink JAXBMarshaller, and therefore could not be converted." },
diff --git a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Descriptor.java b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Descriptor.java
index 9340d59..721a8e5 100644
--- a/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Descriptor.java
+++ b/foundation/org.eclipse.persistence.core/src/main/java/org/eclipse/persistence/internal/oxm/mappings/Descriptor.java
@@ -106,7 +106,7 @@ public interface Descriptor <
     /**
      * Return the java class.
      */
-    Class getJavaClass();
+    Class<?> getJavaClass();
 
     /**
      * Return the class name, used by the MW.
@@ -224,7 +224,7 @@ public interface Descriptor <
       * Set the Java class that this descriptor maps.
       * Every descriptor maps one and only one class.
       */
-      void setJavaClass(Class theJavaClass);
+      void setJavaClass(Class<?> theJavaClass);
 
       /**
        * INTERNAL:
diff --git a/jpa/eclipselink.jaxrs.test/src/main/resources/org/eclipse/persistence/testing/jaxrs/model/jaxb.properties b/jpa/eclipselink.jaxrs.test/src/main/resources/org/eclipse/persistence/testing/jaxrs/model/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/jpa/eclipselink.jaxrs.test/src/main/resources/org/eclipse/persistence/testing/jaxrs/model/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-advanced-field-access-model/org/eclipse/persistence/testing/models/jpa/fieldaccess/relationships/jaxb.properties b/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-advanced-field-access-model/org/eclipse/persistence/testing/models/jpa/fieldaccess/relationships/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-advanced-field-access-model/org/eclipse/persistence/testing/models/jpa/fieldaccess/relationships/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-annotation-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties b/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-annotation-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-annotation-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-delimited-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties b/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-delimited-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-delimited-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-lob-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties b/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-lob-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/jpa/eclipselink.jpa.test/src/it/resources/eclipselink-lob-model/org/eclipse/persistence/testing/models/jpa/lob/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy.utils.xjc/pom.xml b/moxy/org.eclipse.persistence.moxy.utils.xjc/pom.xml
index 2efb170..7307ce3 100644
--- a/moxy/org.eclipse.persistence.moxy.utils.xjc/pom.xml
+++ b/moxy/org.eclipse.persistence.moxy.utils.xjc/pom.xml
@@ -40,6 +40,10 @@
             <artifactId>org.eclipse.persistence.moxy</artifactId>
             <scope>runtime</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/moxy/org.eclipse.persistence.moxy/pom.xml b/moxy/org.eclipse.persistence.moxy/pom.xml
index 8f1b291..033f478 100644
--- a/moxy/org.eclipse.persistence.moxy/pom.xml
+++ b/moxy/org.eclipse.persistence.moxy/pom.xml
@@ -81,8 +81,8 @@
             <artifactId>angus-activation</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
         </dependency>
 
         <!--Test dependencies-->
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java
index 7c99942..a965cb4 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContext.java
@@ -445,7 +445,6 @@ public JAXBUnmarshaller createUnmarshaller() throws jakarta.xml.bind.JAXBExcepti
      * Create a JAXBValidator.  The JAXBValidator is used to validate Java objects against
      * an XSD.
      */
-    @Override
     public JAXBValidator createValidator() {
         return new JAXBValidator(getXMLContext().createValidator());
     }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContextProperties.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContextProperties.java
index cf65e80..4369928 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContextProperties.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBContextProperties.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -29,6 +29,27 @@
  */
 public class JAXBContextProperties {
 
+    /**
+     * The name of the property used to specify which JAXB Context Factory
+     * will be used for context creation.
+     * Default {@link org.eclipse.persistence.jaxb.JAXBContextFactory} will be used when this property
+     * is not set.
+     * Supported values are listed in {@link Factory} class.
+     * @since 4.0
+     */
+    public static final String MOXY_FACTORY = "eclipselink.moxy.factory";
+
+    /**
+     * Supported values of {@code eclipselink.moxy.factory} property.
+     * @since 4.0
+     */
+    public static final class Factory {
+        /** Use default {@link org.eclipse.persistence.jaxb.JAXBContextFactory} for context creation. */
+        public static final String DEFAULT = "default";
+        /** Use {@link org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory} for context creation. */
+        public static final String DYNAMIC = "dynamic";
+    }
+
     /**`
      * The name of the property used to specify a value that will be prepended
      * to all keys that are mapped to an XML attribute. By default there is no
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java
index 510a2a7..c590cee 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBUnmarshaller.java
@@ -771,7 +771,6 @@ public UnmarshallerHandler getUnmarshallerHandler() {
         return new JAXBUnmarshallerHandler(this);
     }
 
-    @Override
     public void setValidating(boolean validate) throws JAXBException {
         if (validate) {
             xmlUnmarshaller.setValidationMode(XMLUnmarshaller.SCHEMA_VALIDATION);
@@ -780,7 +779,6 @@ public void setValidating(boolean validate) throws JAXBException {
         }
     }
 
-    @Override
     public boolean isValidating() throws JAXBException {
         return xmlUnmarshaller.getValidationMode() != XMLUnmarshaller.NONVALIDATING;
     }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBValidator.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBValidator.java
index 32b4460..b0b2aa4 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBValidator.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/JAXBValidator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -18,14 +18,13 @@
 import jakarta.xml.bind.PropertyException;
 import jakarta.xml.bind.ValidationEventHandler;
 import jakarta.xml.bind.ValidationException;
-import jakarta.xml.bind.Validator;
 import jakarta.xml.bind.helpers.DefaultValidationEventHandler;
 import org.eclipse.persistence.oxm.XMLValidator;
 
 /**
  * Facilitates JAXBValidation.
  */
-public class JAXBValidator implements Validator {
+public class JAXBValidator /*implements Validator*/ {
     private ValidationEventHandler validationEventHandler;
     private XMLValidator xmlValidator;
 
@@ -49,7 +48,6 @@ public JAXBValidator(XMLValidator newValidator) {
      * @return true if a valid root object, false otherwise
      * @throws JAXBException
      */
-    @Override
     public boolean validateRoot(Object rootObject) throws JAXBException {
         if (rootObject == null) {
             throw new IllegalArgumentException();
@@ -69,7 +67,6 @@ public boolean validateRoot(Object rootObject) throws JAXBException {
      * @return true if a valid object, false otherwise
      * @throws JAXBException
      */
-    @Override
     public boolean validate(Object object) throws JAXBException {
         if (object == null) {
             throw new IllegalArgumentException();
@@ -82,7 +79,6 @@ public boolean validate(Object object) throws JAXBException {
         }
     }
 
-    @Override
     public void setEventHandler(ValidationEventHandler newValidationEventHandler) throws JAXBException {
         if (null == newValidationEventHandler) {
             validationEventHandler = new DefaultValidationEventHandler();
@@ -92,12 +88,10 @@ public void setEventHandler(ValidationEventHandler newValidationEventHandler) th
         xmlValidator.setErrorHandler(new JAXBErrorHandler(validationEventHandler));
     }
 
-    @Override
     public ValidationEventHandler getEventHandler() throws JAXBException {
         return validationEventHandler;
     }
 
-    @Override
     public void setProperty(String key, Object value) throws PropertyException {
         if (key == null) {
             throw new IllegalArgumentException();
@@ -105,7 +99,6 @@ public void setProperty(String key, Object value) throws PropertyException {
         throw new PropertyException(key, value);
     }
 
-    @Override
     public Object getProperty(String key) throws PropertyException {
         if (key == null) {
             throw new IllegalArgumentException();
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/XMLBindingContextFactory.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/XMLBindingContextFactory.java
index c5d54fe..443995c 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/XMLBindingContextFactory.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/XMLBindingContextFactory.java
@@ -14,6 +14,10 @@
 
 import jakarta.xml.bind.JAXBContext;
 import jakarta.xml.bind.JAXBException;
+import org.eclipse.persistence.internal.localization.ExceptionLocalization;
+import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory;
+
+import java.util.Collections;
 import java.util.Map;
 
 /**
@@ -30,12 +34,38 @@ public XMLBindingContextFactory() {
 
     @Override
     public JAXBContext createContext(Class<?>[] types, Map<String, ?> map) throws JAXBException {
-        return JAXBContextFactory.createContext(types, map);
+        @SuppressWarnings("unchecked")
+        Map<String, Object> opts = map != null ? (Map<String, Object>) map : Collections.emptyMap();
+        Object factory = opts.getOrDefault(JAXBContextProperties.MOXY_FACTORY, JAXBContextProperties.Factory.DEFAULT);
+        if (factory instanceof String) {
+            switch ((String) factory) {
+                case JAXBContextProperties.Factory.DEFAULT:
+                    return JAXBContextFactory.createContext(types, opts);
+                case JAXBContextProperties.Factory.DYNAMIC:
+                    return DynamicJAXBContextFactory.createContext(types, opts);
+                default:
+                    throw new JAXBException(ExceptionLocalization.buildMessage("jaxb_context_factory_property_invalid", new Object[] {factory}));
+            }
+        }
+        throw new JAXBException(ExceptionLocalization.buildMessage("jaxb_context_factory_property_invalid", new Object[] {factory}));
     }
 
     @Override
     public JAXBContext createContext(String string, ClassLoader cl, Map<String, ?> map) throws JAXBException {
-        return JAXBContextFactory.createContext(string, cl, map);
+        @SuppressWarnings("unchecked")
+        Map<String, Object> opts = map != null ? (Map<String, Object>) map : Collections.emptyMap();
+        Object factory = opts.getOrDefault(JAXBContextProperties.MOXY_FACTORY, JAXBContextProperties.Factory.DEFAULT);
+        if (factory instanceof String) {
+            switch ((String) factory) {
+                case JAXBContextProperties.Factory.DEFAULT:
+                    return JAXBContextFactory.createContext(string, cl, opts);
+                case JAXBContextProperties.Factory.DYNAMIC:
+                    return DynamicJAXBContextFactory.createContext(string, cl, opts);
+                default:
+                    throw new JAXBException(ExceptionLocalization.buildMessage("jaxb_context_factory_property_invalid", new Object[] {factory}));
+            }
+        }
+        throw new JAXBException(ExceptionLocalization.buildMessage("jaxb_context_factory_property_invalid", new Object[] {factory}));
     }
-    
+
 }
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
index 51c60f4..484f163 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/compiler/AnnotationsProcessor.java
@@ -3809,7 +3809,7 @@ private JavaClass processXmlElementDecl(JavaClass type, JavaMethod next, Package
             String url;
             String localName;
             String defaultValue = null;
-            Class<XmlElementDecl.GLOBAL> scopeClass = jakarta.xml.bind.annotation.XmlElementDecl.GLOBAL.class;
+            Class<?> scopeClass = jakarta.xml.bind.annotation.XmlElementDecl.GLOBAL.class;
 
             if (xmlEltDecl != null) {
                 url = xmlEltDecl.getNamespace();
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/dynamic/DynamicJAXBContextFactory.java b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/dynamic/DynamicJAXBContextFactory.java
index 011980b..7cf12ec 100644
--- a/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/dynamic/DynamicJAXBContextFactory.java
+++ b/moxy/org.eclipse.persistence.moxy/src/main/java/org/eclipse/persistence/jaxb/dynamic/DynamicJAXBContextFactory.java
@@ -81,6 +81,12 @@ public class DynamicJAXBContextFactory {
     public static final String SCHEMAMETADATA_CLASS_NAME = "org.eclipse.persistence.jaxb.dynamic.metadata.SchemaMetadata";
 
     /**
+     * Creates an instance of {@code DynamicJAXBContextFactory}.
+     */
+    public DynamicJAXBContextFactory() {
+    }
+
+    /**
      * Create a <code>DynamicJAXBContext</code>, using either an XML Schema, EclipseLink OXM file,
      * or EclipseLink <code>sessions.xml</code> as the metadata source.  This creation method will be
      * called if the user calls the <code>newInstance()</code> method on <code>jakarta.xml.bind.JAXBContext</code>,
diff --git a/moxy/org.eclipse.persistence.moxy/src/main/resources/org/eclipse/persistence/jaxb/xmlmodel/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/main/resources/org/eclipse/persistence/jaxb/xmlmodel/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/main/resources/org/eclipse/persistence/jaxb/xmlmodel/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBContextCreationTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBContextCreationTestCases.java
index ab1305a..9baa3c5 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBContextCreationTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBContextCreationTestCases.java
@@ -31,7 +31,6 @@
 
 import org.eclipse.persistence.dynamic.DynamicEntity;
 import org.eclipse.persistence.exceptions.DynamicException;
-import org.eclipse.persistence.jaxb.JAXBContextFactory;
 import org.eclipse.persistence.jaxb.JAXBContextProperties;
 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
 import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory;
@@ -51,6 +50,14 @@ public String getName() {
         return "Dynamic JAXB: Context Creation: " + super.getName();
     }
 
+    public void setUp() {
+        System.setProperty(JAXBContext.JAXB_CONTEXT_FACTORY, DynamicJAXBContextFactory.class.getName());
+    }
+
+    public void tearDown() {
+        System.clearProperty(JAXBContext.JAXB_CONTEXT_FACTORY);
+    }
+
     public void testNewInstanceString() throws JAXBException {
         DynamicJAXBContext jaxbContext = (DynamicJAXBContext) JAXBContext.newInstance(SESSION_NAMES);
         DynamicEntity docWrapper = jaxbContext.newDynamicEntity(DOCWRAPPER_CLASS_NAME);
@@ -134,6 +141,7 @@ public void testNewInstanceXSD() throws JAXBException {
     }
 
     public void testNewInstanceXSDExternalBinding() throws Exception {
+        System.clearProperty(JAXBContext.JAXB_CONTEXT_FACTORY);
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
         docFactory.setNamespaceAware(true);
@@ -151,6 +159,7 @@ public void testNewInstanceXSDExternalBinding() throws Exception {
         Map<String, Object> properties = new HashMap<String, Object>();
         properties.put(DynamicJAXBContextFactory.XML_SCHEMA_KEY, xsdSource);
         properties.put(DynamicJAXBContextFactory.EXTERNAL_BINDINGS_KEY, xjbSource);
+        properties.put(JAXBContextProperties.MOXY_FACTORY, JAXBContextProperties.Factory.DYNAMIC);
 
         // Have to include a path to a jaxb.properties, so just reusing a context path that does contain one.
         DynamicJAXBContext jaxbContext = (DynamicJAXBContext) JAXBContext.newInstance("org.eclipse.persistence.testing.jaxb.dynamic", classLoader, properties);
@@ -275,6 +284,7 @@ public void testNewInstanceXSDImportError() throws Exception {
     }
 
     public void testNewInstanceXSDExternalBindings() throws Exception {
+        System.clearProperty(JAXBContext.JAXB_CONTEXT_FACTORY);
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
         docFactory.setNamespaceAware(true);
@@ -301,6 +311,7 @@ public void testNewInstanceXSDExternalBindings() throws Exception {
         Map<String, Object> properties = new HashMap<String, Object>();
         properties.put(DynamicJAXBContextFactory.XML_SCHEMA_KEY, xsdSource);
         properties.put(DynamicJAXBContextFactory.EXTERNAL_BINDINGS_KEY, extBindings);
+        properties.put(JAXBContextProperties.MOXY_FACTORY, JAXBContextProperties.Factory.DYNAMIC);
 
         // Have to include a path to a jaxb.properties, so just reusing a context path that does contain one.
         DynamicJAXBContext jaxbContext = (DynamicJAXBContext) JAXBContext.newInstance("org.eclipse.persistence.testing.jaxb.dynamic", classLoader, properties);
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBFromSessionsXMLTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBFromSessionsXMLTestCases.java
index 341d53d..1d712e4 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBFromSessionsXMLTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBFromSessionsXMLTestCases.java
@@ -14,26 +14,32 @@
 //     rbarkhouse - 2010-03-04 12:22:11 - initial implementation
 package org.eclipse.persistence.testing.jaxb.dynamic;
 
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Properties;
-import java.util.Vector;
+import org.eclipse.persistence.dynamic.DynamicEntity;
+import org.eclipse.persistence.internal.dynamic.DynamicEntityImpl;
+import org.eclipse.persistence.internal.helper.Helper;
+import org.eclipse.persistence.jaxb.JAXBContextProperties;
+import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
+import org.eclipse.persistence.oxm.NamespaceResolver;
+import org.eclipse.persistence.oxm.XMLRoot;
+import org.eclipse.persistence.testing.jaxb.JAXBTestCases;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
 
 import javax.xml.namespace.QName;
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.persistence.dynamic.DynamicEntity;
-import org.eclipse.persistence.internal.dynamic.DynamicEntityImpl;
-import org.eclipse.persistence.internal.helper.Helper;
-import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext;
-import org.eclipse.persistence.oxm.NamespaceResolver;
-import org.eclipse.persistence.oxm.XMLRoot;
-import org.eclipse.persistence.testing.jaxb.JAXBTestCases;
-import org.w3c.dom.*;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Vector;
 
 public class DynamicJAXBFromSessionsXMLTestCases extends JAXBTestCases {
 
@@ -64,6 +70,11 @@ public class DynamicJAXBFromSessionsXMLTestCases extends JAXBTestCases {
     private static final String EMP_CLASS_NAME =
         "org.persistence.testing.jaxb.dynamic.zzz.Employee";
 
+    private static final Map<String, Object> PROPERTIES = new HashMap<>(1);
+    static {
+        PROPERTIES.put(JAXBContextProperties.MOXY_FACTORY, JAXBContextProperties.Factory.DYNAMIC);
+    }
+
     protected ArrayList objectsAlreadyCheckedForEquality;
 
     public DynamicJAXBFromSessionsXMLTestCases(String name) throws Exception {
@@ -71,8 +82,8 @@ public DynamicJAXBFromSessionsXMLTestCases(String name) throws Exception {
 
         setControlDocument(XML_RESOURCE);
 
-        // Calling newInstance will end up eventually end up in DynamicJAXBContextFactory.createContext
-        jaxbContext = DynamicJAXBContext.newInstance(SESSION_NAMES);
+        // Calling newInstance requires eclipselink.moxy.factory="dynamic" to end up in DynamicJAXBContextFactory.createContext
+        jaxbContext = DynamicJAXBContext.newInstance(SESSION_NAMES, Thread.currentThread().getContextClassLoader(), PROPERTIES);
         jaxbMarshaller = jaxbContext.createMarshaller();
         jaxbUnmarshaller = jaxbContext.createUnmarshaller();
 
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBUsingXMLNamesTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBUsingXMLNamesTestCases.java
index b34f786..4322037 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBUsingXMLNamesTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/dynamic/DynamicJAXBUsingXMLNamesTestCases.java
@@ -41,6 +41,14 @@ public DynamicJAXBUsingXMLNamesTestCases(String name) throws Exception {
         super(name);
     }
 
+    public void setUp() {
+        System.setProperty(JAXBContext.JAXB_CONTEXT_FACTORY, DynamicJAXBContextFactory.class.getName());
+    }
+
+    public void tearDown() {
+        System.clearProperty(JAXBContext.JAXB_CONTEXT_FACTORY);
+    }
+
     @Override
     public String getName() {
         return "Dynamic JAXB: Using XML Names: " + super.getName();
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/NoSchemaRefTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/NoSchemaRefTestCases.java
index 120112e..ce53f2e 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/NoSchemaRefTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/NoSchemaRefTestCases.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,24 +14,24 @@
 //     Blaise Doughan - 2.2 - initial implementation
 package org.eclipse.persistence.testing.jaxb.xmlmarshaller;
 
-import jakarta.xml.bind.JAXBContext;
+import org.eclipse.persistence.jaxb.JAXBContext;
 import jakarta.xml.bind.JAXBException;
 import jakarta.xml.bind.ValidationException;
-import jakarta.xml.bind.Validator;
 
 import junit.framework.TestCase;
 
 import org.eclipse.persistence.exceptions.XMLMarshalException;
-import org.eclipse.persistence.jaxb.JAXBContextFactory;
+import org.eclipse.persistence.jaxb.JAXBValidator;
+import org.eclipse.persistence.jaxb.XMLBindingContextFactory;
 import org.eclipse.persistence.platform.xml.XMLPlatformException;
 
 public class NoSchemaRefTestCases extends TestCase {
 
     public void testValidateRootNoSchemaReference() {
         try {
-            Class[] classes = {Address.class};
-            JAXBContext jc = JAXBContextFactory.createContext(classes, null);
-            Validator validator = jc.createValidator();
+            Class<?>[] classes = {Address.class};
+            JAXBContext jc = (JAXBContext) new XMLBindingContextFactory().createContext(classes, null);
+            JAXBValidator validator = jc.createValidator();
             validator.validateRoot(new Address());
         } catch(ValidationException e) {
             XMLMarshalException xme = (XMLMarshalException) e.getLinkedException();
@@ -45,9 +45,9 @@ public void testValidateRootNoSchemaReference() {
 
     public void testValidateNoSchemaReference() throws JAXBException {
         try {
-            Class[] classes = {Address.class};
-            JAXBContext jc = JAXBContextFactory.createContext(classes, null);
-            Validator validator = jc.createValidator();
+            Class<?>[] classes = {Address.class};
+            JAXBContext jc = (JAXBContext) new XMLBindingContextFactory().createContext(classes, null);
+            JAXBValidator validator = jc.createValidator();
             validator.validate(new Address());
         } catch (ValidationException e) {
             XMLMarshalException xme = (XMLMarshalException) e.getLinkedException();
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallValidationTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallValidationTestCases.java
index 4c7efcc..0aad2ec 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallValidationTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallValidationTestCases.java
@@ -14,29 +14,23 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.jaxb.xmlmarshaller;
 
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.UnmarshalException;
+import jakarta.xml.bind.ValidationEventHandler;
+
 import java.io.*;
 
-import java.net.URL;
-
-import jakarta.xml.bind.JAXBContext;
-import jakarta.xml.bind.Marshaller;
-import jakarta.xml.bind.MarshalException;
-import jakarta.xml.bind.Unmarshaller;
-import jakarta.xml.bind.UnmarshalException;
-
-import jakarta.xml.bind.ValidationEventHandler;
 import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.transform.Source;
-import javax.xml.transform.stream.StreamSource;
-
-import org.w3c.dom.Node;
-
-import org.xml.sax.InputSource;
-
-import org.eclipse.persistence.platform.xml.XMLPlatformException;
 
 import junit.framework.TestCase;
 
+import org.eclipse.persistence.jaxb.JAXBUnmarshaller;
+import org.eclipse.persistence.platform.xml.XMLPlatformException;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.CustomErrorValidationEventHandler;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.CustomFatalErrorValidationEventHandler;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.EmployeeInvalidTypeProject;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.JAXBSAXTestSuite;
+
 public class UnmarshallValidationTestCases extends TestCase {
 
     static String INVALID_CONTEXT_PATH = "org.eclipse.persistence.testing.oxm.jaxb.invalidtype";
@@ -46,7 +40,7 @@ public class UnmarshallValidationTestCases extends TestCase {
     static String SINGLE_FATAL_ERROR_XML = "org/eclipse/persistence/testing/oxm/jaxb/Employee_OneFatalError.xml";
 
     static boolean test1passed;
-    private Unmarshaller unmarshaller;
+    private JAXBUnmarshaller unmarshaller;
     private String contextPath;
     private ValidationEventHandler eventHandler;
 
@@ -59,7 +53,7 @@ public void setUp() throws Exception {
         contextPath = System.getProperty("jaxb.test.contextpath", JAXBSAXTestSuite.CONTEXT_PATH);
 
         JAXBContext context = JAXBContext.newInstance(contextPath);
-        unmarshaller = context.createUnmarshaller();
+        unmarshaller = (JAXBUnmarshaller) context.createUnmarshaller();
         if (!unmarshaller.isValidating()) {
             unmarshaller.setValidating(true);
         }
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallerTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallerTestCases.java
index 96f590c..e95a39e 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallerTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/UnmarshallerTestCases.java
@@ -33,6 +33,7 @@
 import javax.xml.transform.stream.StreamSource;
 
 import junit.framework.TestCase;
+import org.eclipse.persistence.jaxb.JAXBUnmarshaller;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -48,7 +49,7 @@ public class UnmarshallerTestCases extends TestCase  {
     private final static String CONTROL_EMPLOYEE_NAME = "Jane Doe";
 
     private JAXBContext jaxbContext;
-    private Unmarshaller unmarshaller;
+    private JAXBUnmarshaller unmarshaller;
     private DocumentBuilder parser;
     private String contextPath;
 
@@ -61,7 +62,7 @@ public void setUp() throws Exception {
         contextPath = System.getProperty("jaxb.test.contextpath", JAXBSAXTestSuite.CONTEXT_PATH);
 
         jaxbContext = JAXBContext.newInstance(contextPath, getClass().getClassLoader());
-        unmarshaller = jaxbContext.createUnmarshaller();
+        unmarshaller = (JAXBUnmarshaller) jaxbContext.createUnmarshaller();
         DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
         builderFactory.setIgnoringElementContentWhitespace(true);
         parser = builderFactory.newDocumentBuilder();
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/ValidatorTestCases.java b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/ValidatorTestCases.java
index e766039..1a36ff2 100644
--- a/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/ValidatorTestCases.java
+++ b/moxy/org.eclipse.persistence.moxy/src/test/java/org/eclipse/persistence/testing/jaxb/xmlmarshaller/ValidatorTestCases.java
@@ -14,23 +14,32 @@
 //     Oracle - initial API and implementation from Oracle TopLink
 package org.eclipse.persistence.testing.jaxb.xmlmarshaller;
 
-import java.io.File;
-import java.net.URL;
-import jakarta.xml.bind.JAXBContext;
 import jakarta.xml.bind.PropertyException;
 import jakarta.xml.bind.Unmarshaller;
 import jakarta.xml.bind.ValidationException;
-import jakarta.xml.bind.Validator;
-import org.eclipse.persistence.testing.oxm.xmlmarshaller.Car;
+
+import java.io.File;
+
 import junit.framework.TestCase;
 
+import org.eclipse.persistence.jaxb.JAXBContext;
+import org.eclipse.persistence.jaxb.JAXBValidator;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.Address;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.Badge;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.Employee;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.JAXBSAXTestSuite;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.Job;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.Job2;
+import org.eclipse.persistence.testing.jaxb.xmlmarshaller.Phone;
+import org.eclipse.persistence.testing.oxm.xmlmarshaller.Car;
+
 public class ValidatorTestCases extends TestCase {
     private final static String CONTROL_XML_FILE_NAME = "org/eclipse/persistence/testing/oxm/jaxb/Employee_WithAddresses.xml";
     private final static String CONTROL_XML_ADDRESS_FAIL = "org/eclipse/persistence/testing/oxm/jaxb/Employee_WithAddresses_Fail.xml";
     private final static String CONTROL_XML_INHERITANCE_FILE_NAME = "org/eclipse/persistence/testing/oxm/jaxb/Employee_WithPOBoxAddress.xml";
     private final static String CONTROL_JOB_FILE_NAME = "org/eclipse/persistence/testing/oxm/jaxb/Job_Empty.xml";
     private JAXBContext jaxbContext;
-    private Validator validator;
+    private JAXBValidator validator;
     private Unmarshaller unmarshaller;
     private String contextPath;
 
@@ -42,7 +51,7 @@ public ValidatorTestCases(String name) {
     public void setUp() throws Exception {
         contextPath = System.getProperty("jaxb.test.contextpath", JAXBSAXTestSuite.CONTEXT_PATH);
 
-        jaxbContext = JAXBContext.newInstance(contextPath);
+        jaxbContext = (JAXBContext) JAXBContext.newInstance(contextPath);
         validator = jaxbContext.createValidator();
         unmarshaller = jaxbContext.createUnmarshaller();
     }
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/beanvalidation/dom/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/beanvalidation/dom/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/beanvalidation/dom/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/dynamic/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/dynamic/jaxb.properties
deleted file mode 100644
index ffc535d..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/dynamic/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/dynamic/secondproject/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/dynamic/secondproject/jaxb.properties
deleted file mode 100644
index 0486791..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/dynamic/secondproject/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.DynamicJAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/interfaces/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/interfaces/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/interfaces/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/javadoc/xmlseealso/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/javadoc/xmlseealso/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/javadoc/xmlseealso/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/jaxbcontext/xlink/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/jaxbcontext/xlink/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/jaxbcontext/xlink/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/referenceresolver/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/referenceresolver/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/referenceresolver/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/schemagen/date/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/schemagen/date/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/schemagen/date/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/schemagen/inheritance/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/schemagen/inheritance/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/schemagen/inheritance/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/xmladapter/elementref/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/xmladapter/elementref/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/jaxb/xmladapter/elementref/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/dom/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/dom/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/dom/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/sax/jaxb.properties b/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/sax/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/moxy/org.eclipse.persistence.moxy/src/test/resources/org/eclipse/persistence/testing/oxm/jaxb/sax/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/json/model/jaxb.properties b/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/json/model/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/json/model/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/largexml/bigpo/jaxb.properties b/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/largexml/bigpo/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/largexml/bigpo/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/moxy/referenceresolver/jaxb.properties b/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/moxy/referenceresolver/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/moxy/referenceresolver/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/smallxml/workorder/jaxb.properties b/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/smallxml/workorder/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/performance/eclipselink.perf.test/src/test/resources/org/eclipse/persistence/testing/perf/smallxml/workorder/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/pom.xml b/pom.xml
index c082a07..7832a35 100644
--- a/pom.xml
+++ b/pom.xml
@@ -186,14 +186,15 @@
         <el.version>4.0.1</el.version>
         <glassfish.version>6.2.0</glassfish.version>
         <jaxwsrt.version>3.0.1</jaxwsrt.version>
-        <jaxb.version>3.0.2-b01</jaxb.version>
-        <jaxb.api.version>3.0.1</jaxb.api.version>
-        <soap.api.version>2.0.1</soap.api.version>
+        <jaxb.version>3.1.0-M1</jaxb.version>
+        <jaxb.api.version>4.0.0-RC2</jaxb.api.version>
+        <soap.api.version>3.0.0-RC1</soap.api.version>
         <jersey.version>3.0.2</jersey.version>
         <jms.version>3.0.0</jms.version>
         <json.version>2.0.1</json.version>
         <jpa.api.version>3.0.0</jpa.api.version>
-        <mail.version>2.0.1</mail.version>
+        <mail-api.version>2.1.0-RC1</mail-api.version>
+        <angus-mail.version>1.0.0-M1</angus-mail.version>
         <oracle.ddlparser.version>3.0.0</oracle.ddlparser.version>
         <org.glassfish.corba.version>4.2.4</org.glassfish.corba.version>
         <parsson.version>1.0.0</parsson.version>
@@ -586,9 +587,14 @@
                 <version>${angus-activation.version}</version>
             </dependency>
             <dependency>
-                <groupId>com.sun.mail</groupId>
-                <artifactId>jakarta.mail</artifactId>
-                <version>${mail.version}</version>
+                <groupId>jakarta.mail</groupId>
+                <artifactId>jakarta.mail-api</artifactId>
+                <version>${mail-api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.eclipse.angus</groupId>
+                <artifactId>angus-mail</artifactId>
+                <version>${angus-mail.version}</version>
             </dependency>
             <dependency>
                 <groupId>com.sun.xml.bind</groupId>
diff --git a/sdo/org.eclipse.persistence.sdo/pom.xml b/sdo/org.eclipse.persistence.sdo/pom.xml
index d54be37..f1e311c 100644
--- a/sdo/org.eclipse.persistence.sdo/pom.xml
+++ b/sdo/org.eclipse.persistence.sdo/pom.xml
@@ -87,8 +87,8 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>jakarta.mail</artifactId>
+            <groupId>org.eclipse.angus</groupId>
+            <artifactId>angus-mail</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/datafactory/jaxb.properties b/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/datafactory/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/datafactory/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/helpercontext/jaxb.properties b/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/helpercontext/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/helpercontext/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/jaxb/inverse/jaxb.properties b/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/jaxb/inverse/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/jaxb/inverse/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/jaxb/jaxb.properties b/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/jaxb/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/jaxb/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
diff --git a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/xsdhelper/jaxb.properties b/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/xsdhelper/jaxb.properties
deleted file mode 100644
index f123872..0000000
--- a/sdo/org.eclipse.persistence.sdo/src/test/resources/org/eclipse/persistence/testing/sdo/helper/jaxbhelper/xsdhelper/jaxb.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (c) 2018, 2020 Oracle and/or its affiliates. All rights reserved.
-#
-# This program and the accompanying materials are made available under the
-# terms of the Eclipse Public License v. 2.0 which is available at
-# http://www.eclipse.org/legal/epl-2.0,
-# or the Eclipse Distribution License v. 1.0 which is available at
-# http://www.eclipse.org/org/documents/edl-v10.php.
-#
-# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-#
-
-jakarta.xml.bind.JAXBContextFactory=org.eclipse.persistence.jaxb.JAXBContextFactory
