Have a look at the bean manager java doc -> *getBeans <http://docs.oracle.com/javaee/6/api/javax/enterprise/inject/spi/BeanManager.html#getBeans%28java.lang.reflect.Type,%20java.lang.annotation.Annotation...%29>*(java.lang.reflect.Type beanType, java.lang.annotation.Annotation... qualifiers)
RequestScoped isn't a CDI qualifier! ;) 2014-06-12 14:03 GMT+02:00 Felipe Pina <[email protected]>: > Questions > > > 1. Is there any schema that uses in the beans.xml file that configures > the engine to evaluate candidates beans through a package path? > 2. the fact that the bean be packaged inside a jar which in turn, > within a war, is impediment to the proper functioning of the injection of > bean? > > > > *Tests* > > 1. lookup bean from string value > 1. lookup "teste" -> works fine > 2. lookup "perm" -> *fail returning null* > 2. lookup bean from type > 1. lookup using Permissao.class -> * fail returning null* > > > > *Project Structure* > > *WAR* > * |- WebProject* > * |- com.company.bean.JSFBean -> **@Named(value="teste")* > * |- BusinessProject* > * |- com.company.bean.Permissao -> * > *@Named(value="perm") @BusinessBean* > > *My Qualifier* > > @Qualifier > @Retention(RUNTIME) > @Target({TYPE, METHOD, FIELD, PARAMETER}) > public @interface BusinessBean { > > } > > *My bean.* > > @javax.enterprise.context.RequestScoped > @javax.enterprise.inject.Default > public class Permissao extends NegocioBase<PermissaoDTO> { > .... > } > > > *context.xml* > <Resource name="BeanManager" > auth="Container" > type="javax.enterprise.inject.spi.BeanManager" > factory="org.apache.webbeans.container.ManagerObjectFactory"/> > > > *web.xml* > > <!-- I ran with and without this resource-env-ref section --> > <resource-env-ref> > <description>Object factory for the CDI Bean Manager</description> > <resource-env-ref-name>BeanManager</resource-env-ref-name> > > <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type> > </resource-env-ref> > > *BeanFactory* > > public class BeanFactory { > static BeanManager getBeanManager() { > InitialContext context; > Object result; > try { > context = new InitialContext(); > result = context.lookup("java:comp/env/BeanManager"); //lookup in > Tomcat > } catch (NamingException e) { > try { > context = new InitialContext(); > result = context.lookup("java:comp/BeanManager"); //lookup > in JBossAS > } catch (NamingException ex) { > throw new RuntimeException("BeanManager could not be found > in JNDI", e); > } > } > return (BeanManager) result; > } > @SuppressWarnings("unchecked") > public static <T> T getContextualInstance(final Class<T> type) { > BeanManager manager = getBeanManager(); > T result = null; > *Set<Bean<?>> beans = manager.getBeans(type, > type.getAnnotation(RequestScoped.class));* > *---- > why variable beans isEmpty !!!* > Bean<T> bean = (Bean<T>) manager.resolve(beans); > if (bean != null) { > CreationalContext<T> context = > manager.createCreationalContext(bean); > if (context != null) { > result = (T) manager.getReference(bean, type, context); > } > } > return result; > } > } > > -- > Atenciosamente, > Felipe Pina >
