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

Reply via email to