openwebbeans-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felipe Pina <fop....@gmail.com>
Subject Lookup bean using beanManager returning null
Date Thu, 12 Jun 2014 12:03:36 GMT
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

Mime
View raw message