Repository: tomee Updated Branches: refs/heads/master 2b5518c58 -> 0f8fd20bd
TOMEE-1696 ensure lazy resources use by default container loader (UseAppClassLoader=false or null). Was not the case for auto created resources Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/0f8fd20b Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/0f8fd20b Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/0f8fd20b Branch: refs/heads/master Commit: 0f8fd20bd519218f3b9fdeb85b8ca010db353b53 Parents: 2b5518c Author: Romain Manni-Bucau <rmannibu...@gmail.com> Authored: Thu Jan 21 09:09:26 2016 +0100 Committer: Romain Manni-Bucau <rmannibu...@gmail.com> Committed: Thu Jan 21 09:09:26 2016 +0100 ---------------------------------------------------------------------- .../openejb/assembler/classic/Assembler.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/0f8fd20b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java index 4b5ed1f..ef6544b 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java @@ -2659,7 +2659,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A public void createResource(final ResourceInfo serviceInfo) throws OpenEJBException { final boolean usesCdiPwdCipher = usesCdiPwdCipher(serviceInfo); final Object service = "true".equalsIgnoreCase(String.valueOf(serviceInfo.properties.remove("Lazy"))) || usesCdiPwdCipher ? - newLazyResource(serviceInfo) : + newLazyResource(serviceInfo) : doCreateResource(serviceInfo); if (usesCdiPwdCipher && !serviceInfo.properties.contains("InitializeAfterDeployment")) { serviceInfo.properties.put("InitializeAfterDeployment", "true"); @@ -2696,25 +2696,22 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A } private LazyResource newLazyResource(final ResourceInfo serviceInfo) { - final ClassLoader loader = Thread.currentThread().getContextClassLoader(); return new LazyResource(new Callable<Object>() { @Override public Object call() throws Exception { final boolean appClassLoader = "true".equals(serviceInfo.properties.remove("UseAppClassLoader")); - ClassLoader old = null; - + final Thread thread = Thread.currentThread(); + final ClassLoader old = thread.getContextClassLoader(); if (!appClassLoader) { - old = Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader(loader); - } + final ClassLoader classLoader = Assembler.class.getClassLoader(); + thread.setContextClassLoader(classLoader == null ? ClassLoader.getSystemClassLoader() : classLoader); + } // else contextually we should have the app loader try { return doCreateResource(serviceInfo); } finally { - if (old != null) { - Thread.currentThread().setContextClassLoader(old); - } + thread.setContextClassLoader(old); } } });