Author: markt Date: Tue Jul 5 18:51:46 2016 New Revision: 1751523 URL: http://svn.apache.org/viewvc?rev=1751523&view=rev Log: Align 9.0.x and 8.5.x.
Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappLoader.java Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java?rev=1751523&r1=1751522&r2=1751523&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java Tue Jul 5 18:51:46 2016 @@ -1610,15 +1610,12 @@ public abstract class WebappClassLoaderB // JVM controlled threads ThreadGroup tg = thread.getThreadGroup(); - if (tg != null && - JVM_THREAD_GROUP_NAMES.contains(tg.getName())) { - + if (tg != null && JVM_THREAD_GROUP_NAMES.contains(tg.getName())) { // HttpClient keep-alive threads if (clearReferencesHttpClientKeepAliveThread && threadName.equals("Keep-Alive-Timer")) { thread.setContextClassLoader(parent); - log.debug(sm.getString( - "webappClassLoader.checkThreadsHttpClient")); + log.debug(sm.getString("webappClassLoader.checkThreadsHttpClient")); } // Don't warn about remaining JVM controlled threads @@ -1663,11 +1660,9 @@ public abstract class WebappClassLoaderB // "runnable" in IBM JDK // "action" in Apache Harmony Object target = null; - for (String fieldName : new String[] { "target", - "runnable", "action" }) { + for (String fieldName : new String[] { "target", "runnable", "action" }) { try { - Field targetField = thread.getClass() - .getDeclaredField(fieldName); + Field targetField = thread.getClass().getDeclaredField(fieldName); targetField.setAccessible(true); target = targetField.get(thread); break; @@ -1678,12 +1673,10 @@ public abstract class WebappClassLoaderB // "java.util.concurrent" code is in public domain, // so all implementations are similar - if (target != null && - target.getClass().getCanonicalName() != null - && target.getClass().getCanonicalName().equals( + if (target != null && target.getClass().getCanonicalName() != null && + target.getClass().getCanonicalName().equals( "java.util.concurrent.ThreadPoolExecutor.Worker")) { - Field executorField = - target.getClass().getDeclaredField("this$0"); + Field executorField = target.getClass().getDeclaredField("this$0"); executorField.setAccessible(true); Object executor = executorField.get(target); if (executor instanceof ThreadPoolExecutor) { @@ -1691,21 +1684,9 @@ public abstract class WebappClassLoaderB usingExecutor = true; } } - } catch (SecurityException e) { - log.warn(sm.getString( - "webappClassLoader.stopThreadFail", - thread.getName(), getContextName()), e); - } catch (NoSuchFieldException e) { - log.warn(sm.getString( - "webappClassLoader.stopThreadFail", - thread.getName(), getContextName()), e); - } catch (IllegalArgumentException e) { - log.warn(sm.getString( - "webappClassLoader.stopThreadFail", - thread.getName(), getContextName()), e); - } catch (IllegalAccessException e) { - log.warn(sm.getString( - "webappClassLoader.stopThreadFail", + } catch (SecurityException | NoSuchFieldException | IllegalArgumentException | + IllegalAccessException e) { + log.warn(sm.getString("webappClassLoader.stopThreadFail", thread.getName(), getContextName()), e); } @@ -2148,11 +2129,10 @@ public abstract class WebappClassLoaderB checkStateForResourceLoading(name); - String path = binaryNameToPath(name, true); - - if (name == null || path == null) { + if (name == null) { return null; } + String path = binaryNameToPath(name, true); ResourceEntry entry = resourceEntries.get(path); WebResource resource = null; Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappLoader.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=1751523&r1=1751522&r2=1751523&view=diff ============================================================================== --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappLoader.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/loader/WebappLoader.java Tue Jul 5 18:51:46 2016 @@ -24,7 +24,6 @@ import java.io.FilePermission; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.reflect.Constructor; -import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; import java.net.URLDecoder; @@ -603,8 +602,7 @@ public class WebappLoader extends Lifecy private boolean buildClassPath(StringBuilder classpath, ClassLoader loader) { if (loader instanceof URLClassLoader) { - URL repositories[] = - ((URLClassLoader) loader).getURLs(); + URL repositories[] = ((URLClassLoader) loader).getURLs(); for (int i = 0; i < repositories.length; i++) { String repository = repositories[i].toString(); if (repository.startsWith("file://")) @@ -619,16 +617,20 @@ public class WebappLoader extends Lifecy classpath.append(File.pathSeparator); classpath.append(repository); } - } else { - String cp = getClasspath(loader); - if (cp == null) { - log.info( "Unknown loader " + loader + " " + loader.getClass()); - } else { - if (classpath.length() > 0) + } else if (loader == ClassLoader.getSystemClassLoader()){ + // Java 9 onwards. The internal class loaders no longer extend + // URLCLassLoader + String cp = System.getProperty("java.class.path"); + if (cp != null && cp.length() > 0) { + if (classpath.length() > 0) { classpath.append(File.pathSeparator); + } classpath.append(cp); } return false; + } else { + log.info( "Unknown loader " + loader + " " + loader.getClass()); + return false; } return true; } @@ -643,27 +645,6 @@ public class WebappLoader extends Lifecy return result; } - // try to extract the classpath from a loader that is not URLClassLoader - private String getClasspath( ClassLoader loader ) { - try { - Method m=loader.getClass().getMethod("getClasspath", new Class[] {}); - if( log.isTraceEnabled()) - log.trace("getClasspath " + m ); - Object o=m.invoke( loader, new Object[] {} ); - if( log.isDebugEnabled() ) - log.debug("gotClasspath " + o); - if( o instanceof String ) - return (String)o; - return null; - } catch( Exception ex ) { - Throwable t = ExceptionUtils.unwrapInvocationTargetException(ex); - ExceptionUtils.handleThrowable(t); - if (log.isDebugEnabled()) - log.debug("getClasspath ", ex); - } - return null; - } - private static final Log log = LogFactory.getLog(WebappLoader.class); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org