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