为什么@Inject无法工作但@EJB在JavaEE 7中工作?

时间:2014-10-01 20:01:28

标签: ejb java-ee-7 inject

我正在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

What is the difference between @Inject and @EJB

Should I use @EJB or @Inject

1 个答案:

答案 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。