Commit 54625cc2 authored by Phillip Webb's avatar Phillip Webb

Make LaunchedURLClassLoader lock provider static

Fixes gh-1380
parent fc7823bc
......@@ -36,19 +36,10 @@ import org.springframework.boot.loader.jar.JarFile;
*/
public class LaunchedURLClassLoader extends URLClassLoader {
static {
try {
ClassLoader.registerAsParallelCapable();
}
catch (NoSuchMethodError ex) {
// Not available on earlier JDKs
}
}
private static LockProvider LOCK_PROVIDER = setupLockProvider();
private final ClassLoader rootClassLoader;
private final LockProvider lockProvider;
/**
* Create a new {@link LaunchedURLClassLoader} instance.
* @param urls the URLs from which to load classes and resources
......@@ -57,17 +48,6 @@ public class LaunchedURLClassLoader extends URLClassLoader {
public LaunchedURLClassLoader(URL[] urls, ClassLoader parent) {
super(urls, parent);
this.rootClassLoader = findRootClassLoader(parent);
this.lockProvider = createLockProvider();
}
private LockProvider createLockProvider() {
try {
ClassLoader.class.getMethod("getClassLoadingLock", String.class);
return new Java7LockProvider();
}
catch (NoSuchMethodException ex) {
return new LockProvider();
}
}
private ClassLoader findRootClassLoader(ClassLoader classLoader) {
......@@ -148,7 +128,7 @@ public class LaunchedURLClassLoader extends URLClassLoader {
@Override
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {
synchronized (this.lockProvider.getLock(this, name)) {
synchronized (LaunchedURLClassLoader.LOCK_PROVIDER.getLock(this, name)) {
Class<?> loadedClass = findLoadedClass(name);
if (loadedClass == null) {
Handler.setUseFastConnectionExceptions(true);
......@@ -244,6 +224,16 @@ public class LaunchedURLClassLoader extends URLClassLoader {
}
}
private static LockProvider setupLockProvider() {
try {
ClassLoader.registerAsParallelCapable();
return new Java7LockProvider();
}
catch (NoSuchMethodError ex) {
return new LockProvider();
}
}
/**
* Strategy used to provide the synchronize lock object to use when loading classes.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment