You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/05/15 17:43:47 UTC
svn commit: r1482917 - in
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb:
AppContext.java assembler/classic/Assembler.java
cdi/ThreadSingletonServiceImpl.java config/ConfigurationFactory.java
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);