remm        01/07/22 14:23:17

  Modified:    catalina/src/share/org/apache/catalina/loader
                        WebappClassLoader.java
  Log:
  - Fix for bug #2725 (non JARs files put in /WEB-INF/lib cause constant
    reloads of a reloadable context).
    Reported by Jeff Turner <jeff at socialchange.net.au>.
  
  Revision  Changes    Path
  1.11      +25 -12    
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.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- WebappClassLoader.java    2001/07/22 20:25:10     1.10
  +++ WebappClassLoader.java    2001/07/22 21:23:17     1.11
  @@ -1,7 +1,7 @@
   /*
  - * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.10 2001/07/22 20:25:10 pier Exp $
  - * $Revision: 1.10 $
  - * $Date: 2001/07/22 20:25:10 $
  + * $Header: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/WebappClassLoader.java,v
 1.11 2001/07/22 21:23:17 remm Exp $
  + * $Revision: 1.11 $
  + * $Date: 2001/07/22 21:23:17 $
    *
    * ====================================================================
    *
  @@ -123,7 +123,7 @@
    *
    * @author Remy Maucherat
    * @author Craig R. McClanahan
  - * @version $Revision: 1.10 $ $Date: 2001/07/22 20:25:10 $
  + * @version $Revision: 1.11 $ $Date: 2001/07/22 21:23:17 $
    */
   public class WebappClassLoader
       extends URLClassLoader
  @@ -719,20 +719,33 @@
   
               try {
                   NamingEnumeration enum = resources.listBindings(getJarPath());
  -                int i;
  -                for (i = 0; enum.hasMoreElements() && (i < length); i++) {
  +                int i = 0;
  +                while (enum.hasMoreElements() && (i < length)) {
                       NameClassPair ncPair = (NameClassPair) enum.nextElement();
  -                    if (!ncPair.getName().equals(jarNames[i])) {
  +                    String name = ncPair.getName();
  +                    // Ignore non JARs present in the lib folder
  +                    if (!name.endsWith(".jar"))
  +                        continue;
  +                    if (!name.equals(jarNames[i])) {
                           // Missing JAR
  -                        log("    Additional JARs have been added : '"
  -                            + ncPair.getName() + "'");
  +                        log("    Additional JARs have been added : '" 
  +                            + name + "'");
                           return (true);
                       }
  +                    i++;
                   }
                   if (enum.hasMoreElements()) {
  -                    // There was more JARs
  -                    log("    Additional JARs have been added");
  -                    return (true);
  +                    while (enum.hasMoreElements()) {
  +                        NameClassPair ncPair = 
  +                            (NameClassPair) enum.nextElement();
  +                        String name = ncPair.getName();
  +                        // Additional non-JAR files are allowed
  +                        if (name.endsWith(".jar")) {
  +                            // There was more JARs
  +                            log("    Additional JARs have been added");
  +                            return (true);
  +                        }
  +                    }
                   } else if (i < jarNames.length) {
                       // There was less JARs
                       log("    Additional JARs have been added");
  
  
  

Reply via email to