Repository: tomee Updated Branches: refs/heads/master 37513d132 -> 884e2a13e
TOMEE-2131 ensure we eagerly init the batchee ServicesManager when the context is available if needed Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/884e2a13 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/884e2a13 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/884e2a13 Branch: refs/heads/master Commit: 884e2a13e9f1b62507b3db6f872468854514d44c Parents: 37513d1 Author: Romain Manni-Bucau <rmannibu...@gmail.com> Authored: Thu Oct 5 16:34:39 2017 +0200 Committer: Romain Manni-Bucau <rmannibu...@gmail.com> Committed: Thu Oct 5 16:34:39 2017 +0200 ---------------------------------------------------------------------- .../openejb/batchee/BatchEEServiceManager.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/884e2a13/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java b/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java index 096861c..e0060f9 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/batchee/BatchEEServiceManager.java @@ -36,19 +36,26 @@ import java.util.Properties; public class BatchEEServiceManager implements ServicesManagerLocator { public void initEnvironment(@Observes final ObserverAdded event) { - if (event.getObserver() == this) { + if (event.getObserver() == this && !Boolean.getBoolean("openejb.batchee.integration.skip")) { ServicesManager.setServicesManagerLocator(this); } } public void storeClassLoader(@Observes final AssemblerAfterApplicationCreated init) { - final Properties properties = new Properties(SystemInstance.get().getProperties()); - properties.putAll(init.getApp().properties); + doInit(init.getContext()); + } + + private void doInit(final AppContext context) { + if (context.get(ServicesManager.class) != null) { + return; + } final Thread thread = Thread.currentThread(); final ClassLoader current = thread.getContextClassLoader(); - thread.setContextClassLoader(init.getContext().getClassLoader()); + thread.setContextClassLoader(context.getClassLoader()); final ServicesManager servicesManager = new ServicesManager(); + final Properties properties = new Properties(SystemInstance.get().getProperties()); + properties.putAll(context.getProperties()); try { if (properties.getProperty(BatchArtifactFactory.class.getName()) == null) { properties.setProperty(BatchThreadPoolService.class.getName(), TomEEThreadPoolService.class.getName()); @@ -61,7 +68,7 @@ public class BatchEEServiceManager implements ServicesManagerLocator { thread.setContextClassLoader(current); } - init.getContext().set(ServicesManager.class, servicesManager); + context.set(ServicesManager.class, servicesManager); } @Override @@ -69,6 +76,7 @@ public class BatchEEServiceManager implements ServicesManagerLocator { final ClassLoader contextClassLoader = unwrap(Thread.currentThread().getContextClassLoader()); final AppContext context = AppFinder.findAppContextOrWeb(contextClassLoader, AppFinder.AppContextTransformer.INSTANCE); if (context != null) { + doInit(context); return context.get(ServicesManager.class); } throw new IllegalStateException("Can't find ServiceManager for " + contextClassLoader);