Author: kkolinko
Date: Tue Mar 1 23:59:36 2011
New Revision: 1076059
URL: http://svn.apache.org/viewvc?rev=1076059&view=rev
Log:
Improve the fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=48863
1) Be more strict when ignoring the warning:
ignore only when it is the "lib" directory and when it does not exist
2) Warn about JARs created from expanding the GLOB pattern as well
3) s/new File(f.getCanonicalPath())/f.getCanonicalFile()/ for efficiency
Modified:
tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java?rev=1076059&r1=1076058&r2=1076059&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ClassLoaderFactory.java Tue
Mar 1 23:59:36 2011
@@ -168,7 +168,7 @@ public final class ClassLoaderFactory {
set.add(url);
} else if (repository.getType() == RepositoryType.DIR) {
File directory = new File(repository.getLocation());
- directory = new File(directory.getCanonicalPath());
+ directory = directory.getCanonicalFile();
if (!validateFile(directory, RepositoryType.DIR)) {
continue;
}
@@ -178,7 +178,7 @@ public final class ClassLoaderFactory {
set.add(url);
} else if (repository.getType() == RepositoryType.JAR) {
File file=new File(repository.getLocation());
- file = new File(file.getCanonicalPath());
+ file = file.getCanonicalFile();
if (!validateFile(file, RepositoryType.JAR)) {
continue;
}
@@ -188,7 +188,7 @@ public final class ClassLoaderFactory {
set.add(url);
} else if (repository.getType() == RepositoryType.GLOB) {
File directory=new File(repository.getLocation());
- directory = new File(directory.getCanonicalPath());
+ directory = directory.getCanonicalFile();
if (!validateFile(directory, RepositoryType.GLOB)) {
continue;
}
@@ -201,9 +201,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, RepositoryType.JAR)) {
continue;
+ }
if (log.isDebugEnabled())
log.debug(" Including glob jar file "
+ file.getAbsolutePath());
@@ -241,14 +242,19 @@ public final class ClassLoaderFactory {
"], 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");
- if (!home.getPath().equals(base.getPath()) &&
- file.getPath().startsWith(base.getPath())) {
+ // 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);
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1076059&r1=1076058&r2=1076059&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Mar 1 23:59:36 2011
@@ -78,7 +78,7 @@
</add>
<fix>
<bug>48863</bug>: Better logging when specifying an invalid directory
- for a class loader. Based on a patch by Ralf Hauser. (markt)
+ for a class loader. Based on a patch by Ralf Hauser. (markt/kkolinko)
</fix>
<fix>
<bug>48870</bug>: Refactor to remove use of parallel arrays. (markt)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]