Author: rmannibucau
Date: Tue Aug  7 15:41:06 2012
New Revision: 1370324

URL: http://svn.apache.org/viewvc?rev=1370324&view=rev
Log:
close emf before datasource since some provider still use it (last dump 
behavior)

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1370324&r1=1370323&r2=1370324&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Tue Aug  7 15:41:06 2012
@@ -1358,6 +1358,22 @@ public class Assembler extends Assembler
             }
         }
 
+        // destroy PUs before resources since the JPA provider can use 
datasources
+        for (PersistenceUnitInfo unitInfo : appInfo.persistenceUnits) {
+            try {
+                Object object = 
globalContext.lookup(PERSISTENCE_UNIT_NAMING_CONTEXT + unitInfo.id);
+                globalContext.unbind(PERSISTENCE_UNIT_NAMING_CONTEXT + 
unitInfo.id);
+
+                // close EMF so all resources are released
+                ReloadableEntityManagerFactory remf = 
((ReloadableEntityManagerFactory) object);
+                remf.close();
+                persistenceClassLoaderHandler.destroy(unitInfo.id);
+                remf.unregister();
+            } catch (Throwable t) {
+                undeployException.getCauses().add(new 
Exception("persistence-unit: " + unitInfo.id + ": " + t.getMessage(), t));
+            }
+        }
+
         final Context ic = containerSystem.getJNDIContext();
         for (String id : appInfo.resourceIds) {
             final String name = OPENEJB_RESOURCE_JNDI_PREFIX + id;
@@ -1376,21 +1392,6 @@ public class Assembler extends Assembler
             }
         }
 
-        for (PersistenceUnitInfo unitInfo : appInfo.persistenceUnits) {
-            try {
-                Object object = 
globalContext.lookup(PERSISTENCE_UNIT_NAMING_CONTEXT + unitInfo.id);
-                globalContext.unbind(PERSISTENCE_UNIT_NAMING_CONTEXT + 
unitInfo.id);
-
-                // close EMF so all resources are released
-                ReloadableEntityManagerFactory remf = 
((ReloadableEntityManagerFactory) object);
-                remf.close();
-                persistenceClassLoaderHandler.destroy(unitInfo.id);
-                remf.unregister();
-            } catch (Throwable t) {
-                undeployException.getCauses().add(new 
Exception("persistence-unit: " + unitInfo.id + ": " + t.getMessage(), t));
-            }
-        }
-
         containerSystem.removeAppContext(appInfo.appId);
 
         ClassLoaderUtil.destroyClassLoader(appInfo.path);


Reply via email to