From: markt Date: Mon, 10 Dec 2007 22:24:40 +0000 (+0000) Subject: Fix bug 44041. A small sync is required to prevent attempts to load the same class... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=775d5f4334bc23d0f334de0b9087464131434afe;p=tomcat7.0 Fix bug 44041. A small sync is required to prevent attempts to load the same class twice. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@603074 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/loader/WebappClassLoader.java b/java/org/apache/catalina/loader/WebappClassLoader.java index dbc28650e..1b7b70379 100644 --- a/java/org/apache/catalina/loader/WebappClassLoader.java +++ b/java/org/apache/catalina/loader/WebappClassLoader.java @@ -167,6 +167,11 @@ public class WebappClassLoader */ boolean antiJARLocking = false; + /** + * Lock to prevent attempts to load duplicate classes from external + * repositories. + */ + private Object lock = new Object(); // ----------------------------------------------------------- Constructors @@ -883,7 +888,9 @@ public class WebappClassLoader } if ((clazz == null) && hasExternalRepositories) { try { - clazz = super.findClass(name); + synchronized (lock) { + clazz = super.findClass(name); + } } catch(AccessControlException ace) { throw new ClassNotFoundException(name, ace); } catch (RuntimeException e) {