为什么@Inject无法工作,但@EJB在JavaEE 7中工作?
问题描述:
我正在通过JavaEE7-samples回购github
。我发现作者提到这个code snippet如下:为什么@Inject无法工作,但@EJB在JavaEE 7中工作?
// Cannot be injected using @Inject
@EJB Cart bean;
笔者明确提到,@Inject
将无法正常工作。但我想知道背后的原因是什么?
我已阅读以下帖子@EJB
和@Inject
之间的差异。但是这并没有帮助我。如果bean有本地接口
http://www.adam-bien.com/roller/abien/entry/inject_vs_ejb
答
双方将合作。但是@Inject to work必须启用CDI(在WEB-INF文件夹中创建beans.xml文件)。
如果bean有远程接口,你需要有生产类用下面的代码来声明资源:
public class RemoteProducer {
@Produces @EJB
HelloRemote helloBean;
}
欲了解更多详细信息,请参阅JSR-299 CDI specification 3.5节。
因此,为了简化使用,我建议坚持使用@EJB for EJB。
我想你不需要Java EE 7容器中的beans.xml,这正是我正在使用的。 – 2014-10-01 23:56:55
@brainstorm啊,你可能是对的。我已经在Java EE 6容器中测试过它。 – Gas 2014-10-02 00:01:07
和上面的javaee7-samples链接是针对javaee7进行测试的。所以我仍然没有明白为什么@Inject不会工作.. – 2014-10-02 00:16:21