JPMS core,containers,connectors,inject,media,ext

Signed-off-by: Maxim Nesen <maxim.nesen@oracle.com>
diff --git a/connectors/apache-connector/pom.xml b/connectors/apache-connector/pom.xml
index 229b72a..cdabe09 100644
--- a/connectors/apache-connector/pom.xml
+++ b/connectors/apache-connector/pom.xml
@@ -72,6 +72,19 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.apache.connector=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
             </plugin>
             <plugin>
                 <groupId>org.apache.felix</groupId>
diff --git a/connectors/apache-connector/src/main/java/module-info.java b/connectors/apache-connector/src/main/java/module-info.java
new file mode 100644
index 0000000..74873e4
--- /dev/null
+++ b/connectors/apache-connector/src/main/java/module-info.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2022 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.apache.connector {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+
+    exports org.glassfish.jersey.apache.connector;
+
+    opens org.glassfish.jersey.apache.connector;
+}
\ No newline at end of file
diff --git a/connectors/grizzly-connector/pom.xml b/connectors/grizzly-connector/pom.xml
index 3d16f8f..e86c880 100644
--- a/connectors/grizzly-connector/pom.xml
+++ b/connectors/grizzly-connector/pom.xml
@@ -93,6 +93,19 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.grizzly.connector=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
             </plugin>
         </plugins>
     </build>
diff --git a/connectors/grizzly-connector/src/main/java/module-info.java b/connectors/grizzly-connector/src/main/java/module-info.java
new file mode 100644
index 0000000..d6ca828
--- /dev/null
+++ b/connectors/grizzly-connector/src/main/java/module-info.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2022 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.grizzly.connector {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+
+    exports org.glassfish.jersey.grizzly.connector;
+    opens org.glassfish.jersey.grizzly.connector;
+}
\ No newline at end of file
diff --git a/connectors/jdk-connector/src/main/java/module-info.java b/connectors/jdk-connector/src/main/java/module-info.java
new file mode 100644
index 0000000..23edf00
--- /dev/null
+++ b/connectors/jdk-connector/src/main/java/module-info.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2022 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.jdk.connector {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+    requires static jakarta.activation;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+
+    exports org.glassfish.jersey.jdk.connector;
+}
\ No newline at end of file
diff --git a/connectors/jetty-connector/src/main/java/module-info.java b/connectors/jetty-connector/src/main/java/module-info.java
new file mode 100644
index 0000000..1c9c76f
--- /dev/null
+++ b/connectors/jetty-connector/src/main/java/module-info.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2022 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.jetty.connector {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+
+    requires org.eclipse.jetty.client;
+    requires org.eclipse.jetty.http;
+    requires org.eclipse.jetty.io;
+    requires org.eclipse.jetty.util;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+
+    exports org.glassfish.jersey.jetty.connector;
+    opens org.glassfish.jersey.jetty.connector;
+}
\ No newline at end of file
diff --git a/connectors/netty-connector/src/main/java/module-info.java b/connectors/netty-connector/src/main/java/module-info.java
new file mode 100644
index 0000000..f148da5
--- /dev/null
+++ b/connectors/netty-connector/src/main/java/module-info.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2022 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.netty.connector {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+    requires jakarta.inject;
+
+    requires io.netty.all;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+
+    exports org.glassfish.jersey.netty.connector;
+    exports org.glassfish.jersey.netty.connector.internal;
+//    opens org.glassfish.jersey.netty.connector;
+}
\ No newline at end of file
diff --git a/containers/glassfish/jersey-gf-ejb/pom.xml b/containers/glassfish/jersey-gf-ejb/pom.xml
index 0189bdb..f835cbe 100644
--- a/containers/glassfish/jersey-gf-ejb/pom.xml
+++ b/containers/glassfish/jersey-gf-ejb/pom.xml
@@ -63,6 +63,12 @@
         </dependency>
         <!-- TODO remove versions when org.glassfish.exousia:exousia:jar in central-->
         <dependency>
+            <groupId>org.glassfish.jersey.inject</groupId>
+            <artifactId>jersey-hk2</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
             <groupId>org.glassfish.main.ejb</groupId>
             <artifactId>ejb-container</artifactId>
             <version>6.0.0</version>
@@ -129,6 +135,23 @@
                     </instructions>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.gf.ejb=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
  </project>
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
new file mode 100644
index 0000000..bdfd515
--- /dev/null
+++ b/containers/glassfish/jersey-gf-ejb/src/main/java/module-info.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2022 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.glasfish.jersey.gf.ejb {
+    requires java.logging;
+    requires java.naming;
+
+    requires jakarta.ws.rs;
+    requires static jakarta.activation;
+    requires jakarta.annotation;
+    requires jakarta.ejb.api;
+    requires jakarta.inject;
+    requires jakarta.interceptor.api;
+
+    requires ejb.container;
+    requires internal.api;
+    requires config.api;
+
+    requires org.glassfish.hk2.api;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+    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;
+}
\ 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
new file mode 100644
index 0000000..f134f4e
--- /dev/null
+++ b/containers/grizzly2-http/src/main/java/module-info.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2022 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.grizzly2.http {
+    requires transitive java.logging;
+    requires transitive java.net.http;
+
+    requires transitive jakarta.ws.rs;
+    requires transitive jakarta.inject;
+    requires static jakarta.xml.bind;
+
+    requires grizzly.framework;
+    requires grizzly.http.server;
+    requires grizzly.http;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+
+    exports org.glassfish.jersey.grizzly2.httpserver;
+    opens org.glassfish.jersey.grizzly2.httpserver;
+
+}
\ No newline at end of file
diff --git a/containers/grizzly2-http/src/test/java/module-info.java b/containers/grizzly2-http/src/test/java/module-info.java
new file mode 100644
index 0000000..eaf2836
--- /dev/null
+++ b/containers/grizzly2-http/src/test/java/module-info.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2022 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
+ */
+
+open module org.glassfish.jersey.container.grizzly2.http {
+
+    requires java.net.http;
+    requires java.logging;
+
+    requires org.eclipse.jetty.http2.client;
+    requires org.eclipse.jetty.http2.http.client.transport;
+
+    requires org.bouncycastle.provider;
+    requires org.bouncycastle.pkix;
+    requires org.eclipse.jetty.client;
+
+    requires grizzly.http.server;
+    requires grizzly.http2;
+    requires grizzly.framework;
+
+    requires org.glassfish.hk2.api;
+    requires org.glassfish.hk2.locator;
+
+    requires org.glassfish.jersey.core.server;
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+    requires org.glassfish.jersey.inject.hk2;
+
+    exports org.glassfish.jersey.grizzly2.httpserver.test.application
+            to  org.glassfish.jersey.core.server;
+}
\ No newline at end of file
diff --git a/containers/grizzly2-servlet/pom.xml b/containers/grizzly2-servlet/pom.xml
index f45013e..ac5bc9b 100644
--- a/containers/grizzly2-servlet/pom.xml
+++ b/containers/grizzly2-servlet/pom.xml
@@ -78,6 +78,6 @@
                     <unpackBundle>true</unpackBundle>
                 </configuration>
              </plugin>
-         </plugins>
+        </plugins>
      </build>
 </project>
diff --git a/containers/grizzly2-servlet/src/main/java/module-info.java b/containers/grizzly2-servlet/src/main/java/module-info.java
new file mode 100644
index 0000000..005b3eb
--- /dev/null
+++ b/containers/grizzly2-servlet/src/main/java/module-info.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2022 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.grizzly2.servlet {
+    requires jakarta.ws.rs;
+    requires transitive jakarta.servlet;
+
+    requires grizzly.http.servlet;
+    requires grizzly.http.server;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.container.servlet.core;
+    requires org.glassfish.jersey.container.grizzly2.http;
+
+    exports org.glassfish.jersey.grizzly2.servlet;
+}
\ No newline at end of file
diff --git a/containers/jdk-http/pom.xml b/containers/jdk-http/pom.xml
index a9547d7..c5ebfa3 100644
--- a/containers/jdk-http/pom.xml
+++ b/containers/jdk-http/pom.xml
@@ -70,6 +70,23 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.container.jdk.http=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
 
         <resources>
@@ -83,5 +100,6 @@
     <properties>
         <!-- https://bugs.openjdk.java.net/browse/JDK-8211426 -->
         <surefire.security.argline>-Djdk.tls.client.protocols=TLSv1.2</surefire.security.argline>
+        <surefire.coverage.argline>--add-opens org.glassfish.jersey.container.jdk.http/org.glassfish.jersey.jdkhttp=ALL-UNNAMED --illegal-access=permit</surefire.coverage.argline>
     </properties>
 </project>
diff --git a/containers/jdk-http/src/main/java/module-info.java b/containers/jdk-http/src/main/java/module-info.java
new file mode 100644
index 0000000..cccbf13
--- /dev/null
+++ b/containers/jdk-http/src/main/java/module-info.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2022 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.jdk.http {
+    requires java.logging;
+
+    requires jdk.httpserver;
+
+    requires jakarta.ws.rs;
+    requires static jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+
+    exports org.glassfish.jersey.jdkhttp;
+    opens org.glassfish.jersey.jdkhttp;
+    opens org.glassfish.jersey.jdkhttp.internal;
+}
\ No newline at end of file
diff --git a/containers/jdk-http/src/test/java/org/glassfish/jersey/jdkhttp/JdkHttpsServerTest.java b/containers/jdk-http/src/test/java/org/glassfish/jersey/jdkhttp/JdkHttpsServerTest.java
index 2b912d8..7c2473e 100644
--- a/containers/jdk-http/src/test/java/org/glassfish/jersey/jdkhttp/JdkHttpsServerTest.java
+++ b/containers/jdk-http/src/test/java/org/glassfish/jersey/jdkhttp/JdkHttpsServerTest.java
@@ -55,14 +55,14 @@
  */
 public class JdkHttpsServerTest extends AbstractJdkHttpServerTester {
 
-    private static final String TRUSTSTORE_CLIENT_FILE = "./truststore_client";
+    private static final String TRUSTSTORE_CLIENT_FILE = "truststore_client";
     private static final String TRUSTSTORE_CLIENT_PWD = "asdfgh";
-    private static final String KEYSTORE_CLIENT_FILE = "./keystore_client";
+    private static final String KEYSTORE_CLIENT_FILE = "keystore_client";
     private static final String KEYSTORE_CLIENT_PWD = "asdfgh";
 
-    private static final String KEYSTORE_SERVER_FILE = "./keystore_server";
+    private static final String KEYSTORE_SERVER_FILE = "keystore_server";
     private static final String KEYSTORE_SERVER_PWD = "asdfgh";
-    private static final String TRUSTSTORE_SERVER_FILE = "./truststore_server";
+    private static final String TRUSTSTORE_SERVER_FILE = "truststore_server";
     private static final String TRUSTSTORE_SERVER_PWD = "asdfgh";
 
     private HttpServer server;
diff --git a/containers/jersey-servlet-core/pom.xml b/containers/jersey-servlet-core/pom.xml
index 57fa115..4725255 100644
--- a/containers/jersey-servlet-core/pom.xml
+++ b/containers/jersey-servlet-core/pom.xml
@@ -36,7 +36,7 @@
         <dependency>
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
-            <version>${servlet6.version}</version>
+<!--            <version>${servlet6.version}</version>-->
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/containers/jersey-servlet-core/src/main/java/module-info.java b/containers/jersey-servlet-core/src/main/java/module-info.java
new file mode 100644
index 0000000..ec6d02c
--- /dev/null
+++ b/containers/jersey-servlet-core/src/main/java/module-info.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2022 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 jakarta.persistence;
+    requires static jakarta.servlet;
+
+    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;
+}
\ No newline at end of file
diff --git a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java
index 5059c30..cec55cc 100644
--- a/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java
+++ b/containers/jersey-servlet-core/src/main/java/org/glassfish/jersey/servlet/internal/ResponseWriter.java
@@ -219,7 +219,7 @@
                         //noinspection deprecation
                         response.setStatus(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
                     } else {
-                        response.sendError(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), "Request failed.");
+                        response.sendError(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()/*, "Request failed."*/);
                     }
                 } catch (final IllegalStateException ex) {
                     // a race condition externally committing the response can still occur...
diff --git a/containers/jersey-servlet/src/main/java/module-info.java b/containers/jersey-servlet/src/main/java/module-info.java
new file mode 100644
index 0000000..39ece48
--- /dev/null
+++ b/containers/jersey-servlet/src/main/java/module-info.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2022 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 {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+    requires jakarta.servlet;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+    requires org.glassfish.jersey.container.servlet.core;
+
+    exports org.glassfish.jersey.servlet.async;
+    exports org.glassfish.jersey.servlet.init;
+}
\ No newline at end of file
diff --git a/containers/jetty-http/src/main/java/module-info.txt b/containers/jetty-http/src/main/java/module-info.txt
new file mode 100644
index 0000000..577ae4c
--- /dev/null
+++ b/containers/jetty-http/src/main/java/module-info.txt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2022 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.jetty.http {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+    requires jakarta.inject;
+    requires jakarta.servlet;
+    requires static jakarta.xml.bind;
+
+    requires org.eclipse.jetty.http;
+    requires org.eclipse.jetty.server;
+    requires org.eclipse.jetty.util;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+
+    exports org.glassfish.jersey.jetty;
+    opens org.glassfish.jersey.jetty;
+}
\ No newline at end of file
diff --git a/containers/jetty-servlet/src/main/java/module-info.txt b/containers/jetty-servlet/src/main/java/module-info.txt
new file mode 100644
index 0000000..271084c
--- /dev/null
+++ b/containers/jetty-servlet/src/main/java/module-info.txt
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2022 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.jetty.servlet {
+
+    requires jakarta.ws.rs;
+//    requires jakarta.servlet; //taken from jetty.servlet.api which is part of jetty server
+
+    requires org.eclipse.jetty.http;
+    requires org.eclipse.jetty.server;
+    requires org.eclipse.jetty.util;
+    requires org.eclipse.jetty.webapp;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.container.jetty.http;
+    requires static org.glassfish.jersey.container.servlet.core;
+
+    exports org.glassfish.jersey.jetty.servlet;
+}
\ 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
new file mode 100644
index 0000000..1206d4e
--- /dev/null
+++ b/containers/netty-http/src/main/java/module-info.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2022 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.netty.servlet {
+    requires java.logging;
+    requires jakarta.ws.rs;
+    requires io.netty.all;
+
+    requires static jakarta.xml.bind;
+
+    requires org.glassfish.jersey.netty.connector;
+    requires org.glassfish.jersey.core.server;
+    requires org.glassfish.jersey.core.common;
+
+    exports org.glassfish.jersey.netty.httpserver;
+    opens org.glassfish.jersey.netty.httpserver;
+}
\ No newline at end of file
diff --git a/containers/simple-http/pom.xml b/containers/simple-http/pom.xml
index 6f94d79..7051bfe 100644
--- a/containers/simple-http/pom.xml
+++ b/containers/simple-http/pom.xml
@@ -73,6 +73,23 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <inherited>true</inherited>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.container.simple.http=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
 
         <resources>
diff --git a/containers/simple-http/src/main/java/module-info.java b/containers/simple-http/src/main/java/module-info.java
new file mode 100644
index 0000000..ce9f100
--- /dev/null
+++ b/containers/simple-http/src/main/java/module-info.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2022 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.simple.http {
+    requires java.logging;
+
+    requires jakarta.inject;
+    requires jakarta.ws.rs;
+
+    requires static jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+
+    exports org.glassfish.jersey.simple;
+    opens org.glassfish.jersey.simple;
+}
\ 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 cc806c0..a217f44 100644
--- a/core-client/src/main/java/module-info.java
+++ b/core-client/src/main/java/module-info.java
@@ -14,7 +14,7 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-module org.glassfish.jersey.client {
+module org.glassfish.jersey.core.client {
     requires jakarta.annotation;
     requires jakarta.inject;
     requires java.logging;
diff --git a/core-common/src/main/java/module-info.java b/core-common/src/main/java/module-info.java
index a1d7a1d..1a608e7 100644
--- a/core-common/src/main/java/module-info.java
+++ b/core-common/src/main/java/module-info.java
@@ -33,7 +33,7 @@
     exports org.glassfish.jersey.internal.config;
     exports org.glassfish.jersey.internal.guava;
     exports org.glassfish.jersey.internal.inject;
-    exports org.glassfish.jersey.internal.jsr166 to org.glassfish.jersey.core.server;
+    exports org.glassfish.jersey.internal.jsr166;
     exports org.glassfish.jersey.internal.l10n;
     exports org.glassfish.jersey.internal.sonar;
     exports org.glassfish.jersey.internal.spi;
@@ -52,9 +52,12 @@
     exports org.glassfish.jersey.uri;
     exports org.glassfish.jersey.uri.internal;
 
+    exports org.glassfish.jersey.innate.spi to org.glassfish.jersey.media.multipart;
+
     opens org.glassfish.jersey.innate.spi to org.glassfish.jersey.media.multipart;
     opens org.glassfish.jersey.internal;
     opens org.glassfish.jersey.message.internal;
+    opens org.glassfish.jersey.spi;
 
     uses jakarta.ws.rs.core.Feature;
     uses jakarta.ws.rs.container.DynamicFeature;
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java b/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java
index 324b9a7..6383095 100644
--- a/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java
+++ b/core-common/src/main/java/org/glassfish/jersey/internal/util/ReflectionHelper.java
@@ -57,7 +57,6 @@
 import org.glassfish.jersey.internal.LocalizationMessages;
 import org.glassfish.jersey.internal.OsgiRegistry;
 import org.glassfish.jersey.internal.util.collection.ClassTypePair;
-
 import org.glassfish.jersey.internal.util.collection.LazyValue;
 import org.glassfish.jersey.internal.util.collection.Value;
 import org.glassfish.jersey.internal.util.collection.Values;
diff --git a/core-server/pom.xml b/core-server/pom.xml
index 43b94fe..a2c8817 100644
--- a/core-server/pom.xml
+++ b/core-server/pom.xml
@@ -175,8 +175,6 @@
                             <compilerArgs>
                                 <arg>--add-reads</arg>
                                 <arg>org.glassfish.jersey.core.server=ALL-UNNAMED</arg>
-                                <arg>--add-opens</arg>
-                                <arg>jakarta.xml.bind/jakarta.xml.bind=ALL-UNNAMED</arg>
                             </compilerArgs>
                         </configuration>
                     </execution>
diff --git a/core-server/src/main/java/module-info.java b/core-server/src/main/java/module-info.java
index c443c29..89fc8b8 100644
--- a/core-server/src/main/java/module-info.java
+++ b/core-server/src/main/java/module-info.java
@@ -29,12 +29,14 @@
 
     // jersey common modules
     requires org.glassfish.jersey.core.common;
-    requires org.glassfish.jersey.client;
+    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.wadl;
     exports org.glassfish.jersey.server.wadl.config;
     exports org.glassfish.jersey.server.wadl.processor;
@@ -46,6 +48,7 @@
     exports org.glassfish.jersey.server.internal.inject;
     exports org.glassfish.jersey.server.internal.monitoring;
     exports org.glassfish.jersey.server.internal.process;
+    exports org.glassfish.jersey.server.internal.scanning;
 
     uses org.glassfish.jersey.server.spi.ComponentProvider;
     uses org.glassfish.jersey.server.spi.ExternalRequestScope;
diff --git a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/AbstractFinderTest.java b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/AbstractFinderTest.java
index 575aa8e..42417f3 100644
--- a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/AbstractFinderTest.java
+++ b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/AbstractFinderTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -18,14 +18,31 @@
 
 public abstract class AbstractFinderTest {
 
-    String setUpJaxRsApiPath() {
-        final String classPath = System.getProperty("surefire.test.class.path");
+    private static final String SEPARATOR = System.getProperty("path.separator");
 
-        return parseEntries(classPath);
+    String setUpJaxRsApiPath() {
+
+        final String oldClassPath = System.getProperty("java.class.path");
+        final String sureFireClassPath = System.getProperty("surefire.test.class.path");
+        final String modulePath = System.getProperty("jdk.module.path");
+        final StringBuilder classPath = new StringBuilder();
+        if (oldClassPath != null) {
+            classPath.append(oldClassPath);
+            classPath.append(SEPARATOR);
+        }
+        if (sureFireClassPath != null) {
+            classPath.append(sureFireClassPath);
+            classPath.append(SEPARATOR);
+        }
+        if (modulePath != null) {
+            classPath.append(modulePath);
+        }
+
+        return parseEntries(classPath.toString());
     }
 
     private static String parseEntries(String fullPath) {
-        final String[] entries = fullPath.split(System.getProperty("path.separator"));
+        final String[] entries = fullPath.split(SEPARATOR);
         for (final String entry : entries) {
             if (entry.contains("jakarta.ws.rs-api")) {
                 return entry;
diff --git a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java
index 4f1f8b8..d2ee89c 100644
--- a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java
+++ b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/JarFileScannerTest.java
@@ -43,25 +43,6 @@
 
     @BeforeEach
     public void setUp() throws Exception {
-        final String separator = System.getProperty("path.separator");
-        final String oldClassPath = System.getProperty("java.class.path");
-        final String sureFireClassPath = System.getProperty("surefire.test.class.path");
-        final String modulePath = System.getProperty("jdk.module.path");
-        final StringBuilder classPath = new StringBuilder();
-        if (oldClassPath != null) {
-            classPath.append(oldClassPath);
-            classPath.append(separator);
-        }
-        if (sureFireClassPath != null) {
-            classPath.append(sureFireClassPath);
-            classPath.append(separator);
-        }
-        if (modulePath != null) {
-            classPath.append(modulePath);
-        }
-
-        final String[] entries = classPath.toString().split(separator);
-
         jaxRsApiPath = setUpJaxRsApiPath();
 
         if (jaxRsApiPath == null) {
diff --git a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java
index b7a420b..8beb6f7 100644
--- a/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java
+++ b/core-server/src/test/java/org/glassfish/jersey/server/internal/scanning/VFSSchemeResourceFinderTest.java
@@ -46,25 +46,6 @@
 
     @BeforeEach
     public void setUp() throws Exception {
-        final String separator = System.getProperty("path.separator");
-        final String oldClassPath = System.getProperty("java.class.path");
-        final String sureFireClassPath = System.getProperty("surefire.test.class.path");
-        final String modulePath = System.getProperty("jdk.module.path");
-        final StringBuilder classPath = new StringBuilder();
-        if (oldClassPath != null) {
-            classPath.append(oldClassPath);
-            classPath.append(separator);
-        }
-        if (sureFireClassPath != null) {
-            classPath.append(sureFireClassPath);
-            classPath.append(separator);
-        }
-        if (modulePath != null) {
-            classPath.append(modulePath);
-        }
-
-        final String[] entries = classPath.toString().split(separator);
-
         jaxRsApiPath = setUpJaxRsApiPath();
 
         if (jaxRsApiPath == null) {
diff --git a/ext/bean-validation/pom.xml b/ext/bean-validation/pom.xml
index 17ff4f3..408cafc 100644
--- a/ext/bean-validation/pom.xml
+++ b/ext/bean-validation/pom.xml
@@ -66,6 +66,23 @@
                     <unpackBundle>true</unpackBundle>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.ext.bean.validation=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
@@ -128,6 +145,12 @@
             <version>${project.version}</version>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>org.glassfish.jersey.inject</groupId>
+            <artifactId>jersey-hk2</artifactId>
+            <version>${project.version}</version>
+            <optional>true</optional>
+        </dependency>
 
 
         <!-- java-el related dependencies are in scope "provided" in hibernate-validator -->
diff --git a/ext/bean-validation/src/main/java/module-info.txt b/ext/bean-validation/src/main/java/module-info.txt
new file mode 100644
index 0000000..cb27c51
--- /dev/null
+++ b/ext/bean-validation/src/main/java/module-info.txt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2022 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.ext.bean.validation {
+
+    requires java.logging;
+
+    requires jakarta.annotation;
+    requires jakarta.validation;
+    requires jakarta.ws.rs;
+    requires static jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+
+    requires org.glassfish.jersey.ext.cdi1x;
+
+    exports org.glassfish.jersey.server.validation;
+    exports org.glassfish.jersey.server.validation.internal.hibernate;
+    opens org.glassfish.jersey.server.validation.internal.hibernate;
+}
\ 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 7dff641..5182102 100644
--- a/ext/cdi/jersey-cdi1x-transaction/pom.xml
+++ b/ext/cdi/jersey-cdi1x-transaction/pom.xml
@@ -54,6 +54,21 @@
             <version>${project.version}</version>
             <scope>provided</scope>
         </dependency>
+
+        <dependency>
+            <groupId>jakarta.enterprise</groupId>
+            <artifactId>jakarta.enterprise.cdi-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>jakarta.inject</groupId>
+            <artifactId>jakarta.inject-api</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>jakarta.transaction</groupId>
+            <artifactId>jakarta.transaction-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
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
deleted file mode 100644
index 0c04ef3..0000000
--- a/ext/cdi/jersey-cdi1x-transaction/src/main/java/module-info.java
+++ /dev/null
@@ -1,5 +0,0 @@
-module org.glassfish.jersey.ext.cdi1x {
-    requires jakarta.annotation;
-    requires jakarta.inject;
-    requires org.glassfish.jersey.core.server;
-}
\ 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 287d6e6..ebc038c 100644
--- a/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
+++ b/ext/cdi/jersey-cdi1x/src/main/java/module-info.java
@@ -1,8 +1,29 @@
+/*
+ * Copyright (c) 2022 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.ext.cdi1x {
 
     requires java.naming;
+    requires java.logging;
 
     requires transitive org.glassfish.jersey.core.server;
+    requires transitive org.glassfish.jersey.core.common;
     requires transitive org.glassfish.jersey.inject.hk2;
 
+    exports org.glassfish.jersey.ext.cdi1x.internal;
+    opens org.glassfish.jersey.ext.cdi1x.internal;
+
 }
\ 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
new file mode 100644
index 0000000..fee8173
--- /dev/null
+++ b/ext/entity-filtering/src/main/java/module-info.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2022 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.ext.entity.filtering {
+    requires java.logging;
+
+    requires jakarta.annotation;
+    requires jakarta.inject;
+    requires jakarta.ws.rs;
+    requires jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+
+    exports org.glassfish.jersey.message.filtering;
+    exports org.glassfish.jersey.message.filtering.spi;
+
+}
\ No newline at end of file
diff --git a/inject/cdi2-se/pom.xml b/inject/cdi2-se/pom.xml
index 44d5eed..71b987b 100644
--- a/inject/cdi2-se/pom.xml
+++ b/inject/cdi2-se/pom.xml
@@ -130,6 +130,24 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <inherited>false</inherited>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.inject.cdi2.se=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 </project>
\ No newline at end of file
diff --git a/inject/cdi2-se/src/main/java/module-info.java b/inject/cdi2-se/src/main/java/module-info.java
new file mode 100644
index 0000000..db7bc80
--- /dev/null
+++ b/inject/cdi2-se/src/main/java/module-info.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2022 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.inject.cdi2.se {
+    requires java.logging;
+
+    requires jakarta.annotation;
+    requires jakarta.inject;
+    requires jakarta.interceptor.api;
+    requires jakarta.ws.rs;
+
+    requires org.glassfish.jersey.core.common;
+
+    exports org.glassfish.jersey.inject.cdi.se;
+    exports org.glassfish.jersey.inject.cdi.se.injector;
+    exports org.glassfish.jersey.inject.cdi.se.bean;
+
+    opens org.glassfish.jersey.inject.cdi.se;
+}
\ No newline at end of file
diff --git a/inject/hk2/pom.xml b/inject/hk2/pom.xml
index 7178c5e..5663d57 100644
--- a/inject/hk2/pom.xml
+++ b/inject/hk2/pom.xml
@@ -74,6 +74,18 @@
             <artifactId>hamcrest</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.annotation</groupId>
+            <artifactId>jakarta.annotation-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>jakarta.activation</groupId>
+            <artifactId>jakarta.activation-api</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
@@ -129,62 +141,23 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.inject.hk2=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
-    <profiles>
-        <profile>
-            <id>jdk11+</id>
-            <!--
-                JDK 9 & 10 is unsupported (as well as <release>9</release>)
-                module-info for java.xml.bind is taken from JDK (lib/ct.sym/9-modules)
-                and it depends on java.activation which clashes with javax.activation
-            -->
-            <activation>
-                <jdk>[11,)</jdk>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>jakarta.xml.bind</groupId>
-                    <artifactId>jakarta.xml.bind-api</artifactId>
-                </dependency>
-                <dependency>
-                    <groupId>jakarta.annotation</groupId>
-                    <artifactId>jakarta.annotation-api</artifactId>
-                </dependency>
-                <dependency>
-                    <groupId>jakarta.activation</groupId>
-                    <artifactId>jakarta.activation-api</artifactId>
-                </dependency>
-            </dependencies>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-compiler-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>default-compile</id>
-                                <configuration>
-                                    <!-- compile everything to ensure module-info contains right entries -->
-                                    <release>11</release>
-                                    <compilerArgs>
-                                        <arg>--add-reads</arg>
-                                        <arg>org.glassfish.jersey.inject.hk2=ALL-UNNAMED</arg>
-                                    </compilerArgs>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-surefire-plugin</artifactId>
-                        <configuration>
-                            <forkMode>never</forkMode>
-                            <argLine>--add-reads org.glassfish.jersey.inject.hk2=ALL-UNNAMED --add-opens org.glassfish.jersey.inject.hk2=ALL-UNNAMED --illegal-access=permit</argLine>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
 </project>
diff --git a/inject/hk2/src/main/java/module-info.java b/inject/hk2/src/main/java/module-info.java
index 200d786..ee8cdcb 100644
--- a/inject/hk2/src/main/java/module-info.java
+++ b/inject/hk2/src/main/java/module-info.java
@@ -14,12 +14,16 @@
  * 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;
     requires jakarta.inject;
     requires java.logging;
 
+   //HK2 is not yet modularized
     requires org.glassfish.hk2.api;
     requires org.glassfish.hk2.locator;
     requires org.glassfish.hk2.utilities;
@@ -29,6 +33,6 @@
     exports org.glassfish.jersey.inject.hk2;
     opens org.glassfish.jersey.inject.hk2;
 
-    provides org.glassfish.jersey.internal.inject.InjectionManagerFactory
-            with org.glassfish.jersey.inject.hk2.Hk2InjectionManagerFactory;
+    provides InjectionManagerFactory
+            with Hk2InjectionManagerFactory;
 }
\ No newline at end of file
diff --git a/media/json-binding/src/main/java/module-info.java b/media/json-binding/src/main/java/module-info.java
new file mode 100644
index 0000000..c754b27
--- /dev/null
+++ b/media/json-binding/src/main/java/module-info.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2022 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.media.jsonb {
+    requires jakarta.annotation;
+    requires jakarta.ws.rs;
+    requires jakarta.json.bind;
+
+    requires org.glassfish.jersey.core.common;
+
+    exports org.glassfish.jersey.jsonb;
+
+}
\ No newline at end of file
diff --git a/media/json-jackson/src/main/java/module-info.txt b/media/json-jackson/src/main/java/module-info.txt
new file mode 100644
index 0000000..a4d66bc
--- /dev/null
+++ b/media/json-jackson/src/main/java/module-info.txt
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2022 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.media.json.jackson {
+    requires jakarta.annotation;
+    requires jakarta.inject;
+    requires jakarta.ws.rs;
+
+    requires com.fasterxml.jackson.core;
+    requires com.fasterxml.jackson.annotation;
+    requires com.fasterxml.jackson.databind;
+    requires com.fasterxml.jackson.module.jaxb;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+    requires org.glassfish.jersey.ext.entity.filtering;
+
+    exports org.glassfish.jersey.jackson;
+}
\ No newline at end of file
diff --git a/media/json-jettison/pom.xml b/media/json-jettison/pom.xml
index 93c6b79..4bc01d4 100644
--- a/media/json-jettison/pom.xml
+++ b/media/json-jettison/pom.xml
@@ -68,6 +68,24 @@
                     <unpackBundle>true</unpackBundle>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <inherited>false</inherited>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.media.json.jettison=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/media/json-jettison/src/main/java/module-info.java b/media/json-jettison/src/main/java/module-info.java
new file mode 100644
index 0000000..5b14ab1
--- /dev/null
+++ b/media/json-jettison/src/main/java/module-info.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2022 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.media.json.jettison {
+    requires java.logging;
+    requires java.xml;
+
+    requires jakarta.ws.rs;
+    requires static jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.media.jaxb;
+
+    exports org.glassfish.jersey.jettison;
+}
\ No newline at end of file
diff --git a/media/json-processing/pom.xml b/media/json-processing/pom.xml
index a57ab6d..48b4a51 100644
--- a/media/json-processing/pom.xml
+++ b/media/json-processing/pom.xml
@@ -64,6 +64,24 @@
                     <unpackBundle>true</unpackBundle>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <inherited>false</inherited>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.media.json.processing=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/media/json-processing/src/main/java/module-info.java b/media/json-processing/src/main/java/module-info.java
new file mode 100644
index 0000000..c786c91
--- /dev/null
+++ b/media/json-processing/src/main/java/module-info.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2022 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.media.json.processing {
+    requires jakarta.annotation;
+    requires jakarta.ws.rs;
+
+    requires org.glassfish.jersey.core.common;
+
+    exports org.glassfish.jersey.jsonp;
+    exports org.glassfish.jersey.jsonp.internal;
+}
\ 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
new file mode 100644
index 0000000..a17a256
--- /dev/null
+++ b/media/moxy/src/main/java/module-info.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2022 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.media.moxy {
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+    requires jakarta.annotation;
+    requires jakarta.inject;
+
+    requires static jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.ext.entity.filtering;
+
+    requires org.eclipse.persistence.core;
+    requires org.eclipse.persistence.moxy;
+
+    exports org.glassfish.jersey.moxy.xml;
+    exports org.glassfish.jersey.moxy.json;
+}
\ No newline at end of file
diff --git a/media/multipart/pom.xml b/media/multipart/pom.xml
index 79d4d86..bc81e6c 100644
--- a/media/multipart/pom.xml
+++ b/media/multipart/pom.xml
@@ -51,6 +51,24 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <inherited>true</inherited>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <inherited>false</inherited>
+                <executions>
+                    <execution>
+                        <id>default-compile</id>
+                        <configuration>
+                            <!-- compile everything to ensure module-info contains right entries -->
+                            <release>11</release>
+                            <compilerArgs>
+                                <arg>--add-reads</arg>
+                                <arg>org.glassfish.jersey.media.multipart=ALL-UNNAMED</arg>
+                            </compilerArgs>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/media/multipart/src/main/java/module-info.java b/media/multipart/src/main/java/module-info.java
new file mode 100644
index 0000000..35ae57e
--- /dev/null
+++ b/media/multipart/src/main/java/module-info.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2022 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.media.multipart {
+
+    requires java.logging;
+
+    requires jakarta.ws.rs;
+    requires jakarta.inject;
+
+    requires jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.server;
+    requires org.glassfish.jersey.core.client;
+
+    exports org.glassfish.jersey.media.multipart;
+    exports org.glassfish.jersey.media.multipart.internal;
+
+    opens org.glassfish.jersey.media.multipart.internal;
+}
\ No newline at end of file
diff --git a/media/sse/src/main/java/module-info.java b/media/sse/src/main/java/module-info.java
new file mode 100644
index 0000000..6f69e5f
--- /dev/null
+++ b/media/sse/src/main/java/module-info.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2022 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
+ */
+
+import org.glassfish.jersey.media.sse.internal.JerseySseEventSource;
+
+module org.glassfish.jersey.media.sse {
+    requires java.logging;
+
+    requires jakarta.annotation;
+    requires jakarta.inject;
+    requires jakarta.ws.rs;
+
+    requires jakarta.xml.bind;
+
+    requires org.glassfish.jersey.core.common;
+    requires org.glassfish.jersey.core.client;
+    requires org.glassfish.jersey.core.server;
+
+    exports org.glassfish.jersey.media.sse;
+    exports org.glassfish.jersey.media.sse.internal;
+
+    opens org.glassfish.jersey.media.sse;
+    opens org.glassfish.jersey.media.sse.internal;
+
+    provides jakarta.ws.rs.sse.SseEventSource.Builder with
+            JerseySseEventSource.Builder;
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 08b5cad..2e73038 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2090,6 +2090,12 @@
                 <scope>test</scope>
             </dependency>
             <dependency>
+                <groupId>org.hamcrest</groupId>
+                <artifactId>hamcrest</artifactId>
+                <version>${hamcrest.version}</version>
+                <scope>test</scope>
+            </dependency>
+            <dependency>
                 <groupId>org.jmockit</groupId>
                 <artifactId>jmockit</artifactId>
                 <version>${jmockit.version}</version>