[英]Can't Inject DAO into EJB using CDI
我正在使用EJB3,JPA和JSF开发应用程序,我想使用CDI将DAO注入到EJB中:
这是我的DAO的代码:
public class ZoneDao {
@PersistenceContext(unitName = "wabApp3PU")
private EntityManager em;
/* Functions */
}
这是我的EJB代码:
@Stateless
public class ZoneFacade{
@Inject
private ZoneDao zoneDao;
/* Functions*/
}
这是我得到的错误:
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [ZoneDao] with qualifiers [@Default] at injection point [[BackedAnnotatedField] @Inject private fr.si.metier.ZoneFacade.zoneDao]
注意:我正在使用glassfish 4应用程序服务器
JAVA EE 6-CDI组件,给DAO @ApplicationScoped,然后它将允许注入持久性上下文
添加@Stateless
您ZoneDao
类或给这个Bean的一个范围如@SessionScoped
。
如果使用Java EE 6,请确保您具有bean.xml。对于版本7,不再需要它。
ZoneDao没有被标记为托管bean,因此它不能像使用CDI那样工作。 用@Named注释ZoneDao,并使用@RequestScope,@SessionScop,... etc或您需要的任何范围来选择它的作用域,然后它才是可以使用CDI注入的托管bean。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.