remm 2002/08/09 03:01:48 Modified: catalina/src/share/org/apache/catalina/loader WebappClassLoader.java Log: - Attempt to fix 11307. Please test, there could be regressions and thread safety problems, and I have no way to properly test this. - Sync on the CL itself instead of the ResourceEntry, which caused problems because of locking which could occur in the superclass. - Thanks to Scott Ganyo <apache at ganyo.com> for the report and the explanation. Revision Changes Path 1.45 +16 -14 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java Index: WebappClassLoader.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- WebappClassLoader.java 6 Aug 2002 00:16:59 -0000 1.44 +++ WebappClassLoader.java 9 Aug 2002 10:01:48 -0000 1.45 @@ -1654,18 +1654,20 @@ } - synchronized (entry) { - // Since all threads use the same ResourceEntry instance, it is - // the one which will contain the class - if (entry.loadedClass == null) { - clazz = defineClass(name, entry.binaryContent, 0, - entry.binaryContent.length, codeSource); - entry.loadedClass = clazz; - } else { - clazz = entry.loadedClass; + if (entry.loadedClass == null) { + synchronized (this) { + if (entry.loadedClass == null) { + clazz = defineClass(name, entry.binaryContent, 0, + entry.binaryContent.length, + codeSource); + entry.loadedClass = clazz; + } else { + clazz = entry.loadedClass; + } } + } else { + clazz = entry.loadedClass; } - return clazz;
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>