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 2015/06/16 10:34:49 UTC

[1/2] tomee git commit: skipping cdi if not used at all (resources apps for instance)

Repository: tomee
Updated Branches:
  refs/heads/master 43581f489 -> 60a2e64f6


skipping cdi if not used at all (resources apps for instance)


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/60a2e64f
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/60a2e64f
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/60a2e64f

Branch: refs/heads/master
Commit: 60a2e64f600938561182969868440e74f223adba
Parents: ac8c659
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Jun 16 10:34:01 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Jun 16 10:34:38 2015 +0200

----------------------------------------------------------------------
 .../common/enrichment/OpenEJBEnricher.java      | 24 ++++++----
 .../openejb/OpenEJBDeployableContainer.java     |  4 +-
 .../openejb/OpenEJBInjectionEnricher.java       |  3 ++
 .../embedded/EmbeddedTomEEContainer.java        |  4 +-
 .../main/java/org/apache/openejb/Injector.java  | 14 +++---
 .../org/apache/openejb/OpenEjbContainer.java    | 28 ++++++-----
 .../openejb/assembler/classic/Assembler.java    | 30 ++++++++----
 .../openejb/testing/ApplicationComposers.java   | 13 ++++--
 .../tomee/catalina/OpenEJBContextConfig.java    | 49 +++++++++++---------
 .../tomee/catalina/TomcatJndiBuilder.java       |  6 ++-
 .../tomee/catalina/TomcatWebAppBuilder.java     |  1 +
 11 files changed, 109 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java b/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
index aa7eb7e..446482d 100644
--- a/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
+++ b/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
@@ -76,11 +76,14 @@ public final class OpenEJBEnricher {
         final BeanContext context = SystemInstance.get().getComponent(ContainerSystem.class).getBeanContext(ctx.getId() + "_" + testInstance.getClass().getName());
 
         final WebBeansContext appWBC = ctx.getWebBeansContext();
-        final BeanManagerImpl bm = appWBC.getBeanManagerImpl();
+        final BeanManagerImpl bm = appWBC == null ? null : appWBC.getBeanManagerImpl();
 
         boolean ok = false;
         for (final WebContext web : ctx.getWebContexts()) {
             final WebBeansContext webBeansContext = web.getWebBeansContext();
+            if (webBeansContext == null) {
+                continue;
+            }
             final BeanManagerImpl webAppBm = webBeansContext.getBeanManagerImpl();
             if (webBeansContext != appWBC && webAppBm.isInUse()) {
                 try {
@@ -130,6 +133,9 @@ public final class OpenEJBEnricher {
 
     private static BeanManagerImpl findBeanManager(final AppContext ctx) {
         if (ctx != null) {
+            if (ctx.getWebBeansContext() == null) {
+                return null;
+            }
             return ctx.getWebBeansContext().getBeanManagerImpl();
         }
 
@@ -152,13 +158,15 @@ public final class OpenEJBEnricher {
         final List<BeanManager> beanManagers = new ArrayList<>();
         final BeanManager bm = findBeanManager(appContext);
         if (bm != null) {
-            if (appContext != null) { // then add web bean manager first, TODO: selection of the webapp containing the test?
-                for (final WebContext web : appContext.getWebContexts()) {
-                    final WebBeansContext webBeansContext = web.getWebBeansContext();
-                    final BeanManagerImpl webAppBm = webBeansContext.getBeanManagerImpl();
-                    if (bm != webAppBm) {
-                        beanManagers.add(webAppBm);
-                    }
+            // then add web bean manager first, TODO: selection of the webapp containing the test?
+            for (final WebContext web : appContext.getWebContexts()) {
+                final WebBeansContext webBeansContext = web.getWebBeansContext();
+                if (webBeansContext == null) {
+                    continue;
+                }
+                final BeanManagerImpl webAppBm = webBeansContext.getBeanManagerImpl();
+                if (bm != webAppBm) {
+                    beanManagers.add(webAppBm);
                 }
             }
             beanManagers.add(bm);

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java b/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
index f999c20..a267c99 100644
--- a/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
+++ b/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
@@ -334,7 +334,7 @@ public class OpenEJBDeployableContainer implements DeployableContainer<OpenEJBCo
                 final ServletContext appServletContext = new MockServletContext();
                 final HttpSession appSession = new MockHttpSession();
 
-                if (configuration.isStartDefaultScopes()) {
+                if (configuration.isStartDefaultScopes() && appCtx.getWebBeansContext() != null) {
                     startContexts(appCtx.getWebBeansContext().getContextsService(), appServletContext, appSession);
                 }
 
@@ -375,7 +375,7 @@ public class OpenEJBDeployableContainer implements DeployableContainer<OpenEJBCo
             if (!configuration.isSingleDeploymentByArchiveName(archive.getName())) {
                 assembler.destroyApplication(info.get().path);
             }
-            if (configuration.isStartDefaultScopes()) {
+            if (configuration.isStartDefaultScopes() && ctx.getWebBeansContext() != null) {
                 stopContexts(ctx.getWebBeansContext().getContextsService(), servletContext.get(), session.get());
             }
         } catch (final Exception e) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java b/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
index a571381..c60aaff 100644
--- a/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
+++ b/arquillian/arquillian-openejb-embedded/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBInjectionEnricher.java
@@ -55,6 +55,9 @@ public class OpenEJBInjectionEnricher implements TestEnricher {
             final List<AppContext> appContexts = SystemInstance.get().getComponent(ContainerSystem.class).getAppContexts();
             final Class<?> clazz = testInstance.getClass();
             for (final AppContext appContext : appContexts) {
+                if (appContext.getWebBeansContext() == null) {
+                    continue;
+                }
                 try {
                     final BeanManager bm = appContext.getWebBeansContext().getBeanManagerImpl();
                     final AnnotatedType<?> at = bm.createAnnotatedType(clazz);

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
index 3478732..4428d1e 100644
--- a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
+++ b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
@@ -196,7 +196,7 @@ public class EmbeddedTomEEContainer extends TomEEContainer<EmbeddedTomEEConfigur
 
     private void startCdiContexts(final String name) {
         final WebBeansContext wbc = this.container.getAppContexts(name).getWebBeansContext();
-        if (wbc.getBeanManagerImpl().isInUse()) {
+        if (wbc != null && wbc.getBeanManagerImpl().isInUse()) {
             final MockHttpSession session = new MockHttpSession();
             wbc.getContextsService().startContext(RequestScoped.class, null);
             wbc.getContextsService().startContext(SessionScoped.class, session);
@@ -211,7 +211,7 @@ public class EmbeddedTomEEContainer extends TomEEContainer<EmbeddedTomEEConfigur
             final HttpSession session = SESSIONS.remove(name);
             if (session != null) {
                 final WebBeansContext wbc = container.getAppContexts(container.getInfo(name).appId).getWebBeansContext();
-                if (wbc.getBeanManagerImpl().isInUse()) {
+                if (wbc != null && wbc.getBeanManagerImpl().isInUse()) {
                     wbc.getContextsService().startContext(RequestScoped.class, null);
                     wbc.getContextsService().startContext(SessionScoped.class, session);
                     wbc.getContextsService().startContext(ConversationScoped.class, null);

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/container/openejb-core/src/main/java/org/apache/openejb/Injector.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/Injector.java b/container/openejb-core/src/main/java/org/apache/openejb/Injector.java
index b00e99e..db44d9e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/Injector.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/Injector.java
@@ -64,19 +64,19 @@ public class Injector {
     }
 
     private static <T> void cdiInjections(final BeanContext context, final T object) {
-        ThreadContext oldContext = null;
-        if (context != null) {
-            final ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
-            oldContext = ThreadContext.enter(callContext);
+        if (context.getWebBeansContext() == null) {
+            return;
         }
+
+        ThreadContext oldContext = null;
+        final ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
+        oldContext = ThreadContext.enter(callContext);
         try {
             OWBInjector.inject(context.getWebBeansContext().getBeanManagerImpl(), object, null);
         } catch (final Throwable t) {
             logger().warning("an error occured while injecting the class '" + object.getClass().getName() + "': " + t.getMessage());
         } finally {
-            if (context != null) {
-                ThreadContext.exit(oldContext);
-            }
+            ThreadContext.exit(oldContext);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java b/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
index 99aaba3..8039dce 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
@@ -118,8 +118,8 @@ public final class OpenEjbContainer extends EJBContainer {
     private final Options options;
     private final OpenEjbContainer.GlobalContext globalJndiContext;
     private final WebBeansContext webBeanContext;
-    private final ServletContext servletContext;
-    private final HttpSession session;
+    private volatile ServletContext servletContext;
+    private volatile HttpSession session;
 
     private OpenEjbContainer(final Map<?, ?> map, final AppContext appContext) {
         webBeanContext = appContext.getWebBeansContext();
@@ -132,12 +132,14 @@ public final class OpenEjbContainer extends EJBContainer {
 
         startNetworkServices();
 
-        servletContext = new MockServletContext();
-        session = new MockHttpSession();
-        try {
-            startContexts(webBeanContext.getContextsService(), servletContext, session);
-        } catch (final Exception e) {
-            logger().warning("can't start all CDI contexts", e);
+        if (webBeanContext != null) {
+            servletContext = new MockServletContext();
+            session = new MockHttpSession();
+            try {
+                startContexts(webBeanContext.getContextsService(), servletContext, session);
+            } catch (final Exception e) {
+                logger().warning("can't start all CDI contexts", e);
+            }
         }
     }
 
@@ -178,10 +180,12 @@ public final class OpenEjbContainer extends EJBContainer {
             }
         }
 
-        try {
-            stopContexts(webBeanContext.getContextsService(), servletContext, session);
-        } catch (final Exception e) {
-            logger().warning("can't stop all CDI contexts", e);
+        if (webBeanContext != null) {
+            try {
+                stopContexts(webBeanContext.getContextsService(), servletContext, session);
+            } catch (final Exception e) {
+                logger().warning("can't stop all CDI contexts", e);
+            }
         }
 
         logger().info("Destroying OpenEJB container");

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
index e495f68..be712b4 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
@@ -886,11 +886,13 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
                 propagateApplicationExceptions(appInfo, classLoader, allDeployments);
             }
 
-            if ("true".equalsIgnoreCase(appInfo.properties.getProperty("openejb.cdi.activated", "true"))) {
+            if (shouldStartCdi(appInfo)) {
                 new CdiBuilder().build(appInfo, appContext, allDeployments);
                 ensureWebBeansContext(appContext);
                 appJndiContext.bind("app/BeanManager", appContext.getBeanManager());
                 appContext.getBindings().put("app/BeanManager", appContext.getBeanManager());
+            } else { // ensure we can reuse it in tomcat to remove OWB filters
+                appInfo.properties.setProperty("openejb.cdi.activated", "false");
             }
 
             // now cdi is started we can try to bind real validator factory and validator
@@ -1005,9 +1007,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
             logger.info("createApplication.success", appInfo.path);
 
             return appContext;
-        } catch (final ValidationException ve) {
-            throw ve;
-        } catch (final DeploymentException ve) {
+        } catch (final ValidationException | DeploymentException ve) {
             throw ve;
         } catch (final Throwable t) {
             try {
@@ -1019,7 +1019,22 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
         }
     }
 
+    private boolean shouldStartCdi(final AppInfo appInfo) {
+        if (!"true".equalsIgnoreCase(appInfo.properties.getProperty("openejb.cdi.activated", "true"))) {
+            return false;
+        }
+        for (final EjbJarInfo ejbJarInfo : appInfo.ejbJars) {
+            if (ejbJarInfo.beans != null && !ejbJarInfo.beans.bdas.isEmpty()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private void validateCdiResourceProducers(final AppContext appContext, final AppInfo info) {
+        if (appContext.getWebBeansContext() == null) {
+            return;
+        }
         // validate @Produces @Resource/@PersistenceX/@EJB once all is bound to JNDI - best case - or with our model
         if (appContext.isStandaloneModule() && !appContext.getProperties().containsKey("openejb.cdi.skip-resource-validation")) {
             final Map<String, Object> bindings =
@@ -1159,7 +1174,7 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
 
                         try {
                             // wire up CDI
-                            if (appContext != null) {
+                            if (appContext != null && appContext.getWebBeansContext() != null) {
                                 final BeanManagerImpl beanManager = appContext.getWebBeansContext().getBeanManagerImpl();
                                 if (beanManager.isInUse()) {
                                     creationalContext = beanManager.createCreationalContext(null);
@@ -1614,10 +1629,9 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
         if (webBeansContext == null) {
             webBeansContext = appContext.getWebBeansContext();
         }else{
-            if(null == appContext.getWebBeansContext()){
+            if (null == appContext.getWebBeansContext()){
                 appContext.setWebBeansContext(webBeansContext);
-        }
-
+            }
             return;
         }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java b/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
index 495e7e9..8c6f1a0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
@@ -710,7 +710,7 @@ public class ApplicationComposers {
         appInfo = SystemInstance.get().getComponent(ConfigurationFactory.class).configureApplication(appModule);
         appContext = assembler.createApplication(appInfo);
 
-        if (mockCdiContexts()) {
+        if (mockCdiContexts() && appContext.getWebBeansContext() != null) {
             ScopeHelper.startContexts(appContext.getWebBeansContext().getContextsService(), servletContext, session);
         }
 
@@ -899,11 +899,16 @@ public class ApplicationComposers {
 
             Throwable error = null;
             try {
-                OWBInjector.inject(appContext.getBeanManager(), inputTestInstance, null);
+                if (appContext.getBeanManager() != null) {
+                    OWBInjector.inject(appContext.getBeanManager(), inputTestInstance, null);
+                }
             } catch (final Throwable t) {
                 error = t;
             }
             for (final WebContext web : appContext.getWebContexts()) {
+                if (web.getWebBeansContext() == null) {
+                    continue;
+                }
                 try {
                     OWBInjector.inject(web.getWebBeansContext().getBeanManagerImpl(), inputTestInstance, null);
                     // hourra, we enriched correctly the test then cleanup error state and quit
@@ -1036,7 +1041,7 @@ public class ApplicationComposers {
     }
 
     public void stopApplication() throws NamingException {
-        if (appContext != null) {
+        if (appContext != null && appContext.getWebBeansContext() != null) {
             final ContextsService contextsService = appContext.getWebBeansContext().getContextsService();
             // No need to stop the ConversationContext manually as it gets stored inside the SessionContext as Bean
             contextsService.endContext(SessionScoped.class, session);
@@ -1063,7 +1068,7 @@ public class ApplicationComposers {
 
         globalJndiEntries.clear();
 
-        if (mockCdiContexts() && appContext != null) {
+        if (mockCdiContexts() && appContext != null && appContext.getWebBeansContext() != null) {
             try {
                 ScopeHelper.stopContexts(appContext.getWebBeansContext().getContextsService(), servletContext, session);
             } catch (final Exception e) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
index c9169d3..e5c163a 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBContextConfig.java
@@ -351,29 +351,32 @@ public class OpenEJBContextConfig extends ContextConfig {
             }
         }
 
-        {
-            final FilterDef filter = new FilterDef();
-            filter.setAsyncSupported("true");
-            filter.setDescription("OpenEJB CDI Filter - to propagate @RequestScoped in async tasks");
-            filter.setDisplayName("OpenEJB CDI");
-            filter.setFilterClass(WebBeansFilter.class.getName());
-            filter.setFilterName(WebBeansFilter.class.getName());
-            webXml.addFilter(filter);
-
-            final FilterMap mapping = new FilterMap();
-            mapping.setFilterName(filter.getFilterName());
-            mapping.addURLPattern("/*");
-            webXml.addFilterMapping(mapping);
-        }
-
-        {
-            final FilterDef filter = new FilterDef();
-            filter.setAsyncSupported("true");
-            filter.setDescription("CDI Conversation Filter");
-            filter.setDisplayName("CDI Conversation Filter");
-            filter.setFilterName("CDI Conversation Filter");
-            filter.setFilterClass(WebConversationFilter.class.getName());
-            webXml.addFilter(filter);
+        final AppInfo app = info.app();
+        if (app == null || !"false".equals(app.properties.getProperty("openejb.cdi.activated"))) {
+            {
+                final FilterDef filter = new FilterDef();
+                filter.setAsyncSupported("true");
+                filter.setDescription("OpenEJB CDI Filter - to propagate @RequestScoped in async tasks");
+                filter.setDisplayName("OpenEJB CDI");
+                filter.setFilterClass(WebBeansFilter.class.getName());
+                filter.setFilterName(WebBeansFilter.class.getName());
+                webXml.addFilter(filter);
+
+                final FilterMap mapping = new FilterMap();
+                mapping.setFilterName(filter.getFilterName());
+                mapping.addURLPattern("/*");
+                webXml.addFilterMapping(mapping);
+            }
+
+            {
+                final FilterDef filter = new FilterDef();
+                filter.setAsyncSupported("true");
+                filter.setDescription("CDI Conversation Filter");
+                filter.setDisplayName("CDI Conversation Filter");
+                filter.setFilterName("CDI Conversation Filter");
+                filter.setFilterClass(WebConversationFilter.class.getName());
+                webXml.addFilter(filter);
+            }
         }
 
         return webXml;

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
index cb8c774..35b8adb 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatJndiBuilder.java
@@ -65,6 +65,7 @@ import org.apache.tomee.common.ResourceFactory;
 import org.apache.tomee.common.SystemComponentFactory;
 import org.apache.tomee.common.UserTransactionFactory;
 import org.apache.tomee.common.WsFactory;
+import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.container.InjectableBeanManager;
 import org.omg.CORBA.ORB;
 
@@ -273,7 +274,10 @@ public class TomcatJndiBuilder {
             if (webContext != null && webContext.getWebbeansContext() != null) {
                 comp.rebind("BeanManager", new InjectableBeanManager(webContext.getWebbeansContext().getBeanManagerImpl()));
             } else if (contextInfo != null) {
-                comp.rebind("BeanManager", new InjectableBeanManager(cs.getAppContext(contextInfo.appInfo.appId).getWebBeansContext().getBeanManagerImpl()));
+                final WebBeansContext webBeansContext = cs.getAppContext(contextInfo.appInfo.appId).getWebBeansContext();
+                if (webBeansContext != null) { // can be null if cdi is inhibited
+                    comp.rebind("BeanManager", new InjectableBeanManager(webBeansContext.getBeanManagerImpl()));
+                }
             }
         } catch (final Exception ignored) {
             ignored.printStackTrace();

http://git-wip-us.apache.org/repos/asf/tomee/blob/60a2e64f/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
index 847f4f6..329106c 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
@@ -1183,6 +1183,7 @@ public class TomcatWebAppBuilder implements WebAppBuilder, ContextListener, Pare
                     contextInfo.standardContext = standardContext; // ensure to do it before an exception can be thrown
 
                     contextInfo.appInfo = configurationFactory.configureApplication(appModule);
+
                     final Boolean autoDeploy = DeployerEjb.AUTO_DEPLOY.get();
                     contextInfo.appInfo.autoDeploy = autoDeploy == null || autoDeploy;
                     DeployerEjb.AUTO_DEPLOY.remove();


[2/2] tomee git commit: adding HttpSessionIdListener in web component

Posted by rm...@apache.org.
adding HttpSessionIdListener in web component


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/ac8c6590
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/ac8c6590
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/ac8c6590

Branch: refs/heads/master
Commit: ac8c65906b658cf87087f4274cd90c39a7deee79
Parents: 43581f4
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Jun 16 09:53:36 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Jun 16 10:34:38 2015 +0200

----------------------------------------------------------------------
 .../src/main/java/org/apache/openejb/core/WebContext.java      | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ac8c6590/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java b/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
index 4811751..8674bfa 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/WebContext.java
@@ -39,6 +39,7 @@ import javax.servlet.ServletContextListener;
 import javax.servlet.ServletRequestAttributeListener;
 import javax.servlet.ServletRequestListener;
 import javax.servlet.http.HttpSessionAttributeListener;
+import javax.servlet.http.HttpSessionIdListener;
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -173,9 +174,9 @@ public class WebContext {
                 if (beanDefinition == null) {
                     final AnnotatedType annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(beanClass);
                     if (isWeb(beanClass)) {
-                        beanDefinition = new ConstructorInjectionBean<Object>(webBeansContext, beanClass, annotatedType, false);
+                        beanDefinition = new ConstructorInjectionBean<>(webBeansContext, beanClass, annotatedType, false);
                     } else {
-                        beanDefinition = new ConstructorInjectionBean<Object>(webBeansContext, beanClass, annotatedType);
+                        beanDefinition = new ConstructorInjectionBean<>(webBeansContext, beanClass, annotatedType);
                     }
 
                     constructorInjectionBeanCache.put(beanClass, beanDefinition);
@@ -193,6 +194,7 @@ public class WebContext {
             || HttpSessionAttributeListener.class.isAssignableFrom(beanClass)
             || ServletRequestListener.class.isAssignableFrom(beanClass)
             || ServletContextAttributeListener.class.isAssignableFrom(beanClass)
+            || HttpSessionIdListener.class.isAssignableFrom(beanClass)
             || ServletRequestAttributeListener.class.isAssignableFrom(beanClass);
     }