Author: rmannibucau
Date: Tue Jun 19 19:26:42 2012
New Revision: 1351808

URL: http://svn.apache.org/viewvc?rev=1351808&view=rev
Log:
if restarting don't undeploy the webapp

Modified:
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1351808&r1=1351807&r2=1351808&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
 Tue Jun 19 19:26:42 2012
@@ -39,4 +39,8 @@ public class LazyStopWebappClassLoader e
     public void restarted() {
         restarting = false;
     }
+
+    public boolean isRestarting() {
+        return restarting;
+    }
 }

Modified: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1351808&r1=1351807&r2=1351808&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
 Tue Jun 19 19:26:42 2012
@@ -830,6 +830,12 @@ public class TomcatWebAppBuilder impleme
 
     private static boolean undeploy(final StandardContext standardContext, 
final Container host) {
         final Container child = host.findChild(standardContext.getName());
+        final LazyStopWebappClassLoader lazyStopWebappClassLoader = 
lazyClassLoader(child);
+
+        if (lazyStopWebappClassLoader != null && 
lazyStopWebappClassLoader.isRestarting()) { // skip undeployment
+            return true;
+        }
+
         if (child != null) {
             host.removeChild(standardContext);
             return true;
@@ -837,6 +843,20 @@ public class TomcatWebAppBuilder impleme
         return false;
     }
 
+    private static LazyStopWebappClassLoader lazyClassLoader(final Container 
child) {
+        final Loader loader = child.getLoader();
+        if (loader == null || !(loader instanceof LazyStopLoader)) {
+            return null;
+        }
+
+        final ClassLoader old = ((LazyStopLoader) loader).getStopClassLoader();
+        if (old == null || !(old instanceof LazyStopWebappClassLoader)) {
+            return null;
+        }
+
+        return (LazyStopWebappClassLoader) old;
+    }
+
     private JndiEncBuilder getJndiBuilder(final ClassLoader classLoader, final 
WebAppInfo webAppInfo, final Set<Injection> injections) throws OpenEJBException 
{
         return new JndiEncBuilder(webAppInfo.jndiEnc, injections, 
webAppInfo.moduleId, "Bean", null, webAppInfo.uniqueId, classLoader);
     }
@@ -1099,15 +1119,12 @@ public class TomcatWebAppBuilder impleme
             }
         }
 
-        final Loader loader = standardContext.getLoader();
-        if (loader != null && loader instanceof LazyStopLoader) {
-            final ClassLoader old = ((LazyStopLoader) 
loader).getStopClassLoader();
-            if (old != null && old instanceof LazyStopWebappClassLoader) {
-                try {
-                    ((LazyStopWebappClassLoader) old).internalStop();
-                } catch (LifecycleException e) {
-                    logger.error("error stopping classloader of webapp " + 
standardContext.getName(), e);
-                }
+        final LazyStopWebappClassLoader old = lazyClassLoader(standardContext);
+        if (old != null) {
+            try {
+                old.internalStop();
+            } catch (LifecycleException e) {
+                logger.error("error stopping classloader of webapp " + 
standardContext.getName(), e);
             }
         }
         removeContextInfo(standardContext);


Reply via email to