You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by st...@apache.org on 2015/05/17 13:20:55 UTC

[09/37] tomee git commit: TOMEE-1568 support overriding of a failed deployment in tomcat webappdeployer

TOMEE-1568 support overriding of a failed deployment in tomcat webappdeployer


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/b7eb5b01
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/b7eb5b01
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/b7eb5b01

Branch: refs/heads/master
Commit: b7eb5b01b07c16efc79c076006b20a7e214eb39e
Parents: 1959954
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Wed Apr 29 22:59:17 2015 +0200
Committer: Mark Struberg <st...@apache.org>
Committed: Mon May 4 19:00:19 2015 +0200

----------------------------------------------------------------------
 .../org/apache/openejb/assembler/DeployerEjb.java  |  7 +++++--
 .../apache/tomee/catalina/TomcatWebAppBuilder.java | 17 ++++++++++++++---
 2 files changed, 19 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/b7eb5b01/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
index 908d14b..bc4d354 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/DeployerEjb.java
@@ -176,8 +176,11 @@ public class DeployerEjb implements Deployer {
             try {
                 final AppInfo appInfo = SystemInstance.get().getComponent(WebAppDeployer.class)
                         .deploy(host, contextRoot(properties, file.getAbsolutePath()), file);
-                saveIfNeeded(properties, file, appInfo);
-                return appInfo;
+                if (appInfo != null) {
+                    saveIfNeeded(properties, file, appInfo);
+                    return appInfo;
+                }
+                throw new OpenEJBException("can't deploy " + file.getAbsolutePath());
             } finally {
                 AUTO_DEPLOY.remove();
             }

http://git-wip-us.apache.org/repos/asf/tomee/blob/b7eb5b01/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index 24a31e0..2ef7d8c 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -466,7 +466,7 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
                 }
             }
 
-            if (getContextInfo(webApp.host, webApp.contextRoot) != null) {
+            if (isAlreadyDeployed(webApp)) {
                 continue;
             }
 
@@ -515,7 +515,7 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
             appParam.setValue(webApp.moduleId);
             standardContext.addApplicationParameter(appParam);
 
-            if (getContextInfo(webApp.host, webApp.contextRoot) == null) {
+            if (!isAlreadyDeployed(webApp)) {
                 if (standardContext.getPath() == null) {
                     if (webApp.contextRoot != null && webApp.contextRoot.startsWith("/")) {
                         standardContext.setPath(webApp.contextRoot);
@@ -542,7 +542,7 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
                     webApp.contextRoot = "";
                 }
 
-                if (getContextInfo(webApp.host, webApp.contextRoot) != null) { // possible because of the previous renaming
+                if (isAlreadyDeployed(webApp)) { // possible because of the previous renaming
                     continue;
                 }
 
@@ -580,6 +580,17 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
         }
     }
 
+    private boolean isAlreadyDeployed(final WebAppInfo webApp) {
+        final ContextInfo contextInfo = getContextInfo(webApp.host, webApp.contextRoot);
+        if (contextInfo != null && contextInfo.standardContext != null && contextInfo.standardContext.getState() == LifecycleState.FAILED) {
+            synchronized (this) {
+                infos.remove(getId(webApp.host, webApp.contextRoot));
+            }
+            return false;
+        }
+        return contextInfo != null;
+    }
+
     private static boolean isParent(final ClassLoader parent, final ClassLoader child) {
         ClassLoader current = child;
         while (current != null) {