Attaching a patch that fixes an intermittent error (that occurs when an
attempt is made to define a package that has already been defined). I
noticed this when running a multi-threaded test.

----- Root Cause -----
java.lang.IllegalArgumentException: Servlet22.S05_Request
        at java.lang.ClassLoader.definePackage(ClassLoader.java:1151)
        at
java.net.URLClassLoader.definePackage(URLClassLoader.java:310)
        at
org.apache.catalina.loader.WebappClassLoader.findClassInternal(Webapp
ClassLoader.java:1647)
        at
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoa
der.java:970)
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1409)
        at
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoa
der.java:1287)
        at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
java:870)
        at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.jav
a:658)

 Arvind
Index: WebappClassLoader.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
retrieving revision 1.15.2.11
diff -u -r1.15.2.11 WebappClassLoader.java
--- WebappClassLoader.java      18 Feb 2002 05:22:07 -0000      1.15.2.11
+++ WebappClassLoader.java      18 Jul 2002 22:34:45 -0000
@@ -1599,15 +1599,18 @@
 
         if (packageName != null) {
 
-            pkg = getPackage(packageName);
+            synchronized (loaderPC) {
+                pkg = getPackage(packageName);
 
-            // Define the package (if null)
-            if (pkg == null) {
-                if (entry.manifest == null) {
-                    definePackage(packageName, null, null, null, null, null,
-                                  null, null);
-                } else {
-                    definePackage(packageName, entry.manifest, entry.source);
+                // Define the package (if null)
+                if (pkg == null) {
+                    if (entry.manifest == null) {
+                        definePackage(packageName, null, null, null, null,
+                                      null, null, null);
+                    } else {
+                        definePackage(packageName, entry.manifest,
+                                      entry.source);
+                    }
                 }
             }
 

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

Reply via email to