You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2010/02/08 19:28:34 UTC

DO NOT REPLY [Bug 48694] WebappClassLoader deadlock if web application uses it's own classloader

https://issues.apache.org/bugzilla/show_bug.cgi?id=48694

--- Comment #1 from Mark Thomas <ma...@apache.org> 2010-02-08 10:28:29 UTC ---
I'd like to avoid making WebappClassLoader#loadClass synchronized if at all
possible. Could you try this patch instead?

Index: java/org/apache/catalina/loader/WebappClassLoader.java
===================================================================
--- java/org/apache/catalina/loader/WebappClassLoader.java    (revision 907621)
+++ java/org/apache/catalina/loader/WebappClassLoader.java    (working copy)
@@ -989,9 +989,7 @@
             }
             if ((clazz == null) && hasExternalRepositories) {
                 try {
-                    synchronized (this) {
-                        clazz = super.findClass(name);
-                    }
+                    clazz = super.findClass(name);
                 } catch(AccessControlException ace) {
                     log.warn("WebappClassLoader.findClassInternal(" + name
                             + ") security exception: " + ace.getMessage(),
ace);
@@ -2273,7 +2271,7 @@
         if (clazz != null)
             return clazz;

-        synchronized (this) {
+        synchronized (name.intern()) {
             clazz = entry.loadedClass;
             if (clazz != null)
                 return clazz;

Thanks,

Mark

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org