# Application Client NullPointerExc



## thoto1111 (20. Mrz 2015)

Hallo lieber Forenmitglieder,
ich bräuchte dringend eure Hilfe.
Ich habe einen Client, welcher Remote auf ein Interface zugreift um dann schließlich über die EJB einen User anlegen soll. Nachdem ich allerdings meinen "Button" (im Client) drücke bekomm ich folgende Fehlermeldung!

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at gui.GUIClient$2.actionPerformed(GUIClient.java:116)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonList
....

Mein Code sieht folgendermaßen aus:

CLIENT:

```
btnAdduser = new JButton("AddUser");
		btnAdduser.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				nachname = textField.getText();
				vorname = textField_1.getText();
				//TUser user = new TUser();
				//user.setNachname(nachname);
				//user.setVorname(vorname);
				//remoteinterface.add();
				//userejb.saveUser(user);
				remoteinterface.setUser(nachname, vorname);
				//remoteinterface.setNachname(textField.getText());
				//remoteinterface.setVorname(textField_1.getText());
				System.out.println(nachname);
				System.out.println(vorname);
			}
		});
```

INTERFACE:

```
@Remote
public interface RemoteInterface {

	void setNachname(String nachname);

	void setVorname(String vorname);

	void add();
	
	void setUser(String nachname, String vorname);
	
}
```

EJB:

```
@Override
	public void setUser(String nachname, String vorname) {
		TUser user1 = new TUser();
		user1.setNachname(nachname);
		user1.setVorname(vorname);
		em.merge(user1);
	}
```


----------



## Dompteur (20. Mrz 2015)

Ich markiere die entscheidende Zeile im Trace.



thoto1111 hat gesagt.:


> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
> at gui.GUIClient$2.actionPerformed(GUIClient.java:116)
> at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
> at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
> ...



Da du nur einen Teil deiner Sourcen angegeben hast, weiß ich nicht, was bei dir nun in Zeile 116 steht.
Aber in dieser Zeile ist eine Variable, die in einem Ausdruck vorkommt, NULL.
Schau dir an, ob textField, textField_1 und remoteinterface richtig initialisiert worden sind, bzw. ob der entsprechende Code auch wirklich aufgerufen worden ist.


----------



## thoto1111 (20. Mrz 2015)

textField und textField1 lesen aus eine jTextField die Daten aus, wenn ich remoteinterface.set... auskommentiere und mir textfield und textfield1 ausgeben lasse per system.out.print dann sind die werte eben nicht NULL!
sonder werden je nachdem was ich in die Textfelder eintippe richtig ausgegeben. :/


----------



## Dompteur (20. Mrz 2015)

Na dann ist "remoteinterface" mit großer Wahrscheinlichkeit NULL.
Wo und wie wird das initialisiert ?


----------



## thoto1111 (20. Mrz 2015)

In meiner GUIClient Klasse wie folgt:

```
@EJB
	RemoteInterface remoteinterface;
```

Und natürlich als Interface wie folgt:


```
@Remote
public interface RemoteInterface extends Serializable{

	void setNachname(String nachname);

	void setVorname(String vorname);

	void add();
	
	public void setUser(String nachname, String vorname);
	
	
	
}
```


----------



## Joose (20. Mrz 2015)

thoto1111 hat gesagt.:


> In meiner GUIClient Klasse wie folgt:
> 
> ```
> @EJB
> ...



Achtung: Initialisierung != Deklarierung


----------



## thoto1111 (20. Mrz 2015)

Also in meiner EJB wird es dann Initialisiert?!

```
@Override
	public void setUser(String nachname, String vorname) {
		TUser user1 = new TUser();
		user1.setNachname(nachname);
		user1.setVorname(vorname);
		em.merge(user1);
	}
```


----------



## Dompteur (20. Mrz 2015)

Wie erzeugt du denn dein GUI Objekt ?
Wenn mich nicht alles täuscht, dann machst du es mit einem einfachen new.
Damit wird aber kein EJB injected.

In diesem Fall müsstest du dein EJB Objekt aus dem JNDI initialisieren.


----------

