Fix loading persistence unit from wrong classloader

Signed-off-by: Arjan Tijms <arjan.tijms@gmail.com>
diff --git a/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/PersistenceUnitLoader.java b/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/PersistenceUnitLoader.java
index 1f0651f..2645403 100644
--- a/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/PersistenceUnitLoader.java
+++ b/appserver/persistence/jpa-container/src/main/java/org/glassfish/persistence/jpa/PersistenceUnitLoader.java
@@ -1,4 +1,5 @@
 /*
+ * Copyright (c) 2022 Contributors to the Eclipse Foundation.
  * Copyright (c) 2008, 2020 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -108,7 +109,7 @@
      */
     private SchemaGenerationProcessor schemaGenerationProcessor;
 
-    public PersistenceUnitLoader(PersistenceUnitDescriptor puToInstatntiate, ProviderContainerContractInfo providerContainerContractInfo) {
+    public PersistenceUnitLoader(PersistenceUnitDescriptor persistenceUnitToInstantiate, ProviderContainerContractInfo providerContainerContractInfo) {
         this.providerContainerContractInfo = providerContainerContractInfo;
 
         // A hack to work around EclipseLink issue
@@ -118,7 +119,13 @@
         // set the system property required by EclipseLink before we load it.
         setSystemPropertyToEnableDoPrivilegedInEclipseLink();
 
-        entityManagerFactory = loadPU(puToInstatntiate);
+        ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader();
+        Thread.currentThread().setContextClassLoader(providerContainerContractInfo.getClassLoader());
+        try {
+            entityManagerFactory = loadPU(persistenceUnitToInstantiate);
+        } finally {
+            Thread.currentThread().setContextClassLoader(oldClassLoader);
+        }
     }
 
     /**