diff --git a/jersey-servlet/pom.xml b/jersey-servlet/pom.xml index 135455074..220d805b2 100644 --- a/jersey-servlet/pom.xml +++ b/jersey-servlet/pom.xml @@ -184,7 +184,6 @@ - com.sun.jersey.server.impl.cdi, com.sun.jersey.server.impl.ejb, com.sun.jersey.server.impl.managedbeans @@ -193,6 +192,7 @@ com.sun.jersey.spi.container.servlet, com.sun.jersey.api.core.servlet, com.sun.jersey.api.container.servlet, + com.sun.jersey.server.impl.cdi, com.sun.jersey.server.impl.container.servlet diff --git a/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/CDIComponentProviderFactory.java b/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/CDIComponentProviderFactory.java index 6fa1eeddc..e5d82ad1c 100644 --- a/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/CDIComponentProviderFactory.java +++ b/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/CDIComponentProviderFactory.java @@ -86,7 +86,7 @@ public CDIComponentProviderFactory(Object bm, ResourceConfig rc, WebApplication beanManager = (BeanManager)bm; // work around proxying bug in Weld if (CDIExtension.lookupExtensionInBeanManager) { - extension = Utils.getInstance(beanManager, CDIExtension.class); + extension = Utils.getExtension(beanManager, CDIExtension.class); } else { extension = CDIExtension.getInitializedExtension(); diff --git a/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/Utils.java b/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/Utils.java index c20977b9c..9d41de62e 100644 --- a/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/Utils.java +++ b/jersey-servlet/src/main/java/com/sun/jersey/server/impl/cdi/Utils.java @@ -42,6 +42,7 @@ import java.util.Collections; import java.util.Set; +import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.spi.CreationalContext; import javax.enterprise.inject.AmbiguousResolutionException; import javax.enterprise.inject.spi.Bean; @@ -88,6 +89,15 @@ public static T getInstance(BeanManager bm, Class c) { CreationalContext cc = bm.createCreationalContext(b); return c.cast(bm.getReference(b, c, cc)); } + + public static T getExtension(BeanManager bm, Class clazz) { + Bean bean = getBean(bm, clazz); + if (bean == null) { + return null; + } + + return clazz.cast(bm.getContext(ApplicationScoped.class).get(bean)); + } private static boolean isSharedBaseClass(Class c, Set> bs) { for (Bean b : bs) {