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 2016/08/24 11:30:38 UTC

tomee git commit: some cleanup to avoid to rely on WBC.currentInstance() to test if CDI is there

Repository: tomee
Updated Branches:
  refs/heads/master 069385506 -> ae9700646


some cleanup to avoid to rely on WBC.currentInstance() to test if CDI is there


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

Branch: refs/heads/master
Commit: ae97006461eb755aefa90f779a3f2aa7ab90d85f
Parents: 0693855
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Wed Aug 24 13:30:29 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Wed Aug 24 13:30:29 2016 +0200

----------------------------------------------------------------------
 .../openejb/assembler/classic/Assembler.java       |  3 ++-
 .../assembler/classic/ValidatorBuilder.java        |  4 +++-
 .../org/apache/openejb/cdi/CustomELAdapter.java    | 17 ++++++++++++++++-
 .../org/apache/openejb/cdi/OpenEJBLifecycle.java   | 10 +++++-----
 .../apache/openejb/cipher/CdiPasswordCipher.java   | 13 +++++++++----
 .../java/org/apache/openejb/config/AutoConfig.java | 10 +++++++++-
 .../core/webservices/HandlerResolverImpl.java      |  4 +++-
 .../testing/SingleApplicationComposerRunner.java   | 10 +++++++++-
 .../openejb/web/LightweightWebAppBuilder.java      |  9 ++++++++-
 .../openejb/server/cxf/pojo/PojoEndpoint.java      |  4 +++-
 .../openejb/server/httpd/HttpRequestImpl.java      |  4 +++-
 .../catalina/startup/OpenEJBContextConfig.java     |  3 ++-
 .../tomee/catalina/TomEEWebappClassLoader.java     |  5 ++++-
 .../embedded/junit/TomEEEmbeddedSingleRunner.java  | 10 +++++++++-
 .../myfaces/TomEEFacesConfigResourceProvider.java  |  4 +++-
 15 files changed, 88 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/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 76b161a..ae52f14 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
@@ -2838,7 +2838,8 @@ public class Assembler extends AssemblerTool implements org.apache.openejb.spi.A
         return new LazyResource(new Callable<Object>() {
             @Override
             public Object call() throws Exception {
-                final boolean appClassLoader = "true".equals(serviceInfo.properties.remove("UseAppClassLoader"));
+                final boolean appClassLoader = "true".equals(serviceInfo.properties.remove("UseAppClassLoader"))
+                        || serviceInfo.originAppName != null;
 
                 final Thread thread = Thread.currentThread();
                 final ClassLoader old = thread.getContextClassLoader();

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
index 18a7dea..d5c11d0 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ValidatorBuilder.java
@@ -22,6 +22,7 @@ import org.apache.openejb.jee.bval.ExecutableValidationType;
 import org.apache.openejb.jee.bval.PropertyType;
 import org.apache.openejb.jee.bval.ValidationConfigType;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.webbeans.config.WebBeansContext;
@@ -238,7 +239,8 @@ public final class ValidatorBuilder {
     }
 
     private static <T> T newInstance(final OpenEjbConfig config, final Class<T> clazz) throws Exception {
-        final WebBeansContext webBeansContext = WebBeansContext.currentInstance();
+        final WebBeansContext webBeansContext = AppFinder.findAppContextOrWeb(
+                Thread.currentThread().getContextClassLoader(), AppFinder.WebBeansContextTransformer.INSTANCE);
         if (webBeansContext == null) {
             return clazz.newInstance();
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/cdi/CustomELAdapter.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CustomELAdapter.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CustomELAdapter.java
index 72bbff9..758142f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CustomELAdapter.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CustomELAdapter.java
@@ -18,6 +18,7 @@
 package org.apache.openejb.cdi;
 
 import org.apache.openejb.AppContext;
+import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.el22.WebBeansELResolver;
 import org.apache.webbeans.el22.WrappedExpressionFactory;
 import org.apache.webbeans.spi.adaptor.ELAdaptor;
@@ -38,7 +39,21 @@ public class CustomELAdapter implements ELAdaptor {
 
     @Override
     public ELResolver getOwbELResolver() {
-        return new WebBeansELResolver();
+        WebBeansContext old = null;
+        boolean exit = false;
+        try { // just some safety around this but should be very very rare
+            WebBeansContext.currentInstance();
+        } catch (final IllegalStateException ise) {
+            old = ThreadSingletonServiceImpl.enter(appContext.getWebBeansContext());
+            exit = true;
+        }
+        try {
+            return new WebBeansELResolver();
+        } finally {
+            if (exit) {
+                ThreadSingletonServiceImpl.exit(old);
+            }
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
index 99ca039..61b7f1f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
@@ -145,17 +145,17 @@ public class OpenEJBLifecycle implements ContainerLifecycle {
         try {
             Thread.currentThread().setContextClassLoader(stuff.getClassLoader());
 
+            final AppContext appContext = stuff.getAppContext();
+            if (stuff.getWebContext() == null) { // do it before any other things to keep our singleton finder working
+                appContext.setWebBeansContext(webBeansContext);
+            }
+
             //Load all plugins
             webBeansContext.getPluginLoader().startUp();
 
             //Get Plugin
             final CdiPlugin cdiPlugin = (CdiPlugin) webBeansContext.getPluginLoader().getEjbPlugin();
 
-            final AppContext appContext = stuff.getAppContext();
-            if (stuff.getWebContext() == null) {
-                appContext.setWebBeansContext(webBeansContext);
-            }
-
             cdiPlugin.setClassLoader(stuff.getClassLoader());
             cdiPlugin.setWebBeansContext(webBeansContext);
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/cipher/CdiPasswordCipher.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cipher/CdiPasswordCipher.java b/container/openejb-core/src/main/java/org/apache/openejb/cipher/CdiPasswordCipher.java
index 0e8077e..f51b5db 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cipher/CdiPasswordCipher.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cipher/CdiPasswordCipher.java
@@ -32,10 +32,15 @@ public final class CdiPasswordCipher implements PasswordCipher {
     @Override
     public String decrypt(final char[] encryptedPassword) {
         final String string = new String(encryptedPassword);
-        final WebBeansContext wbc = WebBeansContext.currentInstance();
-        final BeanManagerImpl mgr = wbc.getBeanManagerImpl();
-        if (!mgr.isInUse()) { // not yet the time to use CDI, container is not started
-            // would be cool to log a warning here but would pollute the logs with false positives
+        final BeanManagerImpl mgr;
+        try {
+            final WebBeansContext wbc = WebBeansContext.currentInstance();
+            mgr = wbc.getBeanManagerImpl();
+            if (!mgr.isInUse()) { // not yet the time to use CDI, container is not started
+                // would be cool to log a warning here but would pollute the logs with false positives
+                return "cipher:cdi:" + string;
+            }
+        } catch (final IllegalStateException ise) { // no cdi
             return "cipher:cdi:" + string;
         }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
index 71b0b9c..0653f4d 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/AutoConfig.java
@@ -947,7 +947,15 @@ public class AutoConfig implements DynamicDeployer, JndiConstants {
                 resource.setId(modulePrefix + replaceJavaAndSlash(originalId));
             }
             resource.setJndi(PropertyPlaceHolderHelper.value(resource.getJndi()));
-            resource.getProperties().putAll(PropertyPlaceHolderHelper.holds(resource.getProperties()));
+
+            final Thread thread = Thread.currentThread();
+            final ClassLoader oldCl = thread.getContextClassLoader();
+            thread.setContextClassLoader(module.getClassLoader());
+            try {
+                resource.getProperties().putAll(PropertyPlaceHolderHelper.holds(resource.getProperties()));
+            } finally {
+                thread.setContextClassLoader(oldCl);
+            }
 
             final Collection<String> aliases = resource.getAliases();
             if (!aliases.isEmpty()) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java b/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
index 504ca01..b5962ea 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
@@ -38,6 +38,7 @@ import javax.xml.ws.handler.PortInfo;
 
 import org.apache.openejb.Injection;
 import org.apache.openejb.InjectionProcessor;
+import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.webbeans.config.WebBeansContext;
@@ -86,7 +87,8 @@ public class HandlerResolverImpl implements HandlerResolver {
 
         final List<Handler> handlers = new ArrayList<Handler>(handlerChain.getHandlers().size());
         for (final HandlerData handler : handlerChain.getHandlers()) {
-            final WebBeansContext webBeansContext = WebBeansContext.currentInstance();
+            final WebBeansContext webBeansContext = AppFinder.findAppContextOrWeb(
+                    Thread.currentThread().getContextClassLoader(), AppFinder.WebBeansContextTransformer.INSTANCE);
             if (webBeansContext != null) { // cdi
                 final BeanManagerImpl bm = webBeansContext.getBeanManagerImpl();
                 if (bm.isInUse()) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/testing/SingleApplicationComposerRunner.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/testing/SingleApplicationComposerRunner.java b/container/openejb-core/src/main/java/org/apache/openejb/testing/SingleApplicationComposerRunner.java
index 6c40003..b0a36fe 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/testing/SingleApplicationComposerRunner.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/testing/SingleApplicationComposerRunner.java
@@ -171,7 +171,15 @@ public class SingleApplicationComposerRunner extends BlockJUnit4ClassRunner {
     }
 
     private static void composerInject(final Object target) throws IllegalAccessException {
-        OWBInjector.inject(WebBeansContext.currentInstance().getBeanManagerImpl(), target, null);
+        WebBeansContext wbc = null;
+        try {
+            wbc = WebBeansContext.currentInstance();
+        } catch (final IllegalStateException ise) {
+            // no-op
+        }
+        if (wbc != null) {
+            OWBInjector.inject(wbc.getBeanManagerImpl(), target, null);
+        }
 
         final Object app = APP.get();
         final Class<?> aClass = target.getClass();

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java b/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
index 28b2ddf..504090f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/web/LightweightWebAppBuilder.java
@@ -230,7 +230,14 @@ public class LightweightWebAppBuilder implements WebAppBuilder {
             servletDeploymentInfo.put(webAppInfo, deployedWebObjects);
 
             if (webContext.getWebBeansContext() != null) {
-                OpenEJBLifecycle.class.cast(webContext.getWebBeansContext().getService(ContainerLifecycle.class)).startServletContext(sce.getServletContext());
+                final Thread thread = Thread.currentThread();
+                final ClassLoader old = thread.getContextClassLoader();
+                thread.setContextClassLoader(webContext.getClassLoader());
+                try {
+                    OpenEJBLifecycle.class.cast(webContext.getWebBeansContext().getService(ContainerLifecycle.class)).startServletContext(sce.getServletContext());
+                } finally {
+                    thread.setContextClassLoader(old);
+                }
             }
 
             if (addServletMethod == null) { // can't manage filter/servlets

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
----------------------------------------------------------------------
diff --git a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
index 97021a3..c564d73 100644
--- a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
+++ b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/pojo/PojoEndpoint.java
@@ -35,6 +35,7 @@ import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.cxf.CxfEndpoint;
 import org.apache.openejb.server.cxf.CxfServiceConfiguration;
 import org.apache.openejb.server.cxf.JaxWsImplementorInfoImpl;
+import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.webbeans.component.AbstractOwbBean;
@@ -106,7 +107,8 @@ public class PojoEndpoint extends CxfEndpoint {
         final ClassLoader old = Thread.currentThread().getContextClassLoader();
         Thread.currentThread().setContextClassLoader(loader);
         try {
-            final WebBeansContext webBeansContext = WebBeansContext.currentInstance();
+            final WebBeansContext webBeansContext = AppFinder.findAppContextOrWeb(
+                    Thread.currentThread().getContextClassLoader(), AppFinder.WebBeansContextTransformer.INSTANCE);
             final BeanManagerImpl bm = webBeansContext == null ? null : webBeansContext.getBeanManagerImpl();
             if (bm != null && bm.isInUse()) { // try cdi bean
                 if (JAXWS_AS_CDI_BEANS) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
index 129a4d7..42951cf 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
@@ -24,6 +24,7 @@ import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.httpd.part.CommonsFileUploadPartFactory;
 import org.apache.openejb.server.httpd.session.SessionManager;
 import org.apache.openejb.spi.SecurityService;
+import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.util.ArrayEnumeration;
 import org.apache.openejb.util.Logger;
 import org.apache.webbeans.config.WebBeansContext;
@@ -1037,7 +1038,8 @@ public class HttpRequestImpl implements HttpRequest {
         final OpenEJBAsyncContext asyncContext = new OpenEJBAsyncContext(HttpServletRequest.class.cast(servletRequest) /* TODO */, servletResponse, contextPath);
         asyncContext.internalStartAsync();
         asyncStarted = true;
-        final WebBeansContext webBeansContext = WebBeansContext.currentInstance();
+        final WebBeansContext webBeansContext = AppFinder.findAppContextOrWeb(
+                Thread.currentThread().getContextClassLoader(), AppFinder.WebBeansContextTransformer.INSTANCE);
         return webBeansContext != null ?
                 new EEFilter.AsynContextWrapper(asyncContext, servletRequest, webBeansContext) : asyncContext;
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/tomee/tomee-catalina/src/main/java/org/apache/catalina/startup/OpenEJBContextConfig.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/catalina/startup/OpenEJBContextConfig.java b/tomee/tomee-catalina/src/main/java/org/apache/catalina/startup/OpenEJBContextConfig.java
index f54051a..2dee1ed 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/catalina/startup/OpenEJBContextConfig.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/catalina/startup/OpenEJBContextConfig.java
@@ -40,6 +40,7 @@ import org.apache.openejb.config.ServiceUtils;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.server.httpd.EEFilter;
+import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.URLs;
@@ -405,7 +406,7 @@ public class OpenEJBContextConfig extends ContextConfig {
             return;
         }
 
-        if (WebBeansContext.currentInstance() != null) {
+        if (AppFinder.findAppContextOrWeb(context.getLoader().getClassLoader(), AppFinder.WebBeansContextTransformer.INSTANCE) != null) {
             final FilterDef asyncOwbFilter = new FilterDef();
             asyncOwbFilter.setAsyncSupported("true");
             asyncOwbFilter.setDescription("OpenEJB CDI Filter - to propagate @RequestScoped in async tasks");

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
index 0ca7a1e..c778fac 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
@@ -34,6 +34,7 @@ import org.apache.openejb.config.QuickJarsTxtParser;
 import org.apache.openejb.core.ParentClassLoaderFinder;
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.openejb.util.URLs;
@@ -467,7 +468,9 @@ public class TomEEWebappClassLoader extends ParallelWebappClassLoader {
         }
         if ("META-INF/faces-config.xml".equals(name)) { // mojarra workaround
             try {
-                if (WebBeansContext.currentInstance() == null && Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.jsf.ignore-owb", "true"))) {
+                if (AppFinder.findAppContextOrWeb(
+                        Thread.currentThread().getContextClassLoader(), AppFinder.WebBeansContextTransformer.INSTANCE) == null
+                        && Boolean.parseBoolean(SystemInstance.get().getProperty("tomee.jsf.ignore-owb", "true"))) {
                     final Collection<URL> list = new HashSet<>(Collections.list(super.getResources(name)));
                     final Iterator<URL> it = list.iterator();
                     while (it.hasNext()) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
index dbc04a5..4a7f5fc 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/junit/TomEEEmbeddedSingleRunner.java
@@ -331,7 +331,15 @@ public class TomEEEmbeddedSingleRunner extends BlockJUnit4ClassRunner {
     }
 
     private static void composerInject(final Object target) throws IllegalAccessException {
-        OWBInjector.inject(WebBeansContext.currentInstance().getBeanManagerImpl(), target, null);
+        WebBeansContext webBeansContext = null;
+        try {
+            webBeansContext = WebBeansContext.currentInstance();
+        } catch (final IllegalStateException ise) {
+            // no-op
+        }
+        if (webBeansContext != null) {
+            OWBInjector.inject(webBeansContext.getBeanManagerImpl(), target, null);
+        }
 
         final Object app = APP.get();
         final Class<?> aClass = target.getClass();

http://git-wip-us.apache.org/repos/asf/tomee/blob/ae970064/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEFacesConfigResourceProvider.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEFacesConfigResourceProvider.java b/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEFacesConfigResourceProvider.java
index 7053c7a..247e493 100644
--- a/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEFacesConfigResourceProvider.java
+++ b/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEFacesConfigResourceProvider.java
@@ -20,6 +20,7 @@ import org.apache.myfaces.config.DefaultFacesConfigResourceProvider;
 import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.openejb.config.NewLoaderLogic;
 import org.apache.openejb.loader.Files;
+import org.apache.openejb.util.AppFinder;
 import org.apache.openejb.util.URLs;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.xbean.finder.UrlSet;
@@ -126,7 +127,8 @@ public class TomEEFacesConfigResourceProvider extends DefaultFacesConfigResource
         }
 
         try {
-            if (WebBeansContext.currentInstance() == null) {
+            if (AppFinder.findAppContextOrWeb(
+                    Thread.currentThread().getContextClassLoader(), AppFinder.WebBeansContextTransformer.INSTANCE) == null) {
                 final Iterator<URL> toFilter = urlSet.iterator();
                 while (toFilter.hasNext()) {
                     final URL url = toFilter.next();