Jsf GlassFish ManagedBeanCreationException和NullPointerException

Jsf GlassFish ManagedBeanCreationException和NullPointerException,jsf,jpa,ejb,dao,facade,Jsf,Jpa,Ejb,Dao,Facade,我已经在GlassFish服务器上编写了一个EJB和一个动态web项目Eclipse。我使用了DAO、Facade和JPA。通常我从我的服务调用一个方法,它给出了这些错误 kitapOduncVerme.xhtml]com.sun.faces.mgbean.ManagedBeanCreationException PWC1406: Servlet.service() for servlet Faces Servlet threw exceptionjava.lang.NullPointerE

我已经在GlassFish服务器上编写了一个EJB和一个动态web项目Eclipse。我使用了DAO、Facade和JPA。通常我从我的服务调用一个方法,它给出了这些错误

kitapOduncVerme.xhtml]com.sun.faces.mgbean.ManagedBeanCreationException

PWC1406: Servlet.service() for servlet Faces Servlet threw  exceptionjava.lang.NullPointerException 
at com.mesutemre.kitapislemleri.KitapOduncVermeBean.initList(KitapOduncVermeBean.java:47)   
at com.mesutemre.kitapislemleri.KitapOduncVermeBean.initialize(KitapOduncVermeBean.java:43)
我的代码如下

@ManagedBean(name = "oduncKitapVerBean")
@ViewScoped
public class KitapOduncVermeBean implements Serializable{

private static final long serialVersionUID = 1L;

private List<Kitaplar> entityList = new ArrayList<Kitaplar>();
private Kitaplar selectedEntity;
private Kitaplar entity;
private String kullaniciadi;

private KitaplarFacade service;

public KitapOduncVermeBean() {
    entity = new Kitaplar();
    selectedEntity = new Kitaplar();

}

@PostConstruct
public void initialize(){
    HttpSession session = Util.getSession();
    kullaniciadi = Util.getUserName();
   initList();
}

private void initList(){
     entityList = service.findAllKitaplar();
}
@ManagedBean(name=“oduncKitapVerBean”)
@视域
公共类KitapOduncVermeBean实现可序列化{
私有静态最终长serialVersionUID=1L;
私有列表entityList=新的ArrayList();
私人Kitaplar selectedEntity;
私人Kitaplar实体;
私人字符串kullaniciadi;
私人厨房服务;
公共KitapOduncVermeBean(){
实体=新的Kitaplar();
selectedEntity=new Kitaplar();
}
@施工后
公共无效初始化(){
HttpSession session=Util.getSession();
kullaniciadi=Util.getUserName();
initList();
}
私有void initList(){
entityList=service.findAllKitaplar();
}
达伊姆普

@SuppressWarnings("unchecked")
public List<Kitaplar> findAllKitaplar(){
    return em.createNamedQuery("tumkitaplarigetir").getResultList();
}
@SuppressWarnings(“未选中”)
公共列表findAllKitaplar(){
返回em.createNamedQuery(“tumkitaplarigetir”).getResultList();
}

@无状态
@本地豆
公共类KitaPardao扩展KitaPardaoImpl实现可序列化{
私有静态最终长serialVersionUID=1L;
@凌驾
公共列表findAllKitaplar(){
返回super.findAllKitaplar();
}
facadeinpl

@Stateless
@LocalBean
public class KitaplarFacadeImpl implements KitaplarFacade,Serializable {


private static final long serialVersionUID = 1L;
@EJB
KitaplarDAO kitapDao;


@Override
public List<Kitaplar> findAllKitaplar() {
    return kitapDao.findAllKitaplar();
}
@无状态
@本地豆
公共类KitaParfacadeImpl实现KitaParaFacade,可序列化{
私有静态最终长serialVersionUID=1L;
@EJB
北岛北岛;
@凌驾
公共列表findAllKitaplar(){
返回kitapDao.findAllKitaplar();
}
}

门面

@Local
public interface KitaplarFacade {
public abstract List<Kitaplar> findAllKitaplar();
@Local
公共接口KitaParaFacade{
公共摘要列表findAllKitaplar();
}


我看不出这些代码中有任何问题?但为什么会出现这些错误?

ManagedBeanCrearionException
只是简单地包装并重新引用
NullPointerException
,这很容易调试:在堆栈跟踪中显示的确切行上有一个null变量

KitapOduncVermeBean
类中,您正在声明
service
属性,但您没有初始化它,因此在
initList()
方法中调用时它是空的。因为它是一个EJB,所以对它进行注释,EJB容器将自动实例化它:

@EJB
private KitaplarFacade service;
与具体问题无关,您的代码太复杂了:对于EJB3.x,在大多数web应用程序中,您不需要EJB来实现或公开接口

@EJB
private KitaplarFacade service;