【发布时间】:2015-06-15 21:28:35
【问题描述】:
我是第一次尝试使用 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 中,实体管理器的这个确切声明工作正常。
【问题讨论】:
-
除非我弄错了,CDI 是 Java EE 6 的一部分,jboss 5.0.1.GA 不支持。
-
你用的是哪个版本的java ee?
-
啊!所以我一直在用头撞砖墙。我有哪些选择?
-
您可以使用 Spring 或 Guice 进行注入,而只依赖 EJB 进行服务、远程处理和事务......但是这种情况会变得混乱,所以最好只使用最新版本。