diff --git a/NOTICE.md b/NOTICE.md
index 2c86b6a..9e0b850 100644
--- a/NOTICE.md
+++ b/NOTICE.md
@@ -47,6 +47,11 @@
 * Copyright: 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
 * by the @authors tag.
 
+Hibernate Validator CDI, 6.1.2.Final 
+* License: Apache License, 2.0
+* Project: https://beanvalidation.org/
+* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate
+
 Bootstrap v3.3.7
 * License: MIT license (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * Project: http://getbootstrap.com
@@ -65,7 +70,7 @@
 * Project: http://www.javassist.org/
 * Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.
 
-Jackson JAX-RS Providers Version 2.9.9
+Jackson JAX-RS Providers Version 2.10.1
 * License: Apache License, 2.0
 * Project: https://github.com/FasterXML/jackson-jaxrs-providers
 * Copyright: (c) 2009-2011 FasterXML, LLC. All rights reserved unless otherwise indicated.
@@ -90,7 +95,7 @@
 * Project: http://www.kineticjs.com, https://github.com/ericdrowell/KineticJS
 * Copyright: Eric Rowell
 
-org.objectweb.asm Version 7.2
+org.objectweb.asm Version 8.0
 * License: Modified BSD (http://asm.objectweb.org/license.html)
 * Copyright (c) 2000-2011 INRIA, France Telecom. All rights reserved.
 
diff --git a/bom/pom.xml b/bom/pom.xml
index 9522a38..069a15e 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -387,6 +387,7 @@
             <plugin>
                 <groupId>org.glassfish.copyright</groupId>
                 <artifactId>glassfish-copyright-maven-plugin</artifactId>
+                <version>2.0</version>
                 <inherited>true</inherited>
             </plugin>
             <plugin>
diff --git a/bundles/jaxrs-ri/pom.xml b/bundles/jaxrs-ri/pom.xml
index 6d5f596..8c41c85 100644
--- a/bundles/jaxrs-ri/pom.xml
+++ b/bundles/jaxrs-ri/pom.xml
@@ -278,12 +278,12 @@
                             jersey.repackaged.org.objectweb.asm.*;version=${project.version}
                         </Export-Package>
                         <Import-Package><![CDATA[
-                            javax.servlet.annotation.*;resolution:=optional;version="[2.4,5.0)",
-                            javax.servlet.descriptor.*;resolution:=optional;version="[2.4,5.0)",
-                            javax.servlet.*;version="[2.4,5.0)",
+                            javax.servlet.annotation.*;resolution:=optional;version="[3.0,6.0)",
+                            javax.servlet.descriptor.*;resolution:=optional;version="[3.0,6.0)",
+                            javax.servlet.*;version="[3.0,6.0)",
                             ${jakarta.annotation.osgi.version},
-                            javax.persistence.*;resolution:=optional,
-                            jakarta.validation.*;resolution:=optional;version="[2,4)",
+                            jakarta.persistence.*;resolution:=optional,
+                            jakarta.validation.*;resolution:=optional;version="[3,4)",
                             sun.misc.*;resolution:=optional,
                             ${hk2.osgi.version},
                             *
@@ -373,10 +373,10 @@
                         <phase>package</phase>
                         <configuration>
                             <tasks>
-                                <jar destfile="${project.build.directory}/${artifactId}.jar" update="true">
+                                <jar destfile="${project.build.directory}/${project.artifactId}.jar" update="true">
                                     <zipfileset dir="../.." includes="NOTICE.md" prefix="META-INF" />
                                 </jar>
-                                <jar destfile="${project.build.directory}/${artifactId}-sources.jar" update="true">
+                                <jar destfile="${project.build.directory}/${project.artifactId}-sources.jar" update="true">
                                     <zipfileset dir="../.." includes="NOTICE.md" prefix="META-INF" />
                                 </jar>
                             </tasks>
diff --git a/bundles/jaxrs-ri/src/main/assembly/common-dependencies.xml b/bundles/jaxrs-ri/src/main/assembly/common-dependencies.xml
index 144b51d..8baea9c 100644
--- a/bundles/jaxrs-ri/src/main/assembly/common-dependencies.xml
+++ b/bundles/jaxrs-ri/src/main/assembly/common-dependencies.xml
@@ -30,10 +30,10 @@
                 <exclude>jakarta.ws.rs:*</exclude>
                 <exclude>org.glassfish.jersey.*:*</exclude>
                 <!-- CDI API dependencies come from yasson, cdi is optional there -->
-                <exclude>javax.enterprise:cdi-api:jar:*</exclude>
+                <exclude>jakarta.enterprise:cdi-api:jar:*</exclude>
                 <exclude>jakarta.el:el-api:jar:*</exclude>
                 <exclude>org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.1_spec:jar:*</exclude>
-                <exclude>javax.annotation:jsr250-api:jar:*</exclude>
+                <exclude>jakarta.annotation:jsr250-api:jar:*</exclude>
             </excludes>
         </dependencySet>
         <!-- JAX-RS RI provided dependencies -->
diff --git a/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheClientProperties.java b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheClientProperties.java
index 107e749..d5c2ff8 100644
--- a/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheClientProperties.java
+++ b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheClientProperties.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 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
@@ -166,6 +166,20 @@
     public static final String CONNECTION_CLOSING_STRATEGY = "jersey.config.apache.client.connectionClosingStrategy";
 
     /**
+     * A value of {@code false} indicates the client will use default ApacheConnector params. A value
+     * of {@code true} will cause the client to take into account the system properties
+     * {@code https.protocols}, {@code https.cipherSuites}, {@code http.keepAlive},
+     * {@code http.maxConnections}.
+     * <p/>
+     * The value MUST be an instance of {@link java.lang.Boolean}.
+     * <p/>
+     * The default value is {@code false}.
+     * <p/>
+     * The name of the configuration property is <tt>{@value}</tt>.
+     */
+    public static final String USE_SYSTEM_PROPERTIES = "jersey.config.apache.client.useSystemProperties";
+
+    /**
      * Get the value of the specified property.
      *
      * If the property is not set or the actual property value type is not compatible with the specified type, the method will
diff --git a/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java
index 4b02ffd..a2a8f9d 100644
--- a/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java
+++ b/connectors/apache-connector/src/main/java/org/glassfish/jersey/apache/connector/ApacheConnector.java
@@ -357,12 +357,15 @@
             }
         }
 
+        final boolean useSystemProperties =
+            PropertiesHelper.isProperty(config.getProperties(), ApacheClientProperties.USE_SYSTEM_PROPERTIES);
+
         // Create custom connection manager.
         return createConnectionManager(
                 client,
                 config,
                 sslContext,
-                false);
+            useSystemProperties);
     }
 
     private HttpClientConnectionManager createConnectionManager(
diff --git a/containers/glassfish/jersey-gf-ejb/pom.xml b/containers/glassfish/jersey-gf-ejb/pom.xml
index 4ac5bc8..864f135 100644
--- a/containers/glassfish/jersey-gf-ejb/pom.xml
+++ b/containers/glassfish/jersey-gf-ejb/pom.xml
@@ -42,13 +42,12 @@
         <dependency>
             <groupId>jakarta.ejb</groupId>
             <artifactId>jakarta.ejb-api</artifactId>
-            <version>${ejb.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>jakarta.interceptor</groupId>
             <artifactId>jakarta.interceptor-api</artifactId>
-            <version>${javax.interceptor.version}</version>
+            <version>${jakarta.interceptor.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentInterceptor.java b/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentInterceptor.java
index 7bb89a1..82474d1 100644
--- a/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentInterceptor.java
+++ b/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentInterceptor.java
@@ -17,7 +17,7 @@
 package org.glassfish.jersey.gf.ejb.internal;
 
 import jakarta.annotation.PostConstruct;
-import javax.interceptor.InvocationContext;
+import jakarta.interceptor.InvocationContext;
 
 import org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider;
 import org.glassfish.jersey.internal.inject.InjectionManager;
diff --git a/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentProvider.java b/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentProvider.java
index a8d1886..b37fce0 100644
--- a/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentProvider.java
+++ b/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbComponentProvider.java
@@ -42,9 +42,9 @@
 import jakarta.ws.rs.ext.ExceptionMapper;
 
 import jakarta.annotation.Priority;
-import javax.ejb.Local;
-import javax.ejb.Remote;
-import javax.ejb.Stateless;
+import jakarta.ejb.Local;
+import jakarta.ejb.Remote;
+import jakarta.ejb.Stateless;
 import jakarta.inject.Singleton;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
@@ -117,7 +117,7 @@
                 }
                 return stateless.name();
             }
-            final javax.ejb.Singleton singleton = clazz.getAnnotation(javax.ejb.Singleton.class);
+            final jakarta.ejb.Singleton singleton = clazz.getAnnotation(jakarta.ejb.Singleton.class);
             if (singleton != null) {
                 if (singleton.name().isEmpty()) {
                     return clazz.getSimpleName();
@@ -139,9 +139,9 @@
      * Annotations to determine EJB components.
      */
     private static final Set<String> EjbComponentAnnotations = Collections.unmodifiableSet(new HashSet<String>() {{
-        add("javax.ejb.Stateful");
-        add("javax.ejb.Stateless");
-        add("javax.ejb.Singleton");
+        add("jakarta.ejb.Stateful");
+        add("jakarta.ejb.Stateless");
+        add("jakarta.ejb.Singleton");
     }});
 
     private InjectionManager injectionManager = null;
@@ -380,7 +380,7 @@
     }
 
     private static boolean isAcceptableLocalInterface(final Class<?> iface) {
-        if ("javax.ejb".equals(iface.getPackage().getName())) {
+        if ("jakarta.ejb".equals(iface.getPackage().getName())) {
             return false;
         }
         return !Serializable.class.equals(iface) && !Externalizable.class.equals(iface);
diff --git a/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbExceptionMapper.java b/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbExceptionMapper.java
index 8b46581..1755448 100644
--- a/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbExceptionMapper.java
+++ b/containers/glassfish/jersey-gf-ejb/src/main/java/org/glassfish/jersey/gf/ejb/internal/EjbExceptionMapper.java
@@ -20,7 +20,7 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.ext.ExceptionMapper;
 
-import javax.ejb.EJBException;
+import jakarta.ejb.EJBException;
 import jakarta.inject.Inject;
 import jakarta.inject.Provider;
 
diff --git a/containers/grizzly2-servlet/pom.xml b/containers/grizzly2-servlet/pom.xml
index 43362fa..53b15d1 100644
--- a/containers/grizzly2-servlet/pom.xml
+++ b/containers/grizzly2-servlet/pom.xml
@@ -36,7 +36,7 @@
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
-            <version>${servlet4.version}</version>
+            <version>4.0.3</version>
         </dependency>
 
         <dependency>
@@ -81,7 +81,7 @@
                 <configuration>
                     <instructions>
                         <Import-Package>
-                            javax.servlet.*;version="[2.4,5.0)",
+                            javax.servlet.*;version="[3.0,6.0)",
                             *
                         </Import-Package>
                     </instructions>
diff --git a/containers/jersey-servlet-core/pom.xml b/containers/jersey-servlet-core/pom.xml
index 5bc4d9d..568c236 100644
--- a/containers/jersey-servlet-core/pom.xml
+++ b/containers/jersey-servlet-core/pom.xml
@@ -70,7 +70,7 @@
                     <instructions>
                         <!-- Note: When you're changing these properties change them also in bundles/jax-rs-ri/bundle/pom.xml. -->
                         <Import-Package>
-                            javax.persistence.*;resolution:=optional,
+                            jakarta.persistence.*;resolution:=optional,
                             javax.servlet.*;version="[2.4,5.0)",
                             ${jakarta.annotation.osgi.version},
                             *
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
index 9efc990..701fceb 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
@@ -58,7 +58,7 @@
 import org.glassfish.jersey.uri.UriComponent;
 
 /**
- * A {@link javax.servlet.Servlet} or {@link Filter} for deploying root resource classes.
+ * A {@link jakarta.servlet.Servlet} or {@link Filter} for deploying root resource classes.
  * <p />
  * The following sections make reference to initialization parameters. Unless
  * otherwise specified the initialization parameters apply to both server
@@ -96,8 +96,8 @@
  * and {@link jakarta.ws.rs.core.Application} classes using {@link jakarta.ws.rs.core.Context
  * &#64;Context} annotation:
  * {@link HttpServletRequest}, {@link HttpServletResponse},
- * {@link ServletContext}, {@link javax.servlet.ServletConfig} and {@link WebConfig}.
- * If this class is used as a Servlet then the {@link javax.servlet.ServletConfig} class may
+ * {@link ServletContext}, {@link jakarta.servlet.ServletConfig} and {@link WebConfig}.
+ * If this class is used as a Servlet then the {@link jakarta.servlet.ServletConfig} class may
  * be injected. If this class is used as a servlet filter then the {@link FilterConfig}
  * class may be injected. {@link WebConfig} may be injected to abstract
  * servlet or filter deployment.
@@ -120,7 +120,7 @@
  *     <param-value>persistence/widget</param-value>
  * </init-param>
  * }</pre>
- * Given the above, Jersey will inject the {@link javax.persistence.EntityManagerFactory EntityManagerFactory} found
+ * Given the above, Jersey will inject the {@link jakarta.persistence.EntityManagerFactory EntityManagerFactory} found
  * at {@code java:comp/env/persistence/widget} in JNDI when encountering a
  * field or parameter annotated with {@code @PersistenceUnit(unitName="WidgetPU")}.
  *
@@ -148,7 +148,7 @@
      * Initiate the Web component.
      *
      * @param webConfig the Web configuration.
-     * @throws javax.servlet.ServletException in case of an initialization failure
+     * @throws jakarta.servlet.ServletException in case of an initialization failure
      */
     protected void init(final WebConfig webConfig) throws ServletException {
         webComponent = new WebComponent(webConfig, resourceConfig);
@@ -187,7 +187,7 @@
      *                          HTTP request
      * @throws ServletException if the HTTP request cannot
      *                          be handled
-     * @see javax.servlet.Servlet#service
+     * @see jakarta.servlet.Servlet#service
      */
     @Override
     public void service(final ServletRequest req, final ServletResponse res)
@@ -209,7 +209,7 @@
      * Receives standard HTTP requests from the public {@code service} method and dispatches
      * them to the {@code do}<i>XXX</i> methods defined in
      * this class. This method is an HTTP-specific version of the
-     * {@link javax.servlet.Servlet#service} method. There's no
+     * {@link jakarta.servlet.Servlet#service} method. There's no
      * need to override this method.
      *
      * @param request  the {@link HttpServletRequest} object that
@@ -223,7 +223,7 @@
      *                          HTTP request
      * @throws ServletException if the HTTP request
      *                          cannot be handled
-     * @see javax.servlet.Servlet#service
+     * @see jakarta.servlet.Servlet#service
      */
     @Override
     protected void service(final HttpServletRequest request, final HttpServletResponse response)
@@ -352,9 +352,9 @@
      *
      * @param baseUri    the base URI of the request.
      * @param requestUri the URI of the request.
-     * @param request    the {@link javax.servlet.http.HttpServletRequest} object that contains the request the client made to
+     * @param request    the {@link jakarta.servlet.http.HttpServletRequest} object that contains the request the client made to
      *                   the Web component.
-     * @param response   the {@link javax.servlet.http.HttpServletResponse} object that contains the response the Web component
+     * @param response   the {@link jakarta.servlet.http.HttpServletResponse} object that contains the response the Web component
      *                   returns to the client.
      * @return lazily initialized response status code {@link Value value provider}. If not resolved in the moment of call to
      * {@link Value#get()}, {@code -1} is returned.
@@ -372,9 +372,9 @@
      *
      * @param baseUri    the base URI of the request.
      * @param requestUri the URI of the request.
-     * @param request    the {@link javax.servlet.http.HttpServletRequest} object that contains the request the client made to
+     * @param request    the {@link jakarta.servlet.http.HttpServletRequest} object that contains the request the client made to
      *                   the Web component.
-     * @param response   the {@link javax.servlet.http.HttpServletResponse} object that contains the response the Web component
+     * @param response   the {@link jakarta.servlet.http.HttpServletResponse} object that contains the response the Web component
      *                   returns to the client.
      * @return returns {@link ResponseWriter}, Servlet's {@link org.glassfish.jersey.server.spi.ContainerResponseWriter}
      *         implementation, into which processed request response was written to.
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletProperties.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletProperties.java
index 7db4dee..3689e62 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletProperties.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/ServletProperties.java
@@ -37,7 +37,7 @@
      * without parsing the {@code web.xml}, hence why this property is necessary.)
      * <p>
      * The property is only applicable when {@link ServletContainer Jersey servlet
-     * container} is configured to run as a {@link javax.servlet.Filter}, otherwise this property
+     * container} is configured to run as a {@link jakarta.servlet.Filter}, otherwise this property
      * will be ignored.
      * <p>
      * The value of the property may consist of one or more path segments separate by
@@ -62,7 +62,7 @@
      * may be invoked when this feature is enabled.
      * <p></p>
      * The property is only applicable when {@link ServletContainer Jersey servlet
-     * container} is configured to run as a {@link javax.servlet.Filter}, otherwise
+     * container} is configured to run as a {@link jakarta.servlet.Filter}, otherwise
      * this property will be ignored.
      * <p></p>
      * Application code, such as methods corresponding to sub-resource locators
@@ -80,7 +80,7 @@
      * by the underlying servlet engine.
      * <p></p>
      * The property is only applicable when {@link ServletContainer Jersey servlet
-     * container} is configured to run as a {@link javax.servlet.Filter}, otherwise
+     * container} is configured to run as a {@link jakarta.servlet.Filter}, otherwise
      * this property will be ignored. If a servlet path matches this regular
      * expression then the filter forwards the request to the next filter in the
      * filter chain so that the underlying servlet engine can process the request
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/WebComponent.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/WebComponent.java
index 6bb9262..ac56596 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/WebComponent.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/WebComponent.java
@@ -325,10 +325,10 @@
      *
      * @param baseUri         the base URI of the request.
      * @param requestUri      the URI of the request.
-     * @param servletRequest  the {@link javax.servlet.http.HttpServletRequest} object that
+     * @param servletRequest  the {@link jakarta.servlet.http.HttpServletRequest} object that
      *                        contains the request the client made to
      *                        the Web component.
-     * @param servletResponse the {@link javax.servlet.http.HttpServletResponse} object that
+     * @param servletResponse the {@link jakarta.servlet.http.HttpServletResponse} object that
      *                        contains the response the Web component returns
      *                        to the client.
      * @return lazily initialized response status code {@link Value value provider}. If not resolved in the moment of call to
@@ -336,7 +336,7 @@
      * @throws java.io.IOException            if an input or output error occurs
      *                                        while the Web component is handling the
      *                                        HTTP request.
-     * @throws javax.servlet.ServletException if the HTTP request cannot be handled.
+     * @throws jakarta.servlet.ServletException if the HTTP request cannot be handled.
      */
     public Value<Integer> service(
             final URI baseUri,
@@ -357,10 +357,10 @@
      *
      * @param baseUri         the base URI of the request.
      * @param requestUri      the URI of the request.
-     * @param servletRequest  the {@link javax.servlet.http.HttpServletRequest} object that
+     * @param servletRequest  the {@link jakarta.servlet.http.HttpServletRequest} object that
      *                        contains the request the client made to
      *                        the Web component.
-     * @param servletResponse the {@link javax.servlet.http.HttpServletResponse} object that
+     * @param servletResponse the {@link jakarta.servlet.http.HttpServletResponse} object that
      *                        contains the response the Web component returns
      *                        to the client.
      * @return returns {@link ResponseWriter}, Servlet's {@link org.glassfish.jersey.server.spi.ContainerResponseWriter}
@@ -368,7 +368,7 @@
      * @throws java.io.IOException            if an input or output error occurs
      *                                        while the Web component is handling the
      *                                        HTTP request.
-     * @throws javax.servlet.ServletException if the HTTP request cannot be handled.
+     * @throws jakarta.servlet.ServletException if the HTTP request cannot be handled.
      */
      /* package */ ResponseWriter serviceImpl(
             final URI baseUri,
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java
index df757e0..4527f4f 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java
@@ -24,8 +24,8 @@
 import jakarta.ws.rs.core.GenericType;
 
 import jakarta.inject.Singleton;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceUnit;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceUnit;
 import javax.servlet.ServletConfig;
 
 import org.glassfish.jersey.internal.inject.AbstractBinder;
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/Utils.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/Utils.java
index c125116..0794beb 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/Utils.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/Utils.java
@@ -32,7 +32,7 @@
 public final class Utils {
 
     /**
-     * Internal {@link javax.servlet.ServletContext servlet context} attribute name under which an instance of
+     * Internal {@link jakarta.servlet.ServletContext servlet context} attribute name under which an instance of
      * {@link org.glassfish.jersey.server.ResourceConfig resource config} can be stored. The instance is later used to initialize
      * servlet in {@link org.glassfish.jersey.servlet.WebConfig} instead of creating a new one.
      */
@@ -40,7 +40,7 @@
 
     /**
      * Store {@link org.glassfish.jersey.server.ResourceConfig resource config} as an attribute of given
-     * {@link javax.servlet.ServletContext servlet context}. If {@code config} is {@code null} then the previously stored value
+     * {@link jakarta.servlet.ServletContext servlet context}. If {@code config} is {@code null} then the previously stored value
      * (if any) is removed. The {@code configName} is used as an attribute name suffix.
      *
      * @param config resource config to be stored.
@@ -54,7 +54,7 @@
 
     /**
      * Load {@link org.glassfish.jersey.server.ResourceConfig resource config} from given
-     * {@link javax.servlet.ServletContext servlet context}. If found then the resource config is also removed from servlet
+     * {@link jakarta.servlet.ServletContext servlet context}. If found then the resource config is also removed from servlet
      * context. The {@code configName} is used as an attribute name suffix.
      *
      * @param context servlet context to load resource config from.
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/spi/ServletContainerProvider.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/spi/ServletContainerProvider.java
index 0229d03..628e4ba 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/spi/ServletContainerProvider.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/spi/ServletContainerProvider.java
@@ -49,7 +49,7 @@
      *                       implement, or have been annotated with the class types {@link jakarta.ws.rs.Path},
      *                       {@link jakarta.ws.rs.ext.Provider} or {@link jakarta.ws.rs.ApplicationPath}.
      *                       May be empty, never {@code null}.
-     * @throws ServletException if an error has occurred. {@code javax.servlet.ServletContainerInitializer.onStartup}
+     * @throws ServletException if an error has occurred. {@code jakarta.servlet.ServletContainerInitializer.onStartup}
      *                          is interrupted.
      */
     public void preInit(ServletContext servletContext, Set<Class<?>> classes) throws ServletException;
@@ -66,7 +66,7 @@
      *                       {@link jakarta.ws.rs.ext.Provider} or {@link jakarta.ws.rs.ApplicationPath}.
      *                       May be empty, never {@code null}.
      * @param servletNames   the Immutable set of Jersey's ServletContainer names. May be empty, never {@code null}.
-     * @throws ServletException if an error has occurred. {@code javax.servlet.ServletContainerInitializer.onStartup}
+     * @throws ServletException if an error has occurred. {@code jakarta.servlet.ServletContainerInitializer.onStartup}
      *                          is interrupted.
      */
     public void postInit(ServletContext servletContext, Set<Class<?>> classes, final Set<String> servletNames)
@@ -87,7 +87,7 @@
      *
      * @param servletContext the {@code ServletContext} of the JAX-RS/Jersey web application that is being started.
      * @param servletNames   the Immutable set of Jersey's ServletContainer names. May be empty, never {@code null}.
-     * @throws ServletException if an error has occurred. {@code javax.servlet.ServletContainerInitializer.onStartup}
+     * @throws ServletException if an error has occurred. {@code jakarta.servlet.ServletContainerInitializer.onStartup}
      *                          is interrupted.
      */
     public void onRegister(ServletContext servletContext, final Set<String> servletNames) throws ServletException;
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/spi/AsyncContextDelegate.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/spi/AsyncContextDelegate.java
index fae2fd9..1198b7b 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/spi/AsyncContextDelegate.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/spi/AsyncContextDelegate.java
@@ -34,7 +34,7 @@
      * behavior).
      *
      * @see ContainerResponseWriter#suspend(long, java.util.concurrent.TimeUnit, org.glassfish.jersey.server.spi.ContainerResponseWriter.TimeoutHandler)
-     * @throws IllegalStateException if underlying {@link javax.servlet.ServletRequest servlet request} throws an exception.
+     * @throws IllegalStateException if underlying {@link jakarta.servlet.ServletRequest servlet request} throws an exception.
      */
     public void suspend() throws IllegalStateException;
 
diff --git a/containers/jersey-servlet/pom.xml b/containers/jersey-servlet/pom.xml
index 81c871f..0aa4ffe 100644
--- a/containers/jersey-servlet/pom.xml
+++ b/containers/jersey-servlet/pom.xml
@@ -78,7 +78,7 @@
                     <instructions>
                         <!-- Note: When you're changing these properties change them also in bundles/jax-rs-ri/bundle/pom.xml. -->
                         <Import-Package>
-                            javax.servlet.*;version="[3.0,5.0)",
+                            javax.servlet.*;version="[3.0,6.0)",
                             ${jakarta.annotation.osgi.version},
                             *
                         </Import-Package>
diff --git a/containers/jetty-servlet/pom.xml b/containers/jetty-servlet/pom.xml
index 1bcc66c..dff80f1 100644
--- a/containers/jetty-servlet/pom.xml
+++ b/containers/jetty-servlet/pom.xml
@@ -38,6 +38,11 @@
             <artifactId>jersey-container-servlet</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.containers</groupId>
+            <artifactId>jersey-container-servlet-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
 
         <dependency>
             <groupId>org.glassfish.jersey.containers</groupId>
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java b/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java
index 8e0078a..d52fe3e 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/ClientRuntime.java
@@ -34,6 +34,7 @@
 
 import jakarta.inject.Provider;
 
+import org.glassfish.jersey.client.internal.ClientResponseProcessingException;
 import org.glassfish.jersey.client.internal.LocalizationMessages;
 import org.glassfish.jersey.client.spi.AsyncConnectorCallback;
 import org.glassfish.jersey.client.spi.Connector;
@@ -299,6 +300,9 @@
             }
 
             response = Stages.process(response, responseProcessingRoot);
+        } catch (final ClientResponseProcessingException crpe) {
+            processingException = crpe;
+            response = crpe.getClientResponse();
         } catch (final ProcessingException pe) {
             processingException = pe;
         } catch (final Throwable t) {
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java b/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java
index 6c2c1cb..d807594 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/JerseyInvocation.java
@@ -25,6 +25,7 @@
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Future;
+import java.util.function.BiFunction;
 import java.util.logging.Logger;
 
 import jakarta.ws.rs.BadRequestException;
@@ -57,6 +58,7 @@
 import jakarta.ws.rs.core.MultivaluedMap;
 import jakarta.ws.rs.core.Response;
 
+import org.glassfish.jersey.client.internal.ClientResponseProcessingException;
 import org.glassfish.jersey.client.internal.LocalizationMessages;
 import org.glassfish.jersey.internal.MapPropertiesDelegate;
 import org.glassfish.jersey.internal.inject.Providers;
@@ -612,9 +614,10 @@
     public Response invoke() throws ProcessingException, WebApplicationException {
         final ClientRuntime runtime = request().getClientRuntime();
         final RequestScope requestScope = runtime.getRequestScope();
-        return requestScope.runInScope(
-                (Producer<Response>) () -> new InboundJaxrsResponse(runtime.invoke(requestForCall(requestContext)),
-                                                                    requestScope));
+
+        return runInScope(((Producer<Response>) () ->
+                        new InboundJaxrsResponse(runtime.invoke(requestForCall(requestContext)), requestScope)),
+                        requestScope);
     }
 
     @Override
@@ -624,17 +627,9 @@
         }
         final ClientRuntime runtime = request().getClientRuntime();
         final RequestScope requestScope = runtime.getRequestScope();
-        //noinspection Duplicates
-        return requestScope.runInScope(() -> {
-            try {
-                return translate(runtime.invoke(requestForCall(requestContext)), requestScope, responseType);
-            } catch (final ProcessingException ex) {
-                if (ex.getCause() instanceof WebApplicationException) {
-                    throw (WebApplicationException) ex.getCause();
-                }
-                throw ex;
-            }
-        });
+
+        return runInScope(() ->
+                translate(runtime.invoke(requestForCall(requestContext)), requestScope, responseType), requestScope);
     }
 
     @Override
@@ -644,41 +639,37 @@
         }
         final ClientRuntime runtime = request().getClientRuntime();
         final RequestScope requestScope = runtime.getRequestScope();
-        //noinspection Duplicates
-        return requestScope.runInScope(() -> {
-            try {
-                return translate(runtime.invoke(requestForCall(requestContext)), requestScope, responseType);
-            } catch (final ProcessingException ex) {
-                if (ex.getCause() instanceof WebApplicationException) {
-                    throw (WebApplicationException) ex.getCause();
-                }
-                throw ex;
+
+        return runInScope(() ->
+                translate(runtime.invoke(requestForCall(requestContext)), requestScope, responseType), requestScope);
+    }
+
+    private <T> T runInScope(Producer<T> producer, RequestScope scope) throws ProcessingException, WebApplicationException {
+        return scope.runInScope(() -> call(producer, scope));
+    }
+
+    private <T> T call(Producer<T> producer, RequestScope scope)
+            throws ProcessingException, WebApplicationException {
+        try {
+            return producer.call();
+        } catch (final ClientResponseProcessingException crpe) {
+            throw new ResponseProcessingException(
+                    translate(crpe.getClientResponse(), scope, Response.class), crpe.getCause()
+            );
+        } catch (final ProcessingException ex) {
+            if (WebApplicationException.class.isInstance(ex.getCause())) {
+                throw (WebApplicationException) ex.getCause();
             }
-        });
+            throw ex;
+        }
     }
 
     @Override
     public Future<Response> submit() {
         final CompletableFuture<Response> responseFuture = new CompletableFuture<>();
         final ClientRuntime runtime = request().getClientRuntime();
-        runtime.submit(runtime.createRunnableForAsyncProcessing(requestForCall(requestContext), new ResponseCallback() {
-
-            @Override
-            public void completed(final ClientResponse response, final RequestScope scope) {
-                if (!responseFuture.isCancelled()) {
-                    responseFuture.complete(new InboundJaxrsResponse(response, scope));
-                } else {
-                    response.close();
-                }
-            }
-
-            @Override
-            public void failed(final ProcessingException error) {
-                if (!responseFuture.isCancelled()) {
-                    responseFuture.completeExceptionally(error);
-                }
-            }
-        }));
+        runtime.submit(runtime.createRunnableForAsyncProcessing(requestForCall(requestContext),
+                new InvocationResponseCallback<>(responseFuture, (request, scope) -> translate(request, scope, Response.class))));
 
         return responseFuture;
     }
@@ -689,35 +680,10 @@
             throw new IllegalArgumentException(LocalizationMessages.RESPONSE_TYPE_IS_NULL());
         }
         final CompletableFuture<T> responseFuture = new CompletableFuture<>();
-        //noinspection Duplicates
         final ClientRuntime runtime = request().getClientRuntime();
-        runtime.submit(runtime.createRunnableForAsyncProcessing(requestForCall(requestContext), new ResponseCallback() {
 
-            @Override
-            public void completed(final ClientResponse response, final RequestScope scope) {
-                if (responseFuture.isCancelled()) {
-                    response.close();
-                    return;
-                }
-                try {
-                    responseFuture.complete(translate(response, scope, responseType));
-                } catch (final ProcessingException ex) {
-                    failed(ex);
-                }
-            }
-
-            @Override
-            public void failed(final ProcessingException error) {
-                if (responseFuture.isCancelled()) {
-                    return;
-                }
-                if (error.getCause() instanceof WebApplicationException) {
-                    responseFuture.completeExceptionally(error.getCause());
-                } else {
-                    responseFuture.completeExceptionally(error);
-                }
-            }
-        }));
+        runtime.submit(runtime.createRunnableForAsyncProcessing(requestForCall(requestContext),
+                new InvocationResponseCallback<T>(responseFuture, (request, scope) -> translate(request, scope, responseType))));
 
         return responseFuture;
     }
@@ -753,36 +719,10 @@
             throw new IllegalArgumentException(LocalizationMessages.RESPONSE_TYPE_IS_NULL());
         }
         final CompletableFuture<T> responseFuture = new CompletableFuture<>();
-        //noinspection Duplicates
         final ClientRuntime runtime = request().getClientRuntime();
-        runtime.submit(runtime.createRunnableForAsyncProcessing(requestForCall(requestContext), new ResponseCallback() {
 
-            @Override
-            public void completed(final ClientResponse response, final RequestScope scope) {
-                if (responseFuture.isCancelled()) {
-                    response.close();
-                    return;
-                }
-
-                try {
-                    responseFuture.complete(translate(response, scope, responseType));
-                } catch (final ProcessingException ex) {
-                    failed(ex);
-                }
-            }
-
-            @Override
-            public void failed(final ProcessingException error) {
-                if (responseFuture.isCancelled()) {
-                    return;
-                }
-                if (error.getCause() instanceof WebApplicationException) {
-                    responseFuture.completeExceptionally(error.getCause());
-                } else {
-                    responseFuture.completeExceptionally(error);
-                }
-            }
-        }));
+        runtime.submit(runtime.createRunnableForAsyncProcessing(requestForCall(requestContext),
+                new InvocationResponseCallback<T>(responseFuture, (request, scope) -> translate(request, scope, responseType))));
 
         return responseFuture;
     }
@@ -883,14 +823,24 @@
 
                 @Override
                 public void failed(final ProcessingException error) {
+                    Exception called = null;
                     try {
                         if (error.getCause() instanceof WebApplicationException) {
                             responseFuture.completeExceptionally(error.getCause());
                         } else if (!responseFuture.isCancelled()) {
-                            responseFuture.completeExceptionally(error);
+                            try {
+                                call(() -> { throw error; }, null);
+                            } catch (Exception ex) {
+                                called = ex;
+                                responseFuture.completeExceptionally(ex);
+                            }
                         }
                     } finally {
-                        callback.failed(error.getCause() instanceof CancellationException ? error.getCause() : error);
+                        callback.failed(
+                                error.getCause() instanceof CancellationException
+                                        ? error.getCause()
+                                        : called != null ? called : error
+                        );
                     }
                 }
             };
@@ -899,7 +849,10 @@
         } catch (final Throwable error) {
             final ProcessingException ce;
             //noinspection ChainOfInstanceofChecks
-            if (error instanceof ProcessingException) {
+            if (error instanceof ClientResponseProcessingException) {
+                ce = new ProcessingException(error.getCause());
+                responseFuture.completeExceptionally(ce);
+            } else if (error instanceof ProcessingException) {
                 ce = (ProcessingException) error;
                 responseFuture.completeExceptionally(ce);
             } else if (error instanceof WebApplicationException) {
@@ -1001,4 +954,50 @@
     ClientRequest request() {
         return requestContext;
     }
+
+    @Override
+    public String toString() {
+        return "JerseyInvocation [" + request().getMethod() + ' ' + request().getUri() + "]";
+    }
+
+    private class InvocationResponseCallback<R> implements ResponseCallback {
+        private final CompletableFuture<R> responseFuture;
+        private final BiFunction<ClientResponse, RequestScope, R> producer;
+
+        private InvocationResponseCallback(CompletableFuture<R> responseFuture,
+                                           BiFunction<ClientResponse, RequestScope, R> producer) {
+            this.responseFuture = responseFuture;
+            this.producer = producer;
+        }
+
+        @Override
+        public void completed(final ClientResponse response, final RequestScope scope) {
+            if (responseFuture.isCancelled()) {
+                response.close();
+                return;
+            }
+
+
+            try {
+                responseFuture.complete(producer.apply(response, scope));
+            } catch (final ProcessingException ex) {
+                failed(ex);
+            }
+        }
+
+        @Override
+        public void failed(final ProcessingException error) {
+            if (responseFuture.isCancelled()) {
+                return;
+            }
+
+            try {
+                call(() -> {
+                    throw error;
+                }, null);
+            } catch (Exception exception) {
+                responseFuture.completeExceptionally(exception);
+            }
+        }
+    }
 }
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/internal/ClientResponseProcessingException.java b/core-client/src/main/java/org/glassfish/jersey/client/internal/ClientResponseProcessingException.java
new file mode 100644
index 0000000..0ddebe3
--- /dev/null
+++ b/core-client/src/main/java/org/glassfish/jersey/client/internal/ClientResponseProcessingException.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.client.internal;
+
+import org.glassfish.jersey.client.ClientResponse;
+
+import jakarta.ws.rs.ProcessingException;
+
+/**
+ * This is a representation of a @{link ProcessingException} containing a @{link ClientResponse} instance.
+ * This exception is meant to be converted to a {@code ResponseProcessingException} at a point where
+ * {@link ClientResponse} is converted to a {@code Response} before it is delivered to a user.
+ * @since 2.31
+ */
+public class ClientResponseProcessingException extends ProcessingException {
+    private static final long serialVersionUID = 3389677946623416847L;
+    private final ClientResponse clientResponse;
+
+    /**
+     * An instance of {@code ClientResponseProcessingException} containing {@link ClientResponse} and cause {@link Throwable}.
+     * @param clientResponse a {@link ClientResponse} to be converted to {@code Response}.
+     * @param cause a cause of the exception.
+     */
+    public ClientResponseProcessingException(ClientResponse clientResponse, Throwable cause) {
+        super(cause);
+        this.clientResponse = clientResponse;
+    }
+
+    /**
+     * Return a {@link ClientResponse} to be converted to {@code Response} to be put to a {@code ResponseProcessingException}.
+     * @return a {@link ClientResponse} to be converted to {@code Response}.
+     */
+    public ClientResponse getClientResponse() {
+        return clientResponse;
+    }
+}
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java
index a3313bb..bf3baef 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/internal/HttpUrlConnector.java
@@ -328,51 +328,61 @@
         secureConnection(request.getClient(), uc);
 
         final Object entity = request.getEntity();
-        if (entity != null) {
-            RequestEntityProcessing entityProcessing = request.resolveProperty(
-                    ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.class);
+        Exception storedException = null;
+        try {
+            if (entity != null) {
+                RequestEntityProcessing entityProcessing = request.resolveProperty(
+                        ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.class);
 
-            if (entityProcessing == null || entityProcessing != RequestEntityProcessing.BUFFERED) {
-                final long length = request.getLengthLong();
-                if (fixLengthStreaming && length > 0) {
-                    // uc.setFixedLengthStreamingMode(long) was introduced in JDK 1.7 and Jersey client supports 1.6+
-                    if ("1.6".equals(Runtime.class.getPackage().getSpecificationVersion())) {
-                        uc.setFixedLengthStreamingMode(request.getLength());
-                    } else {
+                if (entityProcessing == null || entityProcessing != RequestEntityProcessing.BUFFERED) {
+                    final long length = request.getLengthLong();
+                    if (fixLengthStreaming && length > 0) {
                         uc.setFixedLengthStreamingMode(length);
+                    } else if (entityProcessing == RequestEntityProcessing.CHUNKED) {
+                        uc.setChunkedStreamingMode(chunkSize);
                     }
-                } else if (entityProcessing == RequestEntityProcessing.CHUNKED) {
-                    uc.setChunkedStreamingMode(chunkSize);
                 }
-            }
-            uc.setDoOutput(true);
+                uc.setDoOutput(true);
 
-            if ("GET".equalsIgnoreCase(httpMethod)) {
-                final Logger logger = Logger.getLogger(HttpUrlConnector.class.getName());
-                if (logger.isLoggable(Level.INFO)) {
-                    logger.log(Level.INFO, LocalizationMessages.HTTPURLCONNECTION_REPLACES_GET_WITH_ENTITY());
+                if ("GET".equalsIgnoreCase(httpMethod)) {
+                    final Logger logger = Logger.getLogger(HttpUrlConnector.class.getName());
+                    if (logger.isLoggable(Level.INFO)) {
+                        logger.log(Level.INFO, LocalizationMessages.HTTPURLCONNECTION_REPLACES_GET_WITH_ENTITY());
+                    }
                 }
-            }
 
-            request.setStreamProvider(contentLength -> {
+                request.setStreamProvider(contentLength -> {
+                    setOutboundHeaders(request.getStringHeaders(), uc);
+                    return uc.getOutputStream();
+                });
+                request.writeEntity();
+
+            } else {
                 setOutboundHeaders(request.getStringHeaders(), uc);
-                return uc.getOutputStream();
-            });
-            request.writeEntity();
-
-        } else {
-            setOutboundHeaders(request.getStringHeaders(), uc);
+            }
+        } catch (IOException ioe) {
+            if (uc.getResponseCode() == -1) {
+                throw ioe;
+            } else {
+                storedException = ioe;
+            }
         }
 
         final int code = uc.getResponseCode();
         final String reasonPhrase = uc.getResponseMessage();
         final Response.StatusType status =
                 reasonPhrase == null ? Statuses.from(code) : Statuses.from(code, reasonPhrase);
-        final URI resolvedRequestUri;
+
+        URI resolvedRequestUri = null;
         try {
             resolvedRequestUri = uc.getURL().toURI();
         } catch (URISyntaxException e) {
-            throw new ProcessingException(e);
+            // if there is already an exception stored, the stored exception is what matters most
+            if (storedException == null) {
+                storedException = e;
+            } else {
+                storedException.addSuppressed(e);
+            }
         }
 
         ClientResponse responseContext = new ClientResponse(status, request, resolvedRequestUri);
@@ -384,7 +394,22 @@
                   .collect(Collectors.toMap(Map.Entry::getKey,
                                             Map.Entry::getValue))
         );
-        responseContext.setEntityStream(getInputStream(uc));
+
+        try {
+            InputStream inputStream = getInputStream(uc);
+            responseContext.setEntityStream(inputStream);
+        } catch (IOException ioe) {
+            // allow at least a partial response in a ResponseProcessingException
+            if (storedException == null) {
+                storedException = ioe;
+            } else {
+                storedException.addSuppressed(ioe);
+            }
+        }
+
+        if (storedException != null) {
+            throw new ClientResponseProcessingException(responseContext, storedException);
+        }
 
         return responseContext;
     }
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/spi/PostInvocationInterceptor.java b/core-client/src/main/java/org/glassfish/jersey/client/spi/PostInvocationInterceptor.java
index 89de325..88f0d5e 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/spi/PostInvocationInterceptor.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/spi/PostInvocationInterceptor.java
@@ -33,7 +33,7 @@
  * {@link jakarta.ws.rs.client.ClientResponseFilter ClientResponseFilters} are executed.
  * <p/>
  * It is ensured that all {@code PostInvocationInterceptors} are executed after the request, in the reverse order given by the
- * {@link javax.annotation.Priority}, the higher the priority the later the execution. Any {@code Throwable} thrown when
+ * {@link jakarta.annotation.Priority}, the higher the priority the later the execution. Any {@code Throwable} thrown when
  * the {@link PostInvocationInterceptor#afterRequest(ClientRequestContext, ClientResponseContext)} or
  * {@link PostInvocationInterceptor#onException(ClientRequestContext, ExceptionContext)} is being processed is accumulated and
  * a multi RuntimeException with other {@link Throwable#addSuppressed(Throwable) exceptions supressed} is being thrown at the end
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/spi/PreInvocationInterceptor.java b/core-client/src/main/java/org/glassfish/jersey/client/spi/PreInvocationInterceptor.java
index 2615b1b..198f21e 100644
--- a/core-client/src/main/java/org/glassfish/jersey/client/spi/PreInvocationInterceptor.java
+++ b/core-client/src/main/java/org/glassfish/jersey/client/spi/PreInvocationInterceptor.java
@@ -30,7 +30,7 @@
  * {@link jakarta.ws.rs.client.ClientRequestFilter} is invoked.
  * <p/>
  * It is ensured that all {@code PreInvocationInterceptors} are executed before the request, in the order given by the
- * {@link javax.annotation.Priority}, the higher the priority the sooner the execution. Any {@code RuntimeException} thrown when
+ * {@link jakarta.annotation.Priority}, the higher the priority the sooner the execution. Any {@code RuntimeException} thrown when
  * the {@link PreInvocationInterceptor#beforeRequest(ClientRequestContext)} is being processed is accumulated and
  * a multi RuntimeException with other {@link Throwable#addSuppressed(Throwable) exceptions supressed} is being thrown.
  * <p/>
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/inject/Injections.java b/core-common/src/main/java/org/glassfish/jersey/internal/inject/Injections.java
index e14136f..19177cf 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/inject/Injections.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/inject/Injections.java
@@ -81,7 +81,7 @@
      * @param clazz type of service to look for.
      * @param <T>   type of service to look for.
      * @return instance of service with highest priority or {@code null} if service of given type cannot be found.
-     * @see javax.annotation.Priority
+     * @see jakarta.annotation.Priority
      */
     private static <T> Optional<T> lookupService(final Class<T> clazz) {
         List<RankedProvider<T>> providers = new LinkedList<>();
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/spi/AutoDiscoverable.java b/core-common/src/main/java/org/glassfish/jersey/internal/spi/AutoDiscoverable.java
index 7848e2b..078fc67 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/spi/AutoDiscoverable.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/spi/AutoDiscoverable.java
@@ -27,7 +27,7 @@
  * META-INF/services} directory.
  * <p/>
  * Almost all Jersey {@code AutoDiscoverable} implementations have
- * {@link #DEFAULT_PRIORITY} {@link javax.annotation.Priority priority} set.
+ * {@link #DEFAULT_PRIORITY} {@link jakarta.annotation.Priority priority} set.
  *
  * @author Michal Gajdos
  */
diff --git a/core-common/src/main/java/org/glassfish/jersey/message/internal/MessagingBinders.java b/core-common/src/main/java/org/glassfish/jersey/message/internal/MessagingBinders.java
index 55540bc..6a645d2 100644
--- a/core-common/src/main/java/org/glassfish/jersey/message/internal/MessagingBinders.java
+++ b/core-common/src/main/java/org/glassfish/jersey/message/internal/MessagingBinders.java
@@ -22,6 +22,7 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+import java.util.logging.Logger;
 
 import jakarta.ws.rs.RuntimeType;
 import jakarta.ws.rs.ext.MessageBodyReader;
@@ -30,6 +31,7 @@
 import jakarta.inject.Singleton;
 
 import org.glassfish.jersey.CommonProperties;
+import org.glassfish.jersey.internal.LocalizationMessages;
 import org.glassfish.jersey.internal.ServiceFinderBinder;
 import org.glassfish.jersey.internal.inject.AbstractBinder;
 import org.glassfish.jersey.internal.util.ReflectionHelper;
@@ -45,6 +47,8 @@
  */
 public final class MessagingBinders {
 
+    private static final Logger LOGGER = Logger.getLogger(MessagingBinders.class.getName());
+
     /**
      * Prevents instantiation.
      */
@@ -213,6 +217,22 @@
                             break;
                     }
                     providerBinder.bind(binder, provider);
+                } else {
+                    switch (provider) {
+                        case DOMSOURCE:
+                        case SAXSOURCE:
+                        case STREAMSOURCE:
+                            LOGGER.warning(LocalizationMessages.DEPENDENT_CLASS_OF_DEFAULT_PROVIDER_NOT_FOUND(provider.className,
+                                    "MessageBodyReader<" + provider.className + ">")
+                            );
+                            break;
+                        case RENDEREDIMAGE:
+                        case SOURCE:
+                            LOGGER.warning(LocalizationMessages.DEPENDENT_CLASS_OF_DEFAULT_PROVIDER_NOT_FOUND(provider.className,
+                                    "MessageBodyWriter<" + provider.className + ">")
+                            );
+                            break;
+                    }
                 }
             }
         }
@@ -226,14 +246,14 @@
             void bind(AbstractBinder binder, Provider provider);
         }
 
-        private class DomSourceBinder implements ProviderBinder {
+        private static class DomSourceBinder implements ProviderBinder {
             @Override
             public void bind(AbstractBinder binder, Provider provider) {
                 binder.bind(SourceProvider.DomSourceReader.class).to(MessageBodyReader.class).in(Singleton.class);
             }
         }
 
-        private class RenderedImageBinder implements ProviderBinder {
+        private static class RenderedImageBinder implements ProviderBinder {
             @Override
             public void bind(AbstractBinder binder, Provider provider) {
                 binder.bind(RenderedImageProvider.class)
@@ -241,21 +261,21 @@
             }
         }
 
-        private class SaxSourceBinder implements ProviderBinder {
+        private static class SaxSourceBinder implements ProviderBinder {
             @Override
             public void bind(AbstractBinder binder, Provider provider) {
                 binder.bind(SourceProvider.SaxSourceReader.class).to(MessageBodyReader.class).in(Singleton.class);
             }
         }
 
-        private class SourceBinder implements ProviderBinder {
+        private static class SourceBinder implements ProviderBinder {
             @Override
             public void bind(AbstractBinder binder, Provider provider) {
                 binder.bind(SourceProvider.SourceWriter.class).to(MessageBodyWriter.class).in(Singleton.class);
             }
         }
 
-        private class StreamSourceBinder implements ProviderBinder {
+        private static class StreamSourceBinder implements ProviderBinder {
             @Override
             public void bind(AbstractBinder binder, Provider provider) {
                 binder.bind(SourceProvider.StreamSourceReader.class).to(MessageBodyReader.class).in(Singleton.class);
diff --git a/core-common/src/main/java/org/glassfish/jersey/model/ContractProvider.java b/core-common/src/main/java/org/glassfish/jersey/model/ContractProvider.java
index 78950e3..4fdcb3c 100644
--- a/core-common/src/main/java/org/glassfish/jersey/model/ContractProvider.java
+++ b/core-common/src/main/java/org/glassfish/jersey/model/ContractProvider.java
@@ -298,7 +298,7 @@
      * @param contract provider contract.
      * @return provider priority.
      *
-     * @see javax.annotation.Priority
+     * @see jakarta.annotation.Priority
      */
     public int getPriority(final Class<?> contract) {
         if (contracts.containsKey(contract)) {
diff --git a/core-common/src/main/java/org/glassfish/jersey/model/internal/ComponentBag.java b/core-common/src/main/java/org/glassfish/jersey/model/internal/ComponentBag.java
index b2d3fcb..12efe9f 100644
--- a/core-common/src/main/java/org/glassfish/jersey/model/internal/ComponentBag.java
+++ b/core-common/src/main/java/org/glassfish/jersey/model/internal/ComponentBag.java
@@ -429,7 +429,7 @@
      *
      * @param componentClass  registered component class.
      * @param defaultPriority default component priority. If {@value ContractProvider#NO_PRIORITY},
-     *                        the value from the component class {@link javax.annotation.Priority} annotation will be used
+     *                        the value from the component class {@link jakarta.annotation.Priority} annotation will be used
      *                        (if any).
      * @param contractMap     map of contracts and their binding priorities. If {@code null}, the contracts will
      *                        gathered by introspecting the component class. Content of the contract map
@@ -478,7 +478,7 @@
      *
      * @param componentClass  component class to create contract provider model for.
      * @param defaultPriority default component priority. If {@value ContractProvider#NO_PRIORITY},
-     *                        the value from the component class {@link javax.annotation.Priority} annotation will be used
+     *                        the value from the component class {@link jakarta.annotation.Priority} annotation will be used
      *                        (if any).
      * @param contractMap     map of contracts and their binding priorities. If {@code null}, the contracts will
      *                        gathered by introspecting the component class. Content of the contract map
diff --git a/core-common/src/main/java/org/glassfish/jersey/model/internal/ManagedObjectsFinalizer.java b/core-common/src/main/java/org/glassfish/jersey/model/internal/ManagedObjectsFinalizer.java
index 80c9836..428ad60 100644
--- a/core-common/src/main/java/org/glassfish/jersey/model/internal/ManagedObjectsFinalizer.java
+++ b/core-common/src/main/java/org/glassfish/jersey/model/internal/ManagedObjectsFinalizer.java
@@ -28,7 +28,7 @@
  * Invokes {@link PreDestroy} methods on all registered objects, when the injection manager is shut down.
  * <p/>
  * Some objects managed by Jersey are created using {@link InjectionManager#createAndInitialize}. This means
- * that such objects are created, dependencies injected and methods annotated with {@link javax.annotation.PostConstruct}
+ * that such objects are created, dependencies injected and methods annotated with {@link jakarta.annotation.PostConstruct}
  * invoked. Therefore methods annotated with {@link PreDestroy} should be invoked on such objects too, when they are destroyed.
  * <p/>
  * This service invokes {@link PreDestroy} on all registered objects when {@link InjectionManager#shutdown()} is invoked
diff --git a/core-common/src/main/java/org/glassfish/jersey/model/internal/RankedProvider.java b/core-common/src/main/java/org/glassfish/jersey/model/internal/RankedProvider.java
index 8946a20..56b3470 100644
--- a/core-common/src/main/java/org/glassfish/jersey/model/internal/RankedProvider.java
+++ b/core-common/src/main/java/org/glassfish/jersey/model/internal/RankedProvider.java
@@ -38,7 +38,7 @@
     private final Set<Type> contractTypes;
 
     /**
-     * Creates a new {@code RankedProvider} instance. The rank of the provider is obtained from the {@link javax.annotation.Priority}
+     * Creates a new {@code RankedProvider} instance. The rank of the provider is obtained from the {@link jakarta.annotation.Priority}
      * annotation or is set to {@value jakarta.ws.rs.Priorities#USER} if the annotation is not present.
      *
      * @param provider service provider to create a {@code RankedProvider} instance from.
diff --git a/core-common/src/main/java/org/glassfish/jersey/spi/ExecutorServiceProvider.java b/core-common/src/main/java/org/glassfish/jersey/spi/ExecutorServiceProvider.java
index a5b6173..d90c47a 100644
--- a/core-common/src/main/java/org/glassfish/jersey/spi/ExecutorServiceProvider.java
+++ b/core-common/src/main/java/org/glassfish/jersey/spi/ExecutorServiceProvider.java
@@ -37,7 +37,7 @@
  * it may not be desirable to shut down the released executor service in the {@link #dispose} method. Instead, to perform the
  * eventual shut-down procedure, the provider may either rely on an explicit invocation of it's specific clean-up method.
  * Since all Jersey providers operate in a <em>container</em> environment, a good clean-up strategy for a shared executor
- * service provider implementation is to expose a {@link javax.annotation.PreDestroy &#64;PreDestroy}-annotated method
+ * service provider implementation is to expose a {@link jakarta.annotation.PreDestroy &#64;PreDestroy}-annotated method
  * that will be invoked for all instances managed by the container, before the container shuts down.
  * </p>
  * <p>
diff --git a/core-common/src/main/java/org/glassfish/jersey/spi/ScheduledThreadPoolExecutorProvider.java b/core-common/src/main/java/org/glassfish/jersey/spi/ScheduledThreadPoolExecutorProvider.java
index 908b7ac..e805b23 100644
--- a/core-common/src/main/java/org/glassfish/jersey/spi/ScheduledThreadPoolExecutorProvider.java
+++ b/core-common/src/main/java/org/glassfish/jersey/spi/ScheduledThreadPoolExecutorProvider.java
@@ -41,7 +41,7 @@
  * it may not be desirable to shut down the released executor service in the {@link #dispose} method. Instead, to perform the
  * eventual shut-down procedure, the provider may either rely on an explicit invocation of it's specific clean-up method.
  * Since all Jersey providers operate in a <em>container</em> environment, a good clean-up strategy for a shared executor
- * service provider implementation is to expose a {@link javax.annotation.PreDestroy &#64;PreDestroy}-annotated method
+ * service provider implementation is to expose a {@link jakarta.annotation.PreDestroy &#64;PreDestroy}-annotated method
  * that will be invoked for all instances managed by the container, before the container shuts down.
  * </p>
  * <p>
diff --git a/core-common/src/main/resources/org/glassfish/jersey/internal/localization.properties b/core-common/src/main/resources/org/glassfish/jersey/internal/localization.properties
index 6b56cf5..285b9de 100644
--- a/core-common/src/main/resources/org/glassfish/jersey/internal/localization.properties
+++ b/core-common/src/main/resources/org/glassfish/jersey/internal/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2012, 2019 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
 # Copyright (c) 2018 Payara Foundation and/or its affiliates.
 #
 # This program and the accompanying materials are made available under the
@@ -32,6 +32,7 @@
 date.is.null=Date is null.
 dependent.class.of.provider.format.error={0}. A dependent class of the class {1} implementing the provider {2} is malformed. The provider implementation is ignored. Check if the malformed class is part of a stubbed jar that used for compiling only.
 dependent.class.of.provider.not.found=A dependent class, {0}, of the class {1} implementing the provider {2} is not found. The provider implementation is ignored.
+dependent.class.of.default.provider.not.found=A class {0} for a default provider {1} was not found. The provider is not available.
 entity.tag.is.null=Entity tag is null.
 error.caught.while.loading.spi.providers=Error caught while loading SPI providers.
 error.entity.stream.closed=Entity input stream has already been closed.
diff --git a/core-server/pom.xml b/core-server/pom.xml
index beb1e98..9be5832 100644
--- a/core-server/pom.xml
+++ b/core-server/pom.xml
@@ -114,7 +114,7 @@
                     <dependency>
                         <groupId>jakarta.xml.bind</groupId>
                         <artifactId>jakarta.xml.bind-api</artifactId>
-                        <version>${jaxb.api.version}</version>
+                        <version>${jakarta.jaxb.api.version}</version>
                     </dependency>
                     <dependency>
                         <groupId>com.sun.xml.bind</groupId>
@@ -266,6 +266,7 @@
                                 <exclude>org/glassfish/jersey/server/model/OptionsSubResourceMethodTest.java</exclude>
                                 <exclude>org/glassfish/jersey/server/model/OptionsTest.java</exclude>
                                 <exclude>org/glassfish/jersey/server/wadl/generators/resourcedoc/WadlGeneratorResourceDocSupportTest.java</exclude>
+                                <exclude>org/glassfish/jersey/server/ExtendedResourceContextTest.java</exclude>
                             </excludes>
                         </configuration>
                     </plugin>
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/filter/RolesAllowedDynamicFeature.java b/core-server/src/main/java/org/glassfish/jersey/server/filter/RolesAllowedDynamicFeature.java
index ab4982e..e443604 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/filter/RolesAllowedDynamicFeature.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/filter/RolesAllowedDynamicFeature.java
@@ -36,8 +36,8 @@
 import org.glassfish.jersey.server.model.AnnotatedMethod;
 
 /**
- * A {@link DynamicFeature} supporting the {@code javax.annotation.security.RolesAllowed},
- * {@code javax.annotation.security.PermitAll} and {@code javax.annotation.security.DenyAll}
+ * A {@link DynamicFeature} supporting the {@code jakarta.annotation.security.RolesAllowed},
+ * {@code jakarta.annotation.security.PermitAll} and {@code jakarta.annotation.security.DenyAll}
  * on resource methods and sub-resource methods.
  * <p/>
  * The {@link jakarta.ws.rs.core.SecurityContext} is utilized, using the
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/model/ModelProcessor.java b/core-server/src/main/java/org/glassfish/jersey/server/model/ModelProcessor.java
index 5f067b9..b645520 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/model/ModelProcessor.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/model/ModelProcessor.java
@@ -32,7 +32,7 @@
  * processor will be executed with resource model processed by the previous model processor. The first model
  * processor in the chain will be invoked with the initial resource model from which the application was initiated.
  * <p/>
- * Model processors implementations can define {@link javax.annotation.Priority binding priority}
+ * Model processors implementations can define {@link jakarta.annotation.Priority binding priority}
  * to define the order in which they are executed (processors with a lower priority is invoked
  * before processor with a higher priority). The highest possible priority (Integer.MAX_VALUE) is used for
  * model processor which enhance resource models by the default OPTIONS method defined by JAX-RS specification and therefore
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/wadl/WadlFeature.java b/core-server/src/main/java/org/glassfish/jersey/server/wadl/WadlFeature.java
index 5b62cae..f875838 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/wadl/WadlFeature.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/wadl/WadlFeature.java
@@ -20,14 +20,19 @@
 import jakarta.ws.rs.core.FeatureContext;
 
 import jakarta.inject.Singleton;
+import jakarta.xml.bind.JAXBException;
 
 import org.glassfish.jersey.internal.inject.AbstractBinder;
 import org.glassfish.jersey.internal.util.PropertiesHelper;
 import org.glassfish.jersey.server.ServerProperties;
+import org.glassfish.jersey.server.internal.LocalizationMessages;
 import org.glassfish.jersey.server.model.ModelProcessor;
 import org.glassfish.jersey.server.wadl.internal.WadlApplicationContextImpl;
+import org.glassfish.jersey.server.wadl.internal.generators.WadlGeneratorJAXBGrammarGenerator;
 import org.glassfish.jersey.server.wadl.processor.WadlModelProcessor;
 
+import java.util.logging.Logger;
+
 
 /**
  * Feature enabling WADL processing. The feature registers providers and binders needed to enable wadl in the
@@ -38,6 +43,8 @@
  */
 public class WadlFeature implements Feature {
 
+    private static final Logger LOGGER = Logger.getLogger(WadlFeature.class.getName());
+
     @Override
     public boolean configure(FeatureContext context) {
         final boolean disabled = PropertiesHelper.isProperty(context.getConfiguration().getProperty(ServerProperties
@@ -46,6 +53,11 @@
             return false;
         }
 
+        if (!isJaxB()) {
+            LOGGER.warning(LocalizationMessages.WADL_FEATURE_DISABLED());
+            return false;
+        }
+
         context.register(WadlModelProcessor.class);
         context.register(new AbstractBinder() {
             @Override
@@ -56,4 +68,12 @@
 
         return true;
     }
+
+    private static boolean isJaxB() {
+        try {
+            return null != WadlApplicationContextImpl.getJAXBContextFromWadlGenerator(new WadlGeneratorJAXBGrammarGenerator());
+        } catch (JAXBException je) {
+            return false;
+        }
+    }
 }
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlApplicationContextImpl.java b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlApplicationContextImpl.java
index f5e5023..bca2405 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlApplicationContextImpl.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/wadl/internal/WadlApplicationContextImpl.java
@@ -94,7 +94,15 @@
         // create a temporary generator just to do this one task
         final WadlGenerator wadlGenerator = wadlGeneratorConfig.createWadlGenerator(injectionManager);
 
-        JAXBContext jaxbContextCandidate;
+        try {
+            jaxbContext = getJAXBContextFromWadlGenerator(wadlGenerator);
+        } catch (JAXBException ex) {
+            throw new ProcessingException(LocalizationMessages.ERROR_WADL_JAXB_CONTEXT(), ex);
+        }
+    }
+
+    public static JAXBContext getJAXBContextFromWadlGenerator(WadlGenerator wadlGenerator) throws JAXBException {
+        JAXBContext jaxbContextCandidate = null;
 
         final ClassLoader contextClassLoader = AccessController.doPrivileged(ReflectionHelper.getContextClassLoaderPA());
         try {
@@ -117,13 +125,13 @@
                 LOGGER.log(Level.FINE, LocalizationMessages.WADL_JAXB_CONTEXT_FALLBACK(), ex);
                 jaxbContextCandidate = JAXBContext.newInstance(wadlGenerator.getRequiredJaxbContextPath());
             } catch (final JAXBException innerEx) {
-                throw new ProcessingException(LocalizationMessages.ERROR_WADL_JAXB_CONTEXT(), ex);
+               throw ex;
             }
         } finally {
             AccessController.doPrivileged(ReflectionHelper.setContextClassLoaderPA(contextClassLoader));
         }
 
-        jaxbContext = jaxbContextCandidate;
+        return jaxbContextCandidate;
     }
 
     @Override
diff --git a/core-server/src/main/resources/META-INF/NOTICE.markdown b/core-server/src/main/resources/META-INF/NOTICE.markdown
index 2e97c39..4dfbd7f 100644
--- a/core-server/src/main/resources/META-INF/NOTICE.markdown
+++ b/core-server/src/main/resources/META-INF/NOTICE.markdown
@@ -36,7 +36,7 @@
 * Copyright (c) 2015-2018 Oracle and/or its affiliates. All rights reserved.
 * Copyright 2010-2013 Coda Hale and Yammer, Inc.
 
-org.objectweb.asm Version 7.2
+org.objectweb.asm Version 8.0
 * License: Modified BSD (http://asm.objectweb.org/license.html)
 * Copyright: (c) 2000-2011 INRIA, France Telecom. All rights reserved.
 
diff --git a/core-server/src/main/resources/org/glassfish/jersey/server/internal/localization.properties b/core-server/src/main/resources/org/glassfish/jersey/server/internal/localization.properties
index 1c125a7..8629298 100644
--- a/core-server/src/main/resources/org/glassfish/jersey/server/internal/localization.properties
+++ b/core-server/src/main/resources/org/glassfish/jersey/server/internal/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 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
@@ -185,6 +185,7 @@
 user.not.authorized=User not authorized.
 wadl.doc.extended.wadl=This is full WADL including extended resources. To get simplified WADL with users resources only do not use the query parameter {0}. Link: {1}
 wadl.doc.simple.wadl=This is simplified WADL with user and core resources only. To get full WADL with extended resources use the query parameter {0}. Link: {1}
+wadl.feature.disabled=JAXBContext implementation could not be found. WADL feature is disabled.
 wadl.jaxb.context.fallback=Error creating a JAXBContext for wadl serialization. Trying a fallback solution for osgi environments.
 wadl.resourcedoc.ambiguous.method.entries=Ambiguous resource documentation detected: \
   Unique resource method documentation cannot be found for method %{0}.%{1}%{2}. \
diff --git a/core-server/src/test/resources/server.policy b/core-server/src/test/resources/server.policy
index e37eeda..9937a40 100644
--- a/core-server/src/test/resources/server.policy
+++ b/core-server/src/test/resources/server.policy
@@ -59,6 +59,7 @@
   permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
   permission java.lang.RuntimePermission "accessClassInPackage.sun.misc.*";
   permission java.lang.RuntimePermission "accessClassInPackage.sun.reflect";
+  permission java.lang.RuntimePermission "accessClassInPackage.com.sun.xml.internal.bind.v2";
   permission java.lang.RuntimePermission "reflectionFactoryAccess";
 };
 
@@ -74,4 +75,5 @@
   permission java.net.SocketPermission "home", "connect,resolve";
   permission java.lang.RuntimePermission "accessClassInPackage.sun.misc";
   permission java.lang.RuntimePermission "accessClassInPackage.sun.misc.*";
+  permission java.lang.RuntimePermission "accessClassInPackage.com.sun.xml.internal.bind.v2";
 };
diff --git a/docs/pom.xml b/docs/pom.xml
index 82defbe..bc45671 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -59,7 +59,7 @@
                                 <replace file="${src.dir}/jersey.ent" token="$jakarta.el-version" value="${jakarta.el.version}" />
                                 <replace file="${src.dir}/jersey.ent" token="$jax-rs-api-jar-version" value="${jaxrs.impl.version}" />
                                 <replace file="${src.dir}/jersey.ent" token="$jax-rs-version" value="${jaxrs.version}" />
-                                <replace file="${src.dir}/jersey.ent" token="$jaxb-api-jar-version" value="${jaxb.api.version}" />
+                                <replace file="${src.dir}/jersey.ent" token="$jaxb-api-jar-version" value="${jakarta.jaxb.api.version}" />
                                 <replace file="${src.dir}/jersey.ent" token="$repository" value="${javanet.repository.id}" />
                                 <replace file="${src.dir}/jersey.ent" token="$src.branch" value="${jersey.src.branch}" />
                                 <replace file="${src.dir}/jersey.ent" token="$version" value="${jersey.version}" />
diff --git a/docs/src/main/docbook/client.xml b/docs/src/main/docbook/client.xml
index e0b01cb..d57603e 100644
--- a/docs/src/main/docbook/client.xml
+++ b/docs/src/main/docbook/client.xml
@@ -546,8 +546,8 @@
                 do require running on another thread, should be executed using provided services.
             </para>
             <para>
-                Default values do depend on the environment - in Java EE container, it has to be &jee6.javax.enterprise.concurrent.ManagedExecutorService;
-                and &jee6.javax.enterprise.concurrent.ManagedScheduledExecutorService;, for Java SE it would be
+                Default values do depend on the environment - in Java EE container, it has to be &jee6.jakarta.enterprise.concurrent.ManagedExecutorService;
+                and &jee6.jakarta.enterprise.concurrent.ManagedScheduledExecutorService;, for Java SE it would be
                 <literal>ForkJoinPool.commonPool</literal> for Executor service and something undefined for Scheduled
                 executor service.
             </para>
diff --git a/docs/src/main/docbook/entity-filtering.xml b/docs/src/main/docbook/entity-filtering.xml
index 7bf2570..e11ac64 100644
--- a/docs/src/main/docbook/entity-filtering.xml
+++ b/docs/src/main/docbook/entity-filtering.xml
@@ -115,7 +115,7 @@
                 </listitem>
                 <listitem>
                     <para>&jersey.message.filtering.SecurityEntityFilteringFeature;</para>
-                    <para>Filtering based on security (<literal>javax.annotation.security</literal>) and entity-filtering
+                    <para>Filtering based on security (<literal>jakarta.annotation.security</literal>) and entity-filtering
                         annotations.</para>
                 </listitem>
                 <listitem>
@@ -660,13 +660,13 @@
     </section>
 
     <section xml:id="ef.security.annotations">
-        <title>Role-based Entity Filtering using (<literal>javax.annotation.security</literal>) annotations</title>
+        <title>Role-based Entity Filtering using (<literal>jakarta.annotation.security</literal>) annotations</title>
 
         <para>
             Filtering the content sent to the client (or server) based on the authorized security roles is a commonly
             required use case. By registering &jersey.message.filtering.SecurityEntityFilteringFeature; you can
             leverage the Jersey Entity Filtering facility in connection with standard
-            <literal>javax.annotation.security</literal> annotations exactly the same way as you would with custom
+            <literal>jakarta.annotation.security</literal> annotations exactly the same way as you would with custom
             entity-filtering annotations described in previous chapters. Supported security annotations are:
 
             <itemizedlist>
diff --git a/docs/src/main/docbook/filters.xml b/docs/src/main/docbook/filters.xml
index a32b7c6..357771c 100644
--- a/docs/src/main/docbook/filters.xml
+++ b/docs/src/main/docbook/filters.xml
@@ -623,7 +623,7 @@
 
         <para>In case you register more filters and interceptors you might want to define an exact order in which
             they should be invoked. The order can be controlled by the <literal>@Priority</literal> annotation defined
-            by the <literal>javax.annotation.Priority</literal> class. The annotation accepts an integer parameter of priority.
+            by the <literal>jakarta.annotation.Priority</literal> class. The annotation accepts an integer parameter of priority.
             Providers used in request processing (&lit.jaxrs.container.ContainerRequestFilter;,
             &lit.jaxrs.client.ClientRequestFilter;) as well as entity interceptors (&lit.jaxrs.ReaderInterceptor;,
             &lit.jaxrs.WriterInterceptor;) are sorted based on the priority in an ascending manner. So, a request filter with
diff --git a/docs/src/main/docbook/getting-started.xml b/docs/src/main/docbook/getting-started.xml
index d2e34c2..4b0f88e 100644
--- a/docs/src/main/docbook/getting-started.xml
+++ b/docs/src/main/docbook/getting-started.xml
@@ -457,7 +457,7 @@
     [INFO] Copying jetty-servlet-9.0.6.v20130930.jar to .../simple-heroku-webapp/target/dependency/jetty-servlet-9.0.6.v20130930.jar
     [INFO] Copying jakarta.inject-2.2.0-b21.jar to .../simple-heroku-webapp/target/dependency/jakarta.inject-2.2.0-b21.jar
     [INFO] Copying javax.servlet-3.0.0.v201112011016.jar to .../simple-heroku-webapp/target/dependency/javax.servlet-3.0.0.v201112011016.jar
-    [INFO] Copying javax.annotation-api-1.2.jar to .../simple-heroku-webapp/target/dependency/javax.annotation-api-1.2.jar
+    [INFO] Copying jakarta.annotation-api-1.2.jar to .../simple-heroku-webapp/target/dependency/jakarta.annotation-api-1.2.jar
     [INFO] ------------------------------------------------------------------------
     [INFO] BUILD SUCCESS
     [INFO] ------------------------------------------------------------------------
@@ -580,7 +580,7 @@
            [INFO]
            [INFO] --- maven-dependency-plugin:2.1:copy-dependencies (copy-dependencies) @ simple-heroku-webapp ---
            [INFO] Copying guava-14.0.1.jar to /tmp/build_992cc747-26d6-4800-bdb1-add47b9583cd/target/dependency/guava-14.0.1.jar
-           [INFO] Copying javax.annotation-api-1.2.jar to /tmp/build_992cc747-26d6-4800-bdb1-add47b9583cd/target/dependency/javax.annotation-api-1.2.jar
+           [INFO] Copying jakarta.annotation-api-1.2.jar to /tmp/build_992cc747-26d6-4800-bdb1-add47b9583cd/target/dependency/jakarta.annotation-api-1.2.jar
            [INFO] Copying validation-api-1.1.0.Final.jar to /tmp/build_992cc747-26d6-4800-bdb1-add47b9583cd/target/dependency/validation-api-1.1.0.Final.jar
            [INFO] Copying jakarta.ws.rs-api-2.0.jar to /tmp/build_992cc747-26d6-4800-bdb1-add47b9583cd/target/dependency/jakarta.ws.rs-api-2.0.jar
            [INFO] Copying jetty-http-9.0.6.v20130930.jar to /tmp/build_992cc747-26d6-4800-bdb1-add47b9583cd/target/dependency/jetty-http-9.0.6.v20130930.jar
diff --git a/docs/src/main/docbook/jersey.ent b/docs/src/main/docbook/jersey.ent
index 4c61226..8eee614 100644
--- a/docs/src/main/docbook/jersey.ent
+++ b/docs/src/main/docbook/jersey.ent
@@ -276,9 +276,9 @@
 <!ENTITY jdk8.ForkJoinPool.commonPool "<link xlink:href='&jdk8.javadoc.uri;/java/util/concurrent/ForkJoinPool.html#commonPool--'>ForkJoinPool#commonPool()</link>">
 <!ENTITY jdk8.Stream "<link xlink:href='&jdk8.javadoc.uri;/java/util/stream/Stream.html'>Stream</link>">
 
-<!ENTITY jee6.annotations.DenyAll "<link xlink:href='&jee.javadoc.uri;/javax/annotation/security/DenyAll.html'>@DenyAll</link>">
-<!ENTITY jee6.annotations.PermitAll "<link xlink:href='&jee.javadoc.uri;/javax/annotation/security/PermitAll.html'>@PermitAll</link>">
-<!ENTITY jee6.annotations.RolesAllowed "<link xlink:href='&jee.javadoc.uri;/javax/annotation/security/RolesAllowed.html'>@RolesAllowed</link>">
+<!ENTITY jee6.annotations.DenyAll "<link xlink:href='&jee.javadoc.uri;/jakarta.annotation/security/DenyAll.html'>@DenyAll</link>">
+<!ENTITY jee6.annotations.PermitAll "<link xlink:href='&jee.javadoc.uri;/jakarta.annotation/security/PermitAll.html'>@PermitAll</link>">
+<!ENTITY jee6.annotations.RolesAllowed "<link xlink:href='&jee.javadoc.uri;/jakarta.annotation/security/RolesAllowed.html'>@RolesAllowed</link>">
 <!ENTITY jee6.inject.Singleton "<link xlink:href='&jee.javadoc.uri;/jakarta.inject/Singleton.html'>@Singleton</link>">
 <!ENTITY jee6.jakarta.inject.Inject "<link xlink:href='&jee.javadoc.uri;/jakarta.inject/Inject.html'>@Inject</link>">
 <!ENTITY jee6.jakarta.inject.Provider "<link xlink:href='&jee.javadoc.uri;/jakarta.inject/Provider.html'>Provider</link>">
@@ -286,8 +286,8 @@
 <!ENTITY jee6.servlet.HttpServletRequest "<link xlink:href='&jee.javadoc.uri;/javax/servlet/http/HttpServletRequest.html'>HttpServletRequest</link>">
 <!ENTITY jee6.servlet.HttpSession "<link xlink:href='&jee.javadoc.uri;/javax/servlet/http/HttpSession.html'>HttpSession</link>">
 
-<!ENTITY jee6.javax.enterprise.concurrent.ManagedExecutorService "<link xlink:href='&jee.javadoc.uri;/javax/enterprise/concurrent/ManagedExecutorService.html'>ManagedExecutorService</link>">
-<!ENTITY jee6.javax.enterprise.concurrent.ManagedScheduledExecutorService "<link xlink:href='&jee.javadoc.uri;/javax/enterprise/concurrent/ManagedScheduledExecutorService.html'>ManagedScheduledExecutorService</link>">
+<!ENTITY jee6.jakarta.enterprise.concurrent.ManagedExecutorService "<link xlink:href='&jee.javadoc.uri;/jakarta.enterprise/concurrent/ManagedExecutorService.html'>ManagedExecutorService</link>">
+<!ENTITY jee6.jakarta.enterprise.concurrent.ManagedScheduledExecutorService "<link xlink:href='&jee.javadoc.uri;/jakarta.enterprise/concurrent/ManagedScheduledExecutorService.html'>ManagedScheduledExecutorService</link>">
 
 <!ENTITY jersey.apache.ApacheConnectorProvider "<link xlink:href='&jersey.javadoc.uri.prefix;/apache/connector/ApacheConnectorProvider.html'>ApacheConnectorProvider</link>">
 <!ENTITY jersey.client.ChunkParser "<link xlink:href='&jersey.javadoc.uri.prefix;/client/ChunkParser.html'>ChunkParser</link>">
diff --git a/docs/src/main/docbook/media.xml b/docs/src/main/docbook/media.xml
index 301c6c2..8b7e728 100644
--- a/docs/src/main/docbook/media.xml
+++ b/docs/src/main/docbook/media.xml
@@ -489,7 +489,7 @@
                         <listitem>
                             <para>
                                 <literal>JsonGenerator.PRETTY_PRINTING</literal>
-                                ("<literal>javax.json.stream.JsonGenerator.prettyPrinting</literal>")
+                                ("<literal>jakarta.json.stream.JsonGenerator.prettyPrinting</literal>")
                             </para>
                         </listitem>
                     </itemizedlist>
diff --git a/docs/src/main/docbook/representations.xml b/docs/src/main/docbook/representations.xml
index fda8d6a..74d9af7 100644
--- a/docs/src/main/docbook/representations.xml
+++ b/docs/src/main/docbook/representations.xml
@@ -259,7 +259,7 @@
             response. For such cases it is possible to use a custom exception mapping provider. The provider must implement
             the &jaxrs.ext.ExceptionMapper; interface. For example, the following
             maps the
-            <link xlink:href="http://docs.oracle.com/javaee/5/api/javax/persistence/EntityNotFoundException.html">EntityNotFoundException</link>
+            <link xlink:href="http://docs.oracle.com/javaee/5/api/jakarta.persistence/EntityNotFoundException.html">EntityNotFoundException</link>
             to a HTTP 404 (Not Found) response:
         </para>
 
@@ -267,8 +267,8 @@
             <example>
                 <title>Mapping generic exceptions to responses</title>
                 <programlisting language="java" linenumbering="numbered">@Provider
-public class EntityNotFoundMapper implements ExceptionMapper&lt;javax.persistence.EntityNotFoundException&gt; {
-  public Response toResponse(javax.persistence.EntityNotFoundException ex) {
+public class EntityNotFoundMapper implements ExceptionMapper&lt;jakarta.persistence.EntityNotFoundException&gt; {
+  public Response toResponse(jakarta.persistence.EntityNotFoundException ex) {
     return Response.status(404).
       entity(ex.getMessage()).
       type("text/plain").
@@ -280,7 +280,7 @@
 
         <para>The above class is annotated with &jaxrs.ext.Provider;, this declares that the class is of interest to the JAX-RS runtime. Such a
             class may be added to the set of classes of the &jaxrs.core.Application; instance that is configured. When an application throws an
-            <link xlink:href="http://docs.oracle.com/javaee/6/api/javax/persistence/EntityNotFoundException.html">EntityNotFoundException</link>
+            <link xlink:href="http://docs.oracle.com/javaee/6/api/jakarta.persistence/EntityNotFoundException.html">EntityNotFoundException</link>
             the
             <literal>toResponse</literal>
             method of the
diff --git a/docs/src/main/docbook/security.xml b/docs/src/main/docbook/security.xml
index 492fdcb..5f56835 100644
--- a/docs/src/main/docbook/security.xml
+++ b/docs/src/main/docbook/security.xml
@@ -171,7 +171,7 @@
             </section>
 
             <section xml:id="annotation-based-security">
-                <title>Securing JAX-RS resources with standard <literal>javax.annotation.security</literal> annotations</title>
+                <title>Securing JAX-RS resources with standard <literal>jakarta.annotation.security</literal> annotations</title>
 
                 <para>
                     With Jersey you can define the access to resources based on the user group using annotations. You
@@ -202,10 +202,10 @@
                 </para>
                 <para>
                     Once the feature is registered, you can use annotations from package
-                    <literal>javax.annotation.security</literal> defined by JSR-250. See the following example.
+                    <literal>jakarta.annotation.security</literal> defined by JSR-250. See the following example.
 
                     <example>
-                        <title>Applying <literal>javax.annotation.security</literal> to JAX-RS resource methods.</title>
+                        <title>Applying <literal>jakarta.annotation.security</literal> to JAX-RS resource methods.</title>
                         <programlisting language="java" linenumbering="numbered"><![CDATA[@Path("/")
 @PermitAll
 public class Resource {
diff --git a/examples/bookmark-em/pom.xml b/examples/bookmark-em/pom.xml
index 571b0a7..c8fb704 100644
--- a/examples/bookmark-em/pom.xml
+++ b/examples/bookmark-em/pom.xml
@@ -45,7 +45,6 @@
         <dependency>
             <groupId>jakarta.ejb</groupId>
             <artifactId>jakarta.ejb-api</artifactId>
-            <version>${ejb.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntity.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntity.java
index ea6cfd1..8d31bc2 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntity.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntity.java
@@ -14,16 +14,16 @@
 import java.util.Date;
 
 import jakarta.annotation.ManagedBean;
-import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.EmbeddedId;
+import jakarta.persistence.Entity;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
 
 /**
  * Entity class BookmarkEntity.
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntityPK.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntityPK.java
index 07ebe52..6dd0e7a 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntityPK.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/BookmarkEntityPK.java
@@ -12,8 +12,8 @@
 
 import java.io.Serializable;
 
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
 
 /**
  * Primary Key class BookmarkEntityPK for entity class BookmarkEntity.
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/UserEntity.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/UserEntity.java
index 1a91d2b..caed7a0 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/UserEntity.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/entity/UserEntity.java
@@ -13,14 +13,14 @@
 import java.io.Serializable;
 import java.util.Collection;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
 
 /**
  * Entity class UserEntity.
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarkResource.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarkResource.java
index 18bf97e..a4abdcd 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarkResource.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarkResource.java
@@ -19,8 +19,8 @@
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.persistence.EntityManager;
-import javax.transaction.UserTransaction;
+import jakarta.persistence.EntityManager;
+import jakarta.transaction.UserTransaction;
 
 import org.glassfish.jersey.examples.bookmark_em.entity.BookmarkEntity;
 import org.glassfish.jersey.examples.bookmark_em.entity.BookmarkEntityPK;
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarksResource.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarksResource.java
index deb5585..f0294b3 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarksResource.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/BookmarksResource.java
@@ -24,8 +24,8 @@
 import jakarta.ws.rs.core.UriBuilder;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.persistence.EntityManager;
-import javax.transaction.UserTransaction;
+import jakarta.persistence.EntityManager;
+import jakarta.transaction.UserTransaction;
 
 import org.glassfish.jersey.examples.bookmark_em.entity.BookmarkEntity;
 import org.glassfish.jersey.examples.bookmark_em.util.tx.TransactionManager;
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UserResource.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UserResource.java
index d979cc3..3070e97 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UserResource.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UserResource.java
@@ -19,8 +19,8 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.persistence.EntityManager;
-import javax.transaction.UserTransaction;
+import jakarta.persistence.EntityManager;
+import jakarta.transaction.UserTransaction;
 
 import org.glassfish.jersey.examples.bookmark_em.entity.UserEntity;
 import org.glassfish.jersey.examples.bookmark_em.exception.ExtendedNotFoundException;
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UsersResource.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UsersResource.java
index 001bedb..464b75e 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UsersResource.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/resource/UsersResource.java
@@ -23,9 +23,9 @@
 
 import jakarta.annotation.ManagedBean;
 import jakarta.annotation.Resource;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.transaction.UserTransaction;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.transaction.UserTransaction;
 
 import org.glassfish.jersey.examples.bookmark_em.entity.UserEntity;
 
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/TransactionManager.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/TransactionManager.java
index f18a248..aa42188 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/TransactionManager.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/TransactionManager.java
@@ -12,8 +12,8 @@
 
 import jakarta.ws.rs.WebApplicationException;
 
-import javax.transaction.SystemException;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.UserTransaction;
 
 /**
  * @author Paul Sandoz
diff --git a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/Transactional.java b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/Transactional.java
index 78a4d42..57bd56d 100644
--- a/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/Transactional.java
+++ b/examples/bookmark-em/src/main/java/org/glassfish/jersey/examples/bookmark_em/util/tx/Transactional.java
@@ -10,7 +10,7 @@
 
 package org.glassfish.jersey.examples.bookmark_em.util.tx;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 /**
  * @author Paul Sandoz
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntity.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntity.java
index 190644a..20f8d12 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntity.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntity.java
@@ -13,16 +13,16 @@
 import java.io.Serializable;
 import java.util.Date;
 
-import javax.persistence.Column;
-import javax.persistence.EmbeddedId;
-import javax.persistence.Entity;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
+import jakarta.persistence.Column;
+import jakarta.persistence.EmbeddedId;
+import jakarta.persistence.Entity;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.ManyToOne;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.Table;
+import jakarta.persistence.Temporal;
+import jakarta.persistence.TemporalType;
 
 /**
  * Entity class BookmarkEntity.
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntityPK.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntityPK.java
index 67be556..270007a 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntityPK.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/BookmarkEntityPK.java
@@ -12,8 +12,8 @@
 
 import java.io.Serializable;
 
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
 
 /**
  * Primary Key class BookmarkEntityPK for entity class BookmarkEntity.
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/UserEntity.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/UserEntity.java
index 2389e3a..931bc58 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/UserEntity.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/entity/UserEntity.java
@@ -13,14 +13,14 @@
 import java.io.Serializable;
 import java.util.Collection;
 
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.NamedQueries;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
+import jakarta.persistence.CascadeType;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import jakarta.persistence.NamedQueries;
+import jakarta.persistence.NamedQuery;
+import jakarta.persistence.OneToMany;
+import jakarta.persistence.Table;
 
 /**
  * Entity class UserEntity.
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarkResource.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarkResource.java
index a0ee959..5ce61fd 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarkResource.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarkResource.java
@@ -20,7 +20,7 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.glassfish.jersey.examples.bookmark.entity.BookmarkEntity;
 import org.glassfish.jersey.examples.bookmark.entity.BookmarkEntityPK;
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarksResource.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarksResource.java
index 201180f..d6fabe4 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarksResource.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/BookmarksResource.java
@@ -25,7 +25,7 @@
 import jakarta.ws.rs.core.UriBuilder;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.glassfish.jersey.examples.bookmark.entity.BookmarkEntity;
 import org.glassfish.jersey.examples.bookmark.util.tx.TransactionManager;
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UserResource.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UserResource.java
index 4215f81..9512de5 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UserResource.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UserResource.java
@@ -19,7 +19,7 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 import org.glassfish.jersey.examples.bookmark.entity.UserEntity;
 import org.glassfish.jersey.examples.bookmark.exception.ExtendedNotFoundException;
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UsersResource.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UsersResource.java
index f3b969d..ca55327 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UsersResource.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/resource/UsersResource.java
@@ -21,8 +21,8 @@
 import jakarta.ws.rs.core.UriBuilder;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceUnit;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceUnit;
 
 import org.glassfish.jersey.examples.bookmark.entity.UserEntity;
 
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/TransactionManager.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/TransactionManager.java
index 6f1cf76..3dcb29d 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/TransactionManager.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/TransactionManager.java
@@ -14,8 +14,8 @@
 
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
-import javax.transaction.SystemException;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.UserTransaction;
 
 /**
  * @author Paul Sandoz
diff --git a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/Transactional.java b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/Transactional.java
index 4c88d06..0b3c49f 100644
--- a/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/Transactional.java
+++ b/examples/bookmark/src/main/java/org/glassfish/jersey/examples/bookmark/util/tx/Transactional.java
@@ -10,7 +10,7 @@
 
 package org.glassfish.jersey.examples.bookmark.util.tx;
 
-import javax.persistence.EntityManager;
+import jakarta.persistence.EntityManager;
 
 /**
  * @author Paul Sandoz
diff --git a/examples/cdi-webapp/pom.xml b/examples/cdi-webapp/pom.xml
index f04ad98..0805e13 100644
--- a/examples/cdi-webapp/pom.xml
+++ b/examples/cdi-webapp/pom.xml
@@ -71,6 +71,11 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.ext.cdi</groupId>
             <artifactId>jersey-cdi1x</artifactId>
             <version>${project.version}</version>
diff --git a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MyOtherResource.java b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MyOtherResource.java
index f58337b..9b5569f 100644
--- a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MyOtherResource.java
+++ b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MyOtherResource.java
@@ -20,11 +20,11 @@
 
 import jakarta.annotation.ManagedBean;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.Interceptors;
-import javax.interceptor.InvocationContext;
+import jakarta.interceptor.AroundInvoke;
+import jakarta.interceptor.Interceptors;
+import jakarta.interceptor.InvocationContext;
 
 /**
  * Shows injection of context objects and path parameters into the fields of a managed bean.
diff --git a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MySingletonResource.java b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MySingletonResource.java
index 3ef0369..256b718 100644
--- a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MySingletonResource.java
+++ b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/MySingletonResource.java
@@ -22,7 +22,7 @@
 
 import jakarta.annotation.ManagedBean;
 import jakarta.annotation.Resource;
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 
 /**
  * Shows injection of context objects into the fields of a managed bean.
diff --git a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/ProxyInjectedAppScopedResource.java b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/ProxyInjectedAppScopedResource.java
index 3448b41..b47c691 100644
--- a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/ProxyInjectedAppScopedResource.java
+++ b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/ProxyInjectedAppScopedResource.java
@@ -10,7 +10,7 @@
 
 package org.glassfish.jersey.examples.cdi.resources;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.core.Context;
diff --git a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/RequestScopedResource.java b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/RequestScopedResource.java
index 9043bca..d847cf7 100644
--- a/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/RequestScopedResource.java
+++ b/examples/cdi-webapp/src/main/java/org/glassfish/jersey/examples/cdi/resources/RequestScopedResource.java
@@ -10,8 +10,8 @@
 
 package org.glassfish.jersey.examples.cdi.resources;
 
-import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.core.Context;
diff --git a/examples/declarative-linking/pom.xml b/examples/declarative-linking/pom.xml
index 4f469c4..965c239 100644
--- a/examples/declarative-linking/pom.xml
+++ b/examples/declarative-linking/pom.xml
@@ -82,6 +82,15 @@
                     <mainClass>org.glassfish.jersey.examples.linking.App</mainClass>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/examples/linking/LinkWebAppTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/examples/entity-filtering-security/README.MD b/examples/entity-filtering-security/README.MD
index dcb02ac..c326bcf 100644
--- a/examples/entity-filtering-security/README.MD
+++ b/examples/entity-filtering-security/README.MD
@@ -12,7 +12,7 @@
 ### *Role-based Entity Filtering using security annotations*
 
 This example demonstrates how to use entity filtering feature together
-with security annotations (from `javax.annotation.security` package) and
+with security annotations (from `jakarta.annotation.security` package) and
 how to apply them on domain classes as well as on JAX-RS resource
 classes or JAX-RS resource methods.
 
@@ -29,7 +29,7 @@
 
 -   [Enabling and configuring Entity Filtering in your
     application](https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/entity-filtering.html#d0e14229)
--   [Role-based Entity Filtering using (javax.annotation.security)
+-   [Role-based Entity Filtering using (jakarta.annotation.security)
     annotations](https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/entity-filtering.html#ef.security.annotations)
 
 Contents
diff --git a/examples/entity-filtering-security/pom.xml b/examples/entity-filtering-security/pom.xml
index 1d734c0..e394eac 100644
--- a/examples/entity-filtering-security/pom.xml
+++ b/examples/entity-filtering-security/pom.xml
@@ -70,6 +70,16 @@
                     <mainClass>org.glassfish.jersey.examples.entityfiltering.security.App</mainClass>
                 </configuration>
             </plugin>
+            <!-- TODO remove after jakartification is done -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/examples/entity-filtering-selectable/pom.xml b/examples/entity-filtering-selectable/pom.xml
index 383c1eb..e667fd4 100644
--- a/examples/entity-filtering-selectable/pom.xml
+++ b/examples/entity-filtering-selectable/pom.xml
@@ -70,6 +70,16 @@
                     <mainClass>org.glassfish.jersey.examples.entityfiltering.selectable.App</mainClass>
                 </configuration>
             </plugin>
+            <!-- TODO remove after jakartification is done -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/examples/entityfiltering/selectable/PersonResourceTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/examples/entity-filtering/pom.xml b/examples/entity-filtering/pom.xml
index 215ba8b..4a8df0d 100644
--- a/examples/entity-filtering/pom.xml
+++ b/examples/entity-filtering/pom.xml
@@ -71,6 +71,16 @@
                     <mainClass>org.glassfish.jersey.examples.entityfiltering.App</mainClass>
                 </configuration>
             </plugin>
+            <!-- TODO remove after jakartification is done -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/examples/etc/gf-project-src-pom.xsl b/examples/etc/gf-project-src-pom.xsl
index de418c5..f43d606 100644
--- a/examples/etc/gf-project-src-pom.xsl
+++ b/examples/etc/gf-project-src-pom.xsl
@@ -33,8 +33,8 @@
             or pom:artifactId='jersey-bean-validation'
             or pom:groupId='com.sun.xml.bind'
             or pom:groupId='org.codehaus.jettison'
-            or pom:groupId='javax.annotation'
-            or pom:groupId='javax.enterprise'
+            or pom:groupId='jakarta.annotation'
+            or pom:groupId='jakarta.enterprise'
             or pom:groupId='javax.servlet'
             or pom:groupId='jakarta.ws.rs']/pom:scope[text()!=test]">
         <scope>provided</scope>
@@ -51,8 +51,8 @@
             or pom:groupId='com.sun.xml.bind'
             or pom:groupId='jakarta.validation'
             or pom:groupId='org.codehaus.jettison'
-            or pom:groupId='javax.annotation'
-            or pom:groupId='javax.enterprise'
+            or pom:groupId='jakarta.annotation'
+            or pom:groupId='jakarta.enterprise'
             or pom:groupId='javax.servlet'
             or pom:groupId='jakarta.ws.rs']">
         <xsl:copy>
diff --git a/examples/extended-wadl-webapp/pom.xml b/examples/extended-wadl-webapp/pom.xml
index b098b47..a5b5a79 100644
--- a/examples/extended-wadl-webapp/pom.xml
+++ b/examples/extended-wadl-webapp/pom.xml
@@ -235,24 +235,16 @@
 
     <profiles>
         <profile>
-            <id>testsSkipJdk11</id>
+            <id>testsJdk11</id>
             <activation>
                 <jdk>[11,)</jdk>
             </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <!-- Exclude unit tests on jdk 11 for now -->
-                            <excludes>
-                                <exclude>**/ExtendedWadlWebappOsgiTest.java</exclude>
-                            </excludes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
+            <dependencies>
+                <dependency>
+                    <groupId>com.sun.activation</groupId>
+                    <artifactId>jakarta.activation</artifactId>
+                </dependency>
+            </dependencies>
         </profile>
         <profile>
             <id>pre-release</id>
diff --git a/examples/extended-wadl-webapp/src/test/java/org/glassfish/jersey/examples/extendedwadl/ExtendedWadlWebappOsgiTest.java b/examples/extended-wadl-webapp/src/test/java/org/glassfish/jersey/examples/extendedwadl/ExtendedWadlWebappOsgiTest.java
index d74d079..14d5296 100644
--- a/examples/extended-wadl-webapp/src/test/java/org/glassfish/jersey/examples/extendedwadl/ExtendedWadlWebappOsgiTest.java
+++ b/examples/extended-wadl-webapp/src/test/java/org/glassfish/jersey/examples/extendedwadl/ExtendedWadlWebappOsgiTest.java
@@ -36,6 +36,7 @@
 import org.glassfish.jersey.examples.extendedwadl.resources.MyApplication;
 import org.glassfish.jersey.examples.extendedwadl.util.Examples;
 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
+import org.glassfish.jersey.internal.util.JdkVersion;
 import org.glassfish.jersey.internal.util.PropertiesHelper;
 import org.glassfish.jersey.internal.util.SimpleNamespaceResolver;
 import org.glassfish.jersey.message.internal.MediaTypes;
@@ -96,11 +97,11 @@
     public static Option[] configuration() {
         List<Option> options = Arrays.asList(options(
                 // systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("FINEST"),
-                systemProperty("org.osgi.framework.system.packages.extra").value("javax.annotation"),
+                systemProperty("org.osgi.framework.system.packages.extra").value("jakarta.annotation"),
                 systemProperty(JAXRS_RUNTIME_DELEGATE_PROPERTY).value("org.glassfish.jersey.internal.RuntimeDelegateImpl"),
                 systemProperty(JAXRS_CLIENT_BUILDER).value("org.glassfish.jersey.client.JerseyClientBuilder"),
 
-                // javax.annotation must go first!
+                // jakarta.annotation must go first!
                 mavenBundle().groupId("jakarta.annotation").artifactId("jakarta.annotation-api").versionAsInProject(),
                 //JAXB-API
                 mavenBundle().groupId("jakarta.xml.bind").artifactId("jakarta.xml.bind-api").versionAsInProject(),
@@ -133,6 +134,7 @@
 
                 //SUN JAXB IMPL OSGI
                 mavenBundle().groupId("com.sun.xml.bind").artifactId("jaxb-osgi").versionAsInProject().versionAsInProject(),
+                getActivationBundle(),
                 systemPackage("com.sun.source.tree"),
                 systemPackage("com.sun.source.util"),
 
@@ -184,6 +186,12 @@
         return options.toArray(new Option[options.size()]);
     }
 
+    private static Option getActivationBundle() {
+        return JdkVersion.getJdkVersion().getMajor() > 8
+                ? mavenBundle().groupId("com.sun.activation").artifactId("jakarta.activation").versionAsInProject()
+                : null;
+    }
+
     private ResourceConfig createResourceConfig() {
         final ResourceConfig resourceConfig = new ResourceConfig(new MyApplication().getClasses());
         resourceConfig.property(ServerProperties.WADL_GENERATOR_CONFIG, SampleWadlGeneratorConfig.class.getName());
diff --git a/examples/helloworld-cdi2-se/pom.xml b/examples/helloworld-cdi2-se/pom.xml
index d8e73eb..7fa82fb 100644
--- a/examples/helloworld-cdi2-se/pom.xml
+++ b/examples/helloworld-cdi2-se/pom.xml
@@ -65,6 +65,17 @@
                     <mainClass>org.glassfish.jersey.examples.helloworld.cdi2se.App</mainClass>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+
         </plugins>
     </build>
 
@@ -80,6 +91,20 @@
                 </plugins>
             </build>
         </profile>
+
+        <profile>
+            <id>jdk11</id>
+            <activation>
+                <jdk>[11,)</jdk>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.jboss.weld.se</groupId>
+                    <artifactId>weld-se-core</artifactId>
+                    <version>3.1.1.Final</version>
+                </dependency>
+            </dependencies>
+        </profile>
     </profiles>
 
 </project>
diff --git a/examples/helloworld-pure-jax-rs/src/main/java/org/glassfish/jersey/examples/helloworld/jaxrs/App.java b/examples/helloworld-pure-jax-rs/src/main/java/org/glassfish/jersey/examples/helloworld/jaxrs/App.java
index 0fbd635..81cb3c0 100644
--- a/examples/helloworld-pure-jax-rs/src/main/java/org/glassfish/jersey/examples/helloworld/jaxrs/App.java
+++ b/examples/helloworld-pure-jax-rs/src/main/java/org/glassfish/jersey/examples/helloworld/jaxrs/App.java
@@ -62,7 +62,7 @@
 
         System.out.println("Application started.\n"
                 + "Try accessing " + getBaseURI() + "helloworld in the browser.\n"
-                + "Hit enter to stop the application...");
+                + "CTRL + C to stop the application...\n");
 
         Thread.currentThread().join();
     }
diff --git a/examples/helloworld-spring-annotations/pom.xml b/examples/helloworld-spring-annotations/pom.xml
index ed23deb..d5fd11c 100644
--- a/examples/helloworld-spring-annotations/pom.xml
+++ b/examples/helloworld-spring-annotations/pom.xml
@@ -51,6 +51,11 @@
             <artifactId>jersey-test-framework-provider-inmemory</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/examples/helloworld-weld/README.MD b/examples/helloworld-weld/README.MD
index e139e21..b7d157a 100644
--- a/examples/helloworld-weld/README.MD
+++ b/examples/helloworld-weld/README.MD
@@ -1,4 +1,4 @@
-[//]: # " Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. "
+[//]: # " Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved. "
 [//]: # " "
 [//]: # " This program and the accompanying materials are made available under the "
 [//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at "
@@ -37,4 +37,4 @@
 
 This deploys the example using [Grizzly](http://grizzly.java.net/) container. You can access the application at:
 
-- <http://localhost:8080/weld>
\ No newline at end of file
+- <http://localhost:8080/weld/application.wadl>
\ No newline at end of file
diff --git a/examples/helloworld-weld/pom.xml b/examples/helloworld-weld/pom.xml
index 038909a..fa80226 100644
--- a/examples/helloworld-weld/pom.xml
+++ b/examples/helloworld-weld/pom.xml
@@ -36,6 +36,11 @@
             <artifactId>jersey-hk2</artifactId>
         </dependency>
         <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.cdi-api</artifactId>
+            <version>${cdi.api.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.test-framework.providers</groupId>
             <artifactId>jersey-test-framework-provider-bundle</artifactId>
             <type>pom</type>
@@ -54,9 +59,25 @@
         </dependency>
 
         <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>org.glassfish.jersey.ext.cdi</groupId>
             <artifactId>jersey-cdi1x</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sun.istack</groupId>
+            <artifactId>istack-commons-runtime</artifactId>
+            <version>${istack.commons.runtime.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/App.java b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/App.java
index fba0ab4..e3b5343 100644
--- a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/App.java
+++ b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/App.java
@@ -19,7 +19,7 @@
 import java.util.logging.Logger;
 
 import jakarta.annotation.ManagedBean;
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.ws.rs.core.Application;
 import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.UriInfo;
diff --git a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/AppScopedResource.java b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/AppScopedResource.java
index 639bbfe..c2202df 100644
--- a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/AppScopedResource.java
+++ b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/AppScopedResource.java
@@ -12,7 +12,7 @@
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
diff --git a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/CustomInterceptor.java b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/CustomInterceptor.java
index ea456a7..43de035 100644
--- a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/CustomInterceptor.java
+++ b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/CustomInterceptor.java
@@ -12,7 +12,7 @@
 
 import java.io.IOException;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 
 import jakarta.inject.Inject;
 
diff --git a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/HelloWorldResource.java b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/HelloWorldResource.java
index b3a275d..061ea38 100644
--- a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/HelloWorldResource.java
+++ b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/HelloWorldResource.java
@@ -10,7 +10,7 @@
 
 package org.glassfish.jersey.examples.helloworld;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedBean.java b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedBean.java
index 84371c8..885e373 100644
--- a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedBean.java
+++ b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedBean.java
@@ -10,7 +10,7 @@
 
 package org.glassfish.jersey.examples.helloworld;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 
 /**
  * Request scoped CDI bean. Serves as a storage
diff --git a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedResource.java b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedResource.java
index 00cba34..184bf0b 100644
--- a/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedResource.java
+++ b/examples/helloworld-weld/src/main/java/org/glassfish/jersey/examples/helloworld/RequestScopedResource.java
@@ -21,7 +21,7 @@
 import jakarta.ws.rs.container.AsyncResponse;
 import jakarta.ws.rs.container.Suspended;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.UriInfo;
diff --git a/examples/http-patch/pom.xml b/examples/http-patch/pom.xml
index 06195ae..80ec0ec 100644
--- a/examples/http-patch/pom.xml
+++ b/examples/http-patch/pom.xml
@@ -67,6 +67,15 @@
             <artifactId>jersey-grizzly-connector</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.istack</groupId>
+            <artifactId>istack-commons-runtime</artifactId>
+            <version>${istack.commons.runtime.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
@@ -78,6 +87,16 @@
                     <mainClass>org.glassfish.jersey.examples.httppatch.App</mainClass>
                 </configuration>
             </plugin>
+            <plugin>
+                <!-- TODO remove after jakartification -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/examples/httppatch/HttpPatchTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/examples/http-patch/src/test/java/org/glassfish/jersey/examples/httppatch/HttpPatchTest.java b/examples/http-patch/src/test/java/org/glassfish/jersey/examples/httppatch/HttpPatchTest.java
index 960102e..3a5f040 100644
--- a/examples/http-patch/src/test/java/org/glassfish/jersey/examples/httppatch/HttpPatchTest.java
+++ b/examples/http-patch/src/test/java/org/glassfish/jersey/examples/httppatch/HttpPatchTest.java
@@ -14,8 +14,8 @@
 import jakarta.ws.rs.client.WebTarget;
 import jakarta.ws.rs.core.MediaType;
 
-import javax.json.Json;
-import javax.json.JsonArray;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
 
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.grizzly.connector.GrizzlyConnectorProvider;
diff --git a/examples/jaxb/pom.xml b/examples/jaxb/pom.xml
index 802c8f1..4d5163d 100644
--- a/examples/jaxb/pom.xml
+++ b/examples/jaxb/pom.xml
@@ -73,6 +73,19 @@
                     <scope>test</scope>
                 </dependency>
             </dependencies>
+            <build> <!-- TODO remove after jakartification --> 
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-surefire-plugin</artifactId>
+                        <configuration>
+                            <excludes>
+                                <exclude>org/glassfish/jersey/examples/jaxb/JaxbTest.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
         </profile>
         <profile>
             <id>jdk8</id>
diff --git a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageListWriter.java b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageListWriter.java
index 447f328..531bf19 100644
--- a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageListWriter.java
+++ b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageListWriter.java
@@ -26,7 +26,7 @@
 import jakarta.ws.rs.ext.MessageBodyWriter;
 import jakarta.ws.rs.ext.Provider;
 
-import javax.ejb.Stateless;
+import jakarta.ejb.Stateless;
 
 import org.glassfish.jersey.message.MessageUtils;
 
diff --git a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageWriter.java b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageWriter.java
index 2e0e13f..a342af9 100644
--- a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageWriter.java
+++ b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/entities/MessageWriter.java
@@ -21,7 +21,7 @@
 import jakarta.ws.rs.ext.MessageBodyWriter;
 import jakarta.ws.rs.ext.Provider;
 
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 import org.glassfish.jersey.message.MessageUtils;
 
 /**
diff --git a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardResourceBean.java b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardResourceBean.java
index b7dff78..546593f 100644
--- a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardResourceBean.java
+++ b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardResourceBean.java
@@ -24,8 +24,8 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 
 import org.glassfish.jersey.examples.jersey_ejb.entities.Message;
 import org.glassfish.jersey.examples.jersey_ejb.exceptions.CustomNotFoundException;
@@ -69,7 +69,7 @@
         if (m == null) {
             // This exception will be passed through to the JAX-RS runtime
             // No other runtime exception will behave this way unless the
-            // exception is annotated with javax.ejb.ApplicationException
+            // exception is annotated with jakarta.ejb.ApplicationException
             throw new NotFoundException();
         }
 
diff --git a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardRootResource.java b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardRootResource.java
index 4b12378..249788f 100644
--- a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardRootResource.java
+++ b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageBoardRootResource.java
@@ -10,8 +10,8 @@
 
 package org.glassfish.jersey.examples.jersey_ejb.resources;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 import jakarta.ws.rs.Path;
 
 /**
diff --git a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageHolderSingletonBean.java b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageHolderSingletonBean.java
index 1798bbc..8b19689 100644
--- a/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageHolderSingletonBean.java
+++ b/examples/jersey-ejb/src/main/java/org/glassfish/jersey/examples/jersey_ejb/resources/MessageHolderSingletonBean.java
@@ -15,7 +15,7 @@
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 
 import org.glassfish.jersey.examples.jersey_ejb.entities.Message;
 
diff --git a/examples/json-binding-webapp/src/main/java/org/glassfish/jersey/examples/jsonb/Cat.java b/examples/json-binding-webapp/src/main/java/org/glassfish/jersey/examples/jsonb/Cat.java
index f4786db..3cb786f 100644
--- a/examples/json-binding-webapp/src/main/java/org/glassfish/jersey/examples/jsonb/Cat.java
+++ b/examples/json-binding-webapp/src/main/java/org/glassfish/jersey/examples/jsonb/Cat.java
@@ -10,8 +10,8 @@
 
 package org.glassfish.jersey.examples.jsonb;
 
-import javax.json.bind.annotation.JsonbProperty;
-import javax.json.bind.annotation.JsonbPropertyOrder;
+import jakarta.json.bind.annotation.JsonbProperty;
+import jakarta.json.bind.annotation.JsonbPropertyOrder;
 
 /**
  * Example cat POJO for JSONB (un)marshalling.
diff --git a/examples/json-jettison/pom.xml b/examples/json-jettison/pom.xml
index ee79ab6..7b8e563 100644
--- a/examples/json-jettison/pom.xml
+++ b/examples/json-jettison/pom.xml
@@ -72,6 +72,17 @@
                     <artifactId>jaxb-osgi</artifactId>
                     <scope>test</scope>
                 </dependency>
+
+                <dependency>
+                    <groupId>com.sun.xml.bind</groupId>
+                    <artifactId>jaxb-impl</artifactId>
+                </dependency>
+
+                <dependency>
+                    <groupId>com.sun.istack</groupId>
+                    <artifactId>istack-commons-runtime</artifactId>
+                    <version>${istack.commons.runtime.version}</version>
+                </dependency>
             </dependencies>
         </profile>
         <profile>
diff --git a/examples/json-moxy/pom.xml b/examples/json-moxy/pom.xml
index f0754ef..e312fac 100644
--- a/examples/json-moxy/pom.xml
+++ b/examples/json-moxy/pom.xml
@@ -46,6 +46,17 @@
             <type>pom</type>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>com.sun.xml.bind</groupId>
+            <artifactId>jaxb-impl</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sun.istack</groupId>
+            <artifactId>istack-commons-runtime</artifactId>
+            <version>${istack.commons.runtime.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/MyApplication.java b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/MyApplication.java
index 965da71..b5a3a70 100644
--- a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/MyApplication.java
+++ b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/MyApplication.java
@@ -10,7 +10,7 @@
 
 package org.glassfish.jersey.examples.jsonp;
 
-import javax.json.stream.JsonGenerator;
+import jakarta.json.stream.JsonGenerator;
 
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
diff --git a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentFilteringResource.java b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentFilteringResource.java
index a8e2cc9..a57edcc 100644
--- a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentFilteringResource.java
+++ b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentFilteringResource.java
@@ -17,12 +17,12 @@
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.core.MediaType;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonArrayBuilder;
-import javax.json.JsonObject;
-import javax.json.JsonObjectBuilder;
-import javax.json.JsonString;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonArrayBuilder;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonObjectBuilder;
+import jakarta.json.JsonString;
 
 import org.glassfish.jersey.examples.jsonp.service.DocumentStorage;
 
diff --git a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentResource.java b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentResource.java
index e895220..998a54e 100644
--- a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentResource.java
+++ b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/resource/DocumentResource.java
@@ -19,10 +19,10 @@
 import jakarta.ws.rs.Produces;
 import jakarta.ws.rs.core.MediaType;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonArrayBuilder;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonArrayBuilder;
+import jakarta.json.JsonObject;
 
 import org.glassfish.jersey.examples.jsonp.service.DocumentStorage;
 
diff --git a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/service/DocumentStorage.java b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/service/DocumentStorage.java
index 2c587d2..e7f6051 100644
--- a/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/service/DocumentStorage.java
+++ b/examples/json-processing-webapp/src/main/java/org/glassfish/jersey/examples/jsonp/service/DocumentStorage.java
@@ -15,7 +15,7 @@
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.json.JsonObject;
+import jakarta.json.JsonObject;
 
 /**
  * Storage of documents.
diff --git a/examples/json-processing-webapp/src/main/webapp/WEB-INF/web.xml b/examples/json-processing-webapp/src/main/webapp/WEB-INF/web.xml
index 7e8c9c4..af51db6 100644
--- a/examples/json-processing-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/examples/json-processing-webapp/src/main/webapp/WEB-INF/web.xml
@@ -20,7 +20,7 @@
             <param-value>org.glassfish.jersey.examples.jsonp.MyApplication</param-value>
         </init-param>
         <init-param>
-            <param-name>javax.json.stream.JsonGenerator.prettyPrinting</param-name>
+            <param-name>jakarta.json.stream.JsonGenerator.prettyPrinting</param-name>
             <param-value>true</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
diff --git a/examples/json-processing-webapp/src/test/java/org/glassfish/jersey/examples/jsonp/JsonProcessingResourceTest.java b/examples/json-processing-webapp/src/test/java/org/glassfish/jersey/examples/jsonp/JsonProcessingResourceTest.java
index af0b273..70d9ff2 100644
--- a/examples/json-processing-webapp/src/test/java/org/glassfish/jersey/examples/jsonp/JsonProcessingResourceTest.java
+++ b/examples/json-processing-webapp/src/test/java/org/glassfish/jersey/examples/jsonp/JsonProcessingResourceTest.java
@@ -24,11 +24,11 @@
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.core.UriBuilder;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonArrayBuilder;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonArrayBuilder;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
 
 import org.glassfish.jersey.test.JerseyTest;
 
diff --git a/examples/json-with-padding/pom.xml b/examples/json-with-padding/pom.xml
index e1a8be1..039d8f6 100644
--- a/examples/json-with-padding/pom.xml
+++ b/examples/json-with-padding/pom.xml
@@ -63,6 +63,15 @@
                     <mainClass>org.glassfish.jersey.examples.jsonp.App</mainClass>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/examples/jsonp/JsonWithPaddingTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/ManagedBeanSingletonResource.java b/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/ManagedBeanSingletonResource.java
index 3ffb2c5..2c25232 100644
--- a/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/ManagedBeanSingletonResource.java
+++ b/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/ManagedBeanSingletonResource.java
@@ -24,9 +24,9 @@
 import jakarta.annotation.ManagedBean;
 import jakarta.annotation.Resource;
 import jakarta.inject.Singleton;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.PersistenceUnit;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceUnit;
 
 /**
  * JAX-RS root resource treated as Java EE managed bean in singleton scope.
diff --git a/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/Widget.java b/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/Widget.java
index 1b49394..76ea177 100644
--- a/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/Widget.java
+++ b/examples/managed-beans-webapp/src/main/java/org/glassfish/jersey/examples/managedbeans/resources/Widget.java
@@ -12,8 +12,8 @@
 
 import java.io.Serializable;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 /**
  * Simple JPA entity made accessible via {@link ManagedBeanSingletonResource}.
diff --git a/examples/osgi-helloworld-webapp/functional-test/pom.xml b/examples/osgi-helloworld-webapp/functional-test/pom.xml
index 96dd8e7..eeb54c4 100644
--- a/examples/osgi-helloworld-webapp/functional-test/pom.xml
+++ b/examples/osgi-helloworld-webapp/functional-test/pom.xml
@@ -209,6 +209,9 @@
                         <classpathDepenencyExclude>org.apache.felix:org.osgi.core</classpathDepenencyExclude>
                         <classpathDepenencyExclude>org.osgi:org.osgi.core</classpathDepenencyExclude>
                     </classpathDependencyExcludes>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java</exclude>
+                    </excludes>
                 </configuration>
                 <executions>
                     <execution>
diff --git a/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/AbstractWebAppTest.java b/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/AbstractWebAppTest.java
index c995f9e..b8ae63c 100644
--- a/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/AbstractWebAppTest.java
+++ b/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/AbstractWebAppTest.java
@@ -132,7 +132,7 @@
                 //                 mavenBundle("org.ops4j.pax.logging", "pax-logging-api", "1.4"),
                 //                 mavenBundle("org.ops4j.pax.logging", "pax-logging-service", "1.4"),
 
-                // javax.annotation must go first!
+                // jakarta.annotation must go first!
                 mavenBundle().groupId("jakarta.annotation").artifactId("jakarta.annotation-api").versionAsInProject(),
                 // pax exam dependencies
                 mavenBundle("org.ops4j.pax.url", "pax-url-mvn"),
diff --git a/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java b/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java
index 04cf726..dbf4928 100644
--- a/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java
+++ b/examples/osgi-helloworld-webapp/functional-test/src/test/java/org/glassfish/jersey/examples/helloworld/test/WebAppFelixTest.java
@@ -35,6 +35,7 @@
 
     private static final Logger LOGGER = Logger.getLogger(WebAppFelixTest.class.getName());
     private static final String JAXRS_RUNTIME_DELEGATE_PROPERTY = "jakarta.ws.rs.ext.RuntimeDelegate";
+    private static final String JAXRS_CLIENT_BUILDER = "jakarta.ws.rs.client.ClientBuilder";
 
     @Override
     public List<Option> osgiRuntimeOptions() {
diff --git a/examples/osgi-helloworld-webapp/functional-test/src/test/resources/felix.policy b/examples/osgi-helloworld-webapp/functional-test/src/test/resources/felix.policy
index 103cc52..d8348f9 100644
--- a/examples/osgi-helloworld-webapp/functional-test/src/test/resources/felix.policy
+++ b/examples/osgi-helloworld-webapp/functional-test/src/test/resources/felix.policy
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved.
+// Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
 //
 // This program and the accompanying materials are made available under the
 // terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -13,6 +13,7 @@
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*additional-bundle*"] (java.security.AllPermission) } "allToAdditional";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*javassist*"] (java.security.AllPermission) } "allToJavassist";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jakarta.ws.rs*"] (java.security.AllPermission) } "allToJavaxWsRs";
+allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jakarta.xml.bind*"] (java.security.AllPermission) } "allToJaxB";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jetty*"] (java.security.AllPermission) } "allToJetty";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*hk2*"] (java.security.AllPermission) } "allToHk2";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*osgi*"] (java.security.AllPermission) } "allToOsgi";
@@ -36,6 +37,7 @@
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jersey-common*"] (java.lang.RuntimePermission "accessClassInPackage.sun.misc") } "accessClassInPackageSunMisc";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jersey-common*"] (java.lang.RuntimePermission "getClassLoader") } "getCLToJerseyCommon";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jersey-common*"] (java.lang.RuntimePermission "modifyThread") } "modifyThreadToJerseyCommon";
+allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jersey-common*"] (java.lang.RuntimePermission "setContextClassLoader") } "setContextCLToJerseyCommon";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jersey-common*"] (java.util.PropertyPermission "*" "read") } "propReadToJerseyCommon";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jersey-common*"] (java.io.FilePermission "<<ALL FILES>>" "read,write") } "fileReadToJerseyCommon";
 allow { [org.osgi.service.condpermadmin.BundleLocationCondition "*jersey-client*"] (java.security.AllPermission) } "allToJerseyClient";
diff --git a/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java b/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java
index 242809d..497e8c0 100644
--- a/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java
+++ b/examples/osgi-http-service/functional-test/src/test/java/org/glassfish/jersey/examples/osgihttpservice/test/AbstractHttpServiceTest.java
@@ -86,7 +86,7 @@
                 systemProperty("org.osgi.service.http.port").value(String.valueOf(port)),
                 systemProperty(BundleLocationProperty).value(bundleLocation),
                 systemProperty("jersey.config.test.container.port").value(String.valueOf(port)),
-                systemProperty("org.osgi.framework.system.packages.extra").value("javax.annotation"),
+                systemProperty("org.osgi.framework.system.packages.extra").value("jakarta.annotation"),
                 systemProperty(JAXRS_RUNTIME_DELEGATE_PROPERTY).value("org.glassfish.jersey.internal.RuntimeDelegateImpl"),
                 systemProperty(JAXRS_CLIENT_BUILDER).value("org.glassfish.jersey.client.JerseyClientBuilder"),
 
@@ -97,7 +97,7 @@
                 // mavenBundle("org.ops4j.pax.logging", "pax-logging-api", "1.4"),
                 // mavenBundle("org.ops4j.pax.logging", "pax-logging-service", "1.4"),
 
-                // javax.annotation has to go first!
+                // jakarta.annotation has to go first!
                 mavenBundle().groupId("jakarta.annotation").artifactId("jakarta.annotation-api").versionAsInProject(),
 
                 mavenBundle("org.ops4j.pax.url", "pax-url-mvn"),
diff --git a/examples/osgi-http-service/pom.xml b/examples/osgi-http-service/pom.xml
index af3dbeb..0a70288 100644
--- a/examples/osgi-http-service/pom.xml
+++ b/examples/osgi-http-service/pom.xml
@@ -28,7 +28,7 @@
     <description>OSGi HttpService example</description>
 
     <modules>
-        <module>bundle</module>
+        <!--<module>bundle</module>-->
 <!--        <module>functional-test</module>-->
     </modules>
 
diff --git a/examples/pom.xml b/examples/pom.xml
index e1e96a1..1d9752f 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -60,10 +60,10 @@
         <module>cdi-webapp</module>
         <module>clipboard</module>
         <module>clipboard-programmatic</module>
-<!--        <module>declarative-linking</module> MOXY-->
-<!--        <module>entity-filtering</module> MOXY-->
-<!--        <module>entity-filtering-selectable</module> MOXY-->
-<!--        <module>entity-filtering-security</module> MOXY-->
+        <module>declarative-linking</module>
+        <module>entity-filtering</module>
+        <module>entity-filtering-selectable</module>
+        <module>entity-filtering-security</module>
         <!-- <module>extended-wadl-webapp</module> -->
         <module>exception-mapping</module>
         <!--<module>feed-combiner-java8-webapp</module>-->
@@ -80,7 +80,7 @@
         <module>helloworld-weld</module>
         <module>helloworld-spring-webapp</module>
         <module>helloworld-spring-annotations</module>
-<!--        <module>http-patch</module> MOXY -->
+        <module>http-patch</module>
         <module>http-trace</module>
         <module>https-clientserver-grizzly</module>
         <module>https-server-glassfish</module>
@@ -91,9 +91,9 @@
         <module>json-binding-webapp</module>
         <module>json-jackson</module>
         <module>json-jettison</module>
-<!--        <module>json-moxy</module> MOXY -->
+        <module>json-moxy</module>
 <!--        <module>json-processing-webapp</module> JSONP-->
-<!--        <module>json-with-padding</module> MOXY -->
+        <module>json-with-padding</module>
         <module>managed-beans-webapp</module>
         <module>managed-client</module>
         <module>managed-client-webapp</module>
@@ -101,7 +101,7 @@
         <!--<module>monitoring-webapp</module>-->
         <module>multipart-webapp</module>
         <module>open-tracing</module>
-<!--        <module>osgi-helloworld-webapp</module> MOXY-->
+        <module>osgi-helloworld-webapp</module>
         <module>osgi-http-service</module>
         <module>oauth-client-twitter</module>
         <!--<module>oauth2-client-google-webapp</module>-->
@@ -118,11 +118,11 @@
         <!--<module>sparklines</module>-->
         <module>sse-item-store-jersey-webapp</module>
         <module>sse-item-store-jaxrs-webapp</module>
-<!--        <module>sse-twitter-aggregator</module> MOXY-->
+        <module>sse-twitter-aggregator</module>
         <module>system-properties-example</module>
         <!--<module>tone-generator</module>-->
         <module>webapp-example-parent</module>
-<!--        <module>xml-moxy</module> MOXY-->
+        <module>xml-moxy</module>
     </modules>
     <profiles>
         <profile>
diff --git a/examples/server-sent-events-jaxrs/pom.xml b/examples/server-sent-events-jaxrs/pom.xml
index b93a17b..4f0d592 100644
--- a/examples/server-sent-events-jaxrs/pom.xml
+++ b/examples/server-sent-events-jaxrs/pom.xml
@@ -54,7 +54,7 @@
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>exec-maven-plugin</artifactId>
                 <configuration>
-                    <mainClass>App</mainClass>
+                    <mainClass>org.glassfish.jersey.examples.sse.jaxrs.App</mainClass>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/examples/server-sent-events-jersey/pom.xml b/examples/server-sent-events-jersey/pom.xml
index fc8d86a..586202a 100644
--- a/examples/server-sent-events-jersey/pom.xml
+++ b/examples/server-sent-events-jersey/pom.xml
@@ -54,7 +54,7 @@
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>exec-maven-plugin</artifactId>
                 <configuration>
-                    <mainClass>App</mainClass>
+                    <mainClass>org.glassfish.jersey.examples.sse.jersey.App</mainClass>
                 </configuration>
             </plugin>
         </plugins>
diff --git a/examples/servlet3-webapp/pom.xml b/examples/servlet3-webapp/pom.xml
index 519ebe5..3be85b7 100644
--- a/examples/servlet3-webapp/pom.xml
+++ b/examples/servlet3-webapp/pom.xml
@@ -62,6 +62,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/ext/bean-validation/pom.xml b/ext/bean-validation/pom.xml
index 94549b8..798b3aa 100644
--- a/ext/bean-validation/pom.xml
+++ b/ext/bean-validation/pom.xml
@@ -100,6 +100,18 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.cdi-api</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.ext.cdi</groupId>
+            <artifactId>jersey-cdi1x</artifactId>
+            <version>${project.version}</version>
+            <optional>true</optional>
+        </dependency>
+
 
         <!-- java-el related dependencies are in scope "provided" in hibernate-validator -->
         <dependency>
diff --git a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/CompositeInjectingConstraintValidatorFactory.java b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/CompositeInjectingConstraintValidatorFactory.java
new file mode 100644
index 0000000..381acda
--- /dev/null
+++ b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/CompositeInjectingConstraintValidatorFactory.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2018 Payara Foundation  and/or its affiliates. All rights reserved.
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+package org.glassfish.jersey.server.validation.internal;
+
+import org.glassfish.jersey.server.validation.internal.hibernate.HibernateInjectingConstraintValidatorFactory;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorFactory;
+import jakarta.ws.rs.container.ResourceContext;
+import jakarta.ws.rs.core.Context;
+
+/**
+ * {@link ConstraintValidatorFactory} implementation that uses {@link InjectingConstraintValidatorFactory}
+ * by default and fallbacks to {@link HibernateInjectingConstraintValidatorFactory} when the resource
+ * cannot be found in resource context of Jersey.
+ *
+ * @author Mert Caliskan
+ */
+public class CompositeInjectingConstraintValidatorFactory implements ConstraintValidatorFactory {
+
+    @Context
+    private ResourceContext resourceContext;
+
+    private InjectingConstraintValidatorFactory jerseyVF;
+    private HibernateInjectingConstraintValidatorFactory hibernateVF;
+
+    @PostConstruct
+    void postConstruct() {
+        jerseyVF = resourceContext.getResource(InjectingConstraintValidatorFactory.class);
+        hibernateVF = resourceContext.getResource(HibernateInjectingConstraintValidatorFactory.class);
+    }
+
+    @Override
+    public <T extends ConstraintValidator<?, ?>> T getInstance(final Class<T> key) {
+        T jerseyInstance = jerseyVF.getInstance(key);
+        if (jerseyInstance == null) {
+            return hibernateVF.getInstance(key);
+        }
+        return jerseyInstance;
+    }
+
+    @Override
+    public void releaseInstance(final ConstraintValidator<?, ?> instance) {
+        // NOOP
+    }
+}
\ No newline at end of file
diff --git a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationBinder.java b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationBinder.java
index 67756fc..dc4de93 100644
--- a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationBinder.java
+++ b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationBinder.java
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.server.validation.internal;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.WeakHashMap;
@@ -256,8 +258,17 @@
         private ValidatorContext getDefaultValidatorContext(final ValidateOnExecutionHandler handler) {
             final ValidatorContext context = factory.usingContext();
 
-            // Default Configuration.
-            context.constraintValidatorFactory(resourceContext.getResource(InjectingConstraintValidatorFactory.class));
+            // if CDI is available use composite factiry
+            if (AccessController.doPrivileged(
+                    ReflectionHelper.classForNamePA("jakarta.enterprise.inject.spi.BeanManager")) != null) {
+                // Composite Configuration - due to PAYARA-2491
+                // https://github.com/payara/Payara/issues/2245
+                context.constraintValidatorFactory(resourceContext.getResource(
+                        CompositeInjectingConstraintValidatorFactory.class));
+            } else {
+                // Default Configuration.
+                context.constraintValidatorFactory(resourceContext.getResource(InjectingConstraintValidatorFactory.class));
+            }
 
             // Traversable Resolver.
             context.traversableResolver(getTraversableResolver(factory.getTraversableResolver(), handler));
diff --git a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/DestructibleBeanInstance.java b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/DestructibleBeanInstance.java
new file mode 100644
index 0000000..01e8685
--- /dev/null
+++ b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/DestructibleBeanInstance.java
@@ -0,0 +1,63 @@
+/*
+ * Hibernate Validator, declare and validate application constraints
+ *
+ * License: Apache License, Version 2.0
+ * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
+ */
+// Portions Copyright [2018] [Payara Foundation and/or its affiliates]
+
+package org.glassfish.jersey.server.validation.internal.hibernate;
+
+import jakarta.enterprise.context.spi.CreationalContext;
+import jakarta.enterprise.inject.spi.AnnotatedType;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.InjectionTarget;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class DestructibleBeanInstance<T> {
+    private final T instance;
+    private final InjectionTarget<T> injectionTarget;
+
+    public DestructibleBeanInstance(BeanManager beanManager, Class<T> key) {
+        this.injectionTarget = createInjectionTarget(beanManager, key);
+        this.instance = createAndInjectBeans(beanManager, injectionTarget);
+    }
+
+    @SuppressWarnings("unchecked")
+    public DestructibleBeanInstance(BeanManager beanManager, T instance) {
+        this.injectionTarget = createInjectionTarget(beanManager, (Class<T>) instance.getClass());
+        injectBeans(beanManager, beanManager.createCreationalContext(null), injectionTarget, instance);
+        this.instance = instance;
+    }
+
+    public T getInstance() {
+        return instance;
+    }
+
+    public void destroy() {
+        injectionTarget.preDestroy(instance);
+        injectionTarget.dispose(instance);
+    }
+
+    private InjectionTarget<T> createInjectionTarget(BeanManager beanManager, Class<T> type) {
+        AnnotatedType<T> annotatedType = beanManager.createAnnotatedType(type);
+        return beanManager.createInjectionTarget(annotatedType);
+    }
+
+    private static <T> T createAndInjectBeans(BeanManager beanManager, InjectionTarget<T> injectionTarget) {
+        CreationalContext<T> creationalContext = beanManager.createCreationalContext(null);
+
+        T instance = injectionTarget.produce(creationalContext);
+        injectBeans(beanManager, creationalContext, injectionTarget, instance);
+
+        return instance;
+    }
+
+    private static <T> void injectBeans(BeanManager beanManager, CreationalContext<T> creationalContext,
+                                        InjectionTarget<T> injectionTarget, T instance) {
+        injectionTarget.inject(instance, creationalContext);
+        injectionTarget.postConstruct(instance);
+    }
+}
\ No newline at end of file
diff --git a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/HibernateInjectingConstraintValidatorFactory.java b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/HibernateInjectingConstraintValidatorFactory.java
new file mode 100644
index 0000000..3a64e0f
--- /dev/null
+++ b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/HibernateInjectingConstraintValidatorFactory.java
@@ -0,0 +1,52 @@
+/*
+ * Hibernate Validator, declare and validate application constraints
+ *
+ * License: Apache License, Version 2.0
+ * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
+ */
+// Portions Copyright [2018] [Payara Foundation and/or its affiliates]
+
+package org.glassfish.jersey.server.validation.internal.hibernate;
+
+import org.glassfish.jersey.ext.cdi1x.internal.CdiUtil;
+
+import jakarta.annotation.PostConstruct;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorFactory;
+import java.util.Collections;
+import java.util.IdentityHashMap;
+import java.util.Map;
+
+public class HibernateInjectingConstraintValidatorFactory implements ConstraintValidatorFactory {
+    // TODO look for something with better performance (HF)
+    private final Map<Object, DestructibleBeanInstance<?>> constraintValidatorMap =
+            Collections.synchronizedMap(new IdentityHashMap<Object, DestructibleBeanInstance<?>>());
+
+    private BeanManager beanManager;
+
+    @PostConstruct
+    void postConstruct() {
+        this.beanManager = CdiUtil.getBeanManager();
+    }
+
+    @Override
+    public <T extends ConstraintValidator<?, ?>> T getInstance(Class<T> key) {
+        DestructibleBeanInstance<T> destructibleBeanInstance = new DestructibleBeanInstance<T>(beanManager, key);
+        constraintValidatorMap.put(destructibleBeanInstance.getInstance(), destructibleBeanInstance);
+        return destructibleBeanInstance.getInstance();
+    }
+
+    @Override
+    public void releaseInstance(ConstraintValidator<?, ?> instance) {
+        DestructibleBeanInstance<?> destructibleBeanInstance = constraintValidatorMap.remove(instance);
+        // HV-865 (Cleanup is multi threaded and instances can be removed by multiple threads.
+        // Explicit null check is needed)
+        if (destructibleBeanInstance != null) {
+            destructibleBeanInstance.destroy();
+        }
+    }
+}
+
+
+
diff --git a/ext/bean-validation/src/main/resources/META-INF/NOTICE.markdown b/ext/bean-validation/src/main/resources/META-INF/NOTICE.markdown
new file mode 100644
index 0000000..501db20
--- /dev/null
+++ b/ext/bean-validation/src/main/resources/META-INF/NOTICE.markdown
@@ -0,0 +1,37 @@
+# Notice for Jersey Bean Validation module 
+This content is produced and maintained by the Eclipse Jersey project.
+
+* https://projects.eclipse.org/projects/ee4j.jersey
+
+## Trademarks
+Eclipse Jersey is a trademark of the Eclipse Foundation.
+
+## Copyright
+
+All content is the property of the respective authors or their employers. For
+more information regarding authorship of content, please consult the listed
+source code repository logs.
+
+## Declared Project Licenses
+
+This program and the accompanying materials are made available under the terms
+of the Eclipse Public License v. 2.0 which is available at
+http://www.eclipse.org/legal/epl-2.0. This Source Code may also be made
+available under the following Secondary Licenses when the conditions for such
+availability set forth in the Eclipse Public License v. 2.0 are satisfied: GNU
+General Public License, version 2 with the GNU Classpath Exception which is
+available at https://www.gnu.org/software/classpath/license.html.
+
+SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+## Source Code
+The project maintains the following source code repositories:
+
+* https://github.com/eclipse-ee4j/jersey
+
+## Third-party Content
+
+Hibernate Validator CDI, 6.1.2.Final 
+* License: Apache License, 2.0
+* Project: https://beanvalidation.org/
+* Repackaged in org.glassfish.jersey.server.validation.internal.hibernate
\ No newline at end of file
diff --git a/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiUtil.java b/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiUtil.java
index d3a731d..2057dbf 100644
--- a/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiUtil.java
+++ b/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiUtil.java
@@ -100,7 +100,7 @@
      * @param clazz type of service to look for.
      * @param <T>   type of service to look for
      * @return instance of service with highest priority or {@code null} if service of given type cannot be found.
-     * @see javax.annotation.Priority
+     * @see jakarta.annotation.Priority
      */
     static <T> T lookupService(final Class<T> clazz) {
         final List<RankedProvider<T>> providers = new LinkedList<>();
diff --git a/ext/cdi/jersey-weld2-se/pom.xml b/ext/cdi/jersey-weld2-se/pom.xml
index e8fec6e..2d3880b 100644
--- a/ext/cdi/jersey-weld2-se/pom.xml
+++ b/ext/cdi/jersey-weld2-se/pom.xml
@@ -36,6 +36,7 @@
         <dependency>
             <groupId>org.jboss.weld.se</groupId>
             <artifactId>weld-se-core</artifactId>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.glassfish.jersey.core</groupId>
@@ -47,6 +48,10 @@
             <artifactId>jersey-cdi1x</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.cdi-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/ext/cdi/jersey-weld2-se/src/main/java/org/glassfish/jersey/weld/se/WeldRequestScope.java b/ext/cdi/jersey-weld2-se/src/main/java/org/glassfish/jersey/weld/se/WeldRequestScope.java
index 34ea6d8..d052e2d 100644
--- a/ext/cdi/jersey-weld2-se/src/main/java/org/glassfish/jersey/weld/se/WeldRequestScope.java
+++ b/ext/cdi/jersey-weld2-se/src/main/java/org/glassfish/jersey/weld/se/WeldRequestScope.java
@@ -19,7 +19,7 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 
 import org.glassfish.jersey.ext.cdi1x.internal.JerseyVetoed;
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/SecurityEntityFilteringFeature.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/SecurityEntityFilteringFeature.java
index 8eeff6f..fc97d8d 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/SecurityEntityFilteringFeature.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/SecurityEntityFilteringFeature.java
@@ -24,14 +24,14 @@
 import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature;
 
 /**
- * {@link Feature} used to add support for Java Security annotations (<code>javax.annotation.security</code>) for Entity Data
+ * {@link Feature} used to add support for Java Security annotations (<code>jakarta.annotation.security</code>) for Entity Data
  * Filtering feature.
  * <p>
  * Supported annotations are:
  * <ul>
- * <li>{@link javax.annotation.security.PermitAll}</li>
- * <li>{@link javax.annotation.security.RolesAllowed}</li>
- * <li>{@link javax.annotation.security.DenyAll}</li>
+ * <li>{@link jakarta.annotation.security.PermitAll}</li>
+ * <li>{@link jakarta.annotation.security.RolesAllowed}</li>
+ * <li>{@link jakarta.annotation.security.DenyAll}</li>
  * </ul>
  * </p>
  * <p>
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/package-info.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/package-info.java
index 1f46858..6780ae8 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/package-info.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/package-info.java
@@ -23,7 +23,7 @@
  *     <li>{@link org.glassfish.jersey.message.filtering.EntityFilteringFeature} - adds support for entity-filtering
  *     annotations based on {@link org.glassfish.jersey.message.filtering.EntityFiltering} meta-annotation.</li>
  *     <li>{@link org.glassfish.jersey.message.filtering.SecurityEntityFilteringFeature} - add support for entity-filtering using
- *     Java Security annotations (<code>javax.annotation.security</code>).</li>
+ *     Java Security annotations (<code>jakarta.annotation.security</code>).</li>
  * </ul>
  * <p/>
  * To define own entity-filtering annotations, refer to the {@link org.glassfish.jersey.message.filtering.EntityFiltering}
diff --git a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/ScopeResolver.java b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/ScopeResolver.java
index d4652de..eca27f9 100644
--- a/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/ScopeResolver.java
+++ b/ext/entity-filtering/src/main/java/org/glassfish/jersey/message/filtering/spi/ScopeResolver.java
@@ -31,8 +31,8 @@
  * <ul>
  * <li><code>@MyDetailedView</code> -&gt; <code>my.package.MyDetailedView</code></li>
  * <li>
- * <code>@RolesAllowed({"manager", "user"})</code> -&gt; <code>javax.annotation.security.RolesAllowed_manager</code> and
- * <code>javax.annotation.security.RolesAllowed_user</code>
+ * <code>@RolesAllowed({"manager", "user"})</code> -&gt; <code>jakarta.annotation.security.RolesAllowed_manager</code> and
+ * <code>jakarta.annotation.security.RolesAllowed_user</code>
  * </li>
  * </ul>
  * <p/>
diff --git a/ext/microprofile/mp-config/pom.xml b/ext/microprofile/mp-config/pom.xml
index b4553e5..01267f4 100644
--- a/ext/microprofile/mp-config/pom.xml
+++ b/ext/microprofile/mp-config/pom.xml
@@ -76,13 +76,6 @@
         </dependency>
 
         <dependency>
-            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-            <artifactId>jersey-test-framework-provider-jetty</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
             <groupId>io.helidon.microprofile.config</groupId>
             <artifactId>helidon-microprofile-config</artifactId>
             <version>${helidon.version}</version>
diff --git a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterceptorInvocationContext.java b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterceptorInvocationContext.java
index 9533cf2..014d603 100644
--- a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterceptorInvocationContext.java
+++ b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterceptorInvocationContext.java
@@ -22,9 +22,9 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.enterprise.inject.spi.InterceptionType;
-import javax.enterprise.inject.spi.Interceptor;
-import javax.interceptor.InvocationContext;
+import jakarta.enterprise.inject.spi.InterceptionType;
+import jakarta.enterprise.inject.spi.Interceptor;
+import jakarta.interceptor.InvocationContext;
 import jakarta.ws.rs.client.WebTarget;
 
 /**
diff --git a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterfaceModel.java b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterfaceModel.java
index 3e74889..f8e0d5c 100644
--- a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterfaceModel.java
+++ b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/InterfaceModel.java
@@ -26,8 +26,8 @@
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.context.spi.CreationalContext;
+import jakarta.enterprise.inject.spi.BeanManager;
 import jakarta.ws.rs.Consumes;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
diff --git a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/MethodModel.java b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/MethodModel.java
index e4bc8e9..c6c491e 100644
--- a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/MethodModel.java
+++ b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/MethodModel.java
@@ -38,10 +38,10 @@
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InterceptionType;
-import javax.enterprise.inject.spi.Interceptor;
-import javax.json.JsonValue;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.InterceptionType;
+import jakarta.enterprise.inject.spi.Interceptor;
+import jakarta.json.JsonValue;
 import jakarta.ws.rs.Consumes;
 import jakarta.ws.rs.CookieParam;
 import jakarta.ws.rs.DELETE;
diff --git a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientExtension.java b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientExtension.java
index 6822684..35537ba 100644
--- a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientExtension.java
+++ b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientExtension.java
@@ -16,30 +16,20 @@
 
 package org.glassfish.jersey.microprofile.restclient;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.enterprise.event.Observes;
-import javax.enterprise.inject.spi.AfterBeanDiscovery;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.DeploymentException;
-import javax.enterprise.inject.spi.Extension;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.ProcessAnnotatedType;
-import javax.enterprise.inject.spi.ProcessInjectionPoint;
-import javax.enterprise.inject.spi.WithAnnotations;
-import javax.enterprise.util.AnnotationLiteral;
-import jakarta.inject.Qualifier;
+import jakarta.enterprise.event.Observes;
+import jakarta.enterprise.inject.spi.AfterBeanDiscovery;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.DeploymentException;
+import jakarta.enterprise.inject.spi.Extension;
+import jakarta.enterprise.inject.spi.ProcessAnnotatedType;
+import jakarta.enterprise.inject.spi.WithAnnotations;
 
 import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
 import org.eclipse.microprofile.rest.client.inject.RestClient;
 
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
 /**
  * Filters out all interfaces annotated with {@link RegisterRestClient}
  * and creates new Producer from each of these selected interfaces.
diff --git a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientModel.java b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientModel.java
index 4d91e90..e790d8f 100644
--- a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientModel.java
+++ b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientModel.java
@@ -24,7 +24,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.BeanManager;
 import jakarta.ws.rs.client.WebTarget;
 import jakarta.ws.rs.ext.ParamConverterProvider;
 
diff --git a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientProducer.java b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientProducer.java
index d0c75ec..a95e7fe 100644
--- a/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientProducer.java
+++ b/ext/microprofile/mp-rest-client/src/main/java/org/glassfish/jersey/microprofile/restclient/RestClientProducer.java
@@ -40,16 +40,16 @@
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
-import javax.enterprise.context.Dependent;
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.Any;
-import javax.enterprise.inject.Default;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.DeploymentException;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.enterprise.inject.spi.PassivationCapable;
-import javax.enterprise.util.AnnotationLiteral;
+import jakarta.enterprise.context.Dependent;
+import jakarta.enterprise.context.spi.CreationalContext;
+import jakarta.enterprise.inject.Any;
+import jakarta.enterprise.inject.Default;
+import jakarta.enterprise.inject.spi.Bean;
+import jakarta.enterprise.inject.spi.BeanManager;
+import jakarta.enterprise.inject.spi.DeploymentException;
+import jakarta.enterprise.inject.spi.InjectionPoint;
+import jakarta.enterprise.inject.spi.PassivationCapable;
+import jakarta.enterprise.util.AnnotationLiteral;
 import javax.net.ssl.HostnameVerifier;
 
 import org.eclipse.microprofile.config.Config;
diff --git a/ext/mvc-freemarker/pom.xml b/ext/mvc-freemarker/pom.xml
index 12e4c6f..e99954b 100644
--- a/ext/mvc-freemarker/pom.xml
+++ b/ext/mvc-freemarker/pom.xml
@@ -56,6 +56,20 @@
     </build>
 
     <dependencies>
+        
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>4.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>${servlet4.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        
         <dependency>
             <groupId>org.glassfish.jersey.ext</groupId>
             <artifactId>jersey-mvc</artifactId>
diff --git a/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerMvcFeature.java b/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerMvcFeature.java
index 7983a1b..7df82d9 100644
--- a/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerMvcFeature.java
+++ b/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerMvcFeature.java
@@ -47,7 +47,7 @@
      * </ul>
      * <p/>
      * Value can be absolute providing a full path to a system directory with templates or relative to current
-     * {@link javax.servlet.ServletContext servlet context}.
+     * {@link jakarta.servlet.ServletContext servlet context}.
      * <p/>
      * There is no default value.
      * <p/>
diff --git a/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerViewProcessor.java b/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerViewProcessor.java
index a97a9ca..9a4fb8c 100644
--- a/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerViewProcessor.java
+++ b/ext/mvc-freemarker/src/main/java/org/glassfish/jersey/server/mvc/freemarker/FreemarkerViewProcessor.java
@@ -53,7 +53,7 @@
 
     /**
      * Create an instance of this processor with injected {@link jakarta.ws.rs.core.Configuration config} and
-     * (optional) {@link javax.servlet.ServletContext servlet context}.
+     * (optional) {@link jakarta.servlet.ServletContext servlet context}.
      *
      * @param config           config to configure this processor from.
      * @param injectionManager injection manager.
diff --git a/ext/mvc-jsp/pom.xml b/ext/mvc-jsp/pom.xml
index 1b75f60..5686cb3 100644
--- a/ext/mvc-jsp/pom.xml
+++ b/ext/mvc-jsp/pom.xml
@@ -53,7 +53,7 @@
                 <configuration>
                     <instructions>
                         <Import-Package>
-                            javax.servlet.jsp.*;version="[2.0,3.0)",
+                            jakarta.servlet.jsp.*;version="[2.0,4.0)",
                             javax.servlet.*;version="!",
                             *
                         </Import-Package>
diff --git a/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/Include.java b/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/Include.java
index 90b6e1b..60cedc0 100644
--- a/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/Include.java
+++ b/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/Include.java
@@ -26,10 +26,10 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponseWrapper;
-import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.SimpleTagSupport;
+import jakarta.servlet.jsp.JspContext;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.tagext.SimpleTagSupport;
 
 import org.glassfish.jersey.server.mvc.internal.TemplateHelper;
 import org.glassfish.jersey.server.mvc.jsp.internal.LocalizationMessages;
diff --git a/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspMvcFeature.java b/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspMvcFeature.java
index 653a225..be05e68 100644
--- a/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspMvcFeature.java
+++ b/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspMvcFeature.java
@@ -45,7 +45,7 @@
      * <li>{@link org.glassfish.jersey.server.mvc.ErrorTemplate ErrorTemplate}</li>
      * </ul>
      * <p/>
-     * Value can be absolute or relative to current {@link javax.servlet.ServletContext servlet context}.
+     * Value can be absolute or relative to current {@link jakarta.servlet.ServletContext servlet context}.
      * <p/>
      * There is no default value.
      * <p/>
diff --git a/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspTemplateProcessor.java b/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspTemplateProcessor.java
index 33473c4..89dcf85 100644
--- a/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspTemplateProcessor.java
+++ b/ext/mvc-jsp/src/main/java/org/glassfish/jersey/server/mvc/jsp/JspTemplateProcessor.java
@@ -31,6 +31,7 @@
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletOutputStream;
+import javax.servlet.WriteListener;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponseWrapper;
@@ -109,6 +110,15 @@
             public void write(final int b) throws IOException {
                 out.write(b);
             }
+
+            @Override
+            public boolean isReady() {
+                return true;
+            }
+
+            @Override
+            public void setWriteListener(WriteListener writeListener) {
+            }
         };
         final PrintWriter responseWriter = new PrintWriter(new OutputStreamWriter(responseStream, getEncoding()));
 
diff --git a/ext/mvc-mustache/src/main/java/org/glassfish/jersey/server/mvc/mustache/MustacheMvcFeature.java b/ext/mvc-mustache/src/main/java/org/glassfish/jersey/server/mvc/mustache/MustacheMvcFeature.java
index 96af4ad..6b33cf9 100644
--- a/ext/mvc-mustache/src/main/java/org/glassfish/jersey/server/mvc/mustache/MustacheMvcFeature.java
+++ b/ext/mvc-mustache/src/main/java/org/glassfish/jersey/server/mvc/mustache/MustacheMvcFeature.java
@@ -47,7 +47,7 @@
      * </ul>
      * <p/>
      * Value can be absolute providing a full path to a system directory with templates or relative to current
-     * {@link javax.servlet.ServletContext servlet context}.
+     * {@link jakarta.servlet.ServletContext servlet context}.
      * <p/>
      * There is no default value.
      * <p/>
diff --git a/ext/mvc/pom.xml b/ext/mvc/pom.xml
index 4f64f75..eb31a0f 100644
--- a/ext/mvc/pom.xml
+++ b/ext/mvc/pom.xml
@@ -35,9 +35,9 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>${servlet2.version}</version>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>${servlet4.version}</version>
         </dependency>
 
         <dependency>
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/MvcFeature.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/MvcFeature.java
index 424fd35..ddc26de 100644
--- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/MvcFeature.java
+++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/MvcFeature.java
@@ -43,7 +43,7 @@
      * </ul>
      * <p/>
      * Value can be absolute providing a full path to a system directory with templates or relative to current
-     * {@link javax.servlet.ServletContext servlet context}.
+     * {@link jakarta.servlet.ServletContext servlet context}.
      * <p/>
      * There is no default value.
      * <p/>
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ViewableMessageBodyWriter.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ViewableMessageBodyWriter.java
index d7af895..8305f8d 100644
--- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ViewableMessageBodyWriter.java
+++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ViewableMessageBodyWriter.java
@@ -102,7 +102,9 @@
                 throw new WebApplicationException(new ProcessingException(message), Response.Status.NOT_FOUND);
             }
 
-            httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, resolvedViewable.getMediaType());
+            if (!httpHeaders.containsKey(HttpHeaders.CONTENT_TYPE)) {
+                httpHeaders.putSingle(HttpHeaders.CONTENT_TYPE, resolvedViewable.getMediaType());
+            }
             resolvedViewable.writeTo(entityStream, httpHeaders);
         } catch (ViewableContextException vce) {
             throw new NotFoundException(vce);
diff --git a/media/jaxb/pom.xml b/media/jaxb/pom.xml
index 7142846..8f6a858 100644
--- a/media/jaxb/pom.xml
+++ b/media/jaxb/pom.xml
@@ -110,6 +110,14 @@
                     <unpackBundle>true</unpackBundle>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <forkCount>2</forkCount>
+                    <reuseForks>true</reuseForks>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/FeatureSupplier.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/FeatureSupplier.java
new file mode 100644
index 0000000..61a0923
--- /dev/null
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/FeatureSupplier.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.jaxb;
+
+import org.glassfish.jersey.spi.Contract;
+
+import javax.xml.parsers.SAXParserFactory;
+import java.util.Collections;
+import java.util.Map;
+
+/** This supplier is used to set the features on the instances of the supported classes:
+ * <p><ul>
+ *     <li>{@link javax.xml.parsers.SAXParserFactory}</li>
+ *     <li>{@link javax.xml.transform.TransformerFactory}</li>
+ * </ul></p> using one of the methods:
+ * <p><ul>
+ *     <li>{@link javax.xml.parsers.SAXParserFactory#setFeature(String, boolean)}</li>
+ *     <li>{@link javax.xml.transform.TransformerFactory#setFeature(String, boolean)}</li>
+ * </ul></p>
+ *
+ * @since 2.31
+ */
+@Contract
+public interface FeatureSupplier {
+
+    /**
+     * Define whether the feature set is for the instances of the given class.
+     * @param factoryClass the class for which instance the feature set is to be applied.
+     * @return true if this contract implementation is for the given class.
+     */
+    boolean isFor(Class<?> factoryClass);
+
+    /**
+     * The feature set to be applied.
+     * @return the feature set {@code Map} with keys and {@code Boolean} values.
+     */
+    Map<String, Boolean> getFeatures();
+
+    /**
+     * Supply a feature that disables disallow-doctype-decl feature and allows the ENTITY in the xml DOCTYPE.
+     * Registering this feature will override the settings of the secure {@link SAXParserFactory}.
+     * @return A feature that sets {@code http://apache.org/xml/features/disallow-doctype-decl} feature to false.
+     */
+    static FeatureSupplier allowDoctypeDeclFeature() {
+        return new FeatureSupplier() {
+            @Override
+            public boolean isFor(Class<?> factoryClass) {
+                return SAXParserFactory.class == factoryClass;
+            }
+
+            @Override
+            public Map<String, Boolean> getFeatures() {
+                return Collections.singletonMap("http://apache.org/xml/features/disallow-doctype-decl", false);
+            }
+        };
+    }
+}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/PropertySupplier.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/PropertySupplier.java
new file mode 100644
index 0000000..f0e400d
--- /dev/null
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/PropertySupplier.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.jaxb;
+
+import org.glassfish.jersey.spi.Contract;
+
+import java.util.Map;
+
+
+/** This supplier is used to set the properties on the instances of the supported classes:
+ * <p><ul>
+ *     <li>{@link javax.xml.parsers.DocumentBuilderFactory}</li>
+ *     <li>{@link javax.xml.parsers.SAXParser}</li>
+ *     <li>{@link javax.xml.stream.XMLInputFactory}</li>
+ *     <li>{@link javax.xml.transform.TransformerFactory}</li>
+ * </ul></p> using of the methods
+ * <p><ul>
+ *     <li>{@link javax.xml.parsers.DocumentBuilderFactory#setAttribute(String, Object)}</li>
+ *     <li>{@link javax.xml.parsers.SAXParser#setProperty(String, Object)}</li>
+ *     <li>{@link javax.xml.stream.XMLInputFactory#setProperty(String, Object)}</li>
+ *     <li>{@link javax.xml.transform.TransformerFactory#setAttribute(String, Object)}</li>
+ * </ul></p>
+ *
+ * @since 2.31
+ */
+@Contract
+public interface PropertySupplier {
+    /**
+     * Define whether the property set is for the instances of the given class.
+     * @param factoryOrParserClass the class for which instance the property set is to be applied.
+     * @return true if this contract implementation is for given class.
+     */
+    boolean isFor(Class<?> factoryOrParserClass);
+
+    /**
+     * The properties to be applied.
+     * @return the property {@code Map} with keys and {@code Object} values to be applied.
+     */
+    Map<String, Object> getProperties();
+}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
index aa1ee60..e327214 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/DocumentBuilderFactoryInjectionProvider.java
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jaxb.internal;
 
+import org.glassfish.jersey.internal.inject.InjectionManager;
+
 import jakarta.ws.rs.core.Configuration;
 
 import jakarta.inject.Inject;
@@ -41,9 +43,12 @@
         super(config);
     }
 
+    @Inject
+    private InjectionManager injectionManager;
+
     @Override
     public DocumentBuilderFactory get() {
-        DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
+        final DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
 
         f.setNamespaceAware(true);
 
@@ -51,6 +56,8 @@
             f.setExpandEntityReferences(false);
         }
 
+        JaxbFeatureUtil.setProperties(injectionManager, DocumentBuilderFactory.class, f::setAttribute);
+
         return f;
     }
 
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/JaxbFeatureUtil.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/JaxbFeatureUtil.java
new file mode 100644
index 0000000..3cf9c6e
--- /dev/null
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/JaxbFeatureUtil.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.jaxb.internal;
+
+import org.glassfish.jersey.internal.inject.InjectionManager;
+import org.glassfish.jersey.internal.inject.Providers;
+import org.glassfish.jersey.jaxb.FeatureSupplier;
+import org.glassfish.jersey.jaxb.PropertySupplier;
+import org.glassfish.jersey.model.internal.RankedComparator;
+
+import java.util.Map;
+import java.util.Optional;
+import java.util.logging.Logger;
+
+/**
+ * Utility class that sets features and properties
+ */
+final class JaxbFeatureUtil {
+
+    private static final Logger LOGGER = Logger.getLogger(JaxbFeatureUtil.class.getName());
+    private static final RankedComparator<PropertySupplier> PROPERTY_COMPARATOR
+            = new RankedComparator<>(RankedComparator.Order.DESCENDING);
+    private static final RankedComparator<FeatureSupplier> FEATURE_COMPARATOR
+            = new RankedComparator<>(RankedComparator.Order.DESCENDING);
+
+    private JaxbFeatureUtil() {
+    }
+
+    static void setFeatures(InjectionManager injectionManager, Class<?> clazz, Settable<Boolean> consumer) {
+        if (injectionManager != null) {
+            final Iterable<FeatureSupplier> featureSuppliers
+                    = Providers.getAllProviders(injectionManager, FeatureSupplier.class, FEATURE_COMPARATOR);
+            for (FeatureSupplier featureSupplier : featureSuppliers) {
+                if (featureSupplier.isFor(clazz)) {
+                    for (Map.Entry<String, Boolean> entry : featureSupplier.getFeatures().entrySet()) {
+                        setFeature(clazz, entry, consumer);
+                    }
+                }
+            }
+        }
+    }
+
+    static void setProperties(InjectionManager injectionManager, Class<?> clazz, Settable<Object> consumer) {
+        if (injectionManager != null) {
+            final Iterable<PropertySupplier> propertySuppliers
+                    = Providers.getAllProviders(injectionManager, PropertySupplier.class, PROPERTY_COMPARATOR);
+            for (PropertySupplier propertySupplier : propertySuppliers) {
+                if (propertySupplier.isFor(clazz)) {
+                    for (Map.Entry<String, Object> entry : propertySupplier.getProperties().entrySet()) {
+                        setProperty(clazz, entry, consumer);
+                    }
+                }
+            }
+        }
+    }
+
+    static <T> void setProperty(Class<?> clazz, Map.Entry<String, T> settable, Settable<T> consumer) {
+        Optional<Exception> exception = consumer.accept(settable.getKey(), settable.getValue());
+        exception.ifPresent((ex) -> LOGGER.warning(LocalizationMessages.CANNOT_SET_PROPERTY(
+                settable.getKey(), settable.getValue(), clazz.getName(), ex)));
+    }
+
+    private static <T> void setFeature(Class<?> clazz, Map.Entry<String, T> settable, Settable<T> consumer) {
+        Optional<Exception> exception = consumer.accept(settable.getKey(), settable.getValue());
+        exception.ifPresent((ex) -> LOGGER.warning(LocalizationMessages.CANNOT_SET_FEATURE(
+                settable.getKey(), settable.getValue(), clazz.getName(), ex)));
+    }
+
+
+    @FunctionalInterface
+    static interface Settable<T> {
+        void set(String key, T t) throws javax.xml.parsers.ParserConfigurationException,
+                org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException,
+                javax.xml.transform.TransformerConfigurationException;
+
+        default Optional<Exception> accept(String key, T t) {
+            try {
+                set(key, t);
+                return Optional.empty();
+            } catch (Exception e) {
+                return Optional.of(e);
+            }
+        }
+    }
+}
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
index 41a5421..24f862a 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProvider.java
@@ -16,14 +16,27 @@
 
 package org.glassfish.jersey.jaxb.internal;
 
+import org.glassfish.jersey.internal.inject.InjectionManager;
+import org.glassfish.jersey.jaxb.FeatureSupplier;
+
 import jakarta.ws.rs.core.Configuration;
 
 import jakarta.inject.Inject;
+import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
+import java.util.LinkedHashMap;
+import java.util.Map;
 
 /**
  * Thread-scoped injection provider of {@link SAXParserFactory SAX parser factories}.
  *
+ * If {@link org.glassfish.jersey.message.MessageProperties#XML_SECURITY_DISABLE} is not set,
+ * the {@link SecureSaxParserFactory} is returned. By default, the {@code http://apache.org/xml/features/disallow-doctype-decl}
+ * feature is set to {@code TRUE}. To override this settings, it is possible to register the
+ * {@link FeatureSupplier#allowDoctypeDeclFeature()}.
+ *
+ * @see FeatureSupplier
+ *
  * @author Paul Sandoz
  * @author Marek Potociar
  * @author Martin Matula
@@ -41,15 +54,21 @@
         super(config);
     }
 
+    @Inject
+    private InjectionManager injectionManager;
+
     @Override
     public SAXParserFactory get() {
-        SAXParserFactory factory = SAXParserFactory.newInstance();
+        final SecureSaxParserFactory factory
+                = new SecureSaxParserFactory(SAXParserFactory.newInstance(), !isXmlSecurityDisabled());
 
         factory.setNamespaceAware(true);
 
-        if (!isXmlSecurityDisabled()) {
-            factory = new SecureSaxParserFactory(factory);
-        }
+        final Map<String, Object> saxParserProperties = new LinkedHashMap<>();
+        JaxbFeatureUtil.setProperties(injectionManager, SAXParser.class, saxParserProperties::put);
+        factory.setSaxParserProperties(saxParserProperties);
+
+        JaxbFeatureUtil.setFeatures(injectionManager, SAXParserFactory.class, factory::setFeature);
 
         return factory;
     }
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SecureSaxParserFactory.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SecureSaxParserFactory.java
index 3cb9397..0c5e60c 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SecureSaxParserFactory.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/SecureSaxParserFactory.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -24,6 +24,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -61,8 +62,11 @@
 
     private static final String EXTERNAL_GENERAL_ENTITIES_FEATURE = "http://xml.org/sax/features/external-general-entities";
     private static final String EXTERNAL_PARAMETER_ENTITIES_FEATURE = "http://xml.org/sax/features/external-parameter-entities";
+    private static final String DISALLOW_DOCTYPE_DECLARATION_FEATURE = "http://apache.org/xml/features/disallow-doctype-decl";
 
     private final SAXParserFactory spf;
+    private Map<String, Object> saxParserProperties;
+    private final boolean isSecure;
 
     /**
      * Create new secure SAX parser factory wrapper.
@@ -70,13 +74,25 @@
      * @param spf SAX parser factory.
      */
     public SecureSaxParserFactory(SAXParserFactory spf) {
+        this(spf, true);
+    }
+
+    /**
+     * Create new SAX parser factory wrapper. Can be secure.
+     * @param spf SAX parser factory.
+     * @param isSecure defined whether the parser is secure.
+     */
+    SecureSaxParserFactory(SAXParserFactory spf, boolean isSecure) {
         this.spf = spf;
+        this.isSecure = isSecure;
 
         if (SaxHelper.isXdkParserFactory(spf)) {
             LOGGER.log(Level.WARNING, LocalizationMessages.SAX_XDK_NO_SECURITY_FEATURES());
         } else {
             try {
-                spf.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, Boolean.FALSE);
+                if (isSecure) {
+                    spf.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, Boolean.FALSE);
+                }
             } catch (Exception ex) {
                 LOGGER.log(
                         Level.CONFIG,
@@ -85,7 +101,9 @@
             }
 
             try {
-                spf.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, Boolean.FALSE);
+                if (isSecure) {
+                    spf.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, Boolean.FALSE);
+                }
             } catch (Exception ex) {
                 LOGGER.log(
                         Level.CONFIG,
@@ -94,13 +112,26 @@
             }
 
             try {
-                spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+                if (isSecure) {
+                    spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
+                }
             } catch (Exception ex) {
                 LOGGER.log(
                         Level.CONFIG,
                         LocalizationMessages.SAX_CANNOT_ENABLE_SECURE_PROCESSING_FEATURE(spf.getClass()),
                         ex);
             }
+
+            try {
+                if (isSecure) {
+                    spf.setFeature(DISALLOW_DOCTYPE_DECLARATION_FEATURE, Boolean.TRUE);
+                }
+            } catch (Exception ex) {
+                LOGGER.log(
+                        Level.CONFIG,
+                        LocalizationMessages.SAX_CANNOT_ENABLE_DISALLOW_DOCTYPE_DECLARATION_FEATURE(spf.getClass()),
+                        ex);
+            }
         }
     }
 
@@ -146,7 +177,13 @@
 
     @Override
     public SAXParser newSAXParser() throws ParserConfigurationException, SAXException {
-        return new WrappingSAXParser(spf.newSAXParser());
+        final SAXParser wrappingParser = new WrappingSAXParser(spf.newSAXParser(), isSecure);
+        if (saxParserProperties != null) {
+            for (Map.Entry<String, Object> entry : saxParserProperties.entrySet()) {
+                JaxbFeatureUtil.setProperty(SAXParser.class, entry, wrappingParser::setProperty);
+            }
+        }
+        return wrappingParser;
     }
 
     @Override
@@ -160,13 +197,19 @@
         return spf.getFeature(s);
     }
 
+    void setSaxParserProperties(Map<String, Object> saxParserProperties) {
+        this.saxParserProperties = saxParserProperties;
+    }
+
     @SuppressWarnings("deprecation")
     private static final class WrappingSAXParser extends SAXParser {
 
         private final SAXParser sp;
+        private final boolean isSecure;
 
-        protected WrappingSAXParser(SAXParser sp) {
+        private WrappingSAXParser(SAXParser sp, boolean isSecure) {
             this.sp = sp;
+            this.isSecure = isSecure;
         }
 
         @Override
@@ -240,6 +283,18 @@
         public XMLReader getXMLReader() throws SAXException {
             XMLReader r = sp.getXMLReader();
             r.setEntityResolver(EMPTY_ENTITY_RESOLVER);
+
+            try {
+                if (isSecure) {
+                    r.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, Boolean.FALSE);
+                }
+            } catch (Exception ex) {
+                LOGGER.log(
+                        Level.CONFIG,
+                        LocalizationMessages.SAX_CANNOT_DISABLE_GENERAL_ENTITY_PROCESSING_FEATURE_ON_READER(r.getClass()),
+                        ex);
+            }
+
             return r;
         }
 
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
index 6fd9780..a647e6e 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/TransformerFactoryInjectionProvider.java
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jaxb.internal;
 
+import org.glassfish.jersey.internal.inject.InjectionManager;
+
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -47,9 +49,12 @@
         super(config);
     }
 
+    @Inject
+    private InjectionManager injectionManager;
+
     @Override
     public TransformerFactory get() {
-        TransformerFactory transformerFactory = TransformerFactory.newInstance();
+        final TransformerFactory transformerFactory = TransformerFactory.newInstance();
 
         if (!isXmlSecurityDisabled()) {
             try {
@@ -59,6 +64,9 @@
             }
         }
 
+        JaxbFeatureUtil.setFeatures(injectionManager, TransformerFactory.class, transformerFactory::setFeature);
+        JaxbFeatureUtil.setProperties(injectionManager, TransformerFactory.class, transformerFactory::setAttribute);
+
         return transformerFactory;
     }
 }
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
index 9bac2fb..7ca2fab 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlInputFactoryInjectionProvider.java
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jaxb.internal;
 
+import org.glassfish.jersey.internal.inject.InjectionManager;
+
 import jakarta.ws.rs.core.Configuration;
 
 import jakarta.inject.Inject;
@@ -40,14 +42,19 @@
         super(config);
     }
 
+    @Inject
+    private InjectionManager injectionManager;
+
     @Override
     public XMLInputFactory get() {
-        XMLInputFactory factory = XMLInputFactory.newInstance();
+        final XMLInputFactory factory = XMLInputFactory.newInstance();
 
         if (!isXmlSecurityDisabled()) {
             factory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, Boolean.FALSE);
         }
 
+        JaxbFeatureUtil.setProperties(injectionManager, XMLInputFactory.class, factory::setProperty);
+
         return factory;
     }
 }
diff --git a/media/jaxb/src/main/resources/org/glassfish/jersey/jaxb/internal/localization.properties b/media/jaxb/src/main/resources/org/glassfish/jersey/jaxb/internal/localization.properties
index 8857093..f5886e5 100644
--- a/media/jaxb/src/main/resources/org/glassfish/jersey/jaxb/internal/localization.properties
+++ b/media/jaxb/src/main/resources/org/glassfish/jersey/jaxb/internal/localization.properties
@@ -17,10 +17,16 @@
 error.unmarshalling.jaxb=Error un-marshalling JAXB object of type: {0}.
 error.reading.entity.missing=Missing entity.
 no.param.constructor.missing=No-param constructor not found in the class [{0}].
+cannot.set.property=Cannot set property "{0}"="{1}" on instance of {2}, {3}.
+cannot.set.feature=Cannot set feature "{0}"="{1}" on instance of {2}, {3}.
 sax.cannot.enable.secure.processing.feature=JAXP feature XMLConstants.FEATURE_SECURE_PROCESSING cannot be set \
   on a SAX parser factory [{0}].
+sax.cannot.enable.disallow.doctype.declaration.feature=Cannot enable feature that disallows doctype declaration \
+  on SAX parser factory [{0}].
 sax.cannot.disable.general.entity.processing.feature= Cannot disable external general entity processing feature \
   on SAX parser factory [{0}].
+sax.cannot.disable.general.entity.processing.feature.on.reader=Cannot disable external general entity processing feature \
+  on XML reader [{0}].
 sax.cannot.disable.parameter.entity.processing.feature= Cannot disable external parameter entity processing feature \
   on SAX parser factory [{0}].
 sax.xdk.no.security.features=Using XDK. No security features will be enabled for the SAX parser.
diff --git a/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/FeatureAndPropertySupplierTest.java b/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/FeatureAndPropertySupplierTest.java
new file mode 100644
index 0000000..b7c543c
--- /dev/null
+++ b/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/FeatureAndPropertySupplierTest.java
@@ -0,0 +1,239 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.jaxb.internal;
+
+import org.glassfish.jersey.internal.inject.AbstractBinder;
+import org.glassfish.jersey.internal.inject.InjectionManager;
+import org.glassfish.jersey.internal.inject.PerThread;
+import org.glassfish.jersey.jaxb.FeatureSupplier;
+import org.glassfish.jersey.jaxb.PropertySupplier;
+import org.glassfish.jersey.message.MessageProperties;
+import org.hamcrest.CoreMatchers;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+import jakarta.inject.Singleton;
+import jakarta.ws.rs.Priorities;
+import jakarta.ws.rs.core.Configuration;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.transform.TransformerFactory;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.Collections;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.logging.LogManager;
+
+public class FeatureAndPropertySupplierTest {
+    private InjectionManager injectionManager;
+    private static PrintStream systemErrorStream;
+    private static ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
+
+    @BeforeClass
+    public static void setup() {
+        systemErrorStream = System.err;
+        System.setErr(new PrintStream(errorStream));
+    }
+
+    @AfterClass
+    public static void tearDown() {
+        System.setErr(systemErrorStream);
+    }
+
+    @Test
+    public void xmlReaderDoesNotAllowDocTypeDecl() throws Exception {
+        injectionManager = SaxParserFactoryInjectionProviderTest.createInjectionManager(new AbstractBinder() {
+            @Override
+            protected void configure() {
+                bind(createFeatureSupplier(SAXParserFactory.class,
+                        "http://apache.org/xml/features/disallow-doctype-decl", true))
+                        .to(FeatureSupplier.class)
+                        .ranked(Priorities.USER - 1); //override the SaxParserFactoryInjectionProviderTest.AllowDoctypeDeclFeature
+            }
+        });
+
+        String url = "file:///no-such-file";
+        String content = "<!DOCTYPE x [<!ENTITY % pe SYSTEM '" + url + "'> %pe;]><x/>";
+
+        try {
+            injectionManager.getInstance(SAXParserFactory.class).newSAXParser().getXMLReader()
+                    .parse(new InputSource(new ByteArrayInputStream(content.getBytes("us-ascii"))));
+            Assert.fail("DOCTYPE is NOT disallowed when the feature \"disallow-doctype-decl\" is true");
+        } catch (SAXParseException saxe) {
+            //expected
+        }
+
+    }
+
+    @Test
+    public void setPropertyOnSaxParserIsNotRecognised() throws ParserConfigurationException, SAXException {
+        injectionManager = SaxParserFactoryInjectionProviderTest.createInjectionManager(new AbstractBinder() {
+            @Override
+            protected void configure() {
+                bind(createPropertySupplier(SAXParser.class, "Unknown-Property", "Unknown Value")).to(PropertySupplier.class);
+            }
+        });
+
+
+        injectionManager.getInstance(SAXParserFactory.class).newSAXParser();
+        String warning = new String(errorStream.toByteArray());
+        errorStream.reset();
+        Assert.assertThat(warning, CoreMatchers.containsString("Cannot set property \"Unknown-Property\""));
+    }
+
+    @Test
+    public void setPropertyOnInsecureSaxParserIsNotRecognised() throws ParserConfigurationException, SAXException {
+        final AtomicReference<Configuration> defaultConfig = new AtomicReference<>(null);
+        InvocationHandler handler = (proxy, method, args) -> {
+            if (method.getName().equals("getProperty") && args[0].equals(MessageProperties.XML_SECURITY_DISABLE)) {
+                return true;
+            }
+            return method.invoke(defaultConfig.get(), args);
+        };
+        Configuration insecureConfig =
+                (Configuration) Proxy.newProxyInstance(getClass().getClassLoader(), new Class[]{Configuration.class}, handler);
+        injectionManager = SaxParserFactoryInjectionProviderTest.createInjectionManager(new AbstractBinder() {
+            @Override
+            protected void configure() {
+                bind(createPropertySupplier(SAXParser.class, "Unknown-Property", "Unknown Value")).to(PropertySupplier.class);
+                bindFactory(() -> insecureConfig).to(Configuration.class).ranked(Priorities.USER - 1);
+            }
+        });
+
+        defaultConfig.set(injectionManager.getInstance(Configuration.class));
+
+        injectionManager.getInstance(SAXParserFactory.class).newSAXParser();
+        String warning = new String(errorStream.toByteArray());
+        errorStream.reset();
+        Assert.assertThat(warning, CoreMatchers.containsString("Cannot set property \"Unknown-Property\""));
+    }
+
+    @Test
+    public void setPropertyOnTransformerFactoryIsNotRecognised() {
+        injectionManager = SaxParserFactoryInjectionProviderTest.createInjectionManager(new AbstractBinder() {
+            @Override
+            protected void configure() {
+                bind(createPropertySupplier(TransformerFactory.class, "Unknown-Property", "Unknown Value"))
+                        .to(PropertySupplier.class);
+                bindFactory(TransformerFactoryInjectionProvider.class, Singleton.class)
+                        .to(TransformerFactory.class).in(PerThread.class);
+            }
+        });
+
+        injectionManager.getInstance(TransformerFactory.class);
+        LogManager.getLogManager().reset();
+        String warning = new String(errorStream.toByteArray());
+        errorStream.reset();
+        Assert.assertThat(warning, CoreMatchers.containsString("Cannot set property \"Unknown-Property\""));
+    }
+
+    @Test
+    public void setFeatureOnTransformerFactoryIsNotRecognised() {
+        injectionManager = SaxParserFactoryInjectionProviderTest.createInjectionManager(new AbstractBinder() {
+            @Override
+            protected void configure() {
+                bind(createFeatureSupplier(TransformerFactory.class, "Unknown-Feature", true))
+                        .to(FeatureSupplier.class);
+                bindFactory(TransformerFactoryInjectionProvider.class, Singleton.class)
+                        .to(TransformerFactory.class).in(PerThread.class);
+            }
+        });
+
+        injectionManager.getInstance(TransformerFactory.class);
+        String warning = new String(errorStream.toByteArray());
+        errorStream.reset();
+        Assert.assertThat(warning, CoreMatchers.containsString("Cannot set feature \"Unknown-Feature\""));
+    }
+
+    @Test
+    public void setPropertyOnXmlInputStreamIsNotRecognised() {
+        injectionManager = SaxParserFactoryInjectionProviderTest.createInjectionManager(new AbstractBinder() {
+            @Override
+            protected void configure() {
+                bind(createPropertySupplier(XMLInputFactory.class, "Unknown-Property", "Unknown Value"))
+                        .to(PropertySupplier.class);
+                bindFactory(XmlInputFactoryInjectionProvider.class, Singleton.class)
+                        .to(XMLInputFactory.class).in(PerThread.class);
+            }
+        });
+
+        injectionManager.getInstance(XMLInputFactory.class);
+        String warning = new String(errorStream.toByteArray());
+        errorStream.reset();
+        Assert.assertThat(warning, CoreMatchers.containsString("Cannot set property \"Unknown-Property\""));
+    }
+
+    @Test
+    public void setPropertyOnDocumentBuilderFactoryIsNotRecognised() {
+        injectionManager = SaxParserFactoryInjectionProviderTest.createInjectionManager(new AbstractBinder() {
+            @Override
+            protected void configure() {
+                bind(createPropertySupplier(DocumentBuilderFactory.class, "Unknown-Property", "Unknown Value"))
+                        .to(PropertySupplier.class);
+                bindFactory(DocumentBuilderFactoryInjectionProvider.class, Singleton.class)
+                        .to(DocumentBuilderFactory.class).in(PerThread.class);
+            }
+        });
+
+        injectionManager.getInstance(DocumentBuilderFactory.class);
+        String warning = new String(errorStream.toByteArray());
+        errorStream.reset();
+        Assert.assertThat(warning, CoreMatchers.containsString("Cannot set property \"Unknown-Property\""));
+
+    }
+
+    private static PropertySupplier createPropertySupplier(Class<?> clazz, String key, Object value) {
+        return new PropertySupplier() {
+            @Override
+            public boolean isFor(Class<?> factoryOrParserClass) {
+                return clazz == factoryOrParserClass;
+            }
+
+            @Override
+            public Map<String, Object> getProperties() {
+                return Collections.singletonMap(key, value);
+            }
+        };
+    }
+
+    private static FeatureSupplier createFeatureSupplier(Class<?> clazz, String key, Boolean value) {
+        return new FeatureSupplier() {
+            @Override
+            public boolean isFor(Class<?> factoryOrParserClass) {
+                return clazz == factoryOrParserClass;
+            }
+
+            @Override
+            public Map<String, Boolean> getFeatures() {
+                return Collections.singletonMap(key, value);
+            }
+        };
+    }
+}
diff --git a/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProviderTest.java b/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProviderTest.java
index 2131541..ee40609 100644
--- a/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProviderTest.java
+++ b/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProviderTest.java
@@ -22,6 +22,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import java.util.Map;
 
 import jakarta.ws.rs.RuntimeType;
 import jakarta.ws.rs.core.MediaType;
@@ -35,6 +36,7 @@
 import jakarta.xml.bind.annotation.XmlRootElement;
 import javax.xml.parsers.SAXParserFactory;
 
+import org.glassfish.jersey.jaxb.FeatureSupplier;
 import org.glassfish.jersey.model.internal.CommonConfig;
 import org.glassfish.jersey.model.internal.ComponentBag;
 
@@ -51,7 +53,13 @@
 
             @Override
             public SAXParserFactory get() {
-                return spf.get();
+                SAXParserFactory factory = spf.get();
+
+                for (Map.Entry<String, Boolean> entry : FeatureSupplier.allowDoctypeDeclFeature().getFeatures().entrySet()){
+                    JaxbFeatureUtil.setProperty(SAXParserFactory.class, entry, factory::setFeature);
+                }
+
+                return factory;
             }
         };
 
diff --git a/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProviderTest.java b/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProviderTest.java
index b9e26c2..1aaee2a 100644
--- a/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProviderTest.java
+++ b/media/jaxb/src/test/java/org/glassfish/jersey/jaxb/internal/SaxParserFactoryInjectionProviderTest.java
@@ -41,10 +41,12 @@
 import org.glassfish.jersey.internal.inject.InjectionManager;
 import org.glassfish.jersey.internal.inject.Injections;
 import org.glassfish.jersey.internal.inject.PerThread;
+import org.glassfish.jersey.jaxb.FeatureSupplier;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.xml.sax.InputSource;
+
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNotSame;
 import static org.junit.Assert.assertSame;
@@ -133,6 +135,7 @@
                         .to(SAXParserFactory.class)
                         .in(PerThread.class);
                 bindAsContract(MySPFProvider.class).in(Singleton.class);
+                bind(FeatureSupplier.allowDoctypeDeclFeature()).to(FeatureSupplier.class);
             }
         };
         System.arraycopy(customBinders, 0, binders, 2, customBinders.length);
diff --git a/media/json-binding/pom.xml b/media/json-binding/pom.xml
index 2690a68..474a564 100644
--- a/media/json-binding/pom.xml
+++ b/media/json-binding/pom.xml
@@ -72,7 +72,6 @@
         <dependency>
             <groupId>org.glassfish</groupId>
             <artifactId>jakarta.json</artifactId>
-            <version>${jsonp.ri.version}</version>
         </dependency>
 
         <!-- TODO - remove snapshot dependencies (will need yasson & API release, as there only is 2 month old M1 version -->
@@ -90,12 +89,12 @@
                     <artifactId>jakarta.el-api</artifactId>
                 </exclusion>
                 <exclusion>
-                    <groupId>javax.json.bind</groupId>
-                    <artifactId>javax.json.bind-api</artifactId>
+                    <groupId>jakarta.json.bind</groupId>
+                    <artifactId>jakarta.json.bind-api</artifactId>
                 </exclusion>
                 <exclusion>
-                    <groupId>javax.json</groupId>
-                    <artifactId>javax.json-api</artifactId>
+                    <groupId>jakarta.json</groupId>
+                    <artifactId>jakarta.json-api</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
diff --git a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
index 32632cf..98ea299 100644
--- a/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
+++ b/media/json-binding/src/main/java/org/glassfish/jersey/jsonb/internal/JsonBindingProvider.java
@@ -34,9 +34,9 @@
 import jakarta.ws.rs.ext.Provider;
 import jakarta.ws.rs.ext.Providers;
 
-import javax.json.bind.Jsonb;
-import javax.json.bind.JsonbBuilder;
-import javax.json.bind.JsonbException;
+import jakarta.json.bind.Jsonb;
+import jakarta.json.bind.JsonbBuilder;
+import jakarta.json.bind.JsonbException;
 
 import org.glassfish.jersey.jsonb.LocalizationMessages;
 import org.glassfish.jersey.message.internal.AbstractMessageReaderWriterProvider;
diff --git a/media/json-jackson/pom.xml b/media/json-jackson/pom.xml
index eb5d899..87804ff 100644
--- a/media/json-jackson/pom.xml
+++ b/media/json-jackson/pom.xml
@@ -82,6 +82,17 @@
                     <unpackBundle>true</unpackBundle>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProviderTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+
         </plugins>
     </build>
 
@@ -123,5 +134,18 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
+            <artifactId>jersey-test-framework-provider-bundle</artifactId>
+            <version>${project.version}</version>
+            <type>pom</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jdk8</artifactId>
+            <version>2.11.0</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/JacksonFeature.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/JacksonFeature.java
index bda2f2f..96d2988 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/JacksonFeature.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/JacksonFeature.java
@@ -25,6 +25,7 @@
 import org.glassfish.jersey.CommonProperties;
 import org.glassfish.jersey.internal.InternalProperties;
 import org.glassfish.jersey.internal.util.PropertiesHelper;
+import org.glassfish.jersey.jackson.internal.DefaultJacksonJaxbJsonProvider;
 import org.glassfish.jersey.jackson.internal.FilteringJacksonJaxbJsonProvider;
 import org.glassfish.jersey.jackson.internal.JacksonFilteringFeature;
 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.JsonMappingExceptionMapper;
@@ -103,6 +104,8 @@
                 context.register(JacksonFilteringFeature.class);
                 context.register(FilteringJacksonJaxbJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class);
             } else {
+                //context.register(DefaultJacksonJaxbJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class);
+//                TODO: remove after jakartification
                 context.register(JacksonJaxbJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class);
             }
         }
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java
new file mode 100644
index 0000000..b79a196
--- /dev/null
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProvider.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.jackson.internal;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.cfg.Annotations;
+import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
+
+import java.util.Objects;
+import jakarta.inject.Singleton;
+
+/**
+ * Entity Data provider based on Jackson JSON provider.
+ */
+@Singleton
+public class DefaultJacksonJaxbJsonProvider extends JacksonJaxbJsonProvider {
+
+    public DefaultJacksonJaxbJsonProvider() {
+        findAndRegisterModules();
+    }
+
+    public DefaultJacksonJaxbJsonProvider(final Annotations... annotationsToUse) {
+        super(annotationsToUse);
+        findAndRegisterModules();
+    }
+
+    private void findAndRegisterModules() {
+        final ObjectMapper defaultMapper = _mapperConfig.getDefaultMapper();
+        if (Objects.nonNull(defaultMapper)) {
+            defaultMapper.findAndRegisterModules();
+        }
+
+        final ObjectMapper mapper = _mapperConfig.getConfiguredMapper();
+        if (Objects.nonNull(mapper)) {
+            mapper.findAndRegisterModules();
+        }
+    }
+}
diff --git a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
index 42021e5..815b45e 100644
--- a/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
+++ b/media/json-jackson/src/main/java/org/glassfish/jersey/jackson/internal/FilteringJacksonJaxbJsonProvider.java
@@ -33,7 +33,6 @@
 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.cfg.EndpointConfigBase;
 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.cfg.ObjectWriterInjector;
 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.cfg.ObjectWriterModifier;
-import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider;
 import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JsonEndpointConfig;
 import org.glassfish.jersey.message.filtering.spi.ObjectProvider;
 
@@ -56,7 +55,7 @@
  * @author Michal Gajdos
  */
 @Singleton
-public final class FilteringJacksonJaxbJsonProvider extends JacksonJaxbJsonProvider {
+public final class FilteringJacksonJaxbJsonProvider extends DefaultJacksonJaxbJsonProvider {
 
     @Inject
     private Provider<ObjectProvider<FilterProvider>> provider;
diff --git a/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown b/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown
index f2dc094..1db9962 100644
--- a/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown
+++ b/media/json-jackson/src/main/resources/META-INF/NOTICE.markdown
@@ -31,7 +31,7 @@
 
 ## Third-party Content
 
-Jackson JAX-RS Providers version 2.9.9
+Jackson JAX-RS Providers version 2.10.1
 * License: Apache License, 2.0
 * Project: https://github.com/FasterXML/jackson-jaxrs-providers
 * Copyright: (c) 2009-2011 FasterXML, LLC. All rights reserved unless otherwise indicated.
\ No newline at end of file
diff --git a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProviderTest.java b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProviderTest.java
new file mode 100644
index 0000000..71ea96f
--- /dev/null
+++ b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/DefaultJacksonJaxbJsonProviderTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.jackson.internal;
+
+import org.glassfish.jersey.jackson.internal.model.ServiceTest;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.test.JerseyTest;
+import org.junit.Test;
+
+import jakarta.ws.rs.core.Application;
+
+import static junit.framework.TestCase.assertEquals;
+
+public final class DefaultJacksonJaxbJsonProviderTest extends JerseyTest {
+
+    @Override
+    protected final Application configure() {
+        return new ResourceConfig(ServiceTest.class);
+    }
+
+    @Test
+    public final void testJavaOptional() {
+        final String response = target("entity/simple").request().get(String.class);
+        assertEquals("{\"name\":\"Hello\",\"value\":\"World\"}", response);
+    }
+}
diff --git a/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/model/ServiceTest.java b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/model/ServiceTest.java
new file mode 100644
index 0000000..3e8f981
--- /dev/null
+++ b/media/json-jackson/src/test/java/org/glassfish/jersey/jackson/internal/model/ServiceTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.jackson.internal.model;
+
+import com.fasterxml.jackson.annotation.JsonGetter;
+
+import java.util.Optional;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+
+@Path("/entity/")
+public final class ServiceTest {
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/simple")
+    public final EntityTest simple() {
+        return new EntityTest("Hello", "World");
+    }
+
+    private static final class EntityTest {
+
+        private final String name;
+
+        private final String value;
+
+        EntityTest(final String name, final String value) {
+            this.name = name;
+            this.value = value;
+        }
+
+        @JsonGetter("name")
+        public final String getName() {
+            return name;
+        }
+
+        @JsonGetter("value")
+        public final Optional<String> getValue() {
+            return Optional.ofNullable(value);
+        }
+    }
+}
diff --git a/media/json-processing/pom.xml b/media/json-processing/pom.xml
index 7947c69..92de845 100644
--- a/media/json-processing/pom.xml
+++ b/media/json-processing/pom.xml
@@ -57,14 +57,25 @@
                         <!-- TODO: change to ${range;[==,+);${jsonp.api.version}} once the version is final-->
                         <Import-Package>
                             ${jakarta.annotation.osgi.version},
-                            javax.json.*;version="[0,2)",
-                            org.glassfish.json.*;version="[0,2)",
+                            jakarta.json.*;version="[0,3)",
+                            org.glassfish.json.*;version="[0,3)",
                             *
                         </Import-Package>
                     </instructions>
                     <unpackBundle>true</unpackBundle>
                 </configuration>
             </plugin>
+            <!-- TODO remove after jakartification is done  -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/jsonp/JsonProcessingAutoDiscoverableServerTest.java</exclude>
+                        <exclude>org/glassfish/jersey/jsonp/JsonProcessingAutoDiscoverableClientTest.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/media/moxy/pom.xml b/media/moxy/pom.xml
index b43ff24..37e08a5 100644
--- a/media/moxy/pom.xml
+++ b/media/moxy/pom.xml
@@ -109,8 +109,8 @@
             <artifactId>org.eclipse.persistence.moxy</artifactId>
             <exclusions>
                 <exclusion>
-                    <groupId>javax.json</groupId>
-                    <artifactId>javax.json-api</artifactId>
+                    <groupId>jakarta.json</groupId>
+                    <artifactId>jakarta.json-api</artifactId>
                 </exclusion>
                 <exclusion>
                     <groupId>jakarta.json</groupId>
diff --git a/media/pom.xml b/media/pom.xml
index e5e2ea9..20d1e40 100644
--- a/media/pom.xml
+++ b/media/pom.xml
@@ -40,8 +40,8 @@
         <module>json-binding</module>
         <module>json-jackson</module>
         <module>json-jettison</module>
-<!--        <module>json-processing</module>-->
-<!--        <module>moxy</module>-->
+        <module>json-processing</module>
+        <module>moxy</module>
         <module>multipart</module>
         <module>sse</module>
     </modules>
diff --git a/pom.xml b/pom.xml
index 1c2afee..694c9f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -170,7 +170,8 @@
             <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
             <distribution>repo</distribution>
             <comments>Google Guava @ org.glassfish.jersey.internal.guava,
-                      Dropwizard Monitoring inspired classes @ org.glassfish.jersey.server.internal.monitoring.core and
+                      Dropwizard Monitoring inspired classes @ org.glassfish.jersey.server.internal.monitoring.core,
+                      Hibernate Validation classes @ org.glassfish.jersey.server.validation.internal.hibernate, and
                       Jackson JAX-RS Providers @ org.glassfish.jersey.jackson.internal.jackson.jaxrs</comments>
         </license>
         <license>
@@ -1687,7 +1688,7 @@
             <dependency>
                 <groupId>jakarta.xml.bind</groupId>
                 <artifactId>jakarta.xml.bind-api</artifactId>
-                <version>${jaxb.api.version}</version>
+                <version>${jakarta.jaxb.api.version}</version>
             </dependency>
 
             <dependency>
@@ -1710,7 +1711,7 @@
             <dependency>
                 <groupId>jakarta.persistence</groupId>
                 <artifactId>jakarta.persistence-api</artifactId>
-                <version>${javax.persistence.version}</version>
+                <version>${jakarta.persistence.version}</version>
                 <scope>provided</scope>
             </dependency>
 
@@ -2067,7 +2068,7 @@
         <checkstyle.mvn.plugin.version>3.1.0</checkstyle.mvn.plugin.version>
         <checkstyle.version>8.28</checkstyle.version>
         <easymock.version>3.3</easymock.version>
-        <ejb.version>3.2.5</ejb.version>
+        <ejb.version>4.0.0-RC1</ejb.version>
         <fasterxml.classmate.version>1.3.3</fasterxml.classmate.version>
         <findbugs.glassfish.version>1.7</findbugs.glassfish.version>
         <findbugs.version>3.0.4</findbugs.version>
@@ -2092,9 +2093,9 @@
         <jettison.version>1.3.7</jettison.version> <!-- TODO: 1.3.8 doesn't work; AbstractJsonTest complexBeanWithAttributes -->
         <jmh.version>1.10.2</jmh.version>
         <jmockit.version>1.44</jmockit.version>
-        <jsp.version>2.3.6</jsp.version>
-        <jstl.version>1.2.7</jstl.version>
-        <jta.api.version>1.3.3</jta.api.version>
+        <jsp.version>3.0.0-M1</jsp.version>
+        <jstl.version>2.0.0-RC1</jstl.version>
+        <jta.api.version>2.0.0-RC1</jta.api.version>
         <junit5.version>5.6.0</junit5.version>
         <kryo.version>4.0.1</kryo.version>
         <mockito.version>1.10.19</mockito.version>
@@ -2112,6 +2113,7 @@
         <servlet2.version>2.4</servlet2.version>
         <servlet3.version>3.0.1</servlet3.version>
         <servlet4.version>4.0.3</servlet4.version>
+<!--        <servlet4.version>5.0.0-M1</servlet4.version>-->
         <simple.version>6.0.1</simple.version>
         <skip.e2e>false</skip.e2e>
         <slf4j.version>1.7.21</slf4j.version>
@@ -2120,37 +2122,36 @@
         <surefire.version>3.0.0-M3</surefire.version>
         <validation.impl.version>7.0.0.Alpha1</validation.impl.version>
         <weld.version>2.2.14.Final</weld.version> <!-- 2.4.1 doesn't work - bv tests -->
-        <weld3.version>4.0.0.Alpha1</weld3.version>
+        <weld3.version>4.0.0.Alpha2</weld3.version>
+        <weld4.version>4.0.0.Alpha2</weld4.version>
         <xerces.version>2.11.0</xerces.version>
 
         <!-- do not need CQs -->
         <gf.impl.version>5.1.0</gf.impl.version>
-        <istack.commons.runtime.version>3.0.8</istack.commons.runtime.version>
+        <istack.commons.runtime.version>4.0.0-M3</istack.commons.runtime.version>
         <jakarta.activation-api.version>2.0.0-RC3</jakarta.activation-api.version>
         <jakarta.activation.version>2.0.0-RC3</jakarta.activation.version>
         <jakarta.el.version>4.0.0-RC1</jakarta.el.version>
         <jakarta.el.impl.version>4.0.0-RC1</jakarta.el.impl.version>
-        <javax.annotation.osgi.version>javax.annotation.*;version="[1.2,3)"</javax.annotation.osgi.version>
-        <jakarta.annotation.osgi.version>jakarta.annotation.*;version="[1.2,3)"</jakarta.annotation.osgi.version>
+        <jakarta.annotation.osgi.version>jakarta.annotation.*;version="[2.0,3)"</jakarta.annotation.osgi.version>
         <jakarta.annotation.version>2.0.0-RC1</jakarta.annotation.version>
         <jakarta.inject.version>2.0.0-RC3</jakarta.inject.version>
         <javax.annotation.version>1.3.5</javax.annotation.version>
-        <javax.interceptor.version>1.2.5</javax.interceptor.version>
-        <javax.persistence.version>2.2.3</javax.persistence.version>
+        <jakarta.interceptor.version>2.0.0-RC2</jakarta.interceptor.version>
+        <jakarta.persistence.version>3.0.0-RC2</jakarta.persistence.version>
         <jakarta.validation.api.version>3.0.0-M1</jakarta.validation.api.version>
-        <jaxb.api.version>3.0.0-RC2</jaxb.api.version>
-        <javax.jaxb.api.version>2.3.2</javax.jaxb.api.version>
-        <jaxb.ri.version>3.0.0-M1</jaxb.ri.version>
+        <jakarta.jaxb.api.version>3.0.0-RC3</jakarta.jaxb.api.version>
+        <jaxb.ri.version>3.0.0-M3</jaxb.ri.version>
         <jaxrs.api.spec.version>3.0</jaxrs.api.spec.version>
         <jaxrs.api.impl.version>3.0.0-M1</jaxrs.api.impl.version>
         <jetty.plugin.version>6.1.26</jetty.plugin.version>
         <jetty.version>9.4.27.v20200227</jetty.version>
         <jetty.servlet.api.25.version>6.1.14</jetty.servlet.api.25.version>
-        <jsonb.api.version>1.0.2</jsonb.api.version>
-        <jsonp.ri.version>1.1.6</jsonp.ri.version>
-        <jsonp.jaxrs.version>1.1.6</jsonp.jaxrs.version>
+        <jsonb.api.version>2.0.0-RC1</jsonb.api.version>
+        <jsonp.ri.version>2.0.0-RC2</jsonp.ri.version>
+        <jsonp.jaxrs.version>2.0.0-RC2</jsonp.jaxrs.version>
         <mimepull.version>1.9.13</mimepull.version>
-        <moxy.version>2.7.6</moxy.version>
-        <yasson.version>1.0.6</yasson.version>
+        <moxy.version>3.0.0-M1</moxy.version>
+        <yasson.version>2.0.0-M1</yasson.version>
     </properties>
 </project>
diff --git a/test-framework/core/src/main/java/org/glassfish/jersey/test/ServletDeploymentContext.java b/test-framework/core/src/main/java/org/glassfish/jersey/test/ServletDeploymentContext.java
index b7bde85..d106a07 100644
--- a/test-framework/core/src/main/java/org/glassfish/jersey/test/ServletDeploymentContext.java
+++ b/test-framework/core/src/main/java/org/glassfish/jersey/test/ServletDeploymentContext.java
@@ -107,7 +107,7 @@
     /**
      * Create new servlet deployment context builder bound to a Servlet instance.
      * <p>
-     * Note that the servlet instance will be discarded if one of the {@link Builder#servlet(javax.servlet.http.HttpServlet)},
+     * Note that the servlet instance will be discarded if one of the {@link Builder#servlet(jakarta.servlet.http.HttpServlet)},
      * {@link Builder#servletClass(Class)}, {@link Builder#filterClass(Class)} or
      * {@link Builder#filterClass(Class, java.util.Set)} is invoked on the builder.
      * </p>
@@ -124,7 +124,7 @@
     /**
      * Create new servlet deployment context builder bound to a Servlet class.
      * <p>
-     * Note that the servlet instance will be discarded if one of the {@link Builder#servlet(javax.servlet.http.HttpServlet)},
+     * Note that the servlet instance will be discarded if one of the {@link Builder#servlet(jakarta.servlet.http.HttpServlet)},
      * {@link Builder#servletClass(Class)}, {@link Builder#filterClass(Class)} or
      * {@link Builder#filterClass(Class, java.util.Set)} is invoked on the builder.
      * </p>
diff --git a/test-framework/providers/grizzly2/src/test/java/org/glassfish/jersey/test/grizzly/web/GrizzlyRequestDispatchFilterTest.java b/test-framework/providers/grizzly2/src/test/java/org/glassfish/jersey/test/grizzly/web/GrizzlyRequestDispatchFilterTest.java
index b17a215..071c008 100644
--- a/test-framework/providers/grizzly2/src/test/java/org/glassfish/jersey/test/grizzly/web/GrizzlyRequestDispatchFilterTest.java
+++ b/test-framework/providers/grizzly2/src/test/java/org/glassfish/jersey/test/grizzly/web/GrizzlyRequestDispatchFilterTest.java
@@ -50,7 +50,7 @@
  *
  * This is to make sure filters could be utilized even for filtering
  * requests that are being forwarded/included within the server side
- * using {@link javax.servlet.RequestDispatcher} mechanism.
+ * using {@link jakarta.servlet.RequestDispatcher} mechanism.
  *
  * @author Jakub Podlesak
  * @author Marek Potociar
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/AbortResponseClientTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/AbortResponseClientTest.java
index 9dc72d4..97cd2fe 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/AbortResponseClientTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/AbortResponseClientTest.java
@@ -22,8 +22,8 @@
 import java.util.Date;
 import java.util.Map;
 
-import javax.json.Json;
-import javax.json.JsonString;
+import jakarta.json.Json;
+import jakarta.json.JsonString;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.client.ClientRequestContext;
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientDestroyTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientDestroyTest.java
index cdf4c97..7e32a17 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientDestroyTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientDestroyTest.java
@@ -172,8 +172,9 @@
     }
 
     public static class BarListener implements ClientRequestFilter, ClientLifecycleListener {
-        protected volatile boolean closed = false;
+        protected volatile boolean closedByClientClose = false;
         protected volatile boolean initialized = false;
+        protected volatile boolean closedByFinalize = false;
 
         @Override
         public void filter(final ClientRequestContext requestContext) throws IOException { /* do nothing */ }
@@ -185,11 +186,25 @@
 
         @Override
         public synchronized void onClose() {
-            this.closed = true;
+            // There is the ClientRuntime created twice, each of which has filter "filterOnClient" registered.
+            // onClose can be called from Client#close or from ClientRuntime#finalize
+            if (ClientDestroyTest.isCalledFromFinalizer()) {
+                this.closedByFinalize = true;
+            } else {
+                closedByClientClose = true;
+            }
+        }
+
+        public boolean isClosedByClientClose() {
+            return closedByClientClose;
+        }
+
+        public boolean isClosedByFinalize() {
+            return closedByFinalize;
         }
 
         public boolean isClosed() {
-            return closed;
+            return closedByClientClose || closedByFinalize;
         }
 
         public boolean isInitialized() {
@@ -206,29 +221,39 @@
         final JerseyClientBuilder builder = new JerseyClientBuilder();
         final JerseyClient client = builder.build();
 
-        final BarListener filter = new BarListener();
-        final BarListener filter2 = new BarListener2();
+        final BarListener filterOnClient = new BarListener();
+        final BarListener filterOnTarget = new BarListener2();
 
         // ClientRuntime initializes lazily, so it is forced by invoking a (dummy) request
-        client.register(filter2);                                                   // instance registered into client
-        client.target(getBaseUri()).register(filter).request().get(String.class);   // instance registration into target
+        client.register(filterOnTarget);                                                   // instance registered into client
+        client.target(getBaseUri()).register(filterOnClient).request().get(String.class);   // instance registration into target
 
-        assertTrue("Filter was expected to be already initialized.", filter.isInitialized());
-        assertTrue("Filter2 was expected to be already initialized.", filter2.isInitialized());
+        assertTrue("Filter registered on Client was expected to be already initialized.", filterOnClient.isInitialized());
+        assertTrue("Filter registered on Target was expected to be already initialized.", filterOnTarget.isInitialized());
 
         client.target(getBaseUri()).register(FooListener.class).request().get(String.class); // class registration into target
 
         assertTrue("Class-registered filter was expected to be already initialized", FooListener.isInitialized());
 
         assertFalse("Class-registered filter was expected to be still open.", FooListener.isClosed());
-        assertFalse("Filter was expected to be still open.", filter.isClosed());
-        assertFalse("Filter2 was expected to be still open.", filter2.isClosed());
+        assertFalse("Filter registered on Client was expected to be still open.", filterOnClient.isClosedByClientClose());
+        assertFalse("Filter registered on Target was expected to be still open.", filterOnTarget.isClosedByClientClose());
 
         client.close();
 
         assertTrue("Class-registered filter was expected to be closed.", FooListener.isClosed());
-        assertTrue("Filter was expected to be closed.", filter.isClosed());
-        assertTrue("Filter2 was expected to be closed.", filter2.isClosed());
+        assertTrue("Filter registered on Client was expected to be closed.", filterOnClient.isClosed());
+        assertTrue("Filter registered on Target was expected to be closed.", filterOnTarget.isClosed());
+    }
+
+    private static boolean isCalledFromFinalizer() {
+        StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
+        for (StackTraceElement element : stackTraceElements) {
+            if ("finalize".equals(element.getMethodName())) {
+                return true;
+            }
+        }
+        return false;
     }
 
 }
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientExecutorTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientExecutorTest.java
index c6a67c6..b5ee965 100644
--- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientExecutorTest.java
+++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/ClientExecutorTest.java
@@ -44,6 +44,7 @@
 import org.glassfish.jersey.test.JerseyTest;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -80,6 +81,7 @@
     }
 
     @Test
+    @Ignore //TODO - remove after jakartification
     public void testDefaultExecutorRx() throws InterruptedException {
         Client client = ClientBuilder.newClient();
         testRx(client, latch);
diff --git a/tests/e2e-entity/pom.xml b/tests/e2e-entity/pom.xml
index b795251..87c6070 100644
--- a/tests/e2e-entity/pom.xml
+++ b/tests/e2e-entity/pom.xml
@@ -71,6 +71,7 @@
                                 <exclude>org/glassfish/jersey/tests/e2e/entity/JAXBContextResolverTest*</exclude>
                                 <exclude>org/glassfish/jersey/tests/e2e/entity/XXETest.java</exclude>
                                 <exclude>org/glassfish/jersey/tests/e2e/entity/XmlJaxBElementProviderTest.java</exclude>
+                                <exclude>org/glassfish/jersey/tests/e2e/entity/filtering/json/MoxyEntityFilteringTest.java</exclude>
                             </excludes>
                         </configuration>
                     </execution>
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/entity/XXETest.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/entity/XXETest.java
index 1627b41..93e95cb 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/entity/XXETest.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/entity/XXETest.java
@@ -35,6 +35,7 @@
 import javax.xml.transform.sax.SAXSource;
 import javax.xml.transform.stream.StreamSource;
 
+import org.glassfish.jersey.jaxb.FeatureSupplier;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
 
@@ -118,7 +119,7 @@
 
     @Override
     public ResourceConfig configure() {
-        return new ResourceConfig(EntityHolderResource.class);
+        return new ResourceConfig(EntityHolderResource.class).register(FeatureSupplier.allowDoctypeDeclFeature());
     }
 
     @Test
@@ -200,6 +201,6 @@
 
     // NOTE - this is a tes migrated from Jersey 1.x tests. The original test class contains also insecure "versions" of the
     // methods above configured via FeaturesAndProperties.FEATURE_DISABLE_XML_SECURITY. Those methods are ommited,
-    // as Jersey 2 does not support such consturct.
+    // as Jersey 2 does not support such construct.
 
 }
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/Jersey1199Test.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/Jersey1199Test.java
index b3dec8d..a22d1e6 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/Jersey1199Test.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/Jersey1199Test.java
@@ -21,7 +21,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.json.bind.adapter.JsonbAdapter;
+import jakarta.json.bind.adapter.JsonbAdapter;
 
 import org.glassfish.jersey.tests.e2e.json.entity.ColorHolder;
 import org.glassfish.jersey.tests.e2e.json.entity.Jersey1199List;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingDisabledTest.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingDisabledTest.java
index 1981731..7ed8e08 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingDisabledTest.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingDisabledTest.java
@@ -27,8 +27,8 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 
-import javax.json.Json;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonObject;
 
 import org.glassfish.jersey.internal.InternalProperties;
 import org.glassfish.jersey.server.ResourceConfig;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingTest.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingTest.java
index 166ccbe..8bf8ebd 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingTest.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonProcessingTest.java
@@ -27,13 +27,13 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 
-import javax.json.Json;
-import javax.json.JsonArray;
-import javax.json.JsonNumber;
-import javax.json.JsonObject;
-import javax.json.JsonString;
-import javax.json.JsonStructure;
-import javax.json.JsonValue;
+import jakarta.json.Json;
+import jakarta.json.JsonArray;
+import jakarta.json.JsonNumber;
+import jakarta.json.JsonObject;
+import jakarta.json.JsonString;
+import jakarta.json.JsonStructure;
+import jakarta.json.JsonValue;
 
 import org.glassfish.jersey.jsonp.JsonProcessingFeature;
 import org.glassfish.jersey.server.JSONP;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonTestProvider.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonTestProvider.java
index 2d25acf..2db4810 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonTestProvider.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/JsonTestProvider.java
@@ -26,9 +26,9 @@
 import jakarta.ws.rs.ext.ContextResolver;
 import jakarta.ws.rs.ext.Provider;
 
-import javax.json.bind.Jsonb;
-import javax.json.bind.JsonbBuilder;
-import javax.json.bind.JsonbConfig;
+import jakarta.json.bind.Jsonb;
+import jakarta.json.bind.JsonbBuilder;
+import jakarta.json.bind.JsonbConfig;
 
 import org.glassfish.jersey.jackson.JacksonFeature;
 import org.glassfish.jersey.jettison.JettisonConfig;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/AnotherArrayTestBean.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/AnotherArrayTestBean.java
index 89e9c39..969838d 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/AnotherArrayTestBean.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/AnotherArrayTestBean.java
@@ -20,8 +20,8 @@
 import java.util.Formatter;
 import java.util.List;
 
-import javax.json.bind.annotation.JsonbTransient;
-import javax.json.bind.annotation.JsonbVisibility;
+import jakarta.json.bind.annotation.JsonbTransient;
+import jakarta.json.bind.annotation.JsonbVisibility;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes.java
index c88a652..e19703b 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes.java
@@ -20,7 +20,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.json.bind.annotation.JsonbVisibility;
+import jakarta.json.bind.annotation.JsonbVisibility;
 import jakarta.xml.bind.annotation.XmlAttribute;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes2.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes2.java
index 8eafa41..fe176f3 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes2.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes2.java
@@ -19,7 +19,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.json.bind.annotation.JsonbVisibility;
+import jakarta.json.bind.annotation.JsonbVisibility;
 import jakarta.xml.bind.annotation.XmlAttribute;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes3.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes3.java
index 5f9cf48..0a99510 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes3.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes3.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.e2e.json.entity;
 
-import javax.json.bind.annotation.JsonbVisibility;
+import jakarta.json.bind.annotation.JsonbVisibility;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
 
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes4.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes4.java
index 660a6e2..201ecec 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes4.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/ComplexBeanWithAttributes4.java
@@ -20,7 +20,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.json.bind.annotation.JsonbVisibility;
+import jakarta.json.bind.annotation.JsonbVisibility;
 import jakarta.xml.bind.annotation.XmlAttribute;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/CustomJsonbVisibilityStrategy.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/CustomJsonbVisibilityStrategy.java
index 9d6532d..398e804 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/CustomJsonbVisibilityStrategy.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/CustomJsonbVisibilityStrategy.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
-import javax.json.bind.config.PropertyVisibilityStrategy;
+import jakarta.json.bind.config.PropertyVisibilityStrategy;
 
 /**
  * Custom, permissive {@link PropertyVisibilityStrategy}.
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/FakeArrayBean.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/FakeArrayBean.java
index e7f142a..2fc8fea 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/FakeArrayBean.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/FakeArrayBean.java
@@ -19,7 +19,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.json.bind.annotation.JsonbVisibility;
+import jakarta.json.bind.annotation.JsonbVisibility;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlElement;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/Jersey1199List.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/Jersey1199List.java
index b5eb66b..f24f61a 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/Jersey1199List.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/Jersey1199List.java
@@ -20,7 +20,7 @@
 import java.util.EnumSet;
 import java.util.Formatter;
 
-import javax.json.bind.annotation.JsonbTypeAdapter;
+import jakarta.json.bind.annotation.JsonbTypeAdapter;
 import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.glassfish.jersey.tests.e2e.json.Jersey1199Test;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/MyResponse.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/MyResponse.java
index cabaa23..626dd03 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/MyResponse.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/MyResponse.java
@@ -19,7 +19,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.json.bind.annotation.JsonbVisibility;
+import jakarta.json.bind.annotation.JsonbVisibility;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlElement;
diff --git a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/User.java b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/User.java
index 8c1b1fb..2d6f074 100644
--- a/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/User.java
+++ b/tests/e2e-entity/src/test/java/org/glassfish/jersey/tests/e2e/json/entity/User.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.e2e.json.entity;
 
-import javax.json.bind.annotation.JsonbTransient;
+import jakarta.json.bind.annotation.JsonbTransient;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlRootElement;
 import jakarta.xml.bind.annotation.XmlTransient;
diff --git a/tests/e2e-server/pom.xml b/tests/e2e-server/pom.xml
index de6f118..d1bfd9f 100644
--- a/tests/e2e-server/pom.xml
+++ b/tests/e2e-server/pom.xml
@@ -60,6 +60,8 @@
                                 <exclude>org/glassfish/jersey/tests/e2e/server/wadl/WadlResourceTest*</exclude>
                                 <exclude>org/glassfish/jersey/tests/e2e/server/validation/validateonexecution/ValidateOnExecutionBasicTest*</exclude>
                                 <exclude>org/glassfish/jersey/tests/e2e/server/wadl/WadlEmptyMediaTypeTest*</exclude>
+                                <exclude>org/glassfish/jersey/tests/e2e/server/monitoring/MonitoringStatisticsLocatorTest.java</exclude>
+                                <exclude>org/glassfish/jersey/tests/e2e/server/validation/validateonexecution/ValidateOnExecutionOverrideTest.java</exclude>
                             </excludes>
                         </configuration>
                     </execution>
diff --git a/tests/e2e-server/src/test/java/org/glassfish/jersey/tests/e2e/server/mvc/ExceptionViewProcessorTest.java b/tests/e2e-server/src/test/java/org/glassfish/jersey/tests/e2e/server/mvc/ExceptionViewProcessorTest.java
index b94ec7c..08bf95a 100644
--- a/tests/e2e-server/src/test/java/org/glassfish/jersey/tests/e2e/server/mvc/ExceptionViewProcessorTest.java
+++ b/tests/e2e-server/src/test/java/org/glassfish/jersey/tests/e2e/server/mvc/ExceptionViewProcessorTest.java
@@ -26,6 +26,7 @@
 import jakarta.ws.rs.WebApplicationException;
 import jakarta.ws.rs.client.Invocation;
 import jakarta.ws.rs.core.Application;
+import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import jakarta.ws.rs.ext.ExceptionMapper;
 import jakarta.ws.rs.ext.Provider;
@@ -37,6 +38,7 @@
 import org.glassfish.jersey.test.TestProperties;
 import org.glassfish.jersey.tests.e2e.server.mvc.provider.TestViewProcessor;
 
+import org.junit.Assert;
 import org.junit.Test;
 import static org.junit.Assert.assertEquals;
 
@@ -71,7 +73,9 @@
 
             // Relative.
             if (exception.getResponse().getStatus() == 406) {
-                return Response.status(406).entity(
+                return Response.status(406)
+                        .type(MediaType.TEXT_PLAIN_TYPE)
+                        .entity(
                         new Viewable(
                                 "/org/glassfish/jersey/tests/e2e/server/mvc/ExceptionViewProcessorTest/WebAppExceptionMapper/406",
                                 "406")).build();
@@ -102,6 +106,8 @@
         p.load(cr.readEntity(InputStream.class));
         assertEquals("/org/glassfish/jersey/tests/e2e/server/mvc/ExceptionViewProcessorTest/404.testp", p.getProperty("path"));
         assertEquals("404", p.getProperty("model"));
+
+        cr.close();
     }
 
     @Test
@@ -116,5 +122,8 @@
         assertEquals("/org/glassfish/jersey/tests/e2e/server/mvc/ExceptionViewProcessorTest/WebAppExceptionMapper/406.testp",
                 p.getProperty("path"));
         assertEquals("406", p.getProperty("model"));
+
+        Assert.assertEquals(MediaType.TEXT_PLAIN_TYPE, cr.getMediaType());
+        cr.close();
     }
 }
diff --git a/tests/e2e/pom.xml b/tests/e2e/pom.xml
index 1f34916..eea4a26 100644
--- a/tests/e2e/pom.xml
+++ b/tests/e2e/pom.xml
@@ -45,6 +45,8 @@
                     <excludes>
                         <exclude>org/glassfish/jersey/tests/e2e/oauth/OAuth2Test.java</exclude>
                         <exclude>org/glassfish/jersey/tests/e2e/common/NoEntityTest.java</exclude>
+                        <!--TODO remove after jakartification-->
+                        <exclude>org/glassfish/jersey/tests/e2e/server/wadl/NoJAXBNoWadlTest.java</exclude>
                     </excludes>
                 </configuration>
             </plugin>
diff --git a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/MessageBodyExceptionWrappingTest.java b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/MessageBodyExceptionWrappingTest.java
index c60a236..1f87a27 100644
--- a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/MessageBodyExceptionWrappingTest.java
+++ b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/MessageBodyExceptionWrappingTest.java
@@ -72,9 +72,15 @@
         try {
             Response response = resource.request().post(Entity.entity(source, MediaType.TEXT_XML_TYPE));
             fail("Exception expected, instead response with " + response.getStatus() + " status has been returned.");
-        } catch (ProcessingException e) {
-            assertEquals(WebApplicationException.class, e.getCause().getClass());
-            assertEquals(555, ((WebApplicationException) e.getCause()).getResponse().getStatus());
+        } catch (WebApplicationException e) {
+            assertEquals(555, e.getResponse().getStatus());
+        }
+
+        try {
+            Response response = resource.request().post(Entity.entity(source, MediaType.TEXT_XML_TYPE), Response.class);
+            fail("Exception expected, instead response with " + response.getStatus() + " status has been returned.");
+        } catch (WebApplicationException e) {
+            assertEquals(555, e.getResponse().getStatus());
         }
     }
 
diff --git a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/common/LoggingFeatureTest.java b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/common/LoggingFeatureTest.java
index 03bcd2d..882b505 100644
--- a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/common/LoggingFeatureTest.java
+++ b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/common/LoggingFeatureTest.java
@@ -44,6 +44,7 @@
 
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.server.ServerProperties;
 import org.glassfish.jersey.test.JerseyTest;
 import org.glassfish.jersey.test.TestProperties;
 
@@ -399,6 +400,7 @@
             return new ResourceConfig(MyResource.class)
                     .property(LoggingFeature.LOGGING_FEATURE_LOGGER_NAME, LOGGER_NAME)
                     .property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL, "INFO")
+                    .property(ServerProperties.WADL_FEATURE_DISABLE, true)
                     .register(CustomFilter.class);
         }
 
diff --git a/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/server/wadl/NoJAXBNoWadlTest.java b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/server/wadl/NoJAXBNoWadlTest.java
new file mode 100644
index 0000000..85ac3bd
--- /dev/null
+++ b/tests/e2e/src/test/java/org/glassfish/jersey/tests/e2e/server/wadl/NoJAXBNoWadlTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.tests.e2e.server.wadl;
+
+import org.glassfish.jersey.internal.ServiceFinder;
+import org.glassfish.jersey.internal.util.JdkVersion;
+import org.glassfish.jersey.message.internal.MediaTypes;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.glassfish.jersey.server.internal.LocalizationMessages;
+import org.glassfish.jersey.test.JerseyTest;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.core.Application;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.Response;
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+public class NoJAXBNoWadlTest extends JerseyTest {
+
+    private static PrintStream errorStream;
+    private static OutputStream readableStream = new ByteArrayOutputStream(800);
+
+    @BeforeClass
+    public static void before() {
+        errorStream = System.err;
+        System.setErr(new PrintStream(readableStream));
+    }
+
+    @AfterClass
+    public static void after() {
+        System.setErr(errorStream);
+    }
+
+    @Path("dummy")
+    public static class NoJAXBNoWadlDummyResource {
+        @PUT
+        public String put(String put) {
+            return "OK";
+        }
+    }
+
+    @Override
+    protected Application configure() {
+        return new ResourceConfig(NoJAXBNoWadlDummyResource.class);
+    }
+
+    @Test
+    public void testOptionsNoWadl() {
+        final boolean shouldHaveJaxb = JdkVersion.getJdkVersion().getMajor() == 1;
+
+        // Make sure the test does not have JAX-B on a classpath
+        Assert.assertFalse(ServiceFinder.find("javax.xml.bind.JAXBContext").iterator().hasNext());
+
+        try (Response r = target("dummy").request(MediaTypes.WADL_TYPE).options()) {
+            String headers = r.getHeaderString(HttpHeaders.ALLOW);
+            Assert.assertEquals("OPTIONS,PUT", headers);
+        }
+        System.out.println(readableStream.toString());
+        Assert.assertEquals(!shouldHaveJaxb, readableStream.toString().contains(LocalizationMessages.WADL_FEATURE_DISABLED()));
+    }
+}
diff --git a/tests/integration/JERSEY-2988/src/main/java/org/glassfish/jersey/tests/integration/jersey2988/ContextAwareBean.java b/tests/integration/JERSEY-2988/src/main/java/org/glassfish/jersey/tests/integration/jersey2988/ContextAwareBean.java
index 1a0d931..9a3b6e5 100644
--- a/tests/integration/JERSEY-2988/src/main/java/org/glassfish/jersey/tests/integration/jersey2988/ContextAwareBean.java
+++ b/tests/integration/JERSEY-2988/src/main/java/org/glassfish/jersey/tests/integration/jersey2988/ContextAwareBean.java
@@ -20,7 +20,7 @@
 import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.Response;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 
 @ApplicationScoped
 public class ContextAwareBean {
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/pom.xml b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/pom.xml
index c56548d..656ee89 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/pom.xml
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/pom.xml
@@ -71,6 +71,11 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.ext.cdi</groupId>
             <artifactId>jersey-cdi1x</artifactId>
             <version>${project.version}</version>
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiApplication.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiApplication.java
index 5cc9bd8..504a386 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiApplication.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiApplication.java
@@ -19,7 +19,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.ws.rs.ApplicationPath;
 import jakarta.ws.rs.core.Application;
 
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiFieldInjectedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiFieldInjectedResource.java
index 104088c..a3b4eab 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiFieldInjectedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiFieldInjectedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.bv;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 
 import jakarta.inject.Inject;
 import jakarta.validation.ConstraintViolationException;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiOldFashionedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiOldFashionedResource.java
index 01107d6..56fea2c 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiOldFashionedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiOldFashionedResource.java
@@ -20,7 +20,7 @@
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.QueryParam;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.validation.constraints.NotNull;
 
 /**
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiParamInjectedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiParamInjectedResource.java
index 820ce72..c90a205 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiParamInjectedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiParamInjectedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.bv;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.validation.constraints.NotNull;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiPropertyInjectedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiPropertyInjectedResource.java
index 8628d82..9f0072b 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiPropertyInjectedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiPropertyInjectedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.bv;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.inject.Inject;
 import jakarta.validation.constraints.NotNull;
 import jakarta.ws.rs.GET;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationInterceptor.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationInterceptor.java
index 903e35a..492cafe 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationInterceptor.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationInterceptor.java
@@ -19,7 +19,7 @@
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import jakarta.validation.ConstraintViolationException;
 import jakarta.validation.ValidationException;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationResult.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationResult.java
index a55b758..86262c2 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationResult.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/CdiValidationResult.java
@@ -19,7 +19,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.validation.ConstraintViolation;
 
 /**
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2Application.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2Application.java
index 0428a57..250fb2f 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2Application.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2Application.java
@@ -18,7 +18,7 @@
 
 import jakarta.ws.rs.ApplicationPath;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 
 import org.glassfish.jersey.internal.inject.AbstractBinder;
 import org.glassfish.jersey.process.internal.RequestScoped;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2FieldInjectedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2FieldInjectedResource.java
index cc8bf35..8e70a49 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2FieldInjectedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2FieldInjectedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.bv;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 import jakarta.validation.constraints.NotNull;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2OldFashionedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2OldFashionedResource.java
index 756b9c8..2bb1623 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2OldFashionedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2OldFashionedResource.java
@@ -20,7 +20,7 @@
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.QueryParam;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 import jakarta.validation.constraints.NotNull;
 
 /**
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ParamInjectedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ParamInjectedResource.java
index 90d54bc..6964a53 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ParamInjectedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ParamInjectedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.bv;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 import jakarta.validation.constraints.NotNull;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2PropertyInjectedResource.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2PropertyInjectedResource.java
index 71a5cdf..f47f6a8 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2PropertyInjectedResource.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2PropertyInjectedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.bv;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 import jakarta.validation.constraints.NotNull;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationInterceptor.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationInterceptor.java
index 2d54385..72ec78b 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationInterceptor.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationInterceptor.java
@@ -23,7 +23,7 @@
 
 import jakarta.ws.rs.core.Context;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 import jakarta.inject.Inject;
 import jakarta.inject.Provider;
 import jakarta.inject.Singleton;
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationResult.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationResult.java
index 9969c4e..ff21135 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationResult.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/Hk2ValidationResult.java
@@ -19,7 +19,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 import jakarta.validation.ConstraintViolation;
 
 /**
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/NonJaxRsValidatedBean.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/NonJaxRsValidatedBean.java
index c4e2630..9dd863a 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/NonJaxRsValidatedBean.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/NonJaxRsValidatedBean.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.bv;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.validation.constraints.NotNull;
 
 /**
diff --git a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/ValidationResultUtil.java b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/ValidationResultUtil.java
index 3ec25b7..6bf3ab3 100644
--- a/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/ValidationResultUtil.java
+++ b/tests/integration/cdi-integration/cdi-beanvalidation-webapp/src/main/java/org/glassfish/jersey/tests/cdi/bv/ValidationResultUtil.java
@@ -22,7 +22,7 @@
 import java.lang.reflect.Modifier;
 import java.util.Set;
 
-import javax.enterprise.inject.Vetoed;
+import jakarta.enterprise.inject.Vetoed;
 import jakarta.inject.Inject;
 import jakarta.validation.ConstraintViolation;
 
diff --git a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/CdiRequestScopedResource.java b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/CdiRequestScopedResource.java
index 9c21318..e574be3 100644
--- a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/CdiRequestScopedResource.java
+++ b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/CdiRequestScopedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.resources;
 
-import javax.ejb.EJB;
+import jakarta.ejb.EJB;
 import jakarta.enterprise.context.RequestScoped;
 import jakarta.inject.Inject;
 
diff --git a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonResource.java b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonResource.java
index 173e31b..a069beb 100644
--- a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonResource.java
+++ b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.resources;
 
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonTimer.java b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonTimer.java
index 8077c5f..6ce5534 100644
--- a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonTimer.java
+++ b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbSingletonTimer.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.resources;
 
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 
 /**
  * EJB singleton timer.
diff --git a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatefulResource.java b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatefulResource.java
index d291a0a..bf82f16 100644
--- a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatefulResource.java
+++ b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatefulResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.resources;
 
-import javax.ejb.Stateful;
+import jakarta.ejb.Stateful;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessResource.java b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessResource.java
index 09662d8..e19c70a 100644
--- a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessResource.java
+++ b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.resources;
 
-import javax.ejb.Stateless;
+import jakarta.ejb.Stateless;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessTimer.java b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessTimer.java
index 7ea94a1..917fe1b 100644
--- a/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessTimer.java
+++ b/tests/integration/cdi-integration/cdi-ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/cdi/resources/EjbStatelessTimer.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.resources;
 
-import javax.ejb.Stateless;
+import jakarta.ejb.Stateless;
 
 /**
  * EJB session timer bean.
diff --git a/tests/integration/cdi-integration/cdi-log-check/pom.xml b/tests/integration/cdi-integration/cdi-log-check/pom.xml
index 7b2ffe0..b81ed70 100644
--- a/tests/integration/cdi-integration/cdi-log-check/pom.xml
+++ b/tests/integration/cdi-integration/cdi-log-check/pom.xml
@@ -50,7 +50,7 @@
         <dependency>
             <groupId>jakarta.interceptor</groupId>
             <artifactId>jakarta.interceptor-api</artifactId>
-            <version>${javax.interceptor.version}</version>
+            <version>${jakarta.interceptor.version}</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
@@ -70,6 +70,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.ext.cdi</groupId>
             <artifactId>jersey-cdi1x</artifactId>
             <version>${project.version}</version>
diff --git a/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/FooInterceptor.java b/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/FooInterceptor.java
index 829eb9b..d71268d 100644
--- a/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/FooInterceptor.java
+++ b/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/FooInterceptor.java
@@ -21,9 +21,9 @@
 import jakarta.enterprise.inject.Intercepted;
 import jakarta.enterprise.inject.spi.Bean;
 import jakarta.inject.Inject;
-import javax.interceptor.AroundInvoke;
-import javax.interceptor.Interceptor;
-import javax.interceptor.InvocationContext;
+import jakarta.interceptor.AroundInvoke;
+import jakarta.interceptor.Interceptor;
+import jakarta.interceptor.InvocationContext;
 import java.io.Serializable;
 
 @Interceptor
diff --git a/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/Fooed.java b/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/Fooed.java
index c815632..6b7d9c3 100644
--- a/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/Fooed.java
+++ b/tests/integration/cdi-integration/cdi-log-check/src/main/java/org/glassfish/jersey/tests/cdi/resources/Fooed.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.cdi.resources;
 
-import javax.interceptor.InterceptorBinding;
+import jakarta.interceptor.InterceptorBinding;
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Inherited;
 import java.lang.annotation.Retention;
diff --git a/tests/integration/cdi-integration/cdi-test-webapp/pom.xml b/tests/integration/cdi-integration/cdi-test-webapp/pom.xml
index 3f7141d..569d2aa 100644
--- a/tests/integration/cdi-integration/cdi-test-webapp/pom.xml
+++ b/tests/integration/cdi-integration/cdi-test-webapp/pom.xml
@@ -58,6 +58,11 @@
             <artifactId>jersey-weld2-se</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ContainerListener.java b/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ContainerListener.java
index 7abf41b..7d3276d 100644
--- a/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ContainerListener.java
+++ b/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ContainerListener.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.integration.multimodule.ejb.reload.lib;
 
-import javax.ejb.EJB;
-import javax.ejb.Singleton;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Singleton;
 import jakarta.ws.rs.ext.Provider;
 
 import org.glassfish.jersey.server.spi.AbstractContainerLifecycleListener;
diff --git a/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/EjbReloaderService.java b/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/EjbReloaderService.java
index 79c8490..0800c85 100644
--- a/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/EjbReloaderService.java
+++ b/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/EjbReloaderService.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.integration.multimodule.ejb.reload.lib;
 
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.server.spi.Container;
diff --git a/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ReloaderResource.java b/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ReloaderResource.java
index 4e0d5b3..18061d4 100644
--- a/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ReloaderResource.java
+++ b/tests/integration/ejb-multimodule-reload/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/reload/lib/ReloaderResource.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.integration.multimodule.ejb.reload.lib;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 
diff --git a/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/EjbCounterResource.java b/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/EjbCounterResource.java
index bd4dbd7..dfb44fd 100644
--- a/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/EjbCounterResource.java
+++ b/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/EjbCounterResource.java
@@ -18,7 +18,7 @@
 
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatefulResource.java b/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatefulResource.java
index be104c3..d13444f 100644
--- a/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatefulResource.java
+++ b/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatefulResource.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.integration.multimodule.ejb.lib;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateful;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateful;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatelessResource.java b/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatelessResource.java
index cd266c4..32c762c 100644
--- a/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatelessResource.java
+++ b/tests/integration/ejb-multimodule/lib/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/lib/StatelessResource.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.integration.multimodule.ejb.lib;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.core.Context;
diff --git a/tests/integration/ejb-multimodule/war/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/web1/WarStatelessResource.java b/tests/integration/ejb-multimodule/war/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/web1/WarStatelessResource.java
index c3d9aec..12c10c5 100644
--- a/tests/integration/ejb-multimodule/war/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/web1/WarStatelessResource.java
+++ b/tests/integration/ejb-multimodule/war/src/main/java/org/glassfish/jersey/tests/integration/multimodule/ejb/web1/WarStatelessResource.java
@@ -21,8 +21,8 @@
 import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.UriInfo;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 
 import org.glassfish.jersey.tests.integration.multimodule.ejb.lib.EjbCounterResource;
 
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AppResource.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AppResource.java
index 14e3be9..0c43027 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AppResource.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AppResource.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.ejb.resources;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncResource.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncResource.java
index 2fc1172..d47f226 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncResource.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncResource.java
@@ -21,7 +21,7 @@
 import jakarta.ws.rs.container.AsyncResponse;
 import jakarta.ws.rs.container.Suspended;
 
-import javax.ejb.EJB;
+import jakarta.ejb.EJB;
 
 /**
  * @author Jan Algermissen
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncService.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncService.java
index 5a8ce05..f72f06d 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncService.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/AsyncService.java
@@ -18,8 +18,8 @@
 
 import java.util.logging.Logger;
 
-import javax.ejb.Asynchronous;
-import javax.ejb.Stateless;
+import jakarta.ejb.Asynchronous;
+import jakarta.ejb.Stateless;
 import jakarta.ws.rs.container.AsyncResponse;
 
 /**
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterBean.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterBean.java
index bad5b15..289f97d 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterBean.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterBean.java
@@ -17,7 +17,7 @@
 package org.glassfish.jersey.tests.ejb.resources;
 
 import java.util.concurrent.atomic.AtomicInteger;
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 
 /**
  * EJB singleton utilized as request counter in this test application.
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterFilter.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterFilter.java
index 2676018..f6c75ce 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterFilter.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/CounterFilter.java
@@ -18,8 +18,8 @@
 
 import java.io.IOException;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 
 import jakarta.ws.rs.container.ContainerRequestContext;
 import jakarta.ws.rs.container.ContainerResponseContext;
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/Echo.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/Echo.java
index 517bbe7..135f682 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/Echo.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/Echo.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.ejb.resources;
 
-import javax.ejb.Remote;
+import jakarta.ejb.Remote;
 
 /**
  * EJB remote interface. Part of the reproducer for GLASSFISH-16199.
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoBean.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoBean.java
index 4c5b3af..77991e9 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoBean.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoBean.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.ejb.resources;
 
-import javax.ejb.Stateful;
+import jakarta.ejb.Stateful;
 
 /**
  * Session bean capable of returning an echoed message back.
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoResource.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoResource.java
index b10992c..21417a6 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoResource.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EchoResource.java
@@ -16,10 +16,10 @@
 
 package org.glassfish.jersey.tests.ejb.resources;
 
-import javax.ejb.EJB;
-import javax.ejb.Local;
-import javax.ejb.Remote;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Local;
+import jakarta.ejb.Remote;
+import jakarta.ejb.Stateless;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperOne.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperOne.java
index 5748e2b..0d1148b 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperOne.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperOne.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.ejb.resources;
 
-import javax.ejb.EJB;
-import javax.ejb.Singleton;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Singleton;
 
 import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.Response;
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperTwo.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperTwo.java
index a18df7f..8070bd3 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperTwo.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/EjbExceptionMapperTwo.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.ejb.resources;
 
-import javax.ejb.EJB;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Stateless;
 
 import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.Response;
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/ExceptionEjbResource.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/ExceptionEjbResource.java
index 9c37b2e..43b3882 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/ExceptionEjbResource.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/ExceptionEjbResource.java
@@ -19,8 +19,8 @@
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 
-import javax.ejb.EJBException;
-import javax.ejb.Singleton;
+import jakarta.ejb.EJBException;
+import jakarta.ejb.Singleton;
 
 /**
  * EJB backed JAX-RS resource to test if a custom exception info makes it to the client.
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/MyApplication.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/MyApplication.java
index 20f279e..8ce3ee1 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/MyApplication.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/MyApplication.java
@@ -22,7 +22,7 @@
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.ejb.Singleton;
+import jakarta.ejb.Singleton;
 import jakarta.ws.rs.ApplicationPath;
 import jakarta.ws.rs.core.Application;
 
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/RawEchoResource.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/RawEchoResource.java
index 6615917..e791b9f 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/RawEchoResource.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/RawEchoResource.java
@@ -16,9 +16,9 @@
 
 package org.glassfish.jersey.tests.ejb.resources;
 
-import javax.ejb.EJB;
-import javax.ejb.Remote;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJB;
+import jakarta.ejb.Remote;
+import jakarta.ejb.Stateless;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
diff --git a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/StandaloneServlet.java b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/StandaloneServlet.java
index eab13e9..5012db3 100644
--- a/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/StandaloneServlet.java
+++ b/tests/integration/ejb-test-webapp/src/main/java/org/glassfish/jersey/tests/ejb/resources/StandaloneServlet.java
@@ -18,7 +18,7 @@
 
 import java.io.IOException;
 
-import javax.ejb.EJB;
+import jakarta.ejb.EJB;
 
 import javax.servlet.ServletException;
 import javax.servlet.annotation.WebServlet;
diff --git a/tests/integration/j-376/pom.xml b/tests/integration/j-376/pom.xml
index 4dcbbf1..445152c 100644
--- a/tests/integration/j-376/pom.xml
+++ b/tests/integration/j-376/pom.xml
@@ -73,6 +73,11 @@
             <scope>compile</scope>
         </dependency>
         <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.ext.cdi</groupId>
             <artifactId>jersey-cdi1x</artifactId>
             <version>${project.version}</version>
diff --git a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedBean.java b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedBean.java
index c4173d0..5fed0c3 100644
--- a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedBean.java
+++ b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedBean.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.integration.j376;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.core.Context;
 import jakarta.ws.rs.core.UriInfo;
diff --git a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedResource.java b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedResource.java
index bddafdb..b5e82a6 100644
--- a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedResource.java
+++ b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ApplicationScopedResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.integration.j376;
 
-import javax.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.BeanParam;
 import jakarta.ws.rs.GET;
diff --git a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ConstructorInjectionResource.java b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ConstructorInjectionResource.java
index a8bfe4d..2077d30 100644
--- a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ConstructorInjectionResource.java
+++ b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/ConstructorInjectionResource.java
@@ -21,7 +21,7 @@
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.inject.Inject;
 import jakarta.validation.Valid;
 
diff --git a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FieldInjectionResource.java b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FieldInjectionResource.java
index cdc0c41..a8a978a 100644
--- a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FieldInjectionResource.java
+++ b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FieldInjectionResource.java
@@ -21,7 +21,7 @@
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.inject.Inject;
 import jakarta.validation.Valid;
 import jakarta.ws.rs.BeanParam;
diff --git a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FormDataBean.java b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FormDataBean.java
index 9b6ec53..ad1e9d5 100644
--- a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FormDataBean.java
+++ b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/FormDataBean.java
@@ -21,7 +21,7 @@
 import jakarta.ws.rs.core.UriInfo;
 
 import jakarta.annotation.PostConstruct;
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.inject.Inject;
 import jakarta.validation.constraints.Min;
 import jakarta.validation.constraints.NotNull;
@@ -59,7 +59,7 @@
     }
 
     /**
-     * Exposes the state of injected {@code UriInfo} in the time of the call of {@link javax.annotation.PostConstruct}
+     * Exposes the state of injected {@code UriInfo} in the time of the call of {@link jakarta.annotation.PostConstruct}
      * annotated method. The returned value will be used in test to ensure, that {@code UriInfo} is injected in time
      *
      * @return path injected via {@code UriInfo} at the time-point of the {@link #postConstruct()} method call.
diff --git a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/MethodInjectionResource.java b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/MethodInjectionResource.java
index 81f7bf0..0c65b10 100644
--- a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/MethodInjectionResource.java
+++ b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/MethodInjectionResource.java
@@ -22,7 +22,7 @@
 import jakarta.ws.rs.Path;
 import jakarta.ws.rs.Produces;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.inject.Inject;
 import jakarta.validation.Valid;
 
diff --git a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/SecondBean.java b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/SecondBean.java
index b815903..d7c2582 100644
--- a/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/SecondBean.java
+++ b/tests/integration/j-376/src/main/java/org/glassfish/jersey/tests/integration/j376/SecondBean.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.integration.j376;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 
 /**
  * Bean to be injected into another bean by CDI.
diff --git a/tests/integration/j-59/lib/src/main/java/org/glassfish/jersey/tests/integration/j59/ejb/lib/LocalBeanWithRemoteInterface.java b/tests/integration/j-59/lib/src/main/java/org/glassfish/jersey/tests/integration/j59/ejb/lib/LocalBeanWithRemoteInterface.java
index 81e7883..92d6dff 100644
--- a/tests/integration/j-59/lib/src/main/java/org/glassfish/jersey/tests/integration/j59/ejb/lib/LocalBeanWithRemoteInterface.java
+++ b/tests/integration/j-59/lib/src/main/java/org/glassfish/jersey/tests/integration/j59/ejb/lib/LocalBeanWithRemoteInterface.java
@@ -16,9 +16,9 @@
 
 package org.glassfish.jersey.tests.integration.j59.ejb.lib;
 
-import javax.ejb.LocalBean;
-import javax.ejb.Remote;
-import javax.ejb.Stateless;
+import jakarta.ejb.LocalBean;
+import jakarta.ejb.Remote;
+import jakarta.ejb.Stateless;
 
 /**
  * Local stateless session bean implementing a remote interface.
diff --git a/tests/integration/jersey-1928/pom.xml b/tests/integration/jersey-1928/pom.xml
index 48e04d3..afb7994 100644
--- a/tests/integration/jersey-1928/pom.xml
+++ b/tests/integration/jersey-1928/pom.xml
@@ -55,6 +55,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/jersey1928/Jersey1928ITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/jersey-2031/pom.xml b/tests/integration/jersey-2031/pom.xml
index 652bab8..2d2e7ae 100644
--- a/tests/integration/jersey-2031/pom.xml
+++ b/tests/integration/jersey-2031/pom.xml
@@ -17,7 +17,9 @@
 
 -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
@@ -41,13 +43,12 @@
             <groupId>org.glassfish.jersey.ext</groupId>
             <artifactId>jersey-mvc-jsp</artifactId>
         </dependency>
-
         <dependency>
             <groupId>javax.servlet</groupId>
             <artifactId>servlet-api</artifactId>
             <version>${servlet2.version}</version>
+            <scope>provided</scope>
         </dependency>
-
         <dependency>
             <groupId>org.glassfish.jersey.test-framework.providers</groupId>
             <artifactId>jersey-test-framework-provider-external</artifactId>
@@ -64,11 +65,47 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove afer jakartification is done-->
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2031/Jersey2031ITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.eclipse.jetty</groupId>
                 <artifactId>jetty-maven-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-tld</id>
+                        <phase>test</phase>
+                        <configuration>
+                            <target>
+                                <copy file="../../../ext/mvc-jsp/src/main/resources/META-INF/taglib.tld" todir="src/main/webapp/WEB-INF"/>
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>delete-tld</id>
+                        <phase>post-integration-test</phase>
+                        <configuration>
+                            <target>
+                                <delete file="src/main/webapp/WEB-INF/taglib.tld"/>
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/tests/integration/jersey-2031/src/main/webapp/WEB-INF/web.xml b/tests/integration/jersey-2031/src/main/webapp/WEB-INF/web.xml
index 270d212..3426090 100644
--- a/tests/integration/jersey-2031/src/main/webapp/WEB-INF/web.xml
+++ b/tests/integration/jersey-2031/src/main/webapp/WEB-INF/web.xml
@@ -31,12 +31,4 @@
         <filter-name>jersey2031</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
-    <jsp-config>
-        <taglib>
-            <taglib-uri>urn:org:glassfish:jersey:servlet:mvc</taglib-uri>
-            <taglib-location>
-                /WEB-INF/lib/jersey-mvc-jsp-2.29-SNAPSHOT.jar
-            </taglib-location>
-        </taglib>
-    </jsp-config>
 </web-app>
diff --git a/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/Account.java b/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/Account.java
index 2e68823..dbc6590 100644
--- a/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/Account.java
+++ b/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/Account.java
@@ -17,8 +17,8 @@
 package org.glassfish.jersey.tests.integration.jersey2137;
 
 import java.io.Serializable;
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 /**
  * Entity bean that maintains information on account balance.
diff --git a/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalNoRollbackResource.java b/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalNoRollbackResource.java
index cd30d70..75f49e3 100644
--- a/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalNoRollbackResource.java
+++ b/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalNoRollbackResource.java
@@ -23,16 +23,16 @@
 import jakarta.ws.rs.core.Response;
 
 import jakarta.enterprise.context.RequestScoped;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.transaction.Transactional;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.transaction.Transactional;
 
 /**
  * Request scoped transactional CDI bean registered as JAX-RS resource class.
  * Part of JERSEY-2137 reproducer. {@link jakarta.ws.rs.WebApplicationException}
  * thrown in the resource method below should drive the response as specified
  * in the JAX-RS spec regardless
- * on the {@link javax.transaction.Transactional#dontRollbackOn()} value.
+ * on the {@link jakarta.transaction.Transactional#dontRollbackOn()} value.
  *
  * @author Jakub Podlesak
  */
diff --git a/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalResource.java b/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalResource.java
index 1cae421..12db508 100644
--- a/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalResource.java
+++ b/tests/integration/jersey-2137/src/main/java/org/glassfish/jersey/tests/integration/jersey2137/CdiTransactionalResource.java
@@ -26,9 +26,9 @@
 import jakarta.ws.rs.core.Response;
 
 import jakarta.enterprise.context.RequestScoped;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.transaction.Transactional;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.transaction.Transactional;
 
 /**
  * Request scoped transactional CDI bean registered as JAX-RS resource class.
diff --git a/tests/integration/jersey-2137/src/test/java/org/glassfish/jersey/tests/integration/jersey2137/WaeExceptionMappingTest.java b/tests/integration/jersey-2137/src/test/java/org/glassfish/jersey/tests/integration/jersey2137/WaeExceptionMappingTest.java
index ef7fce2..2929612 100644
--- a/tests/integration/jersey-2137/src/test/java/org/glassfish/jersey/tests/integration/jersey2137/WaeExceptionMappingTest.java
+++ b/tests/integration/jersey-2137/src/test/java/org/glassfish/jersey/tests/integration/jersey2137/WaeExceptionMappingTest.java
@@ -51,7 +51,7 @@
     }
 
     /**
-     * Test all {@javax.transaction.Transactional}
+     * Test all {@jakarta.transaction.Transactional}
      * annotated CDI beans. The test scenario is as follows.
      * Set two accounts via the CDI bean that avoids rollback.
      * Should any rollback happen there, we would not be able
diff --git a/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/CdiResource.java b/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/CdiResource.java
index 911d63a..2b95cc1 100644
--- a/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/CdiResource.java
+++ b/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/CdiResource.java
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.tests.integration.jersey2154;
 
-import javax.ejb.EJB;
+import jakarta.ejb.EJB;
 import jakarta.enterprise.context.RequestScoped;
 
 import jakarta.ws.rs.GET;
@@ -24,7 +24,7 @@
 
 /**
  * Request scoped CDI bean injected with EJB bean.
- * Part of JERSEY-2154 reproducer. {@link javax.ejb.EJBException}
+ * Part of JERSEY-2154 reproducer. {@link jakarta.ejb.EJBException}
  * thrown in the injected EJB bean should get unwrapped
  * even when no EJB-backed JAX-RS resources have been registered.
  *
diff --git a/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/EjbBean.java b/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/EjbBean.java
index 9a24632..cbca039 100644
--- a/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/EjbBean.java
+++ b/tests/integration/jersey-2154/src/main/java/org/glassfish/jersey/tests/integration/jersey2154/EjbBean.java
@@ -16,8 +16,8 @@
 
 package org.glassfish.jersey.tests.integration.jersey2154;
 
-import javax.ejb.EJBException;
-import javax.ejb.Stateless;
+import jakarta.ejb.EJBException;
+import jakarta.ejb.Stateless;
 import jakarta.ws.rs.WebApplicationException;
 import jakarta.ws.rs.core.Response;
 
diff --git a/tests/integration/jersey-2154/src/test/java/org/glassfish/jersey/tests/integration/jersey2154/EjbExceptionMappingTest.java b/tests/integration/jersey-2154/src/test/java/org/glassfish/jersey/tests/integration/jersey2154/EjbExceptionMappingTest.java
index 1b03134..a67071a 100644
--- a/tests/integration/jersey-2154/src/test/java/org/glassfish/jersey/tests/integration/jersey2154/EjbExceptionMappingTest.java
+++ b/tests/integration/jersey-2154/src/test/java/org/glassfish/jersey/tests/integration/jersey2154/EjbExceptionMappingTest.java
@@ -17,7 +17,7 @@
 package org.glassfish.jersey.tests.integration.jersey2154;
 
 import java.net.URI;
-import javax.ejb.EJBException;
+import jakarta.ejb.EJBException;
 
 import jakarta.ws.rs.WebApplicationException;
 import jakarta.ws.rs.client.WebTarget;
diff --git a/tests/integration/jersey-2176/pom.xml b/tests/integration/jersey-2176/pom.xml
index c8a696e..b46c519 100644
--- a/tests/integration/jersey-2176/pom.xml
+++ b/tests/integration/jersey-2176/pom.xml
@@ -61,6 +61,13 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 8 -->
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2176/Jersey2176SendErrorITCase.java</exclude>
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2176/Jersey2176SetStatusITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/jersey-2184/pom.xml b/tests/integration/jersey-2184/pom.xml
index 27f4754..3f456b9 100644
--- a/tests/integration/jersey-2184/pom.xml
+++ b/tests/integration/jersey-2184/pom.xml
@@ -62,6 +62,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 8 -->
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2184/Jersey2184ITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/jersey-2184/src/test/java/org/glassfish/jersey/tests/integration/jersey2184/Jersey2184ITCase.java b/tests/integration/jersey-2184/src/test/java/org/glassfish/jersey/tests/integration/jersey2184/Jersey2184ITCase.java
index bbac9f0..0e31b3d 100644
--- a/tests/integration/jersey-2184/src/test/java/org/glassfish/jersey/tests/integration/jersey2184/Jersey2184ITCase.java
+++ b/tests/integration/jersey-2184/src/test/java/org/glassfish/jersey/tests/integration/jersey2184/Jersey2184ITCase.java
@@ -62,7 +62,7 @@
     }
 
     /**
-     * Tests if {@link javax.servlet.ServletContext} has been correctly injected into {@link App} constructor parameter;
+     * Tests if {@link jakarta.servlet.ServletContext} has been correctly injected into {@link App} constructor parameter;
      * The resource under this URL is being loaded dynamically based on a context parameter in the web.xml,
      * so if injection fails, the resource will not be available.
      */
diff --git a/tests/integration/jersey-2794/pom.xml b/tests/integration/jersey-2794/pom.xml
index d335d74..ab3c4ba 100644
--- a/tests/integration/jersey-2794/pom.xml
+++ b/tests/integration/jersey-2794/pom.xml
@@ -61,6 +61,13 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 8 -->
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2794/Jersey2794ITCase.java</exclude>
+                    </excludes>
+                </configuration>
+
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/jersey-2846/pom.xml b/tests/integration/jersey-2846/pom.xml
index 2e20095..b1966a5 100644
--- a/tests/integration/jersey-2846/pom.xml
+++ b/tests/integration/jersey-2846/pom.xml
@@ -61,6 +61,13 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2846/Jersey2846ITCase.java</exclude>
+                    </excludes>
+                </configuration>
+
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/jersey-2878/pom.xml b/tests/integration/jersey-2878/pom.xml
index a1da0b5..983af00 100644
--- a/tests/integration/jersey-2878/pom.xml
+++ b/tests/integration/jersey-2878/pom.xml
@@ -62,6 +62,13 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2878/Jersey2878ApacheITCase.java</exclude>
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2878/Jersey2878ITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/jersey-2892/pom.xml b/tests/integration/jersey-2892/pom.xml
index a623b7a..a560c4d 100644
--- a/tests/integration/jersey-2892/pom.xml
+++ b/tests/integration/jersey-2892/pom.xml
@@ -68,6 +68,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/tests/integration/jersey2892/Jersey2892JacksonITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/jersey-3992/pom.xml b/tests/integration/jersey-3992/pom.xml
index 186bc6c..2e6a71e 100644
--- a/tests/integration/jersey-3992/pom.xml
+++ b/tests/integration/jersey-3992/pom.xml
@@ -59,6 +59,11 @@
             <artifactId>jersey-weld2-se</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/tests/integration/jersey-4003/pom.xml b/tests/integration/jersey-4003/pom.xml
new file mode 100644
index 0000000..75b3f2b
--- /dev/null
+++ b/tests/integration/jersey-4003/pom.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Copyright (c) 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.
+
+    This Source Code may also be made available under the following Secondary
+    Licenses when the conditions for such availability set forth in the
+    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+    version 2 with the GNU Classpath Exception, which is available at
+    https://www.gnu.org/software/classpath/license.html.
+
+    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>project</artifactId>
+        <groupId>org.glassfish.jersey.tests.integration</groupId>
+        <version>3.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>jersey-4003</artifactId>
+    <name>jersey-tests-integration-jersey-4003</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
+            <artifactId>jersey-test-framework-provider-bundle</artifactId>
+            <type>pom</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file
diff --git a/tests/integration/jersey-4003/src/test/java/org/glassfish/jersey/tests/integration/jersey4003/LostResponseTest.java b/tests/integration/jersey-4003/src/test/java/org/glassfish/jersey/tests/integration/jersey4003/LostResponseTest.java
new file mode 100644
index 0000000..710ff81
--- /dev/null
+++ b/tests/integration/jersey-4003/src/test/java/org/glassfish/jersey/tests/integration/jersey4003/LostResponseTest.java
@@ -0,0 +1,260 @@
+/*
+ * Copyright (c) 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.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.jersey.tests.integration.jersey4003;
+
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.client.HttpUrlConnectorProvider;
+import org.glassfish.jersey.client.JerseyClientBuilder;
+import org.glassfish.jersey.client.JerseyCompletionStageRxInvoker;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import org.mockito.Mockito;
+
+import jakarta.ws.rs.client.Client;
+import jakarta.ws.rs.client.Entity;
+import jakarta.ws.rs.client.InvocationCallback;
+import jakarta.ws.rs.client.ResponseProcessingException;
+import jakarta.ws.rs.core.GenericType;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.concurrent.CompletionStage;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+public class LostResponseTest {
+
+    private static final String DUMMY_URL = "http://foo";
+    private static final int RESPONSE_CODE = 503;
+
+    private Client client;
+    private Entity<?> bodyEntity;
+
+    @Before
+    public void setup() throws IOException {
+        HttpUrlConnectorProvider.ConnectionFactory connectionFactory =
+                Mockito.mock(HttpUrlConnectorProvider.ConnectionFactory.class);
+        HttpURLConnection connection = Mockito.mock(HttpURLConnection.class);
+        Mockito.when(connectionFactory.getConnection(Mockito.any(URL.class))).thenReturn(connection);
+
+        OutputStream outputStream = Mockito.mock(OutputStream.class);
+        Mockito.when(connection.getOutputStream()).thenReturn(outputStream);
+
+        Mockito.when(connection.getURL()).thenReturn(new URL(DUMMY_URL));
+        Mockito.when(connection.getResponseCode()).thenReturn(RESPONSE_CODE);
+
+        // When the below line is commented, the test succeeds.
+        Mockito.doThrow(new IOException("Injected Write Failure"))
+                .when(outputStream)
+                .write(Mockito.any(byte[].class), Mockito.anyInt(), Mockito.anyInt());
+
+        ClientConfig clientConfig = new ClientConfig();
+        clientConfig.connectorProvider(
+                new HttpUrlConnectorProvider().connectionFactory(connectionFactory));
+        client = JerseyClientBuilder.newBuilder().withConfig(clientConfig).build();
+
+        ByteArrayInputStream bodyStream = new ByteArrayInputStream(new byte[100]);
+        bodyEntity = Entity.entity(bodyStream, MediaType.APPLICATION_OCTET_STREAM_TYPE);
+    }
+
+    @Test
+    public void putEntityFailure() {
+        try {
+            client.target(DUMMY_URL).request().put(bodyEntity);
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ResponseProcessingException rpe) {
+            try (Response response = rpe.getResponse()) {
+                Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+            }
+        }
+    }
+
+    @Test
+    public void putEntityAndClassTypeFailure() {
+        try {
+            client.target(DUMMY_URL).request().put(bodyEntity, String.class);
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ResponseProcessingException rpe) {
+            try (Response response = rpe.getResponse()) {
+                Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+            }
+        }
+    }
+
+    @Test
+    public void putEntityAndGenericTypeTypeFailure() {
+        try {
+            client.target(DUMMY_URL).request().put(bodyEntity, new GenericType<String>(){});
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ResponseProcessingException rpe) {
+            try (Response response = rpe.getResponse()) {
+                Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+            }
+        }
+    }
+
+    @Test
+    public void asyncPutEntityFailure() throws InterruptedException {
+        try {
+            Future<Response> future = client.target(DUMMY_URL).request().async().put(bodyEntity);
+            future.get();
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ExecutionException ee) {
+            try {
+                throw (RuntimeException) ee.getCause();
+            } catch (ResponseProcessingException rpe) {
+                try (Response response = rpe.getResponse()) {
+                    Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+                }
+            }
+        }
+    }
+
+    @Test
+    public void asyncPutEntityAndClassFailure() throws InterruptedException {
+        try {
+            Future<String> future = client.target(DUMMY_URL).request().async().put(bodyEntity, String.class);
+            future.get();
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ExecutionException ee) {
+            try {
+                throw (RuntimeException) ee.getCause();
+            } catch (ResponseProcessingException rpe) {
+                try (Response response = rpe.getResponse()) {
+                    Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+                }
+            }
+        }
+    }
+
+    @Test
+    public void asyncPutEntityAndGenericTypeTypeFailure() throws InterruptedException {
+        try {
+            Future<String> future = client.target(DUMMY_URL).request().async().put(bodyEntity, new GenericType<String>(){});
+            future.get();
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ExecutionException ee) {
+            try {
+                throw (RuntimeException) ee.getCause();
+            } catch (ResponseProcessingException rpe) {
+                try (Response response = rpe.getResponse()) {
+                    Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+                }
+            }
+        }
+    }
+
+    @Test
+    public void asyncPutEntityWithCallbackFailure() throws InterruptedException {
+        AtomicReference<Throwable> callbackThrowable = new AtomicReference<>();
+        CountDownLatch failedLatch = new CountDownLatch(1);
+        try {
+            Future<Response> future =
+                    client.target(DUMMY_URL).request().async().put(bodyEntity, new InvocationCallback<Response>() {
+                @Override
+                public void completed(Response response) {
+                    Assert.fail("Expected ResponseProcessing exception has not been thrown");
+                }
+
+                @Override
+                public void failed(Throwable throwable) {
+                    callbackThrowable.set(throwable);
+                    failedLatch.countDown();
+                }
+            });
+            future.get();
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ExecutionException ee) {
+            try {
+                throw (RuntimeException) ee.getCause();
+            } catch (ResponseProcessingException rpe) {
+                try (Response response = rpe.getResponse()) {
+                    Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+                }
+            }
+            failedLatch.await(5000, TimeUnit.MILLISECONDS);
+            Throwable ct = callbackThrowable.get();
+            Assert.assertTrue("Callback has not been hit", ct != null);
+            Assert.assertTrue("The exception is " + ct.getClass().getName(),
+                    ResponseProcessingException.class.isInstance(ct));
+        }
+    }
+
+    @Test
+    public void rxPutEntityFailure() throws InterruptedException {
+        try {
+            CompletionStage<Response> future = client.target(DUMMY_URL).request().rx().put(bodyEntity);
+            future.toCompletableFuture().get();
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ExecutionException ee) {
+            try {
+                throw (RuntimeException) ee.getCause();
+            } catch (ResponseProcessingException rpe) {
+                try (Response response = rpe.getResponse()) {
+                    Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+                }
+            }
+        }
+    }
+
+    @Test
+    public void rxPutEntityWithCallbackFailure() throws InterruptedException {
+        AtomicReference<Throwable> callbackThrowable = new AtomicReference<>();
+        CountDownLatch failedLatch = new CountDownLatch(1);
+        try {
+            Future<Response> future =
+                    client.target(DUMMY_URL).request().rx(JerseyCompletionStageRxInvoker.class)
+                            .put(bodyEntity, new InvocationCallback<Response>() {
+                        @Override
+                        public void completed(Response response) {
+                            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+                        }
+
+                        @Override
+                        public void failed(Throwable throwable) {
+                            callbackThrowable.set(throwable);
+                            failedLatch.countDown();
+                        }
+                    });
+            future.get();
+            Assert.fail("Expected ResponseProcessing exception has not been thrown");
+        } catch (ExecutionException ee) {
+            try {
+                throw (RuntimeException) ee.getCause();
+            } catch (ResponseProcessingException rpe) {
+                try (Response response = rpe.getResponse()) {
+                    Assert.assertEquals(RESPONSE_CODE, response.getStatus());
+                }
+            }
+            failedLatch.await(5000, TimeUnit.MILLISECONDS);
+            Throwable ct = callbackThrowable.get();
+            Assert.assertTrue("Callback has not been hit", ct != null);
+            Assert.assertTrue("The exception is " + ct.getClass().getName(),
+                    ResponseProcessingException.class.isInstance(ct));
+        }
+    }
+}
diff --git a/tests/integration/jersey-4099/pom.xml b/tests/integration/jersey-4099/pom.xml
index 5ab2b05..56b5959 100644
--- a/tests/integration/jersey-4099/pom.xml
+++ b/tests/integration/jersey-4099/pom.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
 
-    Copyright (c) 2019, 2020 Christian Kaltepoth. All rights reserved.
+    Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
+    Copyright (c) 2019 Christian Kaltepoth. 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
@@ -57,6 +58,10 @@
             <artifactId>jersey-weld2-se</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.jboss.weld.se</groupId>
+            <artifactId>weld-se-core</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.jersey.inject</groupId>
             <artifactId>jersey-hk2</artifactId>
         </dependency>
diff --git a/tests/integration/jersey-4099/src/main/java/org/glassfish/jersey/tests/integration/jersey4099/MyResource.java b/tests/integration/jersey-4099/src/main/java/org/glassfish/jersey/tests/integration/jersey4099/MyResource.java
index 9dacd53..0bbb981 100644
--- a/tests/integration/jersey-4099/src/main/java/org/glassfish/jersey/tests/integration/jersey4099/MyResource.java
+++ b/tests/integration/jersey-4099/src/main/java/org/glassfish/jersey/tests/integration/jersey4099/MyResource.java
@@ -15,7 +15,7 @@
  */
 package org.glassfish.jersey.tests.integration.jersey4099;
 
-import javax.enterprise.context.RequestScoped;
+import jakarta.enterprise.context.RequestScoped;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
 
diff --git a/tests/integration/jetty-response-close/pom.xml b/tests/integration/jetty-response-close/pom.xml
index ae3d0f2..6e1563e 100644
--- a/tests/integration/jetty-response-close/pom.xml
+++ b/tests/integration/jetty-response-close/pom.xml
@@ -59,4 +59,30 @@
         <surefire.security.argline>-Djava.security.manager -Djava.security.policy=${project.build.directory}/test-classes/surefire.policy</surefire.security.argline>
     </properties>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <forkCount>1</forkCount>
+                    <reuseForks>false</reuseForks>
+                    <enableAssertions>false</enableAssertions>
+                </configuration>
+                <!-- TODO remove after jakartification -->
+                <executions>
+                    <execution>
+                        <id>default-test</id> <!-- jakartification-excluded-tests -->
+                        <configuration>
+                            <excludes>
+                                <!--JDK 8 -->
+                                <exclude>org/glassfish/jersey/tests/jettyresponseclose/JettyHttpContainerCloseTest.java</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>
\ No newline at end of file
diff --git a/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResource.java b/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResource.java
index 95535fb..19168d2 100644
--- a/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResource.java
+++ b/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResource.java
@@ -19,7 +19,7 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.json.JsonValue;
+import jakarta.json.JsonValue;
 import jakarta.ws.rs.Consumes;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.HeaderParam;
diff --git a/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResourceImpl.java b/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResourceImpl.java
index 21f1894..7ee784e 100644
--- a/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResourceImpl.java
+++ b/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ApplicationResourceImpl.java
@@ -21,8 +21,8 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.json.Json;
-import javax.json.JsonValue;
+import jakarta.json.Json;
+import jakarta.json.JsonValue;
 import jakarta.ws.rs.core.MediaType;
 
 /**
diff --git a/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ConsumesAndProducesTest.java b/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ConsumesAndProducesTest.java
index add5413..c53cea6 100644
--- a/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ConsumesAndProducesTest.java
+++ b/tests/integration/microprofile/rest-client/src/test/java/org/glassfish/jersey/restclient/ConsumesAndProducesTest.java
@@ -4,8 +4,8 @@
 import java.net.URISyntaxException;
 import java.util.List;
 
-import javax.json.Json;
-import javax.json.JsonValue;
+import jakarta.json.Json;
+import jakarta.json.JsonValue;
 import jakarta.ws.rs.client.ClientRequestContext;
 import jakarta.ws.rs.client.ClientRequestFilter;
 import jakarta.ws.rs.core.HttpHeaders;
diff --git a/tests/integration/pom.xml b/tests/integration/pom.xml
index 3da31ce..1d62537 100644
--- a/tests/integration/pom.xml
+++ b/tests/integration/pom.xml
@@ -53,7 +53,7 @@
         <module>jersey-1928</module>
         <module>jersey-1960</module>
         <module>jersey-1964</module>
-        <!--<module>jersey-2031</module>-->
+        <module>jersey-2031</module>
         <module>jersey-2136</module>
         <module>jersey-2137</module>
         <module>jersey-2154</module>
@@ -62,7 +62,7 @@
         <module>jersey-2167</module>
         <module>jersey-2176</module>
         <module>jersey-2184</module>
-<!--        <module>jersey-2255</module> Moxy-->
+        <module>jersey-2255</module>
         <module>jersey-2322</module>
         <module>jersey-2335</module>
         <module>jersey-2421</module>
@@ -77,11 +77,12 @@
         <module>jersey-2794</module>
         <module>jersey-2846</module>
         <module>jersey-2878</module>
-<!--        <module>jersey-2892</module> Moxy-->
+        <module>jersey-2892</module>
 	    <module>jersey-3796</module>
         <module>jersey-780</module>
         <module>jersey-3670</module>
         <module>jersey-3992</module>
+        <module>jersey-4003</module>
         <module>jersey-4099</module>
         <module>jersey-4321</module>
         <module>jetty-response-close</module>
@@ -107,7 +108,7 @@
         <module>servlet-2.5-mvc-3</module>
         <module>servlet-2.5-reload</module>
         <module>servlet-3-async</module>
-<!--        <module>servlet-3-chunked-io</module> Moxy-->
+        <module>servlet-3-chunked-io</module>
         <module>servlet-3-filter</module>
         <module>servlet-3-gf-async</module>
         <module>servlet-3-inflector-1</module>
diff --git a/tests/integration/servlet-2.5-mvc-1/pom.xml b/tests/integration/servlet-2.5-mvc-1/pom.xml
index b3ca006..0f15d76 100644
--- a/tests/integration/servlet-2.5-mvc-1/pom.xml
+++ b/tests/integration/servlet-2.5-mvc-1/pom.xml
@@ -68,14 +68,49 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove afer jakartification is done-->
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_25_mvc_1/ItemITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
-              <groupId>org.mortbay.jetty</groupId>
+              <groupId>org.eclipse.jetty</groupId>
               <artifactId>jetty-maven-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-tld</id>
+                        <phase>test</phase>
+                        <configuration>
+                            <target>
+                                <copy file="../../../ext/mvc-jsp/src/main/resources/META-INF/taglib.tld" todir="src/main/webapp/WEB-INF"/>
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>delete-tld</id>
+                        <phase>post-integration-test</phase>
+                        <configuration>
+                            <target>
+                                <delete file="src/main/webapp/WEB-INF/taglib.tld"/>
+                            </target>
+                        </configuration>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
-
     <profiles>
         <profile>
             <id>jdk11+</id>
@@ -92,20 +127,6 @@
                     <artifactId>jaxb-osgi</artifactId>
                 </dependency>
             </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-failsafe-plugin</artifactId>
-                        <configuration>
-                            <excludes>
-                                <exclude>**/BookstoreITCase.java</exclude>
-                                <exclude>**/ItemITCase.java</exclude>
-                            </excludes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
         </profile>
         <profile>
             <id>jdk8</id>
diff --git a/tests/integration/servlet-3-async/pom.xml b/tests/integration/servlet-3-async/pom.xml
index 2906653..6416ba8 100644
--- a/tests/integration/servlet-3-async/pom.xml
+++ b/tests/integration/servlet-3-async/pom.xml
@@ -54,6 +54,14 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 8 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_async/AsyncServletResourceITCase.java</exclude>
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_async/AsyncTimeoutResourceITCase.java</exclude>
+                    </excludes>
+                </configuration>
+
             </plugin>
             <plugin>
               <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-chunked-io/pom.xml b/tests/integration/servlet-3-chunked-io/pom.xml
index 32711fe..791e5bc 100644
--- a/tests/integration/servlet-3-chunked-io/pom.xml
+++ b/tests/integration/servlet-3-chunked-io/pom.xml
@@ -63,6 +63,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes>
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_chunked_io/ChunkedInputOutputITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-inflector-1/pom.xml b/tests/integration/servlet-3-inflector-1/pom.xml
index d0da7f9..72ae053 100644
--- a/tests/integration/servlet-3-inflector-1/pom.xml
+++ b/tests/integration/servlet-3-inflector-1/pom.xml
@@ -63,6 +63,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 8 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_inflector_1/InflectorInjectionTestITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-1/pom.xml b/tests/integration/servlet-3-init-1/pom.xml
index b5e13d8..e186df1 100644
--- a/tests/integration/servlet-3-init-1/pom.xml
+++ b/tests/integration/servlet-3-init-1/pom.xml
@@ -54,6 +54,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_1/HelloWorldResourceITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
               <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-2/pom.xml b/tests/integration/servlet-3-init-2/pom.xml
index f6dc66d..338cf7b 100644
--- a/tests/integration/servlet-3-init-2/pom.xml
+++ b/tests/integration/servlet-3-init-2/pom.xml
@@ -63,6 +63,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_2/HelloWorldResourceITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
               <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-3/pom.xml b/tests/integration/servlet-3-init-3/pom.xml
index c900043..4dbeecf 100644
--- a/tests/integration/servlet-3-init-3/pom.xml
+++ b/tests/integration/servlet-3-init-3/pom.xml
@@ -60,6 +60,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_3/EmptyApplicationTestITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-4/pom.xml b/tests/integration/servlet-3-init-4/pom.xml
index 56b7750..cfa68da 100644
--- a/tests/integration/servlet-3-init-4/pom.xml
+++ b/tests/integration/servlet-3-init-4/pom.xml
@@ -63,6 +63,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_4/EmptyApplicationTestITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-5/pom.xml b/tests/integration/servlet-3-init-5/pom.xml
index b618d95..20c01a7 100644
--- a/tests/integration/servlet-3-init-5/pom.xml
+++ b/tests/integration/servlet-3-init-5/pom.xml
@@ -61,6 +61,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_5/HelloWorldResourceITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
               <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-6/pom.xml b/tests/integration/servlet-3-init-6/pom.xml
index d2cb877..4d38f9b 100644
--- a/tests/integration/servlet-3-init-6/pom.xml
+++ b/tests/integration/servlet-3-init-6/pom.xml
@@ -61,6 +61,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_6/EmptyApplicationITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
               <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-7/pom.xml b/tests/integration/servlet-3-init-7/pom.xml
index d50c0fc..511eefa 100644
--- a/tests/integration/servlet-3-init-7/pom.xml
+++ b/tests/integration/servlet-3-init-7/pom.xml
@@ -62,6 +62,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_7/HelloWorldResourceITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
               <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-8/pom.xml b/tests/integration/servlet-3-init-8/pom.xml
index 89785fa..87829b4 100644
--- a/tests/integration/servlet-3-init-8/pom.xml
+++ b/tests/integration/servlet-3-init-8/pom.xml
@@ -56,6 +56,13 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_8/HelloWorldResourceITCase.java</exclude>
+                        <exclude>org/glassfish/jersey/tests/integration/servlet_3_init_8/HelloWorldUnreachableResourceITCase.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-3-init-provider/pom.xml b/tests/integration/servlet-3-init-provider/pom.xml
index b5eee1d..d719040 100644
--- a/tests/integration/servlet-3-init-provider/pom.xml
+++ b/tests/integration/servlet-3-init-provider/pom.xml
@@ -42,9 +42,9 @@
             <artifactId>jersey-servlet-portability</artifactId>
         </dependency>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-            <version>${servlet3.version}</version>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>${servlet4.version}</version>
             <scope>provided</scope>
         </dependency>
 
@@ -64,6 +64,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-request-wrapper-binding-2/pom.xml b/tests/integration/servlet-request-wrapper-binding-2/pom.xml
index 526e36a..a417886 100644
--- a/tests/integration/servlet-request-wrapper-binding-2/pom.xml
+++ b/tests/integration/servlet-request-wrapper-binding-2/pom.xml
@@ -70,6 +70,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-request-wrapper-binding/pom.xml b/tests/integration/servlet-request-wrapper-binding/pom.xml
index 75a5cf4..ad45b55 100644
--- a/tests/integration/servlet-request-wrapper-binding/pom.xml
+++ b/tests/integration/servlet-request-wrapper-binding/pom.xml
@@ -70,6 +70,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.mortbay.jetty</groupId>
diff --git a/tests/integration/servlet-tests/pom.xml b/tests/integration/servlet-tests/pom.xml
index 179b69c..1bd72b6 100644
--- a/tests/integration/servlet-tests/pom.xml
+++ b/tests/integration/servlet-tests/pom.xml
@@ -34,9 +34,9 @@
 
     <dependencies>
         <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>${servlet2.version}</version>
+            <groupId>jakarta.servlet</groupId>
+            <artifactId>jakarta.servlet-api</artifactId>
+            <version>${servlet4.version}</version>
         </dependency>
 
         <dependency>
diff --git a/tests/integration/spring5/pom.xml b/tests/integration/spring5/pom.xml
index adbda05..12a6d3e 100644
--- a/tests/integration/spring5/pom.xml
+++ b/tests/integration/spring5/pom.xml
@@ -93,6 +93,12 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-failsafe-plugin</artifactId>
+                <!-- TODO remove after jakartification -->
+                <configuration>
+                    <excludes> <!--JDK 11 -->
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
+                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.eclipse.jetty</groupId>
diff --git a/tests/integration/tracing-support/pom.xml b/tests/integration/tracing-support/pom.xml
index 6881c48..92c2d63 100644
--- a/tests/integration/tracing-support/pom.xml
+++ b/tests/integration/tracing-support/pom.xml
@@ -57,8 +57,13 @@
                 <configuration>
                     <systemPropertyVariables>
                         <!-- client side config works - failsafe plugin forks jvm -->
-                        <java.util.logging.config.file>${project.build.testOutputDirectory}/logging.properties</java.util.logging.config.file>
+                        <java.util.logging.config.file>${project.build.testOutputDirectory}/logging.properties
+                        </java.util.logging.config.file>
                     </systemPropertyVariables>
+                    <!-- TODO remove after jakartification -->
+                    <excludes> <!--JDK 11 -->
+                        <exclude>**/**/*.java</exclude>
+                    </excludes>
                 </configuration>
             </plugin>
             <plugin>
diff --git a/tests/jmockit/pom.xml b/tests/jmockit/pom.xml
index e6934b3..fbadeef 100644
--- a/tests/jmockit/pom.xml
+++ b/tests/jmockit/pom.xml
@@ -69,11 +69,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.glassfish.jersey.media</groupId>
-            <artifactId>jersey-media-multipart</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.glassfish.jersey.test-framework</groupId>
             <artifactId>jersey-test-framework-core</artifactId>
             <scope>test</scope>
@@ -96,4 +91,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
\ No newline at end of file
+</project>
diff --git a/tests/osgi/functional/pom.xml b/tests/osgi/functional/pom.xml
index 6fbe70d..9ac3790 100644
--- a/tests/osgi/functional/pom.xml
+++ b/tests/osgi/functional/pom.xml
@@ -368,19 +368,6 @@
 
     <profiles>
         <profile>
-            <id>jdk11dependency</id>
-            <activation>
-                <jdk>[11,)</jdk>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>com.sun.activation</groupId>
-                    <artifactId>jakarta.activation</artifactId>
-                    <version>${jakarta.activation.version}</version>
-                </dependency>
-            </dependencies>
-        </profile>
-        <profile>
             <id>testsSkipJdk8</id>
             <activation>
                 <jdk>[1.8,11)</jdk>
@@ -414,7 +401,7 @@
             </build>
         </profile>
         <profile>
-            <id>testsSkipJdk11</id>
+            <id>jdk11dependency</id>
             <activation>
                 <jdk>[11,)</jdk>
             </activation>
diff --git a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/JsonProcessingTest.java b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/JsonProcessingTest.java
index 15e75d4..ca3a7a0 100644
--- a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/JsonProcessingTest.java
+++ b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/basic/JsonProcessingTest.java
@@ -27,8 +27,8 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.UriBuilder;
 
-import javax.json.Json;
-import javax.json.JsonObject;
+import jakarta.json.Json;
+import jakarta.json.JsonObject;
 
 import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
 import org.glassfish.jersey.osgi.test.util.Helper;
diff --git a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java
index 7e45238..b5573f9 100644
--- a/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java
+++ b/tests/osgi/functional/src/test/java/org/glassfish/jersey/osgi/test/util/Helper.java
@@ -137,11 +137,11 @@
                 // systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("FINEST"),
                 systemProperty("org.osgi.service.http.port").value(String.valueOf(port)),
                 systemProperty(TestProperties.CONTAINER_PORT).value(String.valueOf(port)),
-                systemProperty("org.osgi.framework.system.packages.extra").value("javax.annotation"),
+                systemProperty("org.osgi.framework.system.packages.extra").value("jakarta.annotation"),
                 systemProperty(JAXRS_RUNTIME_DELEGATE_PROPERTY).value("org.glassfish.jersey.internal.RuntimeDelegateImpl"),
                 systemProperty(JAXRS_CLIENT_BUILDER).value("org.glassfish.jersey.client.JerseyClientBuilder"),
 
-                // javax.annotation has to go first!
+                // jakarta.annotation has to go first!
                 mavenBundle().groupId("jakarta.annotation").artifactId("jakarta.annotation-api").versionAsInProject(),
                 mavenBundle().groupId("jakarta.xml.bind").artifactId("jakarta.xml.bind-api").versionAsInProject(),
                 junitBundles(),
diff --git a/tests/performance/pom.xml b/tests/performance/pom.xml
index c155ce9..089e7e9 100644
--- a/tests/performance/pom.xml
+++ b/tests/performance/pom.xml
@@ -39,7 +39,7 @@
         <module>benchmarks</module>
         <module>runners</module>
         <module>test-cases</module>
-<!--        <module>tools</module> Moxy-->
+        <module>tools</module>
     </modules>
 
 </project>
diff --git a/tests/performance/runners/jersey-grizzly-runner/pom.xml b/tests/performance/runners/jersey-grizzly-runner/pom.xml
index d4d372b..9132f63 100644
--- a/tests/performance/runners/jersey-grizzly-runner/pom.xml
+++ b/tests/performance/runners/jersey-grizzly-runner/pom.xml
@@ -82,8 +82,7 @@
                         <phase>package</phase>
                         <!-- append to the packaging phase. -->
                         <goals>
-                            <goal>attached</goal>
-                            <!-- goals == mojos -->
+                            <goal>single</goal>
                         </goals>
                     </execution>
                 </executions>
