diff --git a/.github/workflows/maven-package.yml b/.github/workflows/maven-package.yml
index c283960..f1954c1 100644
--- a/.github/workflows/maven-package.yml
+++ b/.github/workflows/maven-package.yml
@@ -13,7 +13,7 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        java: ['17', '21' ]
+        java: ['21', '25']
 
     steps:
     - uses: actions/checkout@v4
diff --git a/examples/pom.xml b/examples/pom.xml
index 1939e03..cfc1a9b 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -22,11 +22,11 @@
     <parent>
         <groupId>jakarta.ws.rs</groupId>
         <artifactId>all</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>5.0.0-SNAPSHOT</version>
     </parent>
 
     <properties>
-        <microprofile.config.version>3.0.3</microprofile.config.version>
+        <microprofile.config.version>3.1</microprofile.config.version>
     </properties>
 
     <build>
diff --git a/jaxrs-api/pom.xml b/jaxrs-api/pom.xml
index 5228f67..765f14b 100644
--- a/jaxrs-api/pom.xml
+++ b/jaxrs-api/pom.xml
@@ -28,7 +28,7 @@
     <parent>
         <groupId>jakarta.ws.rs</groupId>
         <artifactId>all</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>5.0.0-SNAPSHOT</version>
     </parent>
 
     <properties>
diff --git a/jaxrs-spec/pom.xml b/jaxrs-spec/pom.xml
index f90ed3f..3a80f70 100644
--- a/jaxrs-spec/pom.xml
+++ b/jaxrs-spec/pom.xml
@@ -27,13 +27,13 @@
     <parent>
         <groupId>jakarta.ws.rs</groupId>
         <artifactId>all</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>5.0.0-SNAPSHOT</version>
     </parent>
 
     <properties>
         <site.output.dir>${project.build.directory}/staging</site.output.dir>
         <maven.site.skip>true</maven.site.skip>
-        <jruby.version>9.4.6.0</jruby.version>
+        <jruby.version>10.0.2.0</jruby.version>
         <!-- status: DRAFT, BETA, etc., or blank for final -->
         <status></status>
         <maven.build.timestamp.format>MMMM dd, yyyy</maven.build.timestamp.format>
diff --git a/jaxrs-tck/docs/TCK-Exclude-List.txt b/jaxrs-tck/docs/TCK-Exclude-List.txt
index 33f0b77..392f20c 100644
--- a/jaxrs-tck/docs/TCK-Exclude-List.txt
+++ b/jaxrs-tck/docs/TCK-Exclude-List.txt
@@ -18,140 +18,3 @@
 # This is intended only for documentation purpose and is not used to exclude any tests.
 # The tests are excluded from the test source using @Disabled tag in JUnit framework.
 #
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithCallbackStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#deleteWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithCallbackStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#getWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#headTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#headWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackStringWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithCallbackWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeResponseWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithGenericTypeStringWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithResponseClassWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#methodWithStringClassWithEntityWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithStringCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#optionsWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#postWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithStringCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#putWithStringClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithGenericTypeResponseWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithGenericTypeStringWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithResponseClassWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithStringCallbackWhileServerWaitTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java#traceWithStringClassWhileServerWaitTest
-
-#
-#
-ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java#connectionLostForDefault500msTest
-
-# https://github.com/jakartaee/rest/issues/1106
-ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java#replaceQueryTest4
-
-# https://github.com/jakartaee/rest/issues/1123
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#deleteWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#getWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#headTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#optionsWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#postWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#putWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java#traceWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#deleteWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#getWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#headTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithStringClassWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithResponseClassWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeStringWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#methodWithGenericTypeResponseWithEntityTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#optionsWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#postWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#putWithGenericTypeResponseTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithStringClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithResponseClassTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeStringTest
-ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java#traceWithGenericTypeResponseTest
-
-# https://github.com/jakartaee/rest/issues/1138
-ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT#getNormalizedUriTest
diff --git a/jaxrs-tck/docs/userguide/pom.xml b/jaxrs-tck/docs/userguide/pom.xml
index 1934e5b..d5efd81 100644
--- a/jaxrs-tck/docs/userguide/pom.xml
+++ b/jaxrs-tck/docs/userguide/pom.xml
@@ -27,7 +27,7 @@
     <groupId>org.glassfish</groupId>
     <artifactId>tck_jaxrs</artifactId>
     <packaging>pom</packaging>
-    <version>4.0.0-SNAPSHOT</version>
+    <version>5.0.0-SNAPSHOT</version>
     <name>Eclipse Foundation Technology Compatibility Kit User's Guide for Jakarta RESTful Web Services for Jakarta EE, Release 4.0</name>
 
     <properties>
diff --git a/jaxrs-tck/pom.xml b/jaxrs-tck/pom.xml
index 9a23549..a66e44e 100644
--- a/jaxrs-tck/pom.xml
+++ b/jaxrs-tck/pom.xml
@@ -26,21 +26,21 @@
     <name>Jakarta RESTful WS TCK</name>
     <description>Technology Compatibility Kit for Jakarta RESTful Web Services</description>
     <url>https://github.com/jakartaee/rest</url>
-    <version>4.0.0-SNAPSHOT</version>
+    <version>5.0.0-SNAPSHOT</version>
 
     <parent>
         <groupId>jakarta.ws.rs</groupId>
         <artifactId>all</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>5.0.0-SNAPSHOT</version>
     </parent>
 
     <properties>
         <json.api.version>2.1.3</json.api.version>
-        <json.bind.api.version>3.0.0</json.bind.api.version>
-        <xml.bind.api.version>4.0.0</xml.bind.api.version>
-        <servlet.api.version>6.1.0-M2</servlet.api.version>
+        <json.bind.api.version>3.0.1</json.bind.api.version>
+        <xml.bind.api.version>4.0.4</xml.bind.api.version>
+        <servlet.api.version>6.1.0</servlet.api.version>
         <common.httpclient.version>3.1</common.httpclient.version>
-        <arquillian.version>1.8.0.Final</arquillian.version>
+        <arquillian.version>1.10.0.Final</arquillian.version>
     </properties>
 
     <dependencies>
@@ -190,7 +190,7 @@
                     <plugin>
                         <groupId>jakarta.tck</groupId>
                         <artifactId>sigtest-maven-plugin</artifactId>
-                        <version>2.2</version>
+                        <version>2.6</version>
                         <executions>
                             <execution>
                                 <goals>
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java
index d23920f..05ee918 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/api/rs/core/uribuilder/JAXRSClientIT.java
@@ -32,11 +32,9 @@
 
 import org.junit.jupiter.api.Test;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -1715,7 +1713,6 @@
    * IllegalArgumentException is thrown when query cannot be parsed.
    */
   @Test
-  @Disabled
   public void replaceQueryTest4() throws Fault {
     String value = "http://localhost:8080?name1=x&name2=%20&name3=x+y&name4=x%20y";
 
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
index 52a001c..9cbd67f 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/ee/rs/core/uriinfo/JAXRSClientIT.java
@@ -28,13 +28,11 @@
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -415,7 +413,6 @@
    * obtained from an injected UriInfo
    */
   @Test
-  @Disabled
   public void getNormalizedUriTest() throws Fault {
     setProperty(Property.REQUEST, buildRequest(GET, URIInfoTest.DECODED));
     invoke();
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java
index b01f6bc..32b6407 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/async/JAXRSClientIT.java
@@ -34,14 +34,11 @@
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -93,7 +90,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteTest() throws Fault {
     super.deleteTest();
   }
@@ -117,7 +113,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithStringClassWhileServerWaitTest()
       throws Fault {
     super.deleteWithStringClassWhileServerWaitTest();
@@ -132,7 +127,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.deleteWithResponseClassWhileServerWaitTest();
@@ -162,7 +156,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.deleteWithGenericTypeStringWhileServerWaitTest();
@@ -177,7 +170,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.deleteWithGenericTypeResponseWhileServerWaitTest();
@@ -207,7 +199,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithCallbackWhileServerWaitTest() throws Fault {
     super.deleteWithCallbackWhileServerWaitTest();
   }
@@ -221,7 +212,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void deleteWithCallbackStringWhileServerWaitTest()
       throws Fault {
     super.deleteWithCallbackStringWhileServerWaitTest();
@@ -254,7 +244,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getTest() throws Fault {
     super.getTest();
   }
@@ -278,7 +267,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithStringClassWhileServerWaitTest() throws Fault {
     super.getWithStringClassWhileServerWaitTest();
   }
@@ -292,7 +280,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.deleteWithResponseClassWhileServerWaitTest();
@@ -323,7 +310,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.getWithGenericTypeStringWhileServerWaitTest();
@@ -338,7 +324,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.getWithGenericTypeResponseWhileServerWaitTest();
@@ -368,7 +353,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithCallbackWhileServerWaitTest() throws Fault {
     super.getWithCallbackWhileServerWaitTest();
   }
@@ -382,7 +366,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void getWithCallbackStringWhileServerWaitTest()
       throws Fault {
     super.getWithCallbackStringWhileServerWaitTest();
@@ -417,7 +400,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void headTest() throws Fault {
     super.headTest();
   }
@@ -441,7 +423,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void headWithCallbackWhileServerWaitTest() throws Fault {
     super.headWithCallbackWhileServerWaitTest();
   }
@@ -464,7 +445,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodTest() throws Fault {
     super.methodTest();
   }
@@ -488,7 +468,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithStringClassWhileServerWaitTest()
       throws Fault {
     super.methodWithStringClassWhileServerWaitTest();
@@ -503,7 +482,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.methodWithResponseClassWhileServerWaitTest();
@@ -533,7 +511,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeStringWhileServerWaitTest();
@@ -548,7 +525,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeResponseWhileServerWaitTest();
@@ -579,7 +555,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackWhileServerWaitTest() throws Fault {
     super.methodWithCallbackWhileServerWaitTest();
   }
@@ -593,7 +568,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackStringWhileServerWaitTest()
       throws Fault {
     super.methodWithCallbackStringWhileServerWaitTest();
@@ -624,7 +598,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithEntityWhileServerWaitTest() throws Fault {
     super.methodWithEntityWhileServerWaitTest();
   }
@@ -644,7 +617,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithStringClassWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithStringClassWithEntityWhileServerWaitTest();
@@ -659,7 +631,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithResponseClassWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithResponseClassWithEntityWhileServerWaitTest();
@@ -674,7 +645,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeStringWithEntityWhileServerWaitTest();
@@ -704,7 +674,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithGenericTypeResponseWithEntityWhileServerWaitTest();
@@ -734,7 +703,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithCallbackWithEntityWhileServerWaitTest();
@@ -749,7 +717,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void methodWithCallbackStringWithEntityWhileServerWaitTest()
       throws Fault {
     super.methodWithCallbackStringWithEntityWhileServerWaitTest();
@@ -784,7 +751,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsTest() throws Fault {
     super.optionsTest();
   }
@@ -809,7 +775,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithStringClassWhileServerWaitTest()
       throws Fault {
     super.optionsWithStringClassWhileServerWaitTest();
@@ -824,7 +789,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.optionsWithResponseClassWhileServerWaitTest();
@@ -854,7 +818,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.optionsWithGenericTypeStringWhileServerWaitTest();
@@ -869,7 +832,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.optionsWithGenericTypeResponseWhileServerWaitTest();
@@ -899,7 +861,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithCallbackWhileServerWaitTest()
       throws Fault {
     super.optionsWithCallbackWhileServerWaitTest();
@@ -914,7 +875,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void optionsWithStringCallbackWhileServerWaitTest()
       throws Fault {
     super.optionsWithStringCallbackWhileServerWaitTest();
@@ -948,7 +908,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postTest() throws Fault {
     super.postTest();
   }
@@ -972,7 +931,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithStringClassWhileServerWaitTest() throws Fault {
     super.postWithStringClassWhileServerWaitTest();
   }
@@ -986,7 +944,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.postWithResponseClassWhileServerWaitTest();
@@ -1016,7 +973,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.postWithGenericTypeStringWhileServerWaitTest();
@@ -1031,7 +987,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.postWithGenericTypeResponseWhileServerWaitTest();
@@ -1061,7 +1016,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void postWithCallbackWhileServerWaitTest() throws Fault {
     super.postWithCallbackWhileServerWaitTest();
   }
@@ -1095,7 +1049,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putTest() throws Fault {
     super.putTest();
   }
@@ -1134,7 +1087,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithStringClassWhileServerWaitTest() throws Fault {
     super.putWithStringClassWhileServerWaitTest();
   }
@@ -1164,7 +1116,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.putWithResponseClassWhileServerWaitTest();
@@ -1179,7 +1130,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.putWithGenericTypeStringWhileServerWaitTest();
@@ -1194,7 +1144,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.putWithGenericTypeResponseWhileServerWaitTest();
@@ -1209,7 +1158,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithCallbackWhileServerWaitTest() throws Fault {
     super.putWithCallbackWhileServerWaitTest();
   }
@@ -1223,7 +1171,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void putWithStringCallbackWhileServerWaitTest()
       throws Fault {
     super.putWithStringCallbackWhileServerWaitTest();
@@ -1257,7 +1204,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceTest() throws Fault {
     super.traceTest();
   }
@@ -1282,7 +1228,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithStringClassWhileServerWaitTest() throws Fault {
     super.traceWithStringClassWhileServerWaitTest();
   }
@@ -1296,7 +1241,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithResponseClassWhileServerWaitTest()
       throws Fault {
     super.traceWithResponseClassWhileServerWaitTest();
@@ -1327,7 +1271,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeStringWhileServerWaitTest()
       throws Fault {
     super.traceWithGenericTypeStringWhileServerWaitTest();
@@ -1342,7 +1285,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeResponseWhileServerWaitTest()
       throws Fault {
     super.traceWithGenericTypeResponseWhileServerWaitTest();
@@ -1373,7 +1315,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithCallbackWhileServerWaitTest() throws Fault {
     super.traceWithCallbackWhileServerWaitTest();
   }
@@ -1404,7 +1345,6 @@
    * asynchronously.
    */
   @Test
-  @Disabled
   public void traceWithStringCallbackWhileServerWaitTest()
       throws Fault {
     super.traceWithStringCallbackWhileServerWaitTest();
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
index 96f7091..b2144ed 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/executor/rx/JAXRSClientIT.java
@@ -34,14 +34,11 @@
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -107,7 +104,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithStringClassTest() throws Fault {
     super.deleteWithStringClassTest();
   }
@@ -121,7 +117,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithResponseClassTest() throws Fault {
     super.deleteWithResponseClassTest();
   }
@@ -134,7 +129,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeStringTest() throws Fault {
     super.deleteWithGenericTypeStringTest();
   }
@@ -147,7 +141,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeResponseTest() throws Fault {
     super.deleteWithGenericTypeResponseTest();
   }
@@ -164,7 +157,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getTest() throws Fault {
     super.getTest();
   }
@@ -177,7 +169,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithStringClassTest() throws Fault {
     super.getWithStringClassTest();
   }
@@ -190,7 +181,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithResponseClassTest() throws Fault {
     super.getWithResponseClassTest();
   }
@@ -203,7 +193,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeStringTest() throws Fault {
     super.getWithGenericTypeStringTest();
   }
@@ -216,7 +205,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeResponseTest() throws Fault {
     super.getWithGenericTypeResponseTest();
   }
@@ -233,7 +221,6 @@
    * @test_Strategy: Invoke HTTP HEAD method for the current request
    */
   @Test
-  @Disabled
   public void headTest() throws Fault {
     super.headTest();
   }
@@ -262,7 +249,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithStringClassTest() throws Fault {
     super.optionsWithStringClassTest();
   }
@@ -275,7 +261,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithResponseClassTest() throws Fault {
     super.optionsWithResponseClassTest();
   }
@@ -288,7 +273,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeStringTest() throws Fault {
     super.optionsWithGenericTypeStringTest();
   }
@@ -301,7 +285,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeResponseTest() throws Fault {
     super.optionsWithGenericTypeResponseTest();
   }
@@ -318,7 +301,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postTest() throws Fault {
     super.postTest();
   }
@@ -331,7 +313,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithStringClassTest() throws Fault {
     super.postWithStringClassTest();
   }
@@ -344,7 +325,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithResponseClassTest() throws Fault {
     super.postWithResponseClassTest();
   }
@@ -357,7 +337,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeStringTest() throws Fault {
     super.postWithGenericTypeStringTest();
   }
@@ -370,7 +349,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeResponseTest() throws Fault {
     super.postWithGenericTypeResponseTest();
   }
@@ -387,7 +365,6 @@
    * @test_Strategy: Invoke HTTP PUT method for the current request
    */
   @Test
-  @Disabled
   public void putTest() throws Fault {
     super.putTest();
   }
@@ -400,7 +377,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithStringClassTest() throws Fault {
     super.putWithStringClassTest();
   }
@@ -413,7 +389,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithResponseClassTest() throws Fault {
     super.putWithResponseClassTest();
   }
@@ -426,7 +401,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeStringTest() throws Fault {
     super.putWithGenericTypeStringTest();
   }
@@ -439,7 +413,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeResponseTest() throws Fault {
     super.putWithGenericTypeResponseTest();
   }
@@ -456,7 +429,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceTest() throws Fault {
     super.traceTest();
   }
@@ -469,7 +441,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithStringClassTest() throws Fault {
     super.traceWithStringClassTest();
   }
@@ -482,7 +453,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithResponseClassTest() throws Fault {
     super.traceWithResponseClassTest();
   }
@@ -495,7 +465,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeStringTest() throws Fault {
     super.traceWithGenericTypeStringTest();
   }
@@ -508,7 +477,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeResponseTest() throws Fault {
     super.traceWithGenericTypeResponseTest();
   }
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
index f0483e5..6986f22 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/client/rxinvoker/JAXRSClientIT.java
@@ -46,13 +46,11 @@
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -151,7 +149,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     Future<String> future = rx.delete(String.class).toCompletableFuture();
@@ -167,7 +164,6 @@
    * 
    */
   @Test
-  @Disabled
   public void deleteWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     Future<Response> future = rx.delete(Response.class).toCompletableFuture();
@@ -232,7 +228,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     GenericType<String> generic = createGeneric(String.class);
@@ -248,7 +243,6 @@
    * @test_Strategy: Invoke HTTP DELETE method for the current request
    */
   @Test
-  @Disabled
   public void deleteWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("delete");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -324,7 +318,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<Response> future = rx.get().toCompletableFuture();
@@ -356,7 +349,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<String> future = rx.get(String.class).toCompletableFuture();
@@ -371,7 +363,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     Future<Response> future = rx.get(Response.class).toCompletableFuture();
@@ -436,7 +427,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     GenericType<String> generic = createGeneric(String.class);
@@ -452,7 +442,6 @@
    * @test_Strategy: Invoke HTTP GET method for the current request
    */
   @Test
-  @Disabled
   public void getWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("get");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -526,7 +515,6 @@
    * @test_Strategy: Invoke HTTP HEAD method for the current request
    */
   @Test
-  @Disabled
   public void headTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("head");
     Future<Response> future = rx.head().toCompletableFuture();
@@ -562,7 +550,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodTest() throws Fault {
     Future<Response> future = null;
     for (String method : METHODS) {
@@ -602,7 +589,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithStringClassTest() throws Fault {
     Future<String> future = null;
     for (String method : METHODS) {
@@ -621,7 +607,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithResponseClassTest() throws Fault {
     Future<Response> future = null;
     for (String method : METHODS) {
@@ -702,7 +687,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Future<String> future = null;
@@ -722,7 +706,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Future<Response> future = null;
@@ -810,7 +793,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithEntityTest() throws Fault {
     Future<Response> future = null;
     for (String method : ENTITY_METHODS) {
@@ -852,7 +834,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithStringClassWithEntityTest() throws Fault {
     Future<String> future = null;
     for (String method : ENTITY_METHODS) {
@@ -872,7 +853,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithResponseClassWithEntityTest() throws Fault {
     Future<Response> future = null;
     for (String method : ENTITY_METHODS) {
@@ -960,7 +940,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeStringWithEntityTest()
       throws Fault {
     Future<String> future = null;
@@ -982,7 +961,6 @@
    * @test_Strategy: Invoke an arbitrary method for the current request
    */
   @Test
-  @Disabled
   public void methodWithGenericTypeResponseWithEntityTest()
       throws Fault {
     Future<Response> future = null;
@@ -1110,7 +1088,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     Future<String> future = rx.options(String.class).toCompletableFuture();
@@ -1125,7 +1102,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     Future<Response> future = rx.options(Response.class).toCompletableFuture();
@@ -1190,7 +1166,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeStringTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     GenericType<String> generic = createGeneric(String.class);
@@ -1206,7 +1181,6 @@
    * @test_Strategy: Invoke HTTP options method for the current request
    */
   @Test
-  @Disabled
   public void optionsWithGenericTypeResponseTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("options");
     GenericType<Response> generic = createGeneric(Response.class);
@@ -1282,7 +1256,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1316,7 +1289,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithStringClassTest() throws Fault {
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
@@ -1332,7 +1304,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithResponseClassTest() throws Fault {
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("post");
@@ -1403,7 +1374,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1420,7 +1390,6 @@
    * @test_Strategy: Invoke HTTP post method for the current request
    */
   @Test
-  @Disabled
   public void postWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Entity<String> entity = Entity.entity("post", MediaType.WILDCARD_TYPE);
@@ -1499,7 +1468,6 @@
    * @test_Strategy: Invoke HTTP PUT method for the current request
    */
   @Test
-  @Disabled
   public void putTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1533,7 +1501,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithStringClassTest() throws Fault {
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
@@ -1549,7 +1516,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithResponseClassTest() throws Fault {
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("put");
@@ -1620,7 +1586,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1637,7 +1602,6 @@
    * @test_Strategy: Invoke HTTP put method for the current request
    */
   @Test
-  @Disabled
   public void putWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     Entity<String> entity = Entity.entity("put", MediaType.WILDCARD_TYPE);
@@ -1715,7 +1679,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<Response> future = rx.trace().toCompletableFuture();
@@ -1747,7 +1710,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithStringClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<String> future = rx.trace(String.class).toCompletableFuture();
@@ -1762,7 +1724,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithResponseClassTest() throws Fault {
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
     Future<Response> future = rx.trace(Response.class).toCompletableFuture();
@@ -1827,7 +1788,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeStringTest() throws Fault {
     GenericType<String> generic = createGeneric(String.class);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
@@ -1843,7 +1803,6 @@
    * @test_Strategy: Invoke HTTP trace method for the current request
    */
   @Test
-  @Disabled
   public void traceWithGenericTypeResponseTest() throws Fault {
     GenericType<Response> generic = createGeneric(Response.class);
     CompletionStageRxInvoker rx = startRxInvokerForMethod("trace");
diff --git a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java
index 3a66537..4e0f344 100644
--- a/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java
+++ b/jaxrs-tck/src/main/java/ee/jakarta/tck/ws/rs/jaxrs21/ee/sse/sseeventsource/JAXRSClientIT.java
@@ -61,14 +61,12 @@
 
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.fail;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.Tag;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.TestInfo;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
 
 /*
  * @class.setup_props: webServerHost;
@@ -248,7 +246,6 @@
    * endpoint.
    */
   @Test
-  @Disabled
   public void connectionLostForDefault500msTest() throws Fault {
     resetUnavailableServer();
 
diff --git a/jersey-tck/pom.xml b/jersey-tck/pom.xml
index ef76456..3ec92a3 100644
--- a/jersey-tck/pom.xml
+++ b/jersey-tck/pom.xml
@@ -22,27 +22,26 @@
 
     <groupId>org.glassfish.jersey.core</groupId>
     <artifactId>jersey-tck</artifactId>
-    <version>4.0.0-SNAPSHOT</version>
+    <version>5.0.0-SNAPSHOT</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>jakarta.ws.rs</groupId>
         <artifactId>all</artifactId>
-        <version>4.0.0-SNAPSHOT</version>
+        <version>5.0.0-SNAPSHOT</version>
     </parent>
 
     <name>Jakarta RESTful WS Compliance</name>
     <description>This test verifies the compliance of Eclipse Jersey with Jakarta REST</description>
 
     <properties>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
-        <jersey.version>3.1.0-M3</jersey.version>
-        <glassfish.container.version>6.2.5</glassfish.container.version>
-        <glassfish.home>${project.build.directory}/glassfish6</glassfish.home>
-        <jakarta.platform.version>10.0.0-RC1</jakarta.platform.version>
-        <junit.jupiter.version>5.7.2</junit.jupiter.version>
-        <jakarta.rest.version>4.0.0-SNAPSHOT</jakarta.rest.version>
+        <maven.compiler.release>21</maven.compiler.release>
+        <jersey.version>4.0.0-M4</jersey.version>
+        <glassfish.container.version>8.0.0-M13</glassfish.container.version>
+        <glassfish.home>${project.build.directory}/glassfish8</glassfish.home>
+        <jakarta.platform.version>11.0.0</jakarta.platform.version>
+        <junit.jupiter.version>6.0.0</junit.jupiter.version>
+        <jakarta.rest.version>5.0.0-SNAPSHOT</jakarta.rest.version>
         <tck.artifactId>jakarta-restful-ws-tck</tck.artifactId>
     </properties>
 
@@ -75,13 +74,13 @@
         <dependency>
             <groupId>org.glassfish.hk2</groupId>
             <artifactId>hk2-locator</artifactId>
-            <version>3.0.0</version>
+            <version>4.0.0-M3</version>
         </dependency>
 
         <dependency>
             <groupId>com.sun.xml.bind</groupId>
             <artifactId>jaxb-impl</artifactId>
-            <version>3.0.0</version>
+            <version>4.0.6</version>
             <scope>runtime</scope>
         </dependency>
 
@@ -108,7 +107,7 @@
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest</artifactId>
-            <version>2.2</version>
+            <version>3.0</version>
             <scope>test</scope>
         </dependency>
 
@@ -121,7 +120,7 @@
         <dependency>
             <groupId>org.jboss.arquillian.junit5</groupId>
             <artifactId>arquillian-junit5-container</artifactId>
-            <version>1.7.0.Alpha10</version>
+            <version>1.10.0.Final</version>
         </dependency>
 
         <dependency>
@@ -150,9 +149,9 @@
             <scope>test</scope>
         </dependency> 
         <dependency>
-            <groupId>org.netbeans.tools</groupId>
+            <groupId>jakarta.tck</groupId>
             <artifactId>sigtest-maven-plugin</artifactId>
-            <version>1.4</version>
+            <version>2.6</version>
         </dependency>
         <dependency>
             <groupId>org.glassfish.jersey.media</groupId>
@@ -247,15 +246,6 @@
                                 </artifactItem>
                                 <artifactItem>
                                     <groupId>org.glassfish.jersey.containers</groupId>
-                                    <artifactId>jersey-container-servlet-core</artifactId>
-                                    <version>${jersey.version}</version>
-                                    <type>jar</type>
-                                    <overWrite>true</overWrite>
-                                    <outputDirectory>${glassfish.home}/glassfish/modules</outputDirectory>
-                                    <destFileName>jersey-container-servlet-core.jar</destFileName>
-                                </artifactItem>
-                                <artifactItem>
-                                    <groupId>org.glassfish.jersey.containers</groupId>
                                     <artifactId>jersey-container-servlet</artifactId>
                                     <version>${jersey.version}</version>
                                     <type>jar</type>
@@ -306,7 +296,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>stop-domain</argument>
                             </arguments>
@@ -319,7 +309,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>start-domain</argument>
                             </arguments>
@@ -332,7 +322,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>set</argument>
                                 <argument>server-config.network-config.protocols.protocol.http-listener-1.http.trace-enabled=true</argument>
@@ -346,7 +336,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>--passwordfile</argument>
                                 <argument>${project.basedir}/j2ee.pass</argument>
@@ -366,7 +356,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>--passwordfile</argument>
                                 <argument>${project.basedir}/j2ee.pass</argument>
@@ -384,7 +374,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>--passwordfile</argument>
                                 <argument>${project.basedir}/javajoe.pass</argument>
@@ -404,7 +394,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>--passwordfile</argument>
                                 <argument>${project.basedir}/javajoe.pass</argument>
@@ -422,7 +412,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>list-file-users</argument>
                             </arguments>
@@ -435,7 +425,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>${project.build.directory}/glassfish6/glassfish/bin/asadmin</executable>
+                            <executable>${glassfish.home}/glassfish/bin/asadmin</executable>
                             <arguments>
                                 <argument>stop-domain</argument>
                             </arguments>
@@ -446,7 +436,7 @@
             
             <plugin>
                 <artifactId>maven-failsafe-plugin</artifactId>
-                <version>3.0.0-M5</version>
+                <version>3.5.4</version>
                 <executions>
                     <execution>
                         <id>gf-tests</id>
@@ -470,9 +460,9 @@
                                 <authuser>javajoe</authuser>
                                 <authpassword>javajoe</authpassword>
                                 <porting.ts.url.class.1>ee.jakarta.tck.ws.rs.lib.implementation.sun.common.SunRIURL</porting.ts.url.class.1>
-                                <jimage.dir>${project.build.directory}/jdk11-bundle</jimage.dir>
+                                <jimage.dir>${project.build.directory}/jdk21-bundle</jimage.dir>
                                 <optional.tech.packages.to.ignore>jakarta.xml.bind</optional.tech.packages.to.ignore>
-                                <signature.sigTestClasspath>${glassfish.home}/glassfish/modules/jakarta.ws.rs-api.jar:${glassfish.home}/glassfish/modules/jakarta.xml.bind-api.jar:${project.build.directory}/jdk11-bundle/java.base:${project.build.directory}/jdk11-bundle/java.rmi:${project.build.directory}/jdk11-bundle/java.sql:${project.build.directory}/jdk11-bundle/java.naming</signature.sigTestClasspath>
+                                <signature.sigTestClasspath>${glassfish.home}/glassfish/modules/jakarta.ws.rs-api.jar:${glassfish.home}/glassfish/modules/jakarta.xml.bind-api.jar:${project.build.directory}/jdk21-bundle/java.base:${project.build.directory}/jdk21-bundle/java.rmi:${project.build.directory}/jdk21-bundle/java.sql:${project.build.directory}/jdk21-bundle/java.naming</signature.sigTestClasspath>
                             </systemPropertyVariables>
                             <environmentVariables>
                                 <GLASSFISH_HOME>${glassfish.home}</GLASSFISH_HOME>
diff --git a/pom.xml b/pom.xml
index d37de6c..6bd45f4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -15,26 +15,20 @@
          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>
 
-    <groupId>jakarta.ws.rs</groupId>
-    <artifactId>all</artifactId>
-    <version>4.0.0-SNAPSHOT</version>
-    <packaging>pom</packaging>
-    <name>Jakarta RESTful WS Project</name>
-
     <parent>
         <groupId>org.eclipse.ee4j</groupId>
         <artifactId>project</artifactId>
-        <version>1.0.9</version>
+        <version>2.0.0-M1</version>
         <relativePath/>
     </parent>
 
-    <distributionManagement>
-        <snapshotRepository>
-            <id>repo.eclipse.org</id>
-            <name>JAX-RS API Repository - Snapshots</name>
-            <url>https://repo.eclipse.org/content/repositories/jax-rs-api-snapshots/</url>
-        </snapshotRepository>
-    </distributionManagement><url>https://github.com/jakartaee/rest</url>
+    <groupId>jakarta.ws.rs</groupId>
+    <artifactId>all</artifactId>
+    <version>5.0.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+    <name>Jakarta RESTful WS Project</name>
+
+    <url>https://github.com/jakartaee/rest</url>
 
     <organization>
         <name>Eclipse Foundation</name>
@@ -44,8 +38,8 @@
     <developers>
         <developer>
             <id>developers</id>
-            <name>JAX-RS API Developers</name>
-            <email>jaxrs-dev@eclipse.org</email>
+            <name>Jakarta REST API Developers</name>
+            <email>rest-dev@eclipse.org</email>
             <url>https://github.com/jakartaee/rest/graphs/contributors</url>
         </developer>
     </developers>
@@ -57,8 +51,8 @@
 
     <mailingLists>
         <mailingList>
-            <name>JAX-RS Developer Discussions</name>
-            <archive>jaxrs-dev@eclipse.org</archive>
+            <name>Jakarta REST Developer Discussions</name>
+            <archive>rest-dev@eclipse.org</archive>
         </mailingList>
     </mailingLists>
 
@@ -81,23 +75,23 @@
         <tag>HEAD</tag>
     </scm>
     <properties>
-        <jdk.min.version>17</jdk.min.version>
-        <maven.compiler.release>17</maven.compiler.release>
+        <jdk.min.version>21</jdk.min.version>
+        <maven.compiler.release>21</maven.compiler.release>
 
         <apidocs.title>Jakarta RESTful Web Services ${spec.version} API Specification ${spec.version.revision}</apidocs.title>
         <legal.doc.folder>${project.basedir}</legal.doc.folder>
 
-        <build.helper.maven.plugin.version>3.5.0</build.helper.maven.plugin.version>
-        <buildernumber.maven.plugin.version>3.2.0</buildernumber.maven.plugin.version>
+        <build.helper.maven.plugin.version>3.6.1</build.helper.maven.plugin.version>
+        <buildernumber.maven.plugin.version>3.2.1</buildernumber.maven.plugin.version>
         <glassfish.copyright.maven.plugin.version>2.4</glassfish.copyright.maven.plugin.version>
-        <maven.bundle.plugin.version>5.1.9</maven.bundle.plugin.version>
-        <maven.checkstyle.plugin.version>3.3.1</maven.checkstyle.plugin.version>
+        <maven.bundle.plugin.version>6.0.0</maven.bundle.plugin.version>
+        <maven.checkstyle.plugin.version>3.6.0</maven.checkstyle.plugin.version>
         <maven.compiler.plugin.version>3.12.1</maven.compiler.plugin.version>
         <maven.jar.plugin.version>3.3.0</maven.jar.plugin.version>
-        <maven.jxr.plugin.version>3.3.2</maven.jxr.plugin.version>
-        <maven.javadoc.plugin.version>3.6.3</maven.javadoc.plugin.version>
+        <maven.jxr.plugin.version>3.6.0</maven.jxr.plugin.version>
+        <maven.javadoc.plugin.version>3.12.0</maven.javadoc.plugin.version>
         <maven.source.plugin.version>3.3.0</maven.source.plugin.version>
-        <maven.surefire.plugin.version>3.2.5</maven.surefire.plugin.version>
+        <maven.surefire.plugin.version>3.5.4</maven.surefire.plugin.version>
 
         <api.package>jakarta.ws.rs</api.package>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -105,22 +99,22 @@
         <spec.version>4.0</spec.version>
         <spec.version.revision /> <!-- e.g. (Rev a) -->
 
-        <annotation.api.version>3.0.0-M1</annotation.api.version>
-        <activation.api.version>2.1.3</activation.api.version>
-        <inject.api.version>2.0.0</inject.api.version>
-        <validation.api.version>3.0.0</validation.api.version>
-        <concurrent.api.version>2.0.0</concurrent.api.version>
-        <cdi.api.version>3.0.0</cdi.api.version>
-        <junit.version>5.10.2</junit.version>
+        <annotation.api.version>3.0.0</annotation.api.version>
+        <activation.api.version>2.2.0-M1</activation.api.version>
+        <inject.api.version>2.0.1</inject.api.version>
+        <validation.api.version>3.1.1</validation.api.version>
+        <concurrent.api.version>3.2.0-M1</concurrent.api.version>
+        <cdi.api.version>5.0.0.Alpha1</cdi.api.version>
+        <junit.version>6.0.0</junit.version>
         <org.glassfish.jaxb.version>4.0.3</org.glassfish.jaxb.version>
         <com.sun.istack.version>4.1.2</com.sun.istack.version>
-        <hamcrest.version>2.2</hamcrest.version>
-        <mockito.version>5.11.0</mockito.version>
+        <hamcrest.version>3.0</hamcrest.version>
+        <mockito.version>5.20.0</mockito.version>
 
         <!-- Documentation versions -->
-        <asciidoctorj.maven.plugin.version>3.0.0</asciidoctorj.maven.plugin.version>
-        <asciidoctorj.version>2.5.11</asciidoctorj.version>
-        <asciidoctorj.pdf.version>2.3.13</asciidoctorj.pdf.version>
+        <asciidoctorj.maven.plugin.version>3.2.0</asciidoctorj.maven.plugin.version>
+        <asciidoctorj.version>3.0.0</asciidoctorj.version>
+        <asciidoctorj.pdf.version>2.3.20</asciidoctorj.pdf.version>
     </properties>
 
     <modules>
@@ -243,7 +237,7 @@
                             <specversion>${spec.version}</specversion>
                             <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>
                             <_nodefaultversion>false</_nodefaultversion>
-                            <Require-Capability>osgi.ee;filter:="(&amp;(osgi.ee=JavaSE)(version=1.8))"</Require-Capability>
+                            <Require-Capability>osgi.ee;filter:="(&amp;(osgi.ee=JavaSE)(version=21))"</Require-Capability>
                         </instructions>
                     </configuration>
                     <executions>
