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 2013/10/31 17:28:16 UTC

svn commit: r1537544 - /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java

Author: rmannibucau
Date: Thu Oct 31 16:28:15 2013
New Revision: 1537544

URL: http://svn.apache.org/r1537544
Log:
TOMEE-1069 undeploying rar resources correctly

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

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1537544&r1=1537543&r2=1537544&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Thu Oct 31 16:28:15 2013
@@ -1317,7 +1317,9 @@ public class Assembler extends Assembler
 
             logger.debug("Undeploying Applications");
             final Assembler assembler = this;
-            for (final AppInfo appInfo : assembler.getDeployedApplications()) {
+            final List<AppInfo> deployedApps = new ArrayList<AppInfo>(assembler.getDeployedApplications());
+            Collections.reverse(deployedApps); // if an app relies on the previous one it surely relies on it too at undeploy time
+            for (final AppInfo appInfo : deployedApps) {
                 try {
                     assembler.destroyApplication(appInfo.path);
                 } catch (UndeployException e) {
@@ -1758,6 +1760,18 @@ public class Assembler extends Assembler
                     logger.warning("can't unbind resource '{0}'", id);
                 }
             }
+            for (final ConnectorInfo connector : appInfo.connectors) {
+                if (connector.resourceAdapter == null || connector.resourceAdapter.id == null) {
+                    continue;
+                }
+
+                final String name = OPENEJB_RESOURCE_JNDI_PREFIX + connector.resourceAdapter.id;
+                try {
+                    destroyLookedUpResource(globalContext, connector.resourceAdapter.id, name);
+                } catch (final NamingException e) {
+                    logger.warning("can't unbind resource '{0}'", connector);
+                }
+            }
 
             containerSystem.removeAppContext(appInfo.appId);