Author: markt
Date: Mon Aug 21 09:48:09 2017
New Revision: 1805613
URL: http://svn.apache.org/viewvc?rev=1805613&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=61210
When running under a SecurityManager, do not print a warning about not being
able to read a logging configuration file when that file does not exist.
Modified:
tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java
tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java
tomcat/trunk/java/org/apache/juli/WebappProperties.java
tomcat/trunk/webapps/docs/changelog.xml
Modified:
tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java?rev=1805613&r1=1805612&r2=1805613&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java Mon
Aug 21 09:48:09 2017
@@ -2485,4 +2485,24 @@ public abstract class WebappClassLoaderB
}
return null;
}
+
+
+ @Override
+ public boolean hasLoggingConfig() {
+ if (Globals.IS_SECURITY_ENABLED) {
+ Boolean result = AccessController.doPrivileged(new
PrivilegedHasLoggingConfig());
+ return result.booleanValue();
+ } else {
+ return findResource("logging.properties") != null;
+ }
+ }
+
+
+ private class PrivilegedHasLoggingConfig implements
PrivilegedAction<Boolean> {
+
+ @Override
+ public Boolean run() {
+ return Boolean.valueOf(findResource("logging.properties") != null);
+ }
+ }
}
Modified: tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java?rev=1805613&r1=1805612&r2=1805613&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java Mon
Aug 21 09:48:09 2017
@@ -74,6 +74,7 @@ public final class SecurityClassLoad {
private static final void loadLoaderPackage(ClassLoader loader) throws
Exception {
final String basePackage = "org.apache.catalina.loader.";
loader.loadClass(basePackage +
"WebappClassLoaderBase$PrivilegedFindClassByName");
+ loader.loadClass(basePackage +
"WebappClassLoaderBase$PrivilegedHasLoggingConfig");
}
Modified: tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java?rev=1805613&r1=1805612&r2=1805613&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java (original)
+++ tomcat/trunk/java/org/apache/juli/ClassLoaderLogManager.java Mon Aug 21
09:48:09 2017
@@ -426,7 +426,11 @@ public class ClassLoaderLogManager exten
// Special case for URL classloaders which are used in containers:
// only look in the local repositories to avoid redefining loggers 20
times
try {
- if (classLoader instanceof URLClassLoader) {
+ if (classLoader instanceof WebappProperties) {
+ if (((WebappProperties) classLoader).hasLoggingConfig()) {
+ is = classLoader.getResourceAsStream("logging.properties");
+ }
+ } else if (classLoader instanceof URLClassLoader) {
URL logConfig =
((URLClassLoader)classLoader).findResource("logging.properties");
if(null != logConfig) {
Modified: tomcat/trunk/java/org/apache/juli/WebappProperties.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/juli/WebappProperties.java?rev=1805613&r1=1805612&r2=1805613&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/juli/WebappProperties.java (original)
+++ tomcat/trunk/java/org/apache/juli/WebappProperties.java Mon Aug 21 09:48:09
2017
@@ -51,4 +51,15 @@ public interface WebappProperties {
* null if none is available.
*/
String getServiceName();
+
+ /**
+ * Enables JULI to determine if the web application includes a local
+ * configuration without JULI having to look for the file which it may not
+ * have permission to do when running under a SecurityManager.
+ *
+ * @return {@code true} if the web application includes a logging
+ * configuration at the standard location of
+ * /WEB-INF/classes/logging.properties.
+ */
+ boolean hasLoggingConfig();
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1805613&r1=1805612&r2=1805613&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Mon Aug 21 09:48:09 2017
@@ -59,6 +59,11 @@
before generating the error page so that the page generation can be
skipped if the page is never going to be sent. (markt)
</fix>
+ <fix>
+ <bug>61210</bug>: When running under a SecurityManager, do not print a
+ warning about not being able to read a logging configuration file when
+ that file does not exist. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]