Author: rmannibucau
Date: Mon Aug 12 06:48:26 2013
New Revision: 1513051

URL: http://svn.apache.org/r1513051
Log:
TOMEE-1019 more late init for openejb.session-context and 
openejb.classloader.skip-app-loader-if-possible

Modified:
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1513051&r1=1513050&r2=1513051&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
 Mon Aug 12 06:48:26 2013
@@ -217,7 +217,7 @@ public class Assembler extends Assembler
     public static final String TIMER_STORE_CLASS = "timerStore.class";
     private static final ReentrantLock lock = new ReentrantLock(true);
 
-    private static final boolean SKIP_APP_LOADER_IF_POSSIBLE = 
"true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.classloader.skip-app-loader-if-possible",
 "true"));
+    private final boolean skipLoaderIfPossible;
 
     Messages messages = new Messages(Assembler.class.getPackage().getName());
     private final CoreContainerSystem containerSystem;
@@ -281,6 +281,7 @@ public class Assembler extends Assembler
     }
 
     public Assembler(final JndiFactory jndiFactory) {
+        skipLoaderIfPossible = 
"true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.classloader.skip-app-loader-if-possible",
 "true"));
         persistenceClassLoaderHandler = new 
PersistenceClassLoaderHandlerImpl();
 
         installNaming();
@@ -1862,7 +1863,7 @@ public class Assembler extends Assembler
         // some lib (DS for instance) rely on AppClassLoader for CDI bean 
manager usage (common for tests cases where you
         // try to get the app BM from the AppClassLoader having stored it in a 
map).
         // since we don't really need to create a classloader here when 
starting from classpath just let skip this step
-        if (SKIP_APP_LOADER_IF_POSSIBLE) { // TODO: maybe use a boolean to 
know if all urls comes from the classpath to avoid this validation
+        if (skipLoaderIfPossible) { // TODO: maybe use a boolean to know if 
all urls comes from the classpath to avoid this validation
             final Collection<File> urls = new ArrayList<File>();
             for (final URL url : ClassLoaders.findUrls(parent)) { // need to 
convert it to file since urls can be file:/xxx or jar:file:///xxx
                 try {

Modified: 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java?rev=1513051&r1=1513050&r2=1513051&view=diff
==============================================================================
--- 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
 (original)
+++ 
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/ThreadSingletonServiceImpl.java
 Mon Aug 12 06:48:26 2013
@@ -58,7 +58,7 @@ public class ThreadSingletonServiceImpl 
 
     public static final Logger logger = 
Logger.getInstance(LogCategory.OPENEJB_STARTUP, 
ThreadSingletonServiceImpl.class);
 
-    private final String sessionContextClass;
+    private String sessionContextClass = null;
 
     //this needs to be static because OWB won't tell us what the existing 
SingletonService is and you can't set it twice.
     private static final ThreadLocal<WebBeansContext> contexts = new 
ThreadLocal<WebBeansContext>();
@@ -66,11 +66,15 @@ public class ThreadSingletonServiceImpl 
     private static final String WEBBEANS_FAILOVER_ISSUPPORTFAILOVER = 
"org.apache.webbeans.web.failover.issupportfailover";
 
     public ThreadSingletonServiceImpl() {
-        sessionContextClass = 
SystemInstance.get().getProperty("openejb.session-context", "").trim();
+        // no-op
     }
 
     @Override
     public void initialize(final StartupObject startupObject) {
+        if (sessionContextClass == null) { // done here cause Cdibuilder 
trigger this class loading and that's from Warmup so we can't init too early 
config
+            sessionContextClass = 
SystemInstance.get().getProperty("openejb.session-context", "").trim();
+        }
+
         final AppContext appContext = startupObject.getAppContext();
 
         appContext.setCdiEnabled(hasBeans(startupObject.getAppInfo()));


Reply via email to