Author: rmannibucau Date: Wed Sep 25 14:09:45 2013 New Revision: 1526181 URL: http://svn.apache.org/r1526181 Log: forcing container loader in scheduler thread factory to avoid side effects
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java?rev=1526181&r1=1526180&r2=1526181&view=diff ============================================================================== --- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java (original) +++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/util/Pool.java Wed Sep 25 14:09:45 2013 @@ -16,6 +16,7 @@ */ package org.apache.openejb.util; +import org.apache.openejb.core.ParentClassLoaderFinder; import org.apache.openejb.monitoring.Managed; import java.lang.ref.SoftReference; @@ -1152,16 +1153,25 @@ public class Pool<T> { @Override public Thread newThread(final Runnable r) { - final Thread t = new Thread(group, r, "org.apache.openejb.pool.scheduler." + count.getAndIncrement()); - if (!t.isDaemon()) { - t.setDaemon(true); - } + final ClassLoader loader = Thread.currentThread().getContextClassLoader(); + final ClassLoader containerLoader = ParentClassLoaderFinder.Helper.get(); + Thread.currentThread().setContextClassLoader(containerLoader); + try { + final Thread t = new Thread(group, r, "org.apache.openejb.pool.scheduler." + count.getAndIncrement()); + if (!t.isDaemon()) { + t.setDaemon(true); + } - if (t.getPriority() != Thread.NORM_PRIORITY) { - t.setPriority(Thread.NORM_PRIORITY); - } + if (t.getPriority() != Thread.NORM_PRIORITY) { + t.setPriority(Thread.NORM_PRIORITY); + } + + t.setContextClassLoader(containerLoader); - return t; + return t; + } finally { + Thread.currentThread().setContextClassLoader(loader); + } } } }