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: [email protected]
For additional commands, e-mail: [email protected]