TOMEE-1569 forcing container loader for LoggerCreator
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0421a028 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0421a028 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0421a028 Branch: refs/heads/master Commit: 0421a028293a09037b5d5074bda39a3f366bdaa3 Parents: b7eb5b0 Author: Romain Manni-Bucau <[email protected]> Authored: Thu Apr 30 09:53:40 2015 +0200 Committer: Mark Struberg <[email protected]> Committed: Mon May 4 19:00:19 2015 +0200 ---------------------------------------------------------------------- .../openejb/core/ParentClassLoaderFinder.java | 3 +- .../org/apache/openejb/log/LoggerCreator.java | 29 ++++++++++++-------- 2 files changed, 20 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/0421a028/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java index dca0d39..c6497a1 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java @@ -27,7 +27,8 @@ public interface ParentClassLoaderFinder { class Helper { public static ClassLoader get() { - final ParentClassLoaderFinder parentFinder = SystemInstance.get().getComponent(ParentClassLoaderFinder.class); + final ParentClassLoaderFinder parentFinder = SystemInstance.isInitialized() ? + SystemInstance.get().getComponent(ParentClassLoaderFinder.class) : null; if (parentFinder != null) { return parentFinder.getParentClassLoader(FALLBACK); } http://git-wip-us.apache.org/repos/asf/tomee/blob/0421a028/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java b/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java index 47d2935..c1fb803 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/log/LoggerCreator.java @@ -52,20 +52,27 @@ public class LoggerCreator implements Callable<Logger> { if (logger == null) { synchronized (this) { // no need of lock for this part if (logger == null) { + final Thread thread = Thread.currentThread(); + final ClassLoader originalLoader = thread.getContextClassLoader(); + thread.setContextClassLoader(ParentClassLoaderFinder.Helper.get()); try { - logger = Logger.getLogger(name); - } catch (final Exception e) { - logger = Logger.getLogger(name); // try again - } + try { + logger = Logger.getLogger(name); + } catch (final Exception e) { + logger = Logger.getLogger(name); // try again + } - // if level set through properties force it - final Properties p = SystemInstance.get().getProperties(); - final String levelName = p.getProperty("logging.level." + logger.getName()); - if (levelName != null) { - final Level level = Level.parse(levelName); - for (final Handler handler : logger.getHandlers()) { - handler.setLevel(level); + // if level set through properties force it + final Properties p = SystemInstance.get().getProperties(); + final String levelName = p.getProperty("logging.level." + logger.getName()); + if (levelName != null) { + final Level level = Level.parse(levelName); + for (final Handler handler : logger.getHandlers()) { + handler.setLevel(level); + } } + } finally { + thread.setContextClassLoader(originalLoader); } } }
