GlassFish ManagedBeanCreationException和NullPointerException

时间:2014-06-19 20:58:36

标签: 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.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();
}

DaoImpl

@SuppressWarnings("unchecked")
public List<Kitaplar> findAllKitaplar(){
    return em.createNamedQuery("tumkitaplarigetir").getResultList();
}

@Stateless
@LocalBean
public class KitaplarDAO extends KitaplarDaoImpl<Kitaplar> implements Serializable{

private static final long serialVersionUID = 1L;

@Override
public List<Kitaplar> findAllKitaplar() {
    return super.findAllKitaplar();
}

FacadeImpl

@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();
}

}

门面

@Local
public interface KitaplarFacade {
public abstract List<Kitaplar> findAllKitaplar();

}

我在这段代码中看不到任何问题?但为什么我会收到这些错误?

1 个答案:

答案 0 :(得分:1)

ManagedBeanCrearionException只是包装并重新抛出NullPointerException,这很容易调试:在堆栈跟踪中出现的确切行上有一个空变量。

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

@EJB
private KitaplarFacade service;

与具体问题无关,您的代码太复杂了:使用EJB 3.x,在大多数Web应用程序中,您不需要EJB来实现或公开接口。