diff -ubr jakarta-tomcat-3.2.1-src.orig/src/share/org/apache/tomcat/loader/AdaptiveClassLoader.java jakarta-tomcat-3.2.1-src/src/share/org/apache/tomcat/loader/AdaptiveClassLoader.java
--- jakarta-tomcat-3.2.1-src.orig/src/share/org/apache/tomcat/loader/AdaptiveClassLoader.java	Sun Mar 11 19:21:12 2001
+++ jakarta-tomcat-3.2.1-src/src/share/org/apache/tomcat/loader/AdaptiveClassLoader.java	Sun Mar 11 18:40:46 2001
@@ -762,69 +762,45 @@
      * @param   name    the name of the resource, to be used as is.
      * @return  an URL on the resource, or null if not found.
      */
-    public URL getResource(String name) {
-        if( debug > 0 ) log( "getResource() " + name );
-        // First ask the parent class loader to fetch it, if possible
-        URL u = null;
-        if (parent != null) {
-            u = parent.getResource(name);
-            if (u != null)
-                return (u);
-        }
-        // Second ask the system class loader to fetch it from the classpath
-        u = getSystemResource(name);
-        if (u != null) {
-            return u;
-        }
-
+    protected URL findResource(String name) {
         if (name == null) {
             return null;
         }
 
-        // Third, check our own repositories
+        // check our own repositories
         Enumeration repEnum = repository.elements();
         while (repEnum.hasMoreElements()) {
             ClassRepository cp = (ClassRepository) repEnum.nextElement();
-            File file = cp.getFile();
-            // Construct a file://-URL if the repository is a directory
-            if (file.isDirectory()) {
-                String fileName = name.replace('/', File.separatorChar);
-                File resFile = new File(file, fileName);
-                if (resFile.exists()) {
-                    // Build a file:// URL form the file name
-                    try {
-                        return new URL("file", null, resFile.getAbsolutePath());                    	
-                    } catch(java.net.MalformedURLException badurl) {
-                        badurl.printStackTrace();
-                        return null;
-                    }
+            URL resourceURL = cp.findResource(name);
+            if ( resourceURL != null )
+                return resourceURL;
                 }
-            }
-            else {
-                // a jar:-URL *could* change even between minor releases, but
-                // didn't between JVM's 1.1.6 and 1.3beta. Tested on JVM's from
-                // IBM, Blackdown, Microsoft, Sun @ Windows and Sun @ Solaris
-                try {
-                    ZipFile zf = new ZipFile(file.getAbsolutePath());
-                    ZipEntry ze = zf.getEntry(name);
 
-                    if (ze != null) {
-                        try {
-                            return new URL("jar:file:" + file.getAbsolutePath() + "!/" + name);
-                        } catch(java.net.MalformedURLException badurl) {
-                            badurl.printStackTrace();
-                            return null;
-                        }
-                    }
-                } catch (IOException ioe) {
-                    ioe.printStackTrace();
+        // Not found
                     return null;
                 }
+
+    /**
+     * Find all occurences of a given resource in the class loaders
+     * repositories.
+     *
+     * @param   name    the name of the resource, to be used as is.
+     * @return  an Enumeration of URLs of to this resource.
+     */
+    protected Enumeration findResources(String name) {
+        if( debug > 0 ) log( "findResources() " + name );
+
+        Vector urls = new Vector( repository.size() );
+        if ( name != null ) {
+            Enumeration repEnum = repository.elements();
+            while( repEnum.hasMoreElements() ) {
+                ClassRepository cp = (ClassRepository) repEnum.nextElement();
+                URL resourceURL = cp.findResource(name);
+                if( resourceURL != null )
+                    urls.add( resourceURL );
             }   
         }
-
-        // Not found
-        return null;
+        return urls.elements();
     }
 
     public String toString() {
diff -ubr jakarta-tomcat-3.2.1-src.orig/src/share/org/apache/tomcat/loader/ClassRepository.java jakarta-tomcat-3.2.1-src/src/share/org/apache/tomcat/loader/ClassRepository.java
--- jakarta-tomcat-3.2.1-src.orig/src/share/org/apache/tomcat/loader/ClassRepository.java	Sun Mar 11 19:22:31 2001
+++ jakarta-tomcat-3.2.1-src/src/share/org/apache/tomcat/loader/ClassRepository.java	Sun Mar 11 19:01:44 2001
@@ -61,6 +61,8 @@
 import java.io.*;
 import java.lang.*;
 import java.util.*;
+import java.util.zip.*;
+import java.net.*;
 
 public class ClassRepository {
     private File file;
@@ -77,5 +79,43 @@
 
     public Object getProtectionDomain() {
 	return protectionDomain;
+    }
+
+    public URL findResource(String name) {
+        if (file.isDirectory()) {
+            String fileName = name.replace('/', File.separatorChar);
+            File resFile = new File(file, fileName);
+            if (resFile.exists()) {
+                // Build a file:// URL form the file name
+                try {
+                    return new URL("file", null, resFile.getAbsolutePath());                    	
+                } catch(java.net.MalformedURLException badurl) {
+                    badurl.printStackTrace();
+                    return null;
+                }
+            }
+        }
+        else {
+            // a jar:-URL *could* change even between minor releases, but
+            // didn't between JVM's 1.1.6 and 1.3beta. Tested on JVM's from
+            // IBM, Blackdown, Microsoft, Sun @ Windows and Sun @ Solaris
+            try {
+                ZipFile zf = new ZipFile(file.getAbsolutePath());
+                ZipEntry ze = zf.getEntry(name);
+
+                if (ze != null) {
+                    try {
+                        return new URL("jar:file:" + file.getAbsolutePath() + "!/" + name);
+                    } catch(java.net.MalformedURLException badurl) {
+                        badurl.printStackTrace();
+                        return null;
+                    }
+                }
+            } catch (IOException ioe) {
+                ioe.printStackTrace();
+                return null;
+            }
+        }   
+        return null;
     }
 }

