Move towards supported JAXBContextFactory provider

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/jaxb-ri/bundles/runtime/src/main/java/module-info.java b/jaxb-ri/bundles/runtime/src/main/java/module-info.java
index ab107f6..fdf4620 100644
--- a/jaxb-ri/bundles/runtime/src/main/java/module-info.java
+++ b/jaxb-ri/bundles/runtime/src/main/java/module-info.java
@@ -41,4 +41,6 @@
     opens org.glassfish.jaxb.runtime.v2.schemagen.xmlschema to jakarta.xml.bind;
     opens org.glassfish.jaxb.runtime.v2 to jakarta.xml.bind;
 
+    provides jakarta.xml.bind.JAXBContextFactory with org.glassfish.jaxb.runtime.v2.JAXBContextFactory;
+
 }
diff --git a/jaxb-ri/runtime/impl/pom.xml b/jaxb-ri/runtime/impl/pom.xml
index 142f10e..37f0a2f 100644
--- a/jaxb-ri/runtime/impl/pom.xml
+++ b/jaxb-ri/runtime/impl/pom.xml
@@ -33,6 +33,7 @@
     <properties>
         <spotbugs.exclude>${project.basedir}/exclude-runtime.xml</spotbugs.exclude>
         <argLine>
+            --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2=jakarta.xml.bind
             --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2=org.glassfish.jaxb.core
             --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2.schemagen=org.glassfish.jaxb.core
             --add-opens java.base/java.lang=org.glassfish.jaxb.runtime
diff --git a/jaxb-ri/runtime/impl/src/main/java/module-info.java b/jaxb-ri/runtime/impl/src/main/java/module-info.java
index f845343..9f010b1 100644
--- a/jaxb-ri/runtime/impl/src/main/java/module-info.java
+++ b/jaxb-ri/runtime/impl/src/main/java/module-info.java
@@ -45,12 +45,6 @@
     opens org.glassfish.jaxb.runtime.v2.schemagen to jakarta.xml.bind;
     opens org.glassfish.jaxb.runtime.v2.schemagen.xmlschema to jakarta.xml.bind;
 
-    // The API is going to load us via reflection if no other implementation is found sooner.
-    // Note that it is NOT mandatory for the jakarta.xml.bind.JAXBContext
-    // implementation to implement that interface (v2.ContextFactory does not do that),
-    // so we cannot use provides jakarta.xml.bind.JAXBContext with v2.ContextFactory here
-    // and we have to rely on accessibility of our META-INF/services/jakarta.xml.bind.JAXBContext
-    // resource by the API
-    opens org.glassfish.jaxb.runtime.v2 to jakarta.xml.bind;
+    provides jakarta.xml.bind.JAXBContextFactory with org.glassfish.jaxb.runtime.v2.JAXBContextFactory;
 
 }
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/JAXBContextFactory.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/JAXBContextFactory.java
index 5de6d4d..f1d2eae 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/JAXBContextFactory.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/JAXBContextFactory.java
@@ -23,6 +23,13 @@
  */
 public class JAXBContextFactory implements jakarta.xml.bind.JAXBContextFactory {
 
+
+    /**
+     * Default constructor.
+     */
+    public JAXBContextFactory() {
+    }
+
     /**
      * Creates JAXB context.
      *
@@ -32,6 +39,7 @@
      * @throws JAXBException on any error.
      */
     @Override
+    @SuppressWarnings({"unchecked"})
     public JAXBContext createContext(Class<?>[] classesToBeBound, Map<String, ?> properties) throws JAXBException {
         return ContextFactory.createContext(classesToBeBound, (Map<String, Object>) properties);
     }
@@ -45,6 +53,7 @@
      * @throws JAXBException on any error.
      */
     @Override
+    @SuppressWarnings({"unchecked"})
     public JAXBContext createContext(String contextPath, ClassLoader classLoader, Map<String, ?> properties) throws JAXBException {
         return ContextFactory.createContext(contextPath, classLoader, (Map<String, Object>) properties);
     }
diff --git a/jaxb-ri/runtime/impl/src/main/resources/META-INF/services/jakarta.xml.bind.JAXBContext b/jaxb-ri/runtime/impl/src/main/resources/META-INF/services/jakarta.xml.bind.JAXBContext
deleted file mode 100644
index 239c6b2..0000000
--- a/jaxb-ri/runtime/impl/src/main/resources/META-INF/services/jakarta.xml.bind.JAXBContext
+++ /dev/null
@@ -1 +0,0 @@
-org.glassfish.jaxb.runtime.v2.ContextFactory
diff --git a/jaxb-ri/runtime/impl/src/main/resources/META-INF/services/jakarta.xml.bind.JAXBContextFactory b/jaxb-ri/runtime/impl/src/main/resources/META-INF/services/jakarta.xml.bind.JAXBContextFactory
new file mode 100644
index 0000000..27c7ad5
--- /dev/null
+++ b/jaxb-ri/runtime/impl/src/main/resources/META-INF/services/jakarta.xml.bind.JAXBContextFactory
@@ -0,0 +1 @@
+org.glassfish.jaxb.runtime.v2.JAXBContextFactory