2013-05-06 62 views
0

例如在this的問題,我看到:什麼是在類字段中使用的@EJB註釋?

@ManagedBean 
@SessionScoped 
public class LoginBean { 

@EJB 
private LoginUserLocal loginUser; 
private boolean loggedIn = false; 
private User user; 
private StreamedContent image; 

是否@EJB批註自動注入這些情況下,這一類?

謝謝。

回答

3

的@EJB註解(和@Resource,@WebServiceRef等)用於兩個目的:

它聲明在組件命名空間的引用。例如,@EJB(name =「myEJB」)創建一個引用java:comp/env/myEJB。如果您註釋一個字段並且不指定名稱,那麼它將創建一個引用java:comp/env/com.example.MyClass/myField。 如果在字段或setter方法上聲明註釋,那麼容器在創建組件時執行注入。 參考的解析方式會有所不同,與查詢(「java:comp/env/myEJB」)是否解析引用無關或者由於注入:

如果使用EE 6+,查找屬性需要一個JNDI查找來解析目標。 某些應用程序服務器支持mappedName,它被指定爲供應商特定的。這通常通過執行查找來實現。 應用程序服務器在部署時支持綁定。這通常通過執行查找來實現。 如果沒有提供其他綁定信息並且bean接口(beanInterface或字段類型)僅由應用程序中的單個EJB實現,那麼EJB規範要求它回退到那個位置。 如果沒有提供其他綁定信息並且#4無法工作,則某些應用程序服務器將嘗試基於ref名稱在服務器名稱空間中執行查找(例如,java:comp/env/myEJB可能會導致在myEJB中查找服務器名稱空間)。

相關問題