Author: rmannibucau
Date: Wed May 15 15:43:47 2013
New Revision: 1482917
URL: http://svn.apache.org/r1482917
Log:
TOMEE-938 deactivating cdi for internal openejb application to avoid the noise
it brings to our singleton service
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java
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
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java?rev=1482917&r1=1482916&r2=1482917&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/AppContext.java
Wed May 15 15:43:47 2013
@@ -66,6 +66,9 @@ public class AppContext extends Deployme
}
public BeanManager getBeanManager() {
+ if (webBeansContext == null) {
+ return null;
+ }
return webBeansContext.getBeanManagerImpl();
}
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=1482917&r1=1482916&r2=1482917&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
Wed May 15 15:43:47 2013
@@ -794,12 +794,12 @@ public class Assembler extends Assembler
propagateApplicationExceptions(appInfo, classLoader,
allDeployments);
}
- new CdiBuilder().build(appInfo, appContext, allDeployments);
-
- ensureWebBeansContext(appContext);
-
- appJndiContext.bind("app/BeanManager",
appContext.getBeanManager());
- appContext.getBindings().put("app/BeanManager",
appContext.getBeanManager());
+ if
("true".equalsIgnoreCase(appInfo.properties.getProperty("openejb.cdi.activated",
"true"))) {
+ new CdiBuilder().build(appInfo, appContext, allDeployments);
+ ensureWebBeansContext(appContext);
+ appJndiContext.bind("app/BeanManager",
appContext.getBeanManager());
+ appContext.getBindings().put("app/BeanManager",
appContext.getBeanManager());
+ }
startEjbs(start, allDeployments);
@@ -1146,9 +1146,19 @@ public class Assembler extends Assembler
throw new OpenEJBRuntimeException(e);
}
- final BeanManager bm = wc.getBeanManagerImpl();
- final Set<Bean<?>> beans = bm.getBeans(clazz);
- final Bean bean = bm.resolve(beans);
+ // cdi can be off so init with null bean in this case
+ final Bean bean;
+ final BeanManager bm;
+ if (wc == null) {
+ bm = null;
+ bean = null;
+ } else {
+ bm = wc.getBeanManagerImpl();
+ final Set<Bean<?>> beans = bm.getBeans(clazz);
+ bean = bm.resolve(beans);
+ }
+
+ // create the MBean instance with cdi if possible or manually
otherwise
final Object instance;
final CreationalContext creationalContext;
if (bean == null) {
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=1482917&r1=1482916&r2=1482917&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
Wed May 15 15:43:47 2013
@@ -90,7 +90,7 @@ public class ThreadSingletonServiceImpl
properties.setProperty(OpenWebBeansConfiguration.IGNORED_INTERFACES,
"org.apache.aries.proxy.weaving.WovenProxy");
final String failoverService =
startupObject.getAppInfo().properties.getProperty("org.apache.webbeans.spi.FailOverService",
-
SystemInstance.get().getProperty("org.apache.webbeans.spi.FailOverService",
(String) null));
+
SystemInstance.get().getProperty("org.apache.webbeans.spi.FailOverService",
(String) null));
if (failoverService != null) {
properties.setProperty(OpenWebBeansConfiguration.IGNORED_INTERFACES,
failoverService);
}
@@ -291,16 +291,24 @@ public class ThreadSingletonServiceImpl
return context;
}
- private static WebBeansContext getWebBeansContext(List<AppContext>
appContexts) {
+ private static WebBeansContext getWebBeansContext(final List<AppContext>
appContexts) {
Collections.sort(appContexts, new Comparator<AppContext>() {
@Override
- public int compare(AppContext appContext, AppContext appContext1) {
- return
appContext1.getWebBeansContext().getBeanManagerImpl().getBeans().size() -
appContext.getWebBeansContext().getBeanManagerImpl().getBeans().size();
+ public int compare(final AppContext appContext, final AppContext
appContext1) {
+ return cdiSize(appContext1) - cdiSize(appContext);
}
});
return appContexts.get(0).getWebBeansContext();
}
+ private static int cdiSize(final AppContext ctx) {
+ final WebBeansContext wbc = ctx.getWebBeansContext();
+ if (wbc == null) {
+ return 0;
+ }
+ return wbc.getBeanManagerImpl().getBeans().size();
+ }
+
@Override
public WebBeansContext get(Object key) {
return getContext((ClassLoader) key);
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL:
http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=1482917&r1=1482916&r2=1482917&view=diff
==============================================================================
---
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
(original)
+++
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
Wed May 15 15:43:47 2013
@@ -516,6 +516,10 @@ public class ConfigurationFactory implem
if (options.get("openejb.system.apps", false)) {
try {
final AppInfo appInfo = configureApplication(new
AppModule(SystemApps.getSystemModule()));
+ // they doesn't use CDI so no need to activate it
+ // 1) will be faster
+ // 2) will let embedded containers (tomee-embedded mainly) not
be noised by it in our singleton service
+ appInfo.properties.put("openejb.cdi.activated", "false");
sys.containerSystem.applications.add(appInfo);
} catch (OpenEJBException e) {
logger.error("Unable to load the system applications.", e);