Author: rmannibucau
Date: Mon Jun 11 23:16:53 2012
New Revision: 1349067

URL: http://svn.apache.org/viewvc?rev=1349067&view=rev
Log:
when reloading a context keeping the default stop, we'll need to invertigate it 
since it will probably fail with eclipselink

Added:
    
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappLoader.java
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=1349067&r1=1349066&r2=1349067&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
 Mon Jun 11 23:16:53 2012
@@ -7,6 +7,8 @@ import org.apache.openejb.loader.SystemI
 public class LazyStopWebappClassLoader extends WebappClassLoader {
     public static final String TOMEE_WEBAPP_FIRST = "tomee.webapp-first";
 
+    private boolean restarting;
+
     public LazyStopWebappClassLoader() {
         setDelegate(!SystemInstance.get().getOptions().get(TOMEE_WEBAPP_FIRST, 
true));
     }
@@ -17,10 +19,22 @@ public class LazyStopWebappClassLoader e
 
     @Override
     public void stop() throws LifecycleException {
-        // no-op: in our destroyapplication method we need a valid classloader 
to TomcatWebAppBuilder.afterStop()
+        // in our destroyapplication method we need a valid classloader to 
TomcatWebAppBuilder.afterStop()
+        // exception: restarting we really stop it for the moment
+        if (restarting) {
+            internalStop();
+        }
     }
 
     public void internalStop() throws LifecycleException {
         super.stop();
     }
+
+    public void restarting() {
+        restarting = true;
+    }
+
+    public void restarted() {
+        restarting = false;
+    }
 }

Added: 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappLoader.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappLoader.java?rev=1349067&view=auto
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappLoader.java
 (added)
+++ 
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappLoader.java
 Mon Jun 11 23:16:53 2012
@@ -0,0 +1,29 @@
+package org.apache.tomee.catalina;
+
+import org.apache.catalina.loader.WebappLoader;
+
+public class LazyStopWebappLoader extends WebappLoader {
+    public LazyStopWebappLoader(final ClassLoader parentClassLoader) {
+        super(parentClassLoader);
+    }
+
+    public LazyStopWebappLoader() {
+        // no-op
+    }
+
+    @Override
+    public void backgroundProcess() {
+        final ClassLoader classloader = super.getClassLoader();
+        if (classloader instanceof LazyStopWebappClassLoader) {
+            final LazyStopWebappClassLoader lazyStopWebappClassLoader = 
(LazyStopWebappClassLoader) classloader;
+            lazyStopWebappClassLoader.restarting();
+            try {
+                super.backgroundProcess();
+            } finally {
+                lazyStopWebappClassLoader.restarted();
+            }
+        } else {
+            super.backgroundProcess();
+        }
+    }
+}

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=1349067&r1=1349066&r2=1349067&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
 Mon Jun 11 23:16:53 2012
@@ -605,7 +605,7 @@ public class TomcatWebAppBuilder impleme
         // to avoid classnotfound in @PreDestoy or destroyApplication()
         Loader loader = standardContext.getLoader();
         if (!(loader instanceof TomEEWebappLoader)) {
-            loader = new WebappLoader(standardContext.getParentClassLoader());
+            loader = new 
LazyStopWebappLoader(standardContext.getParentClassLoader());
             loader.setDelegate(standardContext.getDelegate());
             ((WebappLoader) 
loader).setLoaderClass(LazyStopWebappClassLoader.class.getName());
         }


Reply via email to