@Inject注释无法正常工作

时间:2015-06-15 21:28:35

标签: java jboss cdi

我第一次尝试使用CDI。虽然我已经使用@EJB成功地将一个EJB注入到另一个EJB中,但我无法使用@Inject注释。

@Stateless
public class AccountDaoImpl implements AccountDAO {

    @Inject
    private MultiTenantEntityManagerImpl mtem; //always null

}

多租户实体经理看起来像这样:

 @Default
public class MultiTenantEntityManagerImpl {
   .....
} 

我已经创建了一个beans.xml文件(空),但是它已经将其插入到内置jar文件的META-INF文件夹中。仍然没有快乐。

我确定它很简单。我在jboss 5.0.1.GA中运行。

更新

所以看起来jboss 5不支持@Inject注释。

另一种方法是使用@EJB注释,但这不起作用:

@Stateless
public class AccountDaoImpl implements AccountDAO {

    @EJB
    private MultiTenantEntityManager mtem; //still null!

}

奇怪的是,在另一个EJB中,实体管理器的这个确切声明工作正常。

2 个答案:

答案 0 :(得分:1)

就我而言,我缺少独立的子系统

答案 1 :(得分:0)

看起来,至少在jboss 5中,如果两者满足以下条件,则只会尊重@EJB注释:

  1. 您正在使用它的类是EJB
  2. 以某种方式从容器中检索类(例如JNDI),而不是通过构造函数简单地实例化。