You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2015/04/20 15:57:13 UTC

tomee git commit: URLClassLoaderFirst should be a Parallel classloader

Repository: tomee
Updated Branches:
  refs/heads/master c31f000e4 -> 4ddc4a1e0


URLClassLoaderFirst should be a Parallel classloader


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/4ddc4a1e
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/4ddc4a1e
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/4ddc4a1e

Branch: refs/heads/master
Commit: 4ddc4a1e07e8d5488df6d17205cf5ee06a1cab7c
Parents: c31f000
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Mon Apr 20 15:57:07 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Mon Apr 20 15:57:07 2015 +0200

----------------------------------------------------------------------
 .../openejb/util/classloader/URLClassLoaderFirst.java   | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/4ddc4a1e/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
index e4b4405..7ae5c68 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/util/classloader/URLClassLoaderFirst.java
@@ -33,8 +33,6 @@ import java.util.concurrent.locks.ReentrantLock;
 // TODO: look SM usage, find a better name
 public class URLClassLoaderFirst extends URLClassLoader {
 
-    private static final ReentrantLock LOCK;
-
     // log4j is optional, moreover it will likely not work if not skipped and loaded by a temp classloader
     private static final boolean SKIP_LOG4J = "true".equals(SystemInstance.get().getProperty("openejb.skip.log4j", "true")) && skipLib("org.apache.log4j.Logger");
     private static final boolean SKIP_MYFACES = "true".equals(SystemInstance.get().getProperty("openejb.skip.myfaces", "true")) && skipLib("org.apache.myfaces.spi.FactoryFinderProvider");
@@ -52,8 +50,8 @@ public class URLClassLoaderFirst extends URLClassLoader {
     public static final Collection<String> FORCED_LOAD = new ArrayList<>();
 
     static {
-        LOCK = new ReentrantLock();
         reloadConfig();
+        ClassLoader.registerAsParallelCapable();
     }
 
     public static final String SLF4J_BINDER_CLASS = "org/slf4j/impl/StaticLoggerBinder.class";
@@ -93,11 +91,7 @@ public class URLClassLoaderFirst extends URLClassLoader {
 
     @Override
     public Class<?> loadClass(final String name, final boolean resolve) throws ClassNotFoundException {
-
-        final ReentrantLock lock = LOCK;
-        lock.lock();
-
-        try {
+        synchronized (getClassLoadingLock(name)) {
             // already loaded?
             Class<?> clazz = findLoadedClass(name);
             if (clazz != null) {
@@ -145,8 +139,6 @@ public class URLClassLoaderFirst extends URLClassLoader {
             }
 
             throw new ClassNotFoundException(name);
-        } finally {
-            lock.unlock();
         }
     }