You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/04/18 09:25:57 UTC
svn commit: r1327400 -
/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
Author: rmannibucau
Date: Wed Apr 18 07:25:57 2012
New Revision: 1327400
URL: http://svn.apache.org/viewvc?rev=1327400&view=rev
Log:
OPENEJB-1823 destroy the resources consistently when it is undeployed with the application
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=1327400&r1=1327399&r2=1327400&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 Wed Apr 18 07:25:57 2012
@@ -1084,31 +1084,7 @@ public class Assembler extends Assembler
while (namingEnumeration != null && namingEnumeration.hasMoreElements()) {
Binding binding = namingEnumeration.nextElement();
Object object = binding.getObject();
- if (object instanceof ResourceAdapter) {
- ResourceAdapter resourceAdapter = (ResourceAdapter) object;
- try {
- logger.info("Stopping ResourceAdapter: " + binding.getName());
-
- if (logger.isDebugEnabled()) {
- logger.debug("Stopping ResourceAdapter: " + binding.getClassName());
- }
-
- resourceAdapter.stop();
- } catch (Throwable t) {
- logger.fatal("ResourceAdapter Shutdown Failed: " + binding.getName(), t);
- }
- } else if (object instanceof org.apache.commons.dbcp.BasicDataSource) {
- logger.info("Closing DataSource: " + binding.getName());
-
- try {
- ((org.apache.commons.dbcp.BasicDataSource) object).close();
- } catch (Throwable t) {
- //Ignore
- }
-
- } else if (logger.isDebugEnabled()) {
- logger.debug("Not processing resource on destroy: " + binding.getClassName());
- }
+ destroyResource(binding.getName(), binding.getClassName(), object);
}
SystemInstance.get().removeComponent(OpenEjbConfiguration.class);
@@ -1118,6 +1094,34 @@ public class Assembler extends Assembler
SystemInstance.reset();
}
+ private void destroyResource(final String name, final String className, final Object object) {
+ if (object instanceof ResourceAdapter) {
+ ResourceAdapter resourceAdapter = (ResourceAdapter) object;
+ try {
+ logger.info("Stopping ResourceAdapter: " + name);
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Stopping ResourceAdapter: " + className);
+ }
+
+ resourceAdapter.stop();
+ } catch (Throwable t) {
+ logger.fatal("ResourceAdapter Shutdown Failed: " + name, t);
+ }
+ } else if (object instanceof org.apache.commons.dbcp.BasicDataSource) {
+ logger.info("Closing DataSource: " + name);
+
+ try {
+ ((org.apache.commons.dbcp.BasicDataSource) object).close();
+ } catch (Throwable t) {
+ //Ignore
+ }
+
+ } else if (logger.isDebugEnabled()) {
+ logger.debug("Not processing resource on destroy: " + className);
+ }
+ }
+
public synchronized void destroyApplication(String filePath) throws UndeployException, NoSuchApplicationException {
AppInfo appInfo = deployedApplications.remove(filePath);
if (appInfo == null) {
@@ -1333,9 +1337,19 @@ public class Assembler extends Assembler
}
}
+ final Context ic = containerSystem.getJNDIContext();
for (String id : appInfo.resourceIds) {
+ final String name = OPENEJB_RESOURCE_JNDI_PREFIX + id;
try {
- containerSystem.getJNDIContext().unbind(OPENEJB_RESOURCE_JNDI_PREFIX + id);
+ final Object object = ic.lookup(name);
+ final String clazz;
+ if (object == null) { // should it be possible?
+ clazz = "?";
+ } else {
+ clazz = object.getClass().getName();
+ }
+ destroyResource(id, clazz, object);
+ ic.unbind(name);
} catch (NamingException e) {
logger.warning("can't unbind resource '{0}'", id);
}