2016-06-20 42 views
0

首先,我想說我在編程時使用ejb和jsf很新,而且我試圖完成一個項目開始由我的一個朋友。 我得到一個NullPointerException,它是由調用名爲utenteSessionBean的會話bean對象的方法utenteSessionBean.CheckUtentebyId(username)引起的,它在名爲Neo4jMBean的託管bean中聲明。 我瞭解到,在託管bean中創建和初始化會話bean(正如您必須使用正常的java對象所做的)不是必需的,但足以聲明它。 這裏是會話bean,它從DB不能在我的託管bean中使用會話ejb因爲我得到空指針異常

@Stateless 
@LocalBean 
public class UtenteSessionBean { 

EntityManagerFactory emf = Persistence.createEntityManagerFactory("EnterpriseApplication2-ejbPU"); 

public boolean CheckUtentebyId(String username){ 
    EntityManager em = emf.createEntityManager(); 
    Query query = em.createNamedQuery("Utente.findByUsername"); 
    query.setParameter("username", username); 
    List<Utente> Res=query.getResultList(); 
    //completare funzione ctrl+spazio 
    System.out.println("pre"); 
    System.out.println("pre"+Res.isEmpty()); 
    em.close(); 
    System.out.println("post"); 
    System.out.println("post"+Res.isEmpty()); 
    if(Res.size()>=1) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

} 
} 

這裏檢索數據更Code的管理bean

@ManagedBean 
@ViewScoped 
public class Neo4jMBean { 

@EJB 
private UtenteSessionBean utenteSessionBean; 

static String SERVER_ROOT_URI = "http://localhost:7474/db/data/"; 

public Neo4jMBean() { 
} 

public boolean getUser(String username) { 

    return utenteSessionBean.CheckUtentebyId(username); 
} 
} 

我搜索StackOverflow上許多倍的解決方案,用於固定此的代碼問題,但我還沒有找到適合我的東西。

+0

你使用Tomcat一個try-catch語句surronded ? –

+0

我正在使用Netbeans 8.1和GlassFish服務器4 –

回答

-1

WEB-INF文件夾中創建空beans.xml文件,以使CDI

+0

你是什麼意思爲空?我創建了一個空的beans.xml文件(沒有任何內容),但它沒有工作 –

+0

我檢查了一下,並且在web-inf目錄中有一個beans.xml文件。這是一個隱藏的文件。但它無法正常工作 –

1

我固定它訪問EJB組件使用JNDI。 在幾句話,如果我在一個託管bean方法使用EJB,我需要添加的代碼的下一行:

 InitialContext ic = new InitialContext(); 
     SessionBeanName = (SessionBeanClass) ic.lookup("java:global/NameOfTheApplication/NameOfTheEJBpackage/NameOfTheSessionBean"); 

它必須由

相關問題