2014-06-19 31 views
0

我在GlassFish服務器上編寫了一個EJB和一個動態Web項目Eclipse。我使用DAO,Facade和JPA。通常我會從我的服務中調用一個方法來提供這些錯誤;GlassFish ManagedBeanCreationException和NullPointerException

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

ManagedBeanCrearionException只是簡單地包裝和重新拋出NullPointerException,這很容易調試:在堆棧跟蹤中出現的確切線上有一個空變量。

KitapOduncVermeBean類,您聲明service財產,但你不進行初始化,因此在initList()方法被調用時,它的空。因爲它是一個EJB,註釋它本身和EJB容器會自動初始化它:

@EJB 
private KitaplarFacade service; 

無關的具體問題,你的代碼是太複雜了:用EJB 3.x中,在大多數Web應用程序,你不不需要EJB來實現或暴露接口。

+0

感謝它工作 – emreturka