+1 for that...

Peter


Am 11.12.2007 um 01:53 schrieb Filip Hanik - Dev Lists:

if String objects are kept in a constants pool, then one would

                   synchronized (name) {
                       clazz = super.findClass(name);
                   }

to allow concurrent loading of different classes,

Filip

[EMAIL PROTECTED] wrote:
Author: markt
Date: Mon Dec 10 14:24:40 2007
New Revision: 603074

URL: http://svn.apache.org/viewvc?rev=603074&view=rev
Log:
Fix bug 44041. A small sync is required to prevent attempts to load the same class twice.

Modified:
tomcat/trunk/java/org/apache/catalina/loader/ WebappClassLoader.java

Modified: tomcat/trunk/java/org/apache/catalina/loader/ WebappClassLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/ catalina/loader/WebappClassLoader.java? rev=603074&r1=603073&r2=603074&view=diff ===================================================================== ========= --- tomcat/trunk/java/org/apache/catalina/loader/ WebappClassLoader.java (original) +++ tomcat/trunk/java/org/apache/catalina/loader/ WebappClassLoader.java Mon Dec 10 14:24:40 2007
@@ -167,6 +167,11 @@
      */
     boolean antiJARLocking = false;      +    /**
+ * Lock to prevent attempts to load duplicate classes from external
+     * repositories.
+     */
+    private Object lock = new Object();
// ----------------------------------------------------------- Constructors
 @@ -883,7 +888,9 @@
             }
             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) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to