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);