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