You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2013/03/09 02:06:07 UTC
svn commit: r1454631 -
/tomee/tomee/branches/tomee-1.5.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Author: dblevins
Date: Sat Mar 9 01:06:06 2013
New Revision: 1454631
URL: http://svn.apache.org/r1454631
Log:
LinkageError protection
Modified:
tomee/tomee/branches/tomee-1.5.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
Modified: tomee/tomee/branches/tomee-1.5.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.5.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java?rev=1454631&r1=1454630&r2=1454631&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.5.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java (original)
+++ tomee/tomee/branches/tomee-1.5.x/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/LazyStopWebappClassLoader.java Sat Mar 9 01:06:06 2013
@@ -78,7 +78,7 @@ public class LazyStopWebappClassLoader e
final ClassLoader old = system;
system = NoClassClassLoader.INSTANCE;
try {
- return super.loadClass(name);
+ return _loadClass(name);
} finally {
system = old;
}
@@ -88,14 +88,30 @@ public class LazyStopWebappClassLoader e
// avoid to redefine classes from server in this classloader is it not already loaded
if (URLClassLoaderFirst.shouldSkip(name)) {
try {
- return OpenEJB.class.getClassLoader().loadClass(name);
+ return load(OpenEJB.class.getClassLoader(), name);
} catch (ClassNotFoundException e) {
- return super.loadClass(name);
+ return _loadClass(name);
} catch (NoClassDefFoundError ncdfe) {
- return super.loadClass(name);
+ return _loadClass(name);
}
}
- return super.loadClass(name);
+ return _loadClass(name);
+ }
+
+ private Class<?> _loadClass(String name) throws ClassNotFoundException {
+ try {
+ return super.loadClass(name);
+ } catch (LinkageError e) {
+ return super.loadClass(name);
+ }
+ }
+
+ private static Class<?> load(final ClassLoader loader, final String name) throws ClassNotFoundException {
+ try {
+ return loader.loadClass(name);
+ } catch (LinkageError e) {
+ return loader.loadClass(name);
+ }
}
public void internalStop() throws LifecycleException {