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 {