You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by st...@apache.org on 2017/10/23 17:19:39 UTC

[24/28] tomee git commit: TOMEE-2131 ensure we eagerly init the batchee ServicesManager when the context is available if needed

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/fb_tomee8
Commit: 884e2a13e9f1b62507b3db6f872468854514d44c
Parents: 37513d1
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Thu Oct 5 16:34:39 2017 +0200
Committer: Romain Manni-Bucau <rm...@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);