Author: markt Date: Fri Jun 3 08:01:35 2011 New Revision: 1130932 URL: http://svn.apache.org/viewvc?rev=1130932&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48863 Provide an warning if there is a problem with a class path entry but use debug level logging if it is expected due to catalina home/base split
Modified: tomcat/tc6.0.x/trunk/STATUS.txt tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1130932&r1=1130931&r2=1130932&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS.txt (original) +++ tomcat/tc6.0.x/trunk/STATUS.txt Fri Jun 3 08:01:35 2011 @@ -97,13 +97,6 @@ PATCHES PROPOSED TO BACKPORT: +1: kfujino, markt -1: -* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=48863 - Provide an warning if there is a problem with a class path entry but use debug - level logging if it is expected due to catalina home/base split - http://people.apache.org/~kkolinko/patches/2011-03-02_tc6_48863.patch - +1: kkolinko, markt, schultz - -1: - * Fix possible threading issue in JSP compilation when development mode is enabled http://svn.apache.org/viewvc?rev=1078409&view=rev Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java?rev=1130932&r1=1130931&r2=1130932&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java Fri Jun 3 08:01:35 2011 @@ -20,6 +20,7 @@ package org.apache.catalina.startup; import java.io.File; +import java.io.IOException; import java.net.URL; import java.util.LinkedHashSet; import java.util.Set; @@ -198,28 +199,30 @@ public final class ClassLoaderFactory { set.add(url); } else if ( types[i] == IS_DIR ) { File directory = new File(location); - directory = new File(directory.getCanonicalPath()); - if (!directory.exists() || !directory.isDirectory() || - !directory.canRead()) - continue; + directory = directory.getCanonicalFile(); + if (!validateFile(directory, IS_DIR)) { + continue; + } URL url = directory.toURI().toURL(); if (log.isDebugEnabled()) log.debug(" Including directory " + url); set.add(url); } else if ( types[i] == IS_JAR ) { File file=new File(location); - file = new File(file.getCanonicalPath()); - if (!file.exists() || !file.canRead()) + file = file.getCanonicalFile(); + if (!validateFile(file, IS_JAR)) { continue; + } URL url = file.toURI().toURL(); if (log.isDebugEnabled()) log.debug(" Including jar file " + url); set.add(url); } else if ( types[i] == IS_GLOB ) { File directory=new File(location); - if (!directory.exists() || !directory.isDirectory() || - !directory.canRead()) + directory = directory.getCanonicalFile(); + if (!validateFile(directory, IS_GLOB)) { continue; + } if (log.isDebugEnabled()) log.debug(" Including directory glob " + directory.getAbsolutePath()); @@ -229,9 +232,10 @@ public final class ClassLoaderFactory { if (!filename.endsWith(".jar")) continue; File file = new File(directory, filenames[j]); - file = new File(file.getCanonicalPath()); - if (!file.exists() || !file.canRead()) + file = file.getCanonicalFile(); + if (!validateFile(file, IS_JAR)) { continue; + } if (log.isDebugEnabled()) log.debug(" Including glob jar file " + file.getAbsolutePath()); @@ -257,5 +261,41 @@ public final class ClassLoaderFactory { } - + private static boolean validateFile(File file, + Integer type) throws IOException { + if (type == IS_DIR || type == IS_GLOB) { + if (!file.exists() || !file.isDirectory() || !file.canRead()) { + String msg = "Problem with directory [" + file + + "], exists: [" + file.exists() + + "], isDirectory: [" + file.isDirectory() + + "], canRead: [" + file.canRead() + "]"; + + File home = new File (Bootstrap.getCatalinaHome()); + home = home.getCanonicalFile(); + File base = new File (Bootstrap.getCatalinaBase()); + base = base.getCanonicalFile(); + File defaultValue = new File(base, "lib"); + + // Existence of ${catalina.base}/lib directory is optional. + // Hide the warning if Tomcat runs with separate catalina.home + // and catalina.base and that directory is absent. + if (!home.getPath().equals(base.getPath()) + && file.getPath().equals(defaultValue.getPath()) + && !file.exists()) { + log.debug(msg); + } else { + log.warn(msg); + } + return false; + } + } else if (type == IS_JAR) { + if (!file.exists() || !file.canRead()) { + log.warn("Problem with JAR file [" + file + + "], exists: [" + file.exists() + + "], canRead: [" + file.canRead() + "]"); + return false; + } + } + return true; + } } Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1130932&r1=1130931&r2=1130932&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Fri Jun 3 08:01:35 2011 @@ -55,6 +55,11 @@ Stephane Bailliez. (markt) </fix> <add> + <bug>48863</bug>: Provide an warning if there is a problem with a class + path entry but use debug level logging if it is expected due to catalina + home/base split. (kkolinko) + </add> + <add> <bug>49180</bug>: Add an option to disable file rotation in JULI FileHandler. (kkolinko) </add> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org