2016-06-20 10 views
0

Zuerst möchte ich sagen, ich bin ziemlich neu in der Programmierung mit ejb und jsf, und ich versuche ein Projekt zu beenden von einem Freund von mir. Ich erhalte eine NullPointerException, verursacht durch den Aufruf der Methode "utenteSessionBean.CheckUtentebyId" (Benutzername) des Session-Bean-Objekts namens "utenteSessionBean", die in der verwalteten Bean namens Neo4jMBean deklariert ist. Ich habe gelernt, dass es nicht notwendig ist, eine Session-Bean (wie es bei einem normalen Java-Objekt der Fall sein muss) in Managed Bean zu erstellen und zu initialisieren, aber es reicht aus, es zu deklarieren. Hier ist der Code, der Session-Bean, die Daten von einem beliebigen DB abruftIch kann keine Sitzung ejb in meiner verwalteten Bean verwenden, weil ich eine Null Pointer Exception bekomme

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

} 
} 

Hier ist der Code der Managed 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); 
} 
} 

ich auf Stackoverflow gesucht haben, eine Lösung viele Male für die Festsetzung dieser Problem, aber ich habe noch nichts gefunden, das für mich funktioniert.

+0

Sie tomcat verwenden ? –

+0

Ich benutze Netbeans 8.1 und GlassFish Server 4 –

Antwort

-1

erstellen leer beans.xml Datei in Ihrem WEB-INF Ordner CDI

+0

was meinst du für leer? Ich erstellte eine leere beans.xml-Datei mit NICHTS drin (wörtlich nichts), aber es hat nicht funktioniert –

+0

Ich überprüfte und ich habe eine beans.xml-Datei im Web-inf-Verzeichnis. Es ist eine versteckte Datei. Aber es funktioniert sowieso nicht –

1

Ich reparierte es den Zugriff auf den EJB-Komponenten unter Verwendung von JNDI zu ermöglichen. In wenigen Worten, wenn ich ein EJB in einem verwalteten Bean-Methode verwenden, muss ich die nächsten Zeilen Code hinzuzufügen:

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

Es muss von einem Try-catch-Anweisung surronded werden