Update to JPMS, closing internal packages.

Signed-off-by: jansupol <jan.supol@oracle.com>
diff --git a/connectors/jdk-connector/src/main/java/module-info.java b/connectors/jdk-connector/src/main/java/module-info.java
index 199b09b..7147232 100644
--- a/connectors/jdk-connector/src/main/java/module-info.java
+++ b/connectors/jdk-connector/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -26,5 +26,11 @@
     requires org.glassfish.jersey.core.client;
 
     exports org.glassfish.jersey.jdk.connector;
-    exports org.glassfish.jersey.jdk.connector.internal;
+    exports org.glassfish.jersey.jdk.connector.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities;
+    exports org.glassfish.jersey.jdk.connector.internal.l10n;
+
+    opens org.glassfish.jersey.jdk.connector;
+    opens org.glassfish.jersey.jdk.connector.internal.l10n;
 }
\ No newline at end of file
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/AsynchronousBodyInputStream.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/AsynchronousBodyInputStream.java
index 083b076..027087c 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/AsynchronousBodyInputStream.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/AsynchronousBodyInputStream.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -23,6 +23,7 @@
 import java.util.concurrent.ExecutorService;
 
 import org.glassfish.jersey.internal.util.collection.ByteBufferInputStream;
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
 
 /**
  * TODO Some of the operations added for async. support (e.g.) can be also supported in sync. mode
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/BufferedBodyOutputStream.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/BufferedBodyOutputStream.java
index 2ee03fe..8030c1c 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/BufferedBodyOutputStream.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/BufferedBodyOutputStream.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ChunkedBodyOutputStream.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ChunkedBodyOutputStream.java
index 92b5a03..f40a1cb 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ChunkedBodyOutputStream.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ChunkedBodyOutputStream.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.Buffer;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ConnectorConfiguration.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ConnectorConfiguration.java
index 9b92517..0554277 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ConnectorConfiguration.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ConnectorConfiguration.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -33,6 +33,7 @@
 import org.glassfish.jersey.client.ClientProperties;
 import org.glassfish.jersey.client.innate.http.SSLParamConfigurator;
 import org.glassfish.jersey.jdk.connector.JdkConnectorProperties;
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
 
 /**
  * A container for connector configuration to make it easier to move around.
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/DestinationConnectionPool.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/DestinationConnectionPool.java
index 976f7b4..08c78f5 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/DestinationConnectionPool.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/DestinationConnectionPool.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.io.IOException;
 import java.net.CookieManager;
 import java.net.URI;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpConnection.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpConnection.java
index d9ea76e..772440d 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpConnection.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpConnection.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -32,6 +32,7 @@
 import javax.net.ssl.SSLContext;
 
 import org.glassfish.jersey.SslConfigurator;
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
 
 /**
  * @author Petr Janouch
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpParser.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpParser.java
index 6099e8e..a5814fc 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpParser.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpParser.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import jakarta.ws.rs.core.HttpHeaders;
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
 
 /**
  * @author Alexey Stashok
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequest.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequest.java
index cc8dfbe..7aa92fe 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequest.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/HttpRequest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.net.URI;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java
index d965cfd..de9dc5b 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.nio.charset.Charset;
 import java.util.Base64;
 
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java
index b47d508..31de2dd 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyDigestAuthenticator.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.io.IOException;
 import java.net.URI;
 import java.nio.charset.Charset;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyFilter.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyFilter.java
index 6ca75b0..9dbf409 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyFilter.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyFilter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/RedirectHandler.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/RedirectHandler.java
index 889632a..ea1ea4c 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/RedirectHandler.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/RedirectHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/SslFilter.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/SslFilter.java
index 979a9ce..e503101 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/SslFilter.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/SslFilter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -17,6 +17,7 @@
 package org.glassfish.jersey.jdk.connector.internal;
 
 import org.glassfish.jersey.client.innate.http.SSLParamConfigurator;
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
 
 import java.nio.ByteBuffer;
 import java.nio.Buffer;
@@ -40,7 +41,7 @@
 
     Method doHandshakeStep must be synchronized, because it might be entered both by writing and reading thread
     during re-handshake. Write, close and re-handshake cannot be done concurrently, because all those operations might
-    do SSLEngine#wrap. Read can be be done concurrently with any other operation, because even thought re-handshake
+    do SSLEngine#wrap. Read can be done concurrently with any other operation, because even thought re-handshake
     can do SSLEngine#unwrap, it won't do so if it was entered from write operation.
 
     Operations upstreamFilter#onRead cannot be done while holding a lock of this class. Doing so might lead to a deadlock. An
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ThreadPoolConfig.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ThreadPoolConfig.java
index 0b02290..dda4745 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ThreadPoolConfig.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ThreadPoolConfig.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.util.Queue;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransferEncodingParser.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransferEncodingParser.java
index 1a94ff7..630644f 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransferEncodingParser.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransferEncodingParser.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.nio.ByteBuffer;
 import java.nio.Buffer;
 
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransportFilter.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransportFilter.java
index fde8298..a5dba36 100644
--- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransportFilter.java
+++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/TransportFilter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015, 2019 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2025 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
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.jdk.connector.internal;
 
+import org.glassfish.jersey.jdk.connector.internal.l10n.LocalizationMessages;
+
 import java.io.IOException;
 import java.net.SocketAddress;
 import java.nio.ByteBuffer;
diff --git a/connectors/jdk-connector/src/main/resources/org/glassfish/jersey/jdk/connector/internal/localization.properties b/connectors/jdk-connector/src/main/resources/org/glassfish/jersey/jdk/connector/internal/l10n/localization.properties
similarity index 98%
rename from connectors/jdk-connector/src/main/resources/org/glassfish/jersey/jdk/connector/internal/localization.properties
rename to connectors/jdk-connector/src/main/resources/org/glassfish/jersey/jdk/connector/internal/l10n/localization.properties
index 0d78e71..e9c6deb 100644
--- a/connectors/jdk-connector/src/main/resources/org/glassfish/jersey/jdk/connector/internal/localization.properties
+++ b/connectors/jdk-connector/src/main/resources/org/glassfish/jersey/jdk/connector/internal/l10n/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2017, 2025 Oracle and/or its affiliates. All rights reserved.
 #
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/connectors/jnh-connector/pom.xml b/connectors/jnh-connector/pom.xml
index e4319f5..717c741 100644
--- a/connectors/jnh-connector/pom.xml
+++ b/connectors/jnh-connector/pom.xml
@@ -39,10 +39,15 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
-            <artifactId>jersey-test-framework-provider-bundle</artifactId>
+            <groupId>org.glassfish.jersey.containers</groupId>
+            <artifactId>jersey-container-grizzly2-http</artifactId>
             <version>${project.version}</version>
-            <type>pom</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.test-framework.providers</groupId>
+            <artifactId>jersey-test-framework-provider-grizzly2</artifactId>
+            <version>${project.version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/ext/metainf-services/src/main/java/module-info.txt b/connectors/jnh-connector/src/main/java/module-info.java
similarity index 69%
copy from ext/metainf-services/src/main/java/module-info.txt
copy to connectors/jnh-connector/src/main/java/module-info.java
index c78548c..3c099b6 100644
--- a/ext/metainf-services/src/main/java/module-info.txt
+++ b/connectors/jnh-connector/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,10 +14,15 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-module org.glassfish.jersey.ext.metainf.services {
-    requires jakarta.annotation;
+module org.glassfish.jersey.jnh.connector {
+    requires java.logging;
+    requires java.net.http;
+
     requires jakarta.ws.rs;
 
+    requires org.glassfish.jersey.core.client;
     requires org.glassfish.jersey.core.common;
-    exports org.glassfish.jersey.spidiscovery.internal;
+
+    exports org.glassfish.jersey.jnh.connector;
+    opens org.glassfish.jersey.jnh.connector;
 }
\ No newline at end of file
diff --git a/connectors/jnh-connector/src/test/java/module-info.java b/connectors/jnh-connector/src/test/java/module-info.java
new file mode 100644
index 0000000..f5731a7
--- /dev/null
+++ b/connectors/jnh-connector/src/test/java/module-info.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2025 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
+ */
+
+module org.glassfish.jersey.jnh.connector.test {
+    requires java.logging;
+    requires java.net.http;
+
+    requires jakarta.ws.rs;
+    requires jakarta.inject;
+    requires jakarta.xml.bind;
+    requires static jakarta.activation;
+
+    requires osgi.resource.locator;
+
+    requires org.assertj.core;
+    requires org.junit.jupiter.api;
+    requires org.junit.jupiter.engine;
+
+    requires awaitility;
+
+    requires org.glassfish.grizzly.http;
+    requires org.glassfish.grizzly.http.server;
+
+    requires org.glassfish.jersey.tests.framework.core;
+    requires org.glassfish.jersey.tests.framework.provider.grizzly;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+    requires org.glassfish.jersey.core.server;
+    requires org.glassfish.jersey.jnh.connector;
+
+    exports org.glassfish.jersey.jnh.connector.test;
+    opens org.glassfish.jersey.jnh.connector.test;
+}
\ No newline at end of file
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AbstractJavaConnectorTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AbstractJavaConnectorTest.java
similarity index 94%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AbstractJavaConnectorTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AbstractJavaConnectorTest.java
index 6d6e3c0..b5895ac 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AbstractJavaConnectorTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AbstractJavaConnectorTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.Consumes;
 import jakarta.ws.rs.DefaultValue;
@@ -30,6 +30,8 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnector;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AsyncTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AsyncTest.java
similarity index 93%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AsyncTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AsyncTest.java
index 2df4ad4..3c6bfa9 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AsyncTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AsyncTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.client.Entity;
 import jakarta.ws.rs.core.Response;
@@ -34,7 +34,7 @@
 public class AsyncTest extends AbstractJavaConnectorTest {
     /**
      * Checks, that 3 interleaved requests all complete and return their associated responses.
-     * Additionally checks, that all requests complete in 3 times the running time on the server.
+     * Additionally, checks, that all requests complete in 3 times the running time on the server.
      */
     @Test
     public void testAsyncRequestsWithoutTimeout() {
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AuthTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AuthTest.java
similarity index 96%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AuthTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AuthTest.java
index 677d4d0..28f75c8 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/AuthTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/AuthTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.inject.Singleton;
 import jakarta.ws.rs.DELETE;
@@ -30,6 +30,8 @@
 import jakarta.ws.rs.core.HttpHeaders;
 import jakarta.ws.rs.core.Response;
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpClientProperties;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/BodyPublisherTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/BodyPublisherTest.java
similarity index 94%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/BodyPublisherTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/BodyPublisherTest.java
index b57107c..f6cdaba 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/BodyPublisherTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/BodyPublisherTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.client.Entity;
 import jakarta.ws.rs.core.MediaType;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/CookieTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/CookieTest.java
similarity index 93%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/CookieTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/CookieTest.java
index 31eda93..1b6c005 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/CookieTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/CookieTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
@@ -30,6 +30,9 @@
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.client.JerseyClient;
 import org.glassfish.jersey.client.JerseyClientBuilder;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpClientProperties;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnector;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/EntityTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/EntityTest.java
similarity index 96%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/EntityTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/EntityTest.java
index f1af21c..1b207d8 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/EntityTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/EntityTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.POST;
@@ -26,6 +26,7 @@
 import jakarta.xml.bind.annotation.XmlRootElement;
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.jackson.JacksonFeature;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/ErrorTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/ErrorTest.java
similarity index 95%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/ErrorTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/ErrorTest.java
index 960f063..2bca761 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/ErrorTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/ErrorTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.ClientErrorException;
 import jakarta.ws.rs.POST;
@@ -24,6 +24,7 @@
 import jakarta.ws.rs.core.Application;
 import jakarta.ws.rs.core.Response;
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/FirstByteCachingStreamTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/FirstByteCachingStreamTest.java
similarity index 97%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/FirstByteCachingStreamTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/FirstByteCachingStreamTest.java
index d645018..4a82272 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/FirstByteCachingStreamTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/FirstByteCachingStreamTest.java
@@ -14,8 +14,9 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnector;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/FollowRedirectsTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/FollowRedirectsTest.java
similarity index 96%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/FollowRedirectsTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/FollowRedirectsTest.java
index f6432a3..c751155 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/FollowRedirectsTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/FollowRedirectsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
@@ -30,6 +30,7 @@
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.client.ClientProperties;
 import org.glassfish.jersey.client.ClientResponse;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/GZIPContentEncodingTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/GZIPContentEncodingTest.java
similarity index 94%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/GZIPContentEncodingTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/GZIPContentEncodingTest.java
index 8d94f25..f44eb25 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/GZIPContentEncodingTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/GZIPContentEncodingTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.POST;
 import jakarta.ws.rs.Path;
@@ -27,6 +27,7 @@
 import jakarta.ws.rs.core.Response;
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.client.ClientProperties;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.message.GZipEncoder;
 import org.glassfish.jersey.server.ResourceConfig;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HelloWorldTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HelloWorldTest.java
similarity index 96%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HelloWorldTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HelloWorldTest.java
index 5143ec7..f941a3d 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HelloWorldTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HelloWorldTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -29,6 +29,7 @@
 import jakarta.ws.rs.core.Response;
 
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/Http2PresenceTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/Http2PresenceTest.java
similarity index 91%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/Http2PresenceTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/Http2PresenceTest.java
index a2eaa3b..b8bd7c6 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/Http2PresenceTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/Http2PresenceTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.Path;
@@ -23,6 +23,8 @@
 import jakarta.ws.rs.core.HttpHeaders;
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.client.spi.ConnectorProvider;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpClientProperties;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HttpHeadersTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HttpHeadersTest.java
similarity index 94%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HttpHeadersTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HttpHeadersTest.java
index 550183c..b01a15b 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HttpHeadersTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HttpHeadersTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,9 +14,10 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HttpsTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HttpsTest.java
similarity index 94%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HttpsTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HttpsTest.java
index 4f6a035..bd97875 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/HttpsTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/HttpsTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import java.net.URI;
 import java.util.Optional;
@@ -24,6 +24,7 @@
 import javax.net.ssl.SSLParameters;
 
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/ManagedClientTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/ManagedClientTest.java
similarity index 97%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/ManagedClientTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/ManagedClientTest.java
index 8eca289..d6099ec 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/ManagedClientTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/ManagedClientTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,9 +14,10 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ClientBinding;
 import org.glassfish.jersey.server.ResourceConfig;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/MethodTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/MethodTest.java
similarity index 95%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/MethodTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/MethodTest.java
index a4837ee..06202c7 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/MethodTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/MethodTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,9 +14,10 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/NoEntityTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/NoEntityTest.java
similarity index 94%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/NoEntityTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/NoEntityTest.java
index 6635a61..9b316f1 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/NoEntityTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/NoEntityTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,10 +14,11 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.core.GenericType;
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/OptionsMethodTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/OptionsMethodTest.java
similarity index 91%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/OptionsMethodTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/OptionsMethodTest.java
index a333bd1..a79949b 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/OptionsMethodTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/OptionsMethodTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.core.Response;
 import org.junit.jupiter.api.Test;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/RedirectTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/RedirectTest.java
similarity index 93%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/RedirectTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/RedirectTest.java
index e1edc24..61fbe10 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/RedirectTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/RedirectTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import jakarta.ws.rs.core.Response;
 import org.glassfish.jersey.client.ClientProperties;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/RetrieveHttpClientFromConnectorProviderTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/RetrieveHttpClientFromConnectorProviderTest.java
similarity index 89%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/RetrieveHttpClientFromConnectorProviderTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/RetrieveHttpClientFromConnectorProviderTest.java
index 8592bd7..8a19fcc 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/RetrieveHttpClientFromConnectorProviderTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/RetrieveHttpClientFromConnectorProviderTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,8 +14,9 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.junit.jupiter.api.Test;
 
 import java.net.http.HttpClient;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/SslUtils.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/SslUtils.java
similarity index 97%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/SslUtils.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/SslUtils.java
index 469959a..0c40d45 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/SslUtils.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/SslUtils.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import javax.net.ssl.KeyManager;
 import javax.net.ssl.KeyManagerFactory;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/TimeoutTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/TimeoutTest.java
similarity index 95%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/TimeoutTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/TimeoutTest.java
index b32f122..1ba6d0a 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/TimeoutTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/TimeoutTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,10 +14,11 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import org.glassfish.jersey.client.ClientConfig;
 import org.glassfish.jersey.client.ClientProperties;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
@@ -36,7 +37,6 @@
 import jakarta.ws.rs.core.Response;
 import org.junit.jupiter.api.Test;
 
-import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
 import static org.junit.jupiter.api.Assertions.fail;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/TraceSupportTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/TraceSupportTest.java
similarity index 97%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/TraceSupportTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/TraceSupportTest.java
index b8a079a..78f752d 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/TraceSupportTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/TraceSupportTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,9 +14,10 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.glassfish.jersey.logging.LoggingFeature;
 import org.glassfish.jersey.process.Inflector;
 import org.glassfish.jersey.server.ContainerRequest;
diff --git a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/UnderlyingHttpClientAccessTest.java b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/UnderlyingHttpClientAccessTest.java
similarity index 92%
rename from connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/UnderlyingHttpClientAccessTest.java
rename to connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/UnderlyingHttpClientAccessTest.java
index 8bf9f46..bd92b3e 100644
--- a/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/UnderlyingHttpClientAccessTest.java
+++ b/connectors/jnh-connector/src/test/java/org/glassfish/jersey/jnh/connector/test/UnderlyingHttpClientAccessTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.jnh.connector;
+package org.glassfish.jersey.jnh.connector.test;
 
 import org.glassfish.jersey.client.ClientConfig;
 
@@ -23,6 +23,7 @@
 import jakarta.ws.rs.client.Client;
 import jakarta.ws.rs.client.ClientBuilder;
 import jakarta.ws.rs.client.WebTarget;
+import org.glassfish.jersey.jnh.connector.JavaNetHttpConnectorProvider;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertNotNull;
diff --git a/connectors/netty-connector/pom.xml b/connectors/netty-connector/pom.xml
index 64e7d35..3a3908b 100644
--- a/connectors/netty-connector/pom.xml
+++ b/connectors/netty-connector/pom.xml
@@ -51,6 +51,17 @@
         <dependency>
             <groupId>io.netty</groupId>
             <artifactId>netty-all</artifactId>
+            <exclusions>
+                <!-- package conflict -->
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty-codec-xml</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty-handler-ssl-ocsp</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
 
         <dependency>
diff --git a/connectors/netty-connector/src/main/java/module-info.java b/connectors/netty-connector/src/main/java/module-info.java
index 2fc59fd..48b0a1f 100644
--- a/connectors/netty-connector/src/main/java/module-info.java
+++ b/connectors/netty-connector/src/main/java/module-info.java
@@ -36,7 +36,7 @@
     requires org.glassfish.jersey.core.server;
 
     exports org.glassfish.jersey.netty.connector;
-    exports org.glassfish.jersey.netty.connector.internal;
+    exports org.glassfish.jersey.netty.connector.internal to org.glassfish.jersey.container.netty.http;
 
     opens org.glassfish.jersey.netty.connector;
 }
\ No newline at end of file
diff --git a/containers/glassfish/jersey-gf-ejb/src/main/java/module-info.java b/containers/glassfish/jersey-gf-ejb/src/main/java/module-info.java
index 36588dd..ff08ff0 100644
--- a/containers/glassfish/jersey-gf-ejb/src/main/java/module-info.java
+++ b/containers/glassfish/jersey-gf-ejb/src/main/java/module-info.java
@@ -37,7 +37,9 @@
     requires org.glassfish.jersey.ext.cdi1x;
     requires org.glassfish.jersey.inject.hk2;
 
-
     exports org.glassfish.jersey.gf.ejb.internal;
     opens org.glassfish.jersey.gf.ejb.internal;
+
+    provides org.glassfish.jersey.server.spi.ComponentProvider with
+            org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider;
 }
\ No newline at end of file
diff --git a/containers/grizzly2-http/src/main/java/module-info.java b/containers/grizzly2-http/src/main/java/module-info.java
index 26ba080..b9b9377 100644
--- a/containers/grizzly2-http/src/main/java/module-info.java
+++ b/containers/grizzly2-http/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -30,6 +30,14 @@
     requires org.glassfish.jersey.core.server;
 
     exports org.glassfish.jersey.grizzly2.httpserver;
+    exports org.glassfish.jersey.grizzly2.httpserver.internal; // localization
     opens org.glassfish.jersey.grizzly2.httpserver;
+    opens org.glassfish.jersey.grizzly2.httpserver.internal;
 
+    provides org.glassfish.jersey.innate.BootstrapPreinitialization with
+            org.glassfish.jersey.grizzly2.httpserver.GrizzlyBootstrapPreinitialization;
+    provides org.glassfish.jersey.server.spi.ContainerProvider with
+            org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainerProvider;
+    provides org.glassfish.jersey.server.spi.WebServerProvider with
+            org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerProvider;
 }
\ No newline at end of file
diff --git a/containers/grizzly2-servlet/src/main/java/module-info.java b/containers/grizzly2-servlet/src/main/java/module-info.java
index 84600c5..d6a3668 100644
--- a/containers/grizzly2-servlet/src/main/java/module-info.java
+++ b/containers/grizzly2-servlet/src/main/java/module-info.java
@@ -27,4 +27,5 @@
     requires org.glassfish.jersey.container.grizzly2.http;
 
     exports org.glassfish.jersey.grizzly2.servlet;
+    opens org.glassfish.jersey.grizzly2.servlet;
 }
\ No newline at end of file
diff --git a/containers/jdk-http/src/main/java/module-info.java b/containers/jdk-http/src/main/java/module-info.java
index cccbf13..812b63a 100644
--- a/containers/jdk-http/src/main/java/module-info.java
+++ b/containers/jdk-http/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -26,6 +26,12 @@
     requires org.glassfish.jersey.core.server;
 
     exports org.glassfish.jersey.jdkhttp;
+    exports org.glassfish.jersey.jdkhttp.internal; // localization
     opens org.glassfish.jersey.jdkhttp;
     opens org.glassfish.jersey.jdkhttp.internal;
+
+    provides org.glassfish.jersey.server.spi.ContainerProvider with
+            org.glassfish.jersey.jdkhttp.JdkHttpHandlerContainerProvider;
+    provides org.glassfish.jersey.server.spi.WebServerProvider with
+            org.glassfish.jersey.jdkhttp.JdkHttpServerProvider;
 }
\ No newline at end of file
diff --git a/containers/jersey-servlet-core/src/main/java/module-info.java b/containers/jersey-servlet-core/src/main/java/module-info.java
deleted file mode 100644
index 37081a7..0000000
--- a/containers/jersey-servlet-core/src/main/java/module-info.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2022, 2023 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
- */
-
-module org.glassfish.jersey.container.servlet.core {
-    requires java.logging;
-    requires java.naming;
-
-    requires jakarta.ws.rs;
-    requires jakarta.inject;
-    requires static jakarta.persistence;
-    requires static jakarta.servlet;
-
-    requires osgi.resource.locator;
-
-    requires org.glassfish.jersey.core.common;
-    requires org.glassfish.jersey.core.server;
-
-    exports org.glassfish.jersey.servlet;
-    exports org.glassfish.jersey.servlet.internal;
-    exports org.glassfish.jersey.servlet.internal.spi;
-    exports org.glassfish.jersey.servlet.spi;
-
-    opens org.glassfish.jersey.servlet;
-
-    uses org.glassfish.jersey.servlet.spi.AsyncContextDelegate;
-    uses org.glassfish.jersey.servlet.spi.AsyncContextDelegateProvider;
-    uses org.glassfish.jersey.servlet.spi.FilterUrlMappingsProvider;
-
-    uses org.glassfish.jersey.servlet.internal.spi.ExtendedServletContainerProvider;
-    uses org.glassfish.jersey.servlet.internal.spi.RequestContextProvider;
-    uses org.glassfish.jersey.servlet.internal.spi.RequestScopedInitializerProvider;
-    uses org.glassfish.jersey.servlet.internal.spi.ServletContainerProvider;
-}
\ No newline at end of file
diff --git a/containers/jersey-servlet/src/main/java/module-info.java b/containers/jersey-servlet/src/main/java/module-info.java
index 0410708..61a23c7 100644
--- a/containers/jersey-servlet/src/main/java/module-info.java
+++ b/containers/jersey-servlet/src/main/java/module-info.java
@@ -28,9 +28,20 @@
 
     exports org.glassfish.jersey.servlet.async;
     exports org.glassfish.jersey.servlet.init;
-//    exports org.glassfish.jersey.servlet.internal;
+    exports org.glassfish.jersey.servlet.internal.l10n;
+    exports org.glassfish.jersey.servlet.internal.spi; //
     exports org.glassfish.jersey.servlet.spi;
     exports org.glassfish.jersey.servlet;
 
     opens org.glassfish.jersey.servlet;
+    opens org.glassfish.jersey.servlet.internal.l10n;
+
+    uses org.glassfish.jersey.servlet.spi.AsyncContextDelegate;
+    uses org.glassfish.jersey.servlet.spi.AsyncContextDelegateProvider;
+    uses org.glassfish.jersey.servlet.spi.FilterUrlMappingsProvider;
+
+    provides org.glassfish.jersey.servlet.spi.AsyncContextDelegateProvider with
+            org.glassfish.jersey.servlet.async.AsyncContextDelegateProviderImpl;
+    provides org.glassfish.jersey.servlet.spi.FilterUrlMappingsProvider with
+            org.glassfish.jersey.servlet.init.FilterUrlMappingsProviderImpl;
 }
\ No newline at end of file
diff --git a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
index 718f34b..092103a 100644
--- a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
+++ b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/ServletContainer.java
@@ -40,7 +40,7 @@
 import org.glassfish.jersey.server.internal.ContainerUtils;
 import org.glassfish.jersey.server.spi.Container;
 import org.glassfish.jersey.server.spi.ContainerLifecycleListener;
-import org.glassfish.jersey.servlet.internal.LocalizationMessages;
+import org.glassfish.jersey.servlet.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.servlet.internal.ResponseWriter;
 import org.glassfish.jersey.servlet.spi.FilterUrlMappingsProvider;
 import org.glassfish.jersey.uri.UriComponent;
diff --git a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/WebComponent.java b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/WebComponent.java
index a0dd29b..f6b284e 100644
--- a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/WebComponent.java
+++ b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/WebComponent.java
@@ -54,7 +54,7 @@
 import org.glassfish.jersey.server.ServerProperties;
 import org.glassfish.jersey.server.internal.InternalServerProperties;
 import org.glassfish.jersey.server.spi.RequestScopedInitializer;
-import org.glassfish.jersey.servlet.internal.LocalizationMessages;
+import org.glassfish.jersey.servlet.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.servlet.internal.PersistenceUnitBinder;
 import org.glassfish.jersey.servlet.internal.ResponseWriter;
 import org.glassfish.jersey.servlet.internal.ServletContainerProviderFactory;
diff --git a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/async/AsyncContextDelegateProviderImpl.java b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/async/AsyncContextDelegateProviderImpl.java
index ade7c29..d077f54 100644
--- a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/async/AsyncContextDelegateProviderImpl.java
+++ b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/async/AsyncContextDelegateProviderImpl.java
@@ -28,7 +28,7 @@
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 
-import org.glassfish.jersey.servlet.internal.LocalizationMessages;
+import org.glassfish.jersey.servlet.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.servlet.spi.AsyncContextDelegate;
 import org.glassfish.jersey.servlet.spi.AsyncContextDelegateProvider;
 
diff --git a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java
index bf99736..16ee30d 100644
--- a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java
+++ b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/init/JerseyServletContainerInitializer.java
@@ -42,7 +42,7 @@
 import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.servlet.ServletContainer;
 import org.glassfish.jersey.servlet.ServletProperties;
-import org.glassfish.jersey.servlet.internal.LocalizationMessages;
+import org.glassfish.jersey.servlet.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.servlet.internal.ServletContainerProviderFactory;
 import org.glassfish.jersey.servlet.internal.Utils;
 import org.glassfish.jersey.servlet.internal.spi.ServletContainerProvider;
diff --git a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java
index 1c85564..43833f3 100644
--- a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java
+++ b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/PersistenceUnitBinder.java
@@ -26,6 +26,7 @@
 import org.glassfish.jersey.internal.inject.Injectee;
 import org.glassfish.jersey.internal.inject.InjectionResolver;
 import org.glassfish.jersey.server.ContainerException;
+import org.glassfish.jersey.servlet.internal.l10n.LocalizationMessages;
 
 import java.lang.reflect.Proxy;
 import java.util.Enumeration;
diff --git a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java
index c94e508..ec7867d 100644
--- a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java
+++ b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java
@@ -37,6 +37,7 @@
 import org.glassfish.jersey.server.ContainerResponse;
 import org.glassfish.jersey.server.internal.JerseyRequestTimeoutHandler;
 import org.glassfish.jersey.server.spi.ContainerResponseWriter;
+import org.glassfish.jersey.servlet.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.servlet.spi.AsyncContextDelegate;
 
 /**
diff --git a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ThreadLocalInvoker.java b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ThreadLocalInvoker.java
index 909018f..d1dc964 100644
--- a/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ThreadLocalInvoker.java
+++ b/containers/jersey-servlet/src/main/java/org/glassfish/jersey/servlet/internal/ThreadLocalInvoker.java
@@ -16,6 +16,8 @@
 
 package org.glassfish.jersey.servlet.internal;
 
+import org.glassfish.jersey.servlet.internal.l10n.LocalizationMessages;
+
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
diff --git a/containers/jersey-servlet/src/main/resources/org/glassfish/jersey/servlet/internal/localization.properties b/containers/jersey-servlet/src/main/resources/org/glassfish/jersey/servlet/internal/l10n/localization.properties
similarity index 100%
rename from containers/jersey-servlet/src/main/resources/org/glassfish/jersey/servlet/internal/localization.properties
rename to containers/jersey-servlet/src/main/resources/org/glassfish/jersey/servlet/internal/l10n/localization.properties
diff --git a/containers/jetty-http/src/main/java/module-info.java b/containers/jetty-http/src/main/java/module-info.java
index 0633819..97fbda9 100644
--- a/containers/jetty-http/src/main/java/module-info.java
+++ b/containers/jetty-http/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -29,5 +29,12 @@
     requires org.glassfish.jersey.core.server;
 
     exports org.glassfish.jersey.jetty;
+    exports org.glassfish.jersey.jetty.internal; // localization
     opens org.glassfish.jersey.jetty;
+    opens org.glassfish.jersey.jetty.internal;
+
+    provides org.glassfish.jersey.server.spi.ContainerProvider with
+            org.glassfish.jersey.jetty.JettyHttpContainerProvider;
+    provides org.glassfish.jersey.server.spi.WebServerProvider with
+            org.glassfish.jersey.jetty.JettyHttpServerProvider;
 }
\ No newline at end of file
diff --git a/containers/jetty-http2/src/main/java/module-info.java b/containers/jetty-http2/src/main/java/module-info.java
index 1425822..1d6ddb6 100644
--- a/containers/jetty-http2/src/main/java/module-info.java
+++ b/containers/jetty-http2/src/main/java/module-info.java
@@ -27,4 +27,7 @@
 
     exports org.glassfish.jersey.jetty.http2;
     opens org.glassfish.jersey.jetty.http2;
+
+    provides org.glassfish.jersey.server.spi.ContainerProvider with
+            org.glassfish.jersey.jetty.http2.JettyHttp2ContainerProvider;
 }
\ No newline at end of file
diff --git a/containers/netty-http/src/main/java/module-info.java b/containers/netty-http/src/main/java/module-info.java
index 1206d4e..b8a6806 100644
--- a/containers/netty-http/src/main/java/module-info.java
+++ b/containers/netty-http/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-module org.glassfish.jersey.container.netty.servlet {
+module org.glassfish.jersey.container.netty.http {
     requires java.logging;
     requires jakarta.ws.rs;
     requires io.netty.all;
@@ -27,4 +27,9 @@
 
     exports org.glassfish.jersey.netty.httpserver;
     opens org.glassfish.jersey.netty.httpserver;
+
+    provides org.glassfish.jersey.server.spi.ContainerProvider with
+            org.glassfish.jersey.netty.httpserver.NettyHttpContainerProvider;
+    provides org.glassfish.jersey.server.spi.WebServerProvider with
+            org.glassfish.jersey.netty.httpserver.NettyHttpServerProvider;
 }
\ No newline at end of file
diff --git a/core-client/src/main/java/module-info.java b/core-client/src/main/java/module-info.java
index 7b945a0..1174c16 100644
--- a/core-client/src/main/java/module-info.java
+++ b/core-client/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -32,20 +32,19 @@
     exports org.glassfish.jersey.client.internal;
 
     exports org.glassfish.jersey.client.innate to
-            org.glassfish.jersey.apache.connector,
-            org.glassfish.jersey.apache5.connector,
-            org.glassfish.jersey.netty.connector,
-            org.glassfish.jersey.grizzly.connector,
-            org.glassfish.jersey.jetty11.connector,
-            org.glassfish.jersey.jetty.connector;
-
-    exports org.glassfish.jersey.client.innate.http to
-            org.glassfish.jersey.apache.connector,
             org.glassfish.jersey.apache5.connector,
             org.glassfish.jersey.netty.connector,
             org.glassfish.jersey.grizzly.connector,
             org.glassfish.jersey.jetty.connector,
-            org.glassfish.jersey.jdk.connector;
+            org.glassfish.jersey.jnh.connector;
+
+    exports org.glassfish.jersey.client.innate.http to
+            org.glassfish.jersey.apache5.connector,
+            org.glassfish.jersey.netty.connector,
+            org.glassfish.jersey.grizzly.connector,
+            org.glassfish.jersey.jetty.connector,
+            org.glassfish.jersey.jdk.connector,
+            org.glassfish.jersey.jnh.connector;
 
     exports org.glassfish.jersey.client.innate.inject to
             org.glassfish.jersey.incubator.injectless.client;
@@ -64,6 +63,8 @@
     uses org.glassfish.jersey.client.spi.PostInvocationInterceptor;
     uses org.glassfish.jersey.client.spi.PreInvocationInterceptor;
 
-    provides jakarta.ws.rs.client.ClientBuilder
-            with org.glassfish.jersey.client.JerseyClientBuilder;
+    provides jakarta.ws.rs.client.ClientBuilder with
+            org.glassfish.jersey.client.JerseyClientBuilder;
+    provides org.glassfish.jersey.innate.BootstrapPreinitialization with
+            org.glassfish.jersey.client.ClientBootstrapPreinitialization;
 }
\ No newline at end of file
diff --git a/core-common/src/main/java/module-info.java b/core-common/src/main/java/module-info.java
index 2962b08..96d99e1 100644
--- a/core-common/src/main/java/module-info.java
+++ b/core-common/src/main/java/module-info.java
@@ -27,38 +27,42 @@
     requires static org.osgi.core;
     requires static osgi.resource.locator;
 
-    // Exports rather all, which corresponds to previous state without module-info
     exports org.glassfish.jersey;
     exports org.glassfish.jersey.http;
     exports org.glassfish.jersey.internal;
-    exports org.glassfish.jersey.internal.config;
+    exports org.glassfish.jersey.internal.config to
+            org.glassfish.jersey.core.client,
+            org.glassfish.jersey.core.server,
+            org.glassfish.jersey.ext.mp.config;
     exports org.glassfish.jersey.internal.guava;
     exports org.glassfish.jersey.internal.inject;
     exports org.glassfish.jersey.internal.l10n;
     exports org.glassfish.jersey.internal.sonar;
     exports org.glassfish.jersey.internal.spi;
-    exports org.glassfish.jersey.internal.routing;
+    exports org.glassfish.jersey.internal.routing; //
     exports org.glassfish.jersey.internal.util;
     exports org.glassfish.jersey.internal.util.collection;
     exports org.glassfish.jersey.logging;
     exports org.glassfish.jersey.message;
-    exports org.glassfish.jersey.message.internal;
+    exports org.glassfish.jersey.message.internal; // Providers
     exports org.glassfish.jersey.model;
     exports org.glassfish.jersey.model.internal;
     exports org.glassfish.jersey.model.internal.spi;
     exports org.glassfish.jersey.process;
-    exports org.glassfish.jersey.process.internal;
+    exports org.glassfish.jersey.process.internal; // @RequestScoped
     exports org.glassfish.jersey.spi;
     exports org.glassfish.jersey.uri;
-    exports org.glassfish.jersey.uri.internal;
+    exports org.glassfish.jersey.uri.internal; // JerseyUriBuilder
 
 
-    exports org.glassfish.jersey.innate to org.glassfish.jersey.core.client,org.glassfish.jersey.core.server,
+    exports org.glassfish.jersey.innate to org.glassfish.jersey.core.client,
+                                           org.glassfish.jersey.core.server,
                                            org.glassfish.jersey.container.grizzly2.http,
                                            org.glassfish.jersey.container.servlet,
                                            org.glassfish.jersey.container.jetty.http,
                                            org.glassfish.jersey.netty.connector,
                                            org.glassfish.jersey.ext.mp.rest.client;
+
     exports org.glassfish.jersey.innate.inject to org.glassfish.jersey.inject.hk2,
                                                   org.glassfish.jersey.inject.cdi2.se,
                                                   org.glassfish.jersey.core.client,
@@ -74,6 +78,7 @@
                                                   org.glassfish.jersey.ext.cdi1x,
                                                   org.glassfish.jersey.ext.cdi1x.transaction,
                                                   org.glassfish.jersey.ext.entity.filtering,
+                                                  org.glassfish.jersey.ext.metainf.services,
                                                   org.glassfish.jersey.ext.mvc,
                                                   org.glassfish.jersey.gf.ejb,
                                                   org.glassfish.jersey.security.oauth1.signature;
@@ -89,8 +94,7 @@
     exports org.glassfish.jersey.innate.io to org.glassfish.jersey.core.server,
                                               org.glassfish.jersey.core.client,
                                               org.glassfish.jersey.container.servlet,
-                                              org.glassfish.jersey.apache5.connector,
-                                              org.glassfish.jersey.apache.connector;
+                                              org.glassfish.jersey.apache5.connector;
     exports org.glassfish.jersey.innate.spi to org.glassfish.jersey.core.client,
                                                org.glassfish.jersey.core.server,
                                                org.glassfish.jersey.media.multipart;
@@ -107,6 +111,7 @@
     uses jakarta.ws.rs.container.DynamicFeature;
     uses jakarta.ws.rs.ext.RuntimeDelegate;
 
+    uses org.glassfish.jersey.innate.BootstrapPreinitialization;
     uses org.glassfish.jersey.innate.spi.EntityPartBuilderProvider;
     uses org.glassfish.jersey.internal.ServiceFinder;
     uses org.glassfish.jersey.internal.inject.InjectionManagerFactory;
diff --git a/core-server/src/main/java/module-info.java b/core-server/src/main/java/module-info.java
index ea3159f..187c595 100644
--- a/core-server/src/main/java/module-info.java
+++ b/core-server/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -34,32 +34,38 @@
     requires org.glassfish.jersey.core.common;
     requires org.glassfish.jersey.core.client;
 
-    // Exports rather all, which corresponds to previous state without module-info
     exports org.glassfish.jersey.server;
     exports org.glassfish.jersey.server.spi;
     exports org.glassfish.jersey.server.spi.internal;
     exports org.glassfish.jersey.server.model;
-    exports org.glassfish.jersey.server.model.internal;
+    exports org.glassfish.jersey.server.model.internal to org.glassfish.jersey.ext.mvc, org.glassfish.jersey.media.sse;
     exports org.glassfish.jersey.server.wadl;
     exports org.glassfish.jersey.server.wadl.config;
     exports org.glassfish.jersey.server.wadl.processor;
+    exports org.glassfish.jersey.server.wadl.internal;
     exports org.glassfish.jersey.server.wadl.internal.generators;
     exports org.glassfish.jersey.server.wadl.internal.generators.resourcedoc;
     exports org.glassfish.jersey.server.wadl.internal.generators.resourcedoc.model;
     exports org.glassfish.jersey.server.filter;
-    exports org.glassfish.jersey.server.filter.internal;
+    exports org.glassfish.jersey.server.filter.internal to org.glassfish.hk2.locator, org.glassfish.hk2.utilities;
+
     exports org.glassfish.jersey.server.monitoring;
-    exports org.glassfish.jersey.server.wadl.internal;
     exports org.glassfish.jersey.server.internal;
-    exports org.glassfish.jersey.server.internal.inject;
-    exports org.glassfish.jersey.server.internal.monitoring;
-    exports org.glassfish.jersey.server.internal.monitoring.jmx;
-    exports org.glassfish.jersey.server.internal.process;
-    exports org.glassfish.jersey.server.internal.routing;
-    exports org.glassfish.jersey.server.internal.scanning;
+
+    exports org.glassfish.jersey.server.internal.inject to
+            org.glassfish.hk2.locator,
+            org.glassfish.jersey.core.common,
+            org.glassfish.jersey.media.sse,
+            org.glassfish.jersey.ext.bean.validation,
+            org.glassfish.jersey.media.multipart,
+            org.glassfish.jersey.ext.mvc;
+    exports org.glassfish.jersey.server.internal.monitoring; // MonitoringFeature
+    exports org.glassfish.jersey.server.internal.process to org.glassfish.hk2.locator;
+    exports org.glassfish.jersey.server.internal.routing to org.glassfish.hk2.locator;
+    exports org.glassfish.jersey.server.internal.scanning to org.glassfish.jersey.container.servlet;
     exports org.glassfish.jersey.server.internal.sonar;
 
-    exports com.sun.research.ws.wadl; // to org.glassfish.jersey.core.server.test;
+    exports com.sun.research.ws.wadl;
     exports org.glassfish.jersey.server.internal.monitoring.core;
 
     uses org.glassfish.jersey.server.spi.ComponentProvider;
@@ -70,13 +76,12 @@
 
     opens org.glassfish.jersey.server;
     opens org.glassfish.jersey.server.filter;
-    opens org.glassfish.jersey.server.filter.internal;
-    opens org.glassfish.jersey.server.internal;
+    opens org.glassfish.jersey.server.internal to org.glassfish.hk2.utilities;
     opens org.glassfish.jersey.server.internal.inject;
-    opens org.glassfish.jersey.server.internal.monitoring;
-    opens org.glassfish.jersey.server.internal.monitoring.jmx;
-    opens org.glassfish.jersey.server.internal.process;
-    opens org.glassfish.jersey.server.internal.routing;
+    opens org.glassfish.jersey.server.internal.monitoring to org.glassfish.hk2.utilities;
+    opens org.glassfish.jersey.server.internal.monitoring.jmx to org.glassfish.hk2.utilities;
+    opens org.glassfish.jersey.server.internal.process to org.glassfish.hk2.locator, org.glassfish.hk2.utilities;
+    opens org.glassfish.jersey.server.internal.routing to org.glassfish.hk2.utilities;
     opens org.glassfish.jersey.server.model;
     opens org.glassfish.jersey.server.wadl.processor;
 
@@ -89,4 +94,6 @@
                     org.glassfish.jersey.server.internal.monitoring.MonitoringAutodiscoverable;
     provides org.glassfish.jersey.model.internal.spi.ParameterServiceProvider
             with org.glassfish.jersey.server.model.Parameter.ServerParameterService;
+    provides org.glassfish.jersey.innate.BootstrapPreinitialization with
+            org.glassfish.jersey.server.ServerBootstrapPreinitialization;
 }
\ No newline at end of file
diff --git a/ext/bean-validation/src/main/java/module-info.java b/ext/bean-validation/src/main/java/module-info.java
index a0d312e..017bd1d 100644
--- a/ext/bean-validation/src/main/java/module-info.java
+++ b/ext/bean-validation/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -31,9 +31,24 @@
     requires static jakarta.cdi;
 
     exports org.glassfish.jersey.server.validation;
-    exports org.glassfish.jersey.server.validation.internal;
-    exports org.glassfish.jersey.server.validation.internal.hibernate;
+    exports org.glassfish.jersey.server.validation.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities,
+            org.glassfish.jersey.ext.mvc.bean.validation;
+    exports org.glassfish.jersey.server.validation.internal.l10n;
+    exports org.glassfish.jersey.server.validation.internal.hibernate to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities;
     opens org.glassfish.jersey.server.validation;
-    opens org.glassfish.jersey.server.validation.internal;
-    opens org.glassfish.jersey.server.validation.internal.hibernate;
+    opens org.glassfish.jersey.server.validation.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities,
+            org.glassfish.jersey.ext.mvc.bean.validation;
+    opens org.glassfish.jersey.server.validation.internal.hibernate to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities;
+    opens org.glassfish.jersey.server.validation.internal.l10n;
+
+    provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable with
+            org.glassfish.jersey.server.validation.internal.ValidationAutoDiscoverable;
 }
\ No newline at end of file
diff --git a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidateOnExecutionHandler.java b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidateOnExecutionHandler.java
index be62308..62c3575 100644
--- a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidateOnExecutionHandler.java
+++ b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidateOnExecutionHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025 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
@@ -40,6 +40,7 @@
 import org.glassfish.jersey.internal.guava.Multimap;
 import org.glassfish.jersey.internal.guava.Multimaps;
 import org.glassfish.jersey.internal.util.ReflectionHelper;
+import org.glassfish.jersey.server.validation.internal.l10n.LocalizationMessages;
 
 /**
  * Handler providing methods to determine whether an executable should be validated during the validation process based on the
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 510860b..a8ed39d 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
@@ -57,6 +57,7 @@
 import org.glassfish.jersey.server.internal.inject.ConfiguredValidator;
 import org.glassfish.jersey.server.spi.ValidationInterceptor;
 import org.glassfish.jersey.server.validation.ValidationConfig;
+import org.glassfish.jersey.server.validation.internal.l10n.LocalizationMessages;
 
 /**
  * Bean Validation provider injection binder.
diff --git a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationExceptionMapper.java b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationExceptionMapper.java
index 3e7c03c..9380cde 100644
--- a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationExceptionMapper.java
+++ b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/ValidationExceptionMapper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -36,6 +36,7 @@
 
 import org.glassfish.jersey.server.ServerProperties;
 import org.glassfish.jersey.server.validation.ValidationErrorData;
+import org.glassfish.jersey.server.validation.internal.l10n.LocalizationMessages;
 
 /**
  * {@link ExceptionMapper} for {@link ValidationException}.
diff --git a/ext/bean-validation/src/main/resources/org/glassfish/jersey/server/validation/internal/localization.properties b/ext/bean-validation/src/main/resources/org/glassfish/jersey/server/validation/internal/l10n/localization.properties
similarity index 93%
rename from ext/bean-validation/src/main/resources/org/glassfish/jersey/server/validation/internal/localization.properties
rename to ext/bean-validation/src/main/resources/org/glassfish/jersey/server/validation/internal/l10n/localization.properties
index 97018fa..ba2d30e 100644
--- a/ext/bean-validation/src/main/resources/org/glassfish/jersey/server/validation/internal/localization.properties
+++ b/ext/bean-validation/src/main/resources/org/glassfish/jersey/server/validation/internal/l10n/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2025 Oracle and/or its affiliates. All rights reserved.
 #
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/ext/cdi/jersey-cdi-rs-inject/src/main/java/module-info.java b/ext/cdi/jersey-cdi-rs-inject/src/main/java/module-info.java
index c6d96b4..95c786f 100644
--- a/ext/cdi/jersey-cdi-rs-inject/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi-rs-inject/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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,9 @@
     requires org.glassfish.jersey.inject.hk2;
     requires org.glassfish.jersey.ext.cdi1x;
 
-    opens org.glassfish.jersey.ext.cdi1x.inject.internal;
+    opens org.glassfish.jersey.ext.cdi1x.inject.internal; // @JerseyContext
     exports org.glassfish.jersey.ext.cdi1x.inject.internal;
+
+    provides jakarta.enterprise.inject.spi.Extension with
+            org.glassfish.jersey.ext.cdi1x.inject.internal.InjectExtension;
 }
\ No newline at end of file
diff --git a/ext/cdi/jersey-cdi-rs-inject/src/main/java/org/glassfish/jersey/ext/cdi1x/inject/internal/InjectExtension.java b/ext/cdi/jersey-cdi-rs-inject/src/main/java/org/glassfish/jersey/ext/cdi1x/inject/internal/InjectExtension.java
index 22fef89..3d9eb63 100644
--- a/ext/cdi/jersey-cdi-rs-inject/src/main/java/org/glassfish/jersey/ext/cdi1x/inject/internal/InjectExtension.java
+++ b/ext/cdi/jersey-cdi-rs-inject/src/main/java/org/glassfish/jersey/ext/cdi1x/inject/internal/InjectExtension.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025 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
@@ -71,7 +71,7 @@
  * </p>
  */
 @SuppressWarnings("unused")
-class InjectExtension implements Extension {
+public class InjectExtension implements Extension {
     private static final Class<?> WEB_CONFIG_CLASS =
             AccessController.doPrivileged(ReflectionHelper.classForNamePA("org.glassfish.jersey.servlet.WebConfig"));
     private AnnotatedType<ServletReferenceProducer> interceptorAnnotatedType;
diff --git a/ext/cdi/jersey-cdi1x-ban-custom-hk2-binding/src/main/java/module-info.java b/ext/cdi/jersey-cdi1x-ban-custom-hk2-binding/src/main/java/module-info.java
index 8d64a91..24a882f 100644
--- a/ext/cdi/jersey-cdi1x-ban-custom-hk2-binding/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi1x-ban-custom-hk2-binding/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -21,4 +21,8 @@
     requires org.glassfish.jersey.inject.hk2;
 
     exports org.glassfish.jersey.ext.cdi1x.hk2ban;
+    opens org.glassfish.jersey.ext.cdi1x.hk2ban;
+
+    provides org.glassfish.jersey.ext.cdi1x.spi.Hk2CustomBoundTypesProvider with
+            org.glassfish.jersey.ext.cdi1x.hk2ban.EmptyHk2CustomInjectionTypeProvider;
 }
\ No newline at end of file
diff --git a/ext/cdi/jersey-cdi1x-servlet/src/main/java/module-info.java b/ext/cdi/jersey-cdi1x-servlet/src/main/java/module-info.java
index 4a78540..04040bf 100644
--- a/ext/cdi/jersey-cdi1x-servlet/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi1x-servlet/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -23,5 +23,13 @@
 
     requires org.glassfish.jersey.ext.cdi1x;
 
-    exports org.glassfish.jersey.ext.cdi1x.servlet.internal;
+    exports org.glassfish.jersey.ext.cdi1x.servlet.internal to weld.core.impl;
+    opens org.glassfish.jersey.ext.cdi1x.servlet.internal to weld.core.impl;
+
+    provides jakarta.enterprise.inject.spi.Extension with
+            org.glassfish.jersey.ext.cdi1x.servlet.internal.CdiExternalRequestScopeExtension;
+    provides org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionManagerStore with
+            org.glassfish.jersey.ext.cdi1x.servlet.internal.ServletInjectionManagerStore;
+    provides org.glassfish.jersey.server.spi.ExternalRequestScope with
+            org.glassfish.jersey.ext.cdi1x.servlet.internal.CdiExternalRequestScope;
 }
\ No newline at end of file
diff --git a/ext/cdi/jersey-cdi1x-transaction/pom.xml b/ext/cdi/jersey-cdi1x-transaction/pom.xml
index 82998f0..269f023 100644
--- a/ext/cdi/jersey-cdi1x-transaction/pom.xml
+++ b/ext/cdi/jersey-cdi1x-transaction/pom.xml
@@ -33,14 +33,6 @@
     <description>Jersey CDI 1.x Transactional Support</description>
 
     <dependencies>
-
-        <dependency>
-            <groupId>jakarta.platform</groupId>
-            <artifactId>jakarta.jakartaee-api</artifactId>
-            <version>10.0.0</version>
-            <scope>provided</scope>
-        </dependency>
-
         <dependency>
             <groupId>org.glassfish.jersey.ext.cdi</groupId>
             <artifactId>jersey-cdi1x</artifactId>
diff --git a/ext/cdi/jersey-cdi1x-transaction/src/main/java/module-info.java b/ext/cdi/jersey-cdi1x-transaction/src/main/java/module-info.java
index 251515b..8351e0b 100644
--- a/ext/cdi/jersey-cdi1x-transaction/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi1x-transaction/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -26,5 +26,11 @@
     requires org.glassfish.jersey.inject.hk2;
     requires org.glassfish.jersey.ext.cdi1x;
 
-    exports org.glassfish.jersey.ext.cdi1x.transaction.internal;
+    exports org.glassfish.jersey.ext.cdi1x.transaction.internal to weld.core.impl;
+    opens org.glassfish.jersey.ext.cdi1x.transaction.internal to weld.core.impl;
+
+    provides jakarta.enterprise.inject.spi.Extension with
+            org.glassfish.jersey.ext.cdi1x.transaction.internal.TransactionalExceptionInterceptorProvider;
+    provides org.glassfish.jersey.server.spi.ComponentProvider with
+            org.glassfish.jersey.ext.cdi1x.transaction.internal.TransactionalExceptionInterceptorProvider;
 }
\ No newline at end of file
diff --git a/ext/cdi/jersey-cdi1x-validation/src/main/java/module-info.java b/ext/cdi/jersey-cdi1x-validation/src/main/java/module-info.java
index 45a3da4..efe0bd6 100644
--- a/ext/cdi/jersey-cdi1x-validation/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi1x-validation/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -28,6 +28,9 @@
     requires org.glassfish.jersey.inject.hk2;
     requires org.glassfish.jersey.ext.cdi1x;
 
-    exports org.glassfish.jersey.ext.cdi1x.validation.internal;
-    opens org.glassfish.jersey.ext.cdi1x.validation.internal;
+    exports org.glassfish.jersey.ext.cdi1x.validation.internal to weld.core.impl;
+    opens org.glassfish.jersey.ext.cdi1x.validation.internal to weld.core.impl;
+
+    provides jakarta.enterprise.inject.spi.Extension with
+            org.glassfish.jersey.ext.cdi1x.validation.internal.CdiInterceptorWrapperExtension;
 }
\ No newline at end of file
diff --git a/ext/cdi/jersey-cdi1x/src/main/java/module-info.java b/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
index 344dfe2..2d7b737 100644
--- a/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -30,7 +30,7 @@
     requires org.glassfish.jersey.core.common;
     requires org.glassfish.jersey.inject.hk2;
 
-    exports org.glassfish.jersey.ext.cdi1x.internal;
+    exports org.glassfish.jersey.ext.cdi1x.internal; // @JerseyVetoed
     exports org.glassfish.jersey.ext.cdi1x.internal.spi;
     exports org.glassfish.jersey.ext.cdi1x.spi;
     opens org.glassfish.jersey.ext.cdi1x.internal;
@@ -40,4 +40,13 @@
     uses org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionManagerInjectedTarget;
     uses org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionManagerStore;
     uses org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionTargetListener;
+
+    provides jakarta.enterprise.inject.spi.Extension with
+            org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider,
+            org.glassfish.jersey.ext.cdi1x.internal.ProcessAllAnnotatedTypes;
+//    TODO Cannot do with requires static
+//    provides org.glassfish.jersey.server.spi.ComponentProvider with
+//            org.glassfish.jersey.ext.cdi1x.internal.CdiServerComponentProvider;
+    provides org.glassfish.jersey.spi.ComponentProvider with
+            org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider;
 }
\ No newline at end of file
diff --git a/ext/cdi/jersey-weld2-se/src/main/java/module-info.java b/ext/cdi/jersey-weld2-se/src/main/java/module-info.java
index 401667f..165bf0c 100644
--- a/ext/cdi/jersey-weld2-se/src/main/java/module-info.java
+++ b/ext/cdi/jersey-weld2-se/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -25,6 +25,15 @@
     requires org.glassfish.jersey.ext.cdi1x;
     requires org.glassfish.jersey.inject.hk2;
 
-    exports org.glassfish.jersey.weld.se;
-    opens org.glassfish.jersey.weld.se;
+    exports org.glassfish.jersey.weld.se to
+                                            org.glassfish.jersey.core.common,
+                                            weld.core.impl;
+    opens org.glassfish.jersey.weld.se to
+                                            org.glassfish.jersey.core.common,
+                                            weld.core.impl;
+
+    provides org.glassfish.jersey.ext.cdi1x.internal.spi.InjectionManagerStore with
+            org.glassfish.jersey.weld.se.WeldInjectionManagerStore;
+    provides org.glassfish.jersey.server.spi.ExternalRequestScope with
+            org.glassfish.jersey.weld.se.WeldRequestScope;
 }
\ No newline at end of file
diff --git a/ext/entity-filtering/src/main/java/module-info.java b/ext/entity-filtering/src/main/java/module-info.java
index 1e20ed2..0722c06 100644
--- a/ext/entity-filtering/src/main/java/module-info.java
+++ b/ext/entity-filtering/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -26,8 +26,11 @@
     requires org.glassfish.jersey.core.server;
 
     exports org.glassfish.jersey.message.filtering;
+    exports org.glassfish.jersey.message.filtering.internal; // localization
     exports org.glassfish.jersey.message.filtering.spi;
 
+    opens org.glassfish.jersey.message.filtering.internal;
+
     uses org.glassfish.jersey.message.filtering.spi.AbstractEntityProcessor;
     uses org.glassfish.jersey.message.filtering.spi.AbstractObjectProvider;
     uses org.glassfish.jersey.message.filtering.spi.EntityGraph;
diff --git a/ext/metainf-services/src/main/java/module-info.txt b/ext/metainf-services/src/main/java/module-info.java
similarity index 70%
rename from ext/metainf-services/src/main/java/module-info.txt
rename to ext/metainf-services/src/main/java/module-info.java
index c78548c..64ab7f0 100644
--- a/ext/metainf-services/src/main/java/module-info.txt
+++ b/ext/metainf-services/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -19,5 +19,8 @@
     requires jakarta.ws.rs;
 
     requires org.glassfish.jersey.core.common;
-    exports org.glassfish.jersey.spidiscovery.internal;
+    exports org.glassfish.jersey.spidiscovery.internal to org.glassfish.hk2.locator;
+
+    provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable with
+            org.glassfish.jersey.spidiscovery.internal.MetaInfServicesAutoDiscoverable;
 }
\ No newline at end of file
diff --git a/containers/simple-http/src/main/java/module-info.java b/ext/metainf-services/src/test/java/module-info.java
similarity index 63%
rename from containers/simple-http/src/main/java/module-info.java
rename to ext/metainf-services/src/test/java/module-info.java
index 92611df..6ca4d9b 100644
--- a/containers/simple-http/src/main/java/module-info.java
+++ b/ext/metainf-services/src/test/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,21 +14,17 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-module org.glassfish.jersey.container.simple.http {
-    requires java.logging;
-
+module org.glassfish.jersey.ext.metainf.services.test {
+    requires org.glassfish.jersey.ext.metainf.services;
     requires jakarta.inject;
     requires jakarta.ws.rs;
-
-    requires static jakarta.xml.bind;
-
-    requires simple.common;
-    requires simple.http;
-    requires simple.transport;
-
+    requires org.glassfish.jersey.core.client;
     requires org.glassfish.jersey.core.common;
     requires org.glassfish.jersey.core.server;
+    requires org.glassfish.jersey.tests.framework.core;
+    requires org.hamcrest;
+    requires org.junit.jupiter.api;
 
-    exports org.glassfish.jersey.simple;
-    opens org.glassfish.jersey.simple;
+    exports org.glassfish.jersey.spidiscovery.test;
+    opens org.glassfish.jersey.spidiscovery.test;
 }
\ No newline at end of file
diff --git a/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java b/ext/metainf-services/src/test/java/org/glassfish/jersey/spidiscovery/test/MetaInfServicesTest.java
similarity index 97%
rename from ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
rename to ext/metainf-services/src/test/java/org/glassfish/jersey/spidiscovery/test/MetaInfServicesTest.java
index 7dbad12..8b98409 100644
--- a/ext/metainf-services/src/test/java/org/glassfish/jersey/message/MetaInfServicesTest.java
+++ b/ext/metainf-services/src/test/java/org/glassfish/jersey/spidiscovery/test/MetaInfServicesTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.jersey.message;
+package org.glassfish.jersey.spidiscovery.test;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyReader b/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyReader
index 5be0cee..a201739 100644
--- a/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyReader
+++ b/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyReader
@@ -1 +1 @@
-org.glassfish.jersey.message.MetaInfServicesTest$MessageProvider
\ No newline at end of file
+org.glassfish.jersey.spidiscovery.test.MetaInfServicesTest$MessageProvider
\ No newline at end of file
diff --git a/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyWriter b/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyWriter
index 5be0cee..a201739 100644
--- a/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyWriter
+++ b/ext/metainf-services/src/test/resources/META-INF/services/jakarta.ws.rs.ext.MessageBodyWriter
@@ -1 +1 @@
-org.glassfish.jersey.message.MetaInfServicesTest$MessageProvider
\ No newline at end of file
+org.glassfish.jersey.spidiscovery.test.MetaInfServicesTest$MessageProvider
\ No newline at end of file
diff --git a/ext/microprofile/mp-config/src/main/java/module-info.java b/ext/microprofile/mp-config/src/main/java/module-info.java
index 13bc0bf..cda7d57 100644
--- a/ext/microprofile/mp-config/src/main/java/module-info.java
+++ b/ext/microprofile/mp-config/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -22,4 +22,7 @@
     requires static org.glassfish.jersey.core.server;
 
     exports org.glassfish.jersey.microprofile.config;
+
+    provides org.glassfish.jersey.spi.ExternalConfigurationProvider with
+            org.glassfish.jersey.microprofile.config.ConfigurationProvider;
 }
\ No newline at end of file
diff --git a/ext/microprofile/mp-rest-client/pom.xml b/ext/microprofile/mp-rest-client/pom.xml
index 92a9860..c01acae 100644
--- a/ext/microprofile/mp-rest-client/pom.xml
+++ b/ext/microprofile/mp-rest-client/pom.xml
@@ -66,11 +66,6 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.glassfish.jersey.ext.cdi</groupId>
-            <artifactId>jersey-weld2-se</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
             <groupId>jakarta.json</groupId>
             <artifactId>jakarta.json-api</artifactId>
         </dependency>
diff --git a/ext/microprofile/mp-rest-client/src/main/java/module-info.java b/ext/microprofile/mp-rest-client/src/main/java/module-info.java
index f958c14..6a06610 100644
--- a/ext/microprofile/mp-rest-client/src/main/java/module-info.java
+++ b/ext/microprofile/mp-rest-client/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -34,4 +34,16 @@
     requires org.glassfish.jersey.core.server;
     requires org.glassfish.jersey.inject.hk2;
     requires org.glassfish.jersey.media.sse;
+
+    exports org.glassfish.jersey.microprofile.restclient;
+    exports org.glassfish.jersey.microprofile.restclient.internal; // localization
+
+    opens org.glassfish.jersey.microprofile.restclient.internal;
+
+    provides jakarta.enterprise.inject.spi.Extension with
+            org.glassfish.jersey.microprofile.restclient.RestClientExtension;
+    provides org.eclipse.microprofile.rest.client.spi.RestClientBuilderResolver with
+            org.glassfish.jersey.microprofile.restclient.JerseyRestClientBuilderResolver;
+    provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable with
+            org.glassfish.jersey.microprofile.restclient.RequestHeaderAutoDiscoverable;
 }
\ No newline at end of file
diff --git a/ext/mvc-jsp/src/main/java/module-info.java b/ext/mvc-jsp/src/main/java/module-info.java
index 60e109c..8afa940 100644
--- a/ext/mvc-jsp/src/main/java/module-info.java
+++ b/ext/mvc-jsp/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -25,4 +25,7 @@
     requires org.glassfish.jersey.ext.mvc;
 
     exports org.glassfish.jersey.server.mvc.jsp;
+    exports org.glassfish.jersey.server.mvc.jsp.internal; // localization
+
+    opens org.glassfish.jersey.server.mvc.jsp.internal;
 }
\ No newline at end of file
diff --git a/ext/mvc/src/main/java/module-info.java b/ext/mvc/src/main/java/module-info.java
index f3c28b6..b440986 100644
--- a/ext/mvc/src/main/java/module-info.java
+++ b/ext/mvc/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 202, 2025 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
@@ -26,9 +26,12 @@
     requires org.glassfish.jersey.core.common;
 
     exports org.glassfish.jersey.server.mvc;
-    exports org.glassfish.jersey.server.mvc.internal;
+    exports org.glassfish.jersey.server.mvc.internal to org.glassfish.jersey.ext.mvc.jsp;
+    exports org.glassfish.jersey.server.mvc.internal.l10n;
     exports org.glassfish.jersey.server.mvc.spi;
 
+    opens org.glassfish.jersey.server.mvc.internal.l10n;
+
     uses org.glassfish.jersey.server.mvc.spi.TemplateProcessor;
     uses org.glassfish.jersey.server.mvc.spi.ViewableContext;
     uses org.glassfish.jersey.server.mvc.spi.AbstractTemplateProcessor;
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/Viewable.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/Viewable.java
index 56703a4..3fadb73 100644
--- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/Viewable.java
+++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/Viewable.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 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
@@ -16,7 +16,7 @@
 
 package org.glassfish.jersey.server.mvc;
 
-import org.glassfish.jersey.server.mvc.internal.LocalizationMessages;
+import org.glassfish.jersey.server.mvc.internal.l10n.LocalizationMessages;
 
 /**
  * A viewable type referencing a template by name and a model to be passed
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ResolvingViewableContext.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ResolvingViewableContext.java
index c3bf23a..695cf12 100644
--- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ResolvingViewableContext.java
+++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/ResolvingViewableContext.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025 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
@@ -19,6 +19,7 @@
 import jakarta.ws.rs.core.MediaType;
 
 import org.glassfish.jersey.server.mvc.Viewable;
+import org.glassfish.jersey.server.mvc.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.server.mvc.spi.ResolvedViewable;
 import org.glassfish.jersey.server.mvc.spi.TemplateProcessor;
 import org.glassfish.jersey.server.mvc.spi.ViewableContext;
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateModelProcessor.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateModelProcessor.java
index 7787d7c..60dd4fd 100644
--- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateModelProcessor.java
+++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/internal/TemplateModelProcessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025 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
@@ -49,6 +49,7 @@
 import org.glassfish.jersey.server.model.internal.ModelProcessorUtil;
 import org.glassfish.jersey.server.mvc.Template;
 import org.glassfish.jersey.server.mvc.Viewable;
+import org.glassfish.jersey.server.mvc.internal.l10n.LocalizationMessages;
 
 /**
  * {@link ModelProcessor Model processor} enhancing (sub-)resources with {@value HttpMethod#GET} methods responsible of producing
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 8305f8d..b519251 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
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025 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
@@ -45,6 +45,7 @@
 import org.glassfish.jersey.server.ContainerRequest;
 import org.glassfish.jersey.server.ExtendedUriInfo;
 import org.glassfish.jersey.server.mvc.Viewable;
+import org.glassfish.jersey.server.mvc.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.server.mvc.spi.ResolvedViewable;
 import org.glassfish.jersey.server.mvc.spi.TemplateProcessor;
 import org.glassfish.jersey.server.mvc.spi.ViewableContext;
diff --git a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java
index b375afe..7f878cf 100644
--- a/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java
+++ b/ext/mvc/src/main/java/org/glassfish/jersey/server/mvc/spi/AbstractTemplateProcessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025 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
@@ -49,7 +49,7 @@
 import org.glassfish.jersey.internal.util.ReflectionHelper;
 import org.glassfish.jersey.internal.util.collection.Value;
 import org.glassfish.jersey.server.mvc.MvcFeature;
-import org.glassfish.jersey.server.mvc.internal.LocalizationMessages;
+import org.glassfish.jersey.server.mvc.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.server.mvc.internal.TemplateHelper;
 
 /**
diff --git a/ext/mvc/src/main/resources/org/glassfish/jersey/server/mvc/internal/localization.properties b/ext/mvc/src/main/resources/org/glassfish/jersey/server/mvc/internal/l10n/localization.properties
similarity index 96%
rename from ext/mvc/src/main/resources/org/glassfish/jersey/server/mvc/internal/localization.properties
rename to ext/mvc/src/main/resources/org/glassfish/jersey/server/mvc/internal/l10n/localization.properties
index 5b0eaa2..7a58bfe 100644
--- a/ext/mvc/src/main/resources/org/glassfish/jersey/server/mvc/internal/localization.properties
+++ b/ext/mvc/src/main/resources/org/glassfish/jersey/server/mvc/internal/l10n/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2013, 2018 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2013, 2025 Oracle and/or its affiliates. All rights reserved.
 #
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/inject/cdi2-se/src/main/java/module-info.java b/inject/cdi2-se/src/main/java/module-info.java
index eeb9a42..1352b45 100644
--- a/inject/cdi2-se/src/main/java/module-info.java
+++ b/inject/cdi2-se/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -36,4 +36,7 @@
     exports org.glassfish.jersey.inject.cdi.se.bean;
 
     opens org.glassfish.jersey.inject.cdi.se;
+
+    provides org.glassfish.jersey.internal.inject.InjectionManagerFactory with
+            org.glassfish.jersey.inject.cdi.se.CdiSeInjectionManagerFactory;
 }
\ No newline at end of file
diff --git a/inject/hk2/src/main/java/module-info.java b/inject/hk2/src/main/java/module-info.java
index a177113..bb79c18 100644
--- a/inject/hk2/src/main/java/module-info.java
+++ b/inject/hk2/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,9 +14,6 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-import org.glassfish.jersey.inject.hk2.Hk2InjectionManagerFactory;
-import org.glassfish.jersey.internal.inject.InjectionManagerFactory;
-
 module org.glassfish.jersey.inject.hk2 {
 
     requires jakarta.annotation;
@@ -35,6 +32,8 @@
     exports org.glassfish.jersey.inject.hk2;
     opens org.glassfish.jersey.inject.hk2;
 
-    provides InjectionManagerFactory
-            with Hk2InjectionManagerFactory;
+    provides org.glassfish.jersey.innate.inject.spi.ExternalRegistrables with
+            org.glassfish.jersey.inject.hk2.Hk2Registrables;
+    provides org.glassfish.jersey.internal.inject.InjectionManagerFactory with
+            org.glassfish.jersey.inject.hk2.Hk2InjectionManagerFactory;
 }
\ No newline at end of file
diff --git a/media/jaxb/pom.xml b/media/jaxb/pom.xml
index c1372f5..c4cd8c6 100644
--- a/media/jaxb/pom.xml
+++ b/media/jaxb/pom.xml
@@ -32,7 +32,7 @@
 
     <properties>
         <surefire.security.argline>
-            --add-reads org.glassfish.jersey.media.jaxb=org.glassfish.jersey.inject.hk2
+            --add-reads org.glassfish.jersey.media.jaxb=org.glassfish.jersey.inject.hk2 --add-opens org.glassfish.jersey.media.jaxb/org.glassfish.jersey.jaxb.internal=jakarta.xml.bind
         </surefire.security.argline>
     </properties>
 
diff --git a/media/jaxb/src/main/java/module-info.java b/media/jaxb/src/main/java/module-info.java
index a1fd383..9589c4c 100644
--- a/media/jaxb/src/main/java/module-info.java
+++ b/media/jaxb/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -23,10 +23,17 @@
 
     requires org.glassfish.jersey.core.common;
 
-    opens org.glassfish.jersey.jaxb.internal;
-
     exports org.glassfish.jersey.jaxb;
-    exports org.glassfish.jersey.jaxb.internal;
+    exports org.glassfish.jersey.jaxb.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities,
+            org.glassfish.jersey.media.json.jettison;
+    exports org.glassfish.jersey.jaxb.internal.l10n;
+
+    opens org.glassfish.jersey.jaxb.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities;
+    opens org.glassfish.jersey.jaxb.internal.l10n;
 
     provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable
             with org.glassfish.jersey.jaxb.internal.JaxbAutoDiscoverable;
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/AbstractCollectionJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/AbstractCollectionJaxbProvider.java
index eb8fe7b..377a931 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/AbstractCollectionJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/AbstractCollectionJaxbProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 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
@@ -56,6 +56,7 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.glassfish.jersey.jaxb.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.internal.EntityInputStream;
 import org.glassfish.jersey.message.internal.ReaderWriter;
 
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
index 3cf9c6e..f2b991c 100644
--- 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
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2025 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
@@ -20,6 +20,7 @@
 import org.glassfish.jersey.internal.inject.Providers;
 import org.glassfish.jersey.jaxb.FeatureSupplier;
 import org.glassfish.jersey.jaxb.PropertySupplier;
+import org.glassfish.jersey.jaxb.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.model.internal.RankedComparator;
 
 import java.util.Map;
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProvider.java
index 7065c43..e679dca 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/JaxbStringReaderProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 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
@@ -44,6 +44,7 @@
 import org.glassfish.jersey.internal.util.collection.Value;
 import org.glassfish.jersey.internal.util.collection.Values;
 
+import org.glassfish.jersey.jaxb.internal.l10n.LocalizationMessages;
 import org.xml.sax.InputSource;
 
 /**
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 0c5e60c..5de664c 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, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -36,6 +36,7 @@
 
 import org.glassfish.jersey.internal.util.SaxHelper;
 
+import org.glassfish.jersey.jaxb.internal.l10n.LocalizationMessages;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
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 43acbb3..8481513 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
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 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
@@ -25,6 +25,8 @@
 
 import jakarta.inject.Inject;
 import jakarta.ws.rs.core.Context;
+import org.glassfish.jersey.jaxb.internal.l10n.LocalizationMessages;
+
 import javax.xml.XMLConstants;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerFactory;
diff --git a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
index d0f1bd3..be01ee5 100644
--- a/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
+++ b/media/jaxb/src/main/java/org/glassfish/jersey/jaxb/internal/XmlRootObjectJaxbProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 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
@@ -43,6 +43,7 @@
 import jakarta.xml.bind.Unmarshaller;
 import javax.xml.parsers.SAXParserFactory;
 
+import org.glassfish.jersey.jaxb.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.internal.EntityInputStream;
 
 /**
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/l10n/localization.properties
similarity index 96%
rename from media/jaxb/src/main/resources/org/glassfish/jersey/jaxb/internal/localization.properties
rename to media/jaxb/src/main/resources/org/glassfish/jersey/jaxb/internal/l10n/localization.properties
index 9cb460f..ab29e6d 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/l10n/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2015, 2025 Oracle and/or its affiliates. All rights reserved.
 #
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/media/json-binding/src/main/java/module-info.java b/media/json-binding/src/main/java/module-info.java
index 357206f..3604b07 100644
--- a/media/json-binding/src/main/java/module-info.java
+++ b/media/json-binding/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -27,5 +27,8 @@
     requires org.glassfish.jersey.core.common;
 
     exports org.glassfish.jersey.jsonb;
+    opens org.glassfish.jersey.jsonb;
 
+    provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable with
+            org.glassfish.jersey.jsonb.internal.JsonBindingAutoDiscoverable;
 }
\ No newline at end of file
diff --git a/media/json-jettison/src/main/java/module-info.java b/media/json-jettison/src/main/java/module-info.java
index 88ff954..78882b5 100644
--- a/media/json-jettison/src/main/java/module-info.java
+++ b/media/json-jettison/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -28,4 +28,7 @@
     requires org.glassfish.jersey.media.jaxb;
 
     exports org.glassfish.jersey.jettison;
+    exports org.glassfish.jersey.jettison.internal.l10n;
+
+    opens org.glassfish.jersey.jettison.internal.l10n;
 }
\ No newline at end of file
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonArrayProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonArrayProvider.java
index 1a15641..a0ddb99 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonArrayProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonArrayProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -29,7 +29,7 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.MultivaluedMap;
 
-import org.glassfish.jersey.jettison.internal.LocalizationMessages;
+import org.glassfish.jersey.jettison.internal.l10n.LocalizationMessages;
 
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
diff --git a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonObjectProvider.java b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonObjectProvider.java
index 2f4eaec..cf96a98 100644
--- a/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonObjectProvider.java
+++ b/media/json-jettison/src/main/java/org/glassfish/jersey/jettison/internal/entity/JettisonObjectProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -29,7 +29,7 @@
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.MultivaluedMap;
 
-import org.glassfish.jersey.jettison.internal.LocalizationMessages;
+import org.glassfish.jersey.jettison.internal.l10n.LocalizationMessages;
 
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
diff --git a/media/json-jettison/src/main/resources/org/glassfish/jersey/jettison/internal/localization.properties b/media/json-jettison/src/main/resources/org/glassfish/jersey/jettison/internal/l10n/localization.properties
similarity index 92%
rename from media/json-jettison/src/main/resources/org/glassfish/jersey/jettison/internal/localization.properties
rename to media/json-jettison/src/main/resources/org/glassfish/jersey/jettison/internal/l10n/localization.properties
index 9e5e3cf..259796d 100644
--- a/media/json-jettison/src/main/resources/org/glassfish/jersey/jettison/internal/localization.properties
+++ b/media/json-jettison/src/main/resources/org/glassfish/jersey/jettison/internal/l10n/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2025 Oracle and/or its affiliates. All rights reserved.
 #
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/media/json-processing/src/main/java/module-info.java b/media/json-processing/src/main/java/module-info.java
index b509b21..9077b05 100644
--- a/media/json-processing/src/main/java/module-info.java
+++ b/media/json-processing/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -23,5 +23,14 @@
     requires org.glassfish.jersey.core.common;
 
     exports org.glassfish.jersey.jsonp;
-    exports org.glassfish.jersey.jsonp.internal;
+    exports org.glassfish.jersey.jsonp.internal to
+                org.glassfish.hk2.locator,
+                org.glassfish.hk2.utilities;
+
+    opens org.glassfish.jersey.jsonp.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities;
+
+    provides org.glassfish.jersey.internal.spi.ForcedAutoDiscoverable with
+            org.glassfish.jersey.jsonp.internal.JsonProcessingAutoDiscoverable;
 }
\ No newline at end of file
diff --git a/media/moxy/src/main/java/module-info.java b/media/moxy/src/main/java/module-info.java
index 22e8b2f..2119453 100644
--- a/media/moxy/src/main/java/module-info.java
+++ b/media/moxy/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -31,7 +31,11 @@
 
     exports org.glassfish.jersey.moxy.xml;
     exports org.glassfish.jersey.moxy.json;
-    exports org.glassfish.jersey.moxy.json.internal;
 
-    opens org.glassfish.jersey.moxy.json.internal;
+    opens org.glassfish.jersey.moxy.json.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities;
+
+    provides org.glassfish.jersey.internal.spi.AutoDiscoverable with
+            org.glassfish.jersey.moxy.json.internal.MoxyJsonAutoDiscoverable;
 }
\ No newline at end of file
diff --git a/media/multipart/pom.xml b/media/multipart/pom.xml
index 5393fc3..719eac3 100644
--- a/media/multipart/pom.xml
+++ b/media/multipart/pom.xml
@@ -42,6 +42,7 @@
             --add-exports org.glassfish.jersey.core.common/org.glassfish.jersey.innate.io=ALL-UNNAMED
             --add-exports org.glassfish.jersey.core.client/org.glassfish.jersey.client.innate=ALL-UNNAMED
             --add-modules=ALL-MODULE-PATH
+            --add-reads org.glassfish.jersey.media.multipart=jakarta.json
         </surefire.coverage.argline>
     </properties>
 
diff --git a/media/multipart/src/main/java/module-info.java b/media/multipart/src/main/java/module-info.java
index c131e16..3cc54b9 100644
--- a/media/multipart/src/main/java/module-info.java
+++ b/media/multipart/src/main/java/module-info.java
@@ -28,8 +28,23 @@
     requires org.glassfish.jersey.core.common;
 
     exports org.glassfish.jersey.media.multipart;
-    exports org.glassfish.jersey.media.multipart.internal;
+    exports org.glassfish.jersey.media.multipart.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities,
+            org.glassfish.jersey.core.server,
+            org.glassfish.jersey.core.client;
+    exports org.glassfish.jersey.media.multipart.internal.l10n;
 
     opens org.glassfish.jersey.media.multipart;
-    opens org.glassfish.jersey.media.multipart.internal;
+    opens org.glassfish.jersey.media.multipart.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities,
+            org.glassfish.jersey.core.server,
+            org.glassfish.jersey.core.client;
+    opens org.glassfish.jersey.media.multipart.internal.l10n;
+
+    provides org.glassfish.jersey.innate.spi.EntityPartBuilderProvider with
+            org.glassfish.jersey.media.multipart.JerseyEntityPartBuilderProvider;
+    provides org.glassfish.jersey.internal.spi.AutoDiscoverable with
+            org.glassfish.jersey.media.multipart.MultiPartFeatureAutodiscoverable;
 }
\ No newline at end of file
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPart.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPart.java
index d672e1c..d38df8d 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPart.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPart.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -22,7 +22,6 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import java.text.ParseException;
-import java.util.Arrays;
 
 import jakarta.ws.rs.ProcessingException;
 import jakarta.ws.rs.core.GenericType;
@@ -33,7 +32,7 @@
 
 import org.glassfish.jersey.innate.spi.MessageBodyWorkersSettable;
 import org.glassfish.jersey.internal.util.collection.ImmutableMultivaluedMap;
-import org.glassfish.jersey.media.multipart.internal.LocalizationMessages;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.MessageBodyWorkers;
 import org.glassfish.jersey.message.internal.HeaderUtils;
 import org.glassfish.jersey.message.internal.ParameterizedHeader;
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPartEntity.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPartEntity.java
index 31349bb..6d2c488 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPartEntity.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/BodyPartEntity.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -23,7 +23,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.glassfish.jersey.media.multipart.internal.LocalizationMessages;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 
 import org.jvnet.mimepull.MIMEPart;
 
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/ContentDisposition.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/ContentDisposition.java
index f6c7165..89c5171 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/ContentDisposition.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/ContentDisposition.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2010, 2025 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
@@ -23,7 +23,7 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.glassfish.jersey.media.multipart.internal.LocalizationMessages;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.internal.HttpDateFormat;
 import org.glassfish.jersey.message.internal.HttpHeaderReader;
 import org.glassfish.jersey.uri.UriComponent;
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataBodyPart.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataBodyPart.java
index 802cc02..5b79032 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataBodyPart.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataBodyPart.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -26,7 +26,7 @@
 import jakarta.ws.rs.core.GenericType;
 import jakarta.ws.rs.core.MediaType;
 
-import org.glassfish.jersey.media.multipart.internal.LocalizationMessages;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.internal.MediaTypes;
 
 /**
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataMultiPart.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataMultiPart.java
index 9a5edc4..4587b8f 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataMultiPart.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/FormDataMultiPart.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -23,7 +23,7 @@
 
 import jakarta.ws.rs.core.MediaType;
 
-import org.glassfish.jersey.media.multipart.internal.LocalizationMessages;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.internal.MediaTypes;
 
 /**
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/JerseyEntityPartBuilderProvider.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/JerseyEntityPartBuilderProvider.java
index 307eb97..d9e6db1 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/JerseyEntityPartBuilderProvider.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/JerseyEntityPartBuilderProvider.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021, 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2025 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
@@ -26,7 +26,7 @@
 import org.glassfish.jersey.innate.spi.EntityPartBuilderProvider;
 import org.glassfish.jersey.media.multipart.file.FileDataBodyPart;
 import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart;
-import org.glassfish.jersey.media.multipart.internal.LocalizationMessages;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/FormDataParamValueParamProvider.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/FormDataParamValueParamProvider.java
index 3943065..17c9590 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/FormDataParamValueParamProvider.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/FormDataParamValueParamProvider.java
@@ -50,6 +50,7 @@
 import org.glassfish.jersey.media.multipart.FormDataMultiPart;
 import org.glassfish.jersey.media.multipart.FormDataParam;
 import org.glassfish.jersey.media.multipart.FormDataParamException;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.MessageBodyWorkers;
 import org.glassfish.jersey.message.MessageUtils;
 import org.glassfish.jersey.message.internal.Utils;
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
index edb80bd..ae9683b 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartReaderClientSide.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2024 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -52,6 +52,7 @@
 import org.glassfish.jersey.media.multipart.FormDataMultiPart;
 import org.glassfish.jersey.media.multipart.MultiPart;
 import org.glassfish.jersey.media.multipart.MultiPartProperties;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.MessageBodyWorkers;
 import org.glassfish.jersey.message.internal.MediaTypes;
 
diff --git a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
index db5fbc7..a199b50 100644
--- a/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
+++ b/media/multipart/src/main/java/org/glassfish/jersey/media/multipart/internal/MultiPartWriter.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2025 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
@@ -45,6 +45,7 @@
 import org.glassfish.jersey.media.multipart.BodyPartEntity;
 import org.glassfish.jersey.media.multipart.Boundary;
 import org.glassfish.jersey.media.multipart.MultiPart;
+import org.glassfish.jersey.media.multipart.internal.l10n.LocalizationMessages;
 import org.glassfish.jersey.message.MessageUtils;
 
 /**
diff --git a/media/multipart/src/main/resources/org/glassfish/jersey/media/multipart/internal/localization.properties b/media/multipart/src/main/resources/org/glassfish/jersey/media/multipart/internal/l10n/localization.properties
similarity index 96%
rename from media/multipart/src/main/resources/org/glassfish/jersey/media/multipart/internal/localization.properties
rename to media/multipart/src/main/resources/org/glassfish/jersey/media/multipart/internal/l10n/localization.properties
index 13e7136..3fd91aa 100644
--- a/media/multipart/src/main/resources/org/glassfish/jersey/media/multipart/internal/localization.properties
+++ b/media/multipart/src/main/resources/org/glassfish/jersey/media/multipart/internal/l10n/localization.properties
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2012, 2023 Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2012, 2025 Oracle and/or its affiliates. All rights reserved.
 #
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License v. 2.0, which is available at
diff --git a/pom.xml b/pom.xml
index 6a71b2d..a6c6593 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2270,7 +2270,7 @@
         <jmockit.version>1.49</jmockit.version>
         <junit4.version>4.13.2</junit4.version>
         <junit5.version>5.12.2</junit5.version>
-        <junit-platform-suite.version>1.12.2</junit-platform-suite.version>
+        <junit-platform-suite.version>1.13.4</junit-platform-suite.version>
         <junit-platform-suite.legacy.version>1.10.0</junit-platform-suite.legacy.version>
         <kryo.version>4.0.3</kryo.version>
         <mockito.version>4.11.0</mockito.version> <!-- CQ 17673 -->
diff --git a/security/oauth1-client/src/main/java/module-info.java b/security/oauth1-client/src/main/java/module-info.java
index db52226..370e721 100644
--- a/security/oauth1-client/src/main/java/module-info.java
+++ b/security/oauth1-client/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -25,4 +25,7 @@
     requires org.glassfish.jersey.security.oauth1.signature;
 
     exports org.glassfish.jersey.client.oauth1;
+    exports org.glassfish.jersey.client.oauth1.internal;
+
+    opens org.glassfish.jersey.client.oauth1.internal;
 }
\ No newline at end of file
diff --git a/security/oauth1-server/src/main/java/module-info.java b/security/oauth1-server/src/main/java/module-info.java
index 48b82e9..523410c 100644
--- a/security/oauth1-server/src/main/java/module-info.java
+++ b/security/oauth1-server/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -26,7 +26,12 @@
     requires org.glassfish.jersey.security.oauth1.signature;
 
     exports org.glassfish.jersey.server.oauth1;
-    exports org.glassfish.jersey.server.oauth1.internal;
+    exports org.glassfish.jersey.server.oauth1.internal to
+                org.glassfish.hk2.locator,
+                org.glassfish.hk2.utilities;
 
     opens org.glassfish.jersey.server.oauth1;
+    opens org.glassfish.jersey.server.oauth1.internal to
+            org.glassfish.hk2.locator,
+            org.glassfish.hk2.utilities;
 }
\ No newline at end of file
diff --git a/security/oauth1-signature/src/main/java/module-info.java b/security/oauth1-signature/src/main/java/module-info.java
index 23af5eb..b717f22 100644
--- a/security/oauth1-signature/src/main/java/module-info.java
+++ b/security/oauth1-signature/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -23,4 +23,7 @@
     requires org.glassfish.jersey.core.common;
 
     exports org.glassfish.jersey.oauth1.signature;
+    exports org.glassfish.jersey.oauth1.signature.internal; // localization
+
+    opens org.glassfish.jersey.oauth1.signature.internal;
 }
\ No newline at end of file
diff --git a/security/oauth2-client/src/main/java/module-info.java b/security/oauth2-client/src/main/java/module-info.java
index dee4ae1..ffe9a62 100644
--- a/security/oauth2-client/src/main/java/module-info.java
+++ b/security/oauth2-client/src/main/java/module-info.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2025 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
@@ -22,4 +22,7 @@
     requires org.glassfish.jersey.core.common;
 
     exports org.glassfish.jersey.client.oauth2;
+    exports org.glassfish.jersey.client.oauth2.internal; // localization
+
+    opens org.glassfish.jersey.client.oauth2.internal;
 }
\ No newline at end of file
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 cd54930..fc23b63 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
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2023 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2025 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
@@ -710,7 +710,8 @@
             // client added header before request has sent (and logged)
             Iterator<LogRecord> it = getLoggedRecords().iterator();
             LogRecord logRecord = it.next();
-            while (logRecord.getLevel() == Level.WARNING) { // Skip any warning at the beginning
+            while (logRecord.getLevel() == Level.WARNING || logRecord.getSourceMethodName().equals("start")) {
+                // Skip any warning at the beginning
                 logRecord = it.next();
             }
             assertThat(logRecord.getMessage(),