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