# Netbeans + JavaEE. NullPointerException



## JUserToto (16. Feb 2014)

Hallo zusammen,

vor zwei Semestern hatte ich JavaEE noch im Studium. Nun wollte ich das ganze nochmal ein bisschen auffrischen, indem ich selbst ein bisschen damit rumprobiere. Leider scheitert es schon am kleinst möglichen Projekt.

*Was ich haben möchte:*

Folgende Projekte:

Enterprise Application
Class Library (Für die Entitys und für die Remote Beans)
EJB Projekt mit Persistence Unit und Beans
Application Client

Ich habe nun im Application Client einen Button. Wenn ich auf diesen Button klicke, wird die Methode "checkPassword" einer DAO Klasse (im gleichen Projekt) aufgerufen. Das DAO soll nun die selbe Methode auf dem Server ausführen (die aktuell nur true zurück liefert).

Hier die Methode der GUI:


```
private void loginPerform(java.awt.event.ActionEvent evt) {                              
     JOptionPane.showMessageDialog(rootPane, DAO.checkPassword(null, null));
 }
```

und die DAO Klasse:


```
package business;

import beans.UserRemote;
import javax.ejb.EJB;

public class DAO {
   @EJB
   public static UserRemote uRemote;
   
   public static boolean checkPassword(String nick, String password) {
       return uRemote.checkPassword(nick, password);
   }
}
```

Hier die Remote Klasse:


```
package beans;

import javax.ejb.Remote;

@Remote
public interface UserRemote {
    public boolean checkPassword(String nick, String password);
}
```

Und die Stateless Bean:


```
package beans;

import javax.ejb.Stateless;

@Stateless
public class User implements UserRemote {
    
    @Override
    public boolean checkPassword(String nick, String password) {
        return true;
    }
}
```

*Was ist das Problem:*

Die Variable "uRemote", also die Remote Bean ist IMMER null. Ich kriege folglich eine Nullpointer Exception.

Wenn ich die DAO Klasse weglasse und direkt in der GUI "uRemote" erzeuge mit der EJB Annotation funktioniert alles, wie es soll. 
Es scheint also, als wäre ich in der DAO Klasse irgendwie "außerhalb des Kontextes". Was fehlt?


Danke im Voraus,

lg Toto

edit: Im Server Log bekomme ich außerdem ständig folgende Ausgabe:

Warnung: ACDEPL112: Error attempting to process extensions from the manifest of JAR file C:\Users\xyz\Desktop\glassfishv3\glassfish\domains\gfdom\generated\xml\EA\EAppClient_jar\lib\ClassLibrary.jar; ignoring it and continuing


----------



## JavaMeister (16. Feb 2014)

Also hier geht ne Menge falsch.

1. Du hast eine GUI und einen Serveranteil.

 => Du greifst aus der GUI statisch auf den Server zu. Das kann so nicht funktionieren.

 => Du musst ein jndi lookup durchführen und da drauf aufrufen.

  => Hier darf keine Methode static sein.

2. die @EJB Annotation wird nur dann ausgeweret, wenn die Klasse aus dem DI-Container erstellt wird.

Nach welchem Tutorial hast du das gemacht?


----------



## JUserToto (17. Feb 2014)

Hallo,

dankeschön erstmal.
Ich bin keinem Tutorial gefolgt. Das liegt vor allem daran, dass ich kein verständliches Tutorial gefunden habe zu meinem Problem. Das meiste, was man findet, arbeitet direkt mit Servlets und JSPs. Ich würde aber gerne erstmal bei Java Anwendungen als Client bleiben.

Auch zum JNDI Lookup finde ich nichts, was mich weiter bringt (Laut den alten "Hausaufgaben" haben wir es aber auch scheinbar immer über die @EJB Annotation gemacht)

Ich werde dann wohl doch nochmal die alten Vorlesungsskripte raussuchen müssen und bei 0 anfangen 

liebe Grüße,
Toto


----------



## JUserToto (17. Feb 2014)

Okay, ich habe mir nochmal die alten Unterlagen angesehen. Mittlerweile sitze ich wieder den ganzen Tag vor dem Rechner und habe nichtmal das einfachste Programm zum Laufen gebracht. Das ganze geht schon echt an die Nerven, weil ich nie weiß, ob Glassfish nun wieder irgendein Problem hat oder Netbeans wieder was durcheinander gebracht hat... Also habe ich nochmal komplett sauber angefangen:


Ich erstelle eine Enterprise Application mit EJB Container
Ich erstelle ein Class Library Project für die Entities
Ich füge dem EJB Container das Library Project als Library hinzu
Ich erstelle eine Persistence Unit im EJB Container
Ich erstelle eine Entity "Benutzer" und füge diese der PU hinzu
Ich erstelle einen Application Client und füge ihm der Enterprise Application hinzu

Der PU gebe ich natürlich auch eine Datenbank mit. (EJB Projekt hat natürlich auch den Treiber als Library)
Ich starte das Programm: Keine Fehler. Allerdings wird die Tabelle "Benutzer" nicht erzeugt. Wieso?

lg Toto


----------

