我是 EJB 技术的新手,我目前正在阅读 Oracle 指南,试图将我阅读的内容付诸实践。为此,我在 Eclipse 中使用 JBoss 应用程序服务器创建了一个简单的 JSF 应用程序,使用托管 Bean 作为支持 Bean。我想借助 Singleton Bean 来初始化 Managed Bean 中的数据,只是为了感受下依赖注入是如何工作的。我按照相关说明进行操作,但无法初始化 Singleton Bean。应用程序在 Hello Managed Bean 的构造函数中抛出 NPE。我预计我的代码可能缺少一些东西,但我找不到它。以下 Bean 类的缺陷在哪里?:
@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;
}
}