我正在github
点击JavaEE7-samples个回复。我发现作者在此code snippet中提到了以下内容:
// Cannot be injected using @Inject
@EJB Cart bean;
作者明确提到@Inject
不起作用。但我想知道它背后的原因是什么?
我已阅读以下有关@EJB
和@Inject
之间差异的帖子。但这对我没有帮助。
http://www.adam-bien.com/roller/abien/entry/inject_vs_ejb
答案 0 :(得分:3)
如果bean具有 Local 接口,则两者都有效。但是,要使@Inject工作,您必须启用CDI(在WEB-INF文件夹中创建beans.xml文件)。
如果bean具有远程接口,则需要使用生产者类来使用以下代码声明资源:
public class RemoteProducer {
@Produces @EJB
HelloRemote helloBean;
}
有关详细信息,请参阅JSR-299 CDI specification中的第3.5节 因此,为了简化使用,我建议坚持使用@EJB for EJB。