2014-10-01 90 views
1

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

What is the difference between @Inject and @EJB

Should I use @EJB or @Inject

回答

3

雙方將合作。但是@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。

+0

我想你不需要Java EE 7容器中的beans.xml,這正是我正在使用的。 – 2014-10-01 23:56:55

+0

@brainstorm啊,你可能是對的。我已經在Java EE 6容器中測試過它。 – Gas 2014-10-02 00:01:07

+0

和上面的javaee7-samples鏈接是針對javaee7進行測試的。所以我仍然沒有明白爲什麼@Inject不會工作.. – 2014-10-02 00:16:21

相關問題