我是EJB技術的新手,我正在閱讀Oracle指南,試圖將我閱讀的內容付諸實踐。我在Eclipse中使用JBoss應用程序服務器創建了一個簡單的JSF應用程序,使用Managed Bean作爲支持Bean。我想通過Singleton Bean初始化Managed Bean中的數據,以感受依賴注入的工作方式。我遵循relevant instructions,但我無法設法初始化Singleton Bean。應用程序在Hello Managed Bean的構造函數中拋出一個NPE。我預計我的代碼可能缺少某些東西,但我無法找到它。以下Bean類中的缺陷在哪裏? :不能在EJB中應用依賴注入
@Startup
@Singleton
public class LaunchBean {
private List<String> custs;
public List<String> getCusts() {
return custs;
}
public void setCusts(List<String> emps) {
this.custs = emps;
}
@PostConstruct
void init() { //in the guide the() after init is missed, but the code does not compile when omitting it
custs = new ArrayList<String>();
custs.add("Cust1");
custs.add("Cust3");
custs.add("Cust2");
custs.add("Cust4");
}
}
@ManagedBean
@SessionScoped
public class Hello implements Serializable{
@EJB
private LaunchBean dBean;
private static final long serialVersionUID = 1L;
private List<String> customers;
private String customersSelect;
public Hello(){
customers = dBean.getCusts();
}
public List<String> getCustomers() {
return customers;
}
public String getCustomersSelect() {
return customersSelect;
}
public void setCustomersSelect(String customersSelect) {
this.customersSelect = customersSelect;
}
}
從EJB 3.1開始,您無法使用'EJB'註釋來注入EJB [請參閱此問題](http://stackoverflow.com/questions/2021370/ejb-3-1-ejb-injection-into-pojo)。但是,您可以使用CDI或JNDI注入它們。至於'@ PostConstruct' - 我已經注意到這個問題太晚了,但是我已經在發佈答案之前發佈了建議,請參閱我的編輯。 – kostja 2013-03-06 11:13:08
@Umoh - 我沒有製作ManagedBean EJB的意圖,但我仍然很好奇它是否可能。 JSF可以使用EJB作爲支持Bean嗎? – arjacsoh 2013-03-06 11:26:28
@kostja。我審視了這個問題,它似乎更像是一場討論,而不是任何結論性的。我已經提出了選擇'@ PostConstruct'的答案。我仍然在編輯我的答案,所以我沒有看到它。儘管如此,我仍然不確定注入的事情。我會做更多的研究。 – greenkode 2013-03-06 11:29:50