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);

Reply via email to