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