D
Der Dieter
Gast
Hallo,
ich habe ein eher merkwürdiges Problem mit EJB 3.0 (GlassFish V2) und ArrayList.
Und zwar bleiben die Elemte in einer ArrayList irgendwie nicht erhalten.
Zuerstmal meine Klassen (ohne import Anweisungen):
SessionBean.java - Der Java Client hält nur ein Objekt dieser Klasse
Warenkorb.java - Eine Hilfsklasse, mit der der Java Client dann später auf seinen Warenkorb zugreifen kann
ShopClient.java - Der Client für den Shop
So das klappt alles einwandfrei, aber:
Also die Ausgabe ist:
Anzahl der Items wenn ich eins hinzufüge: 1
Dein Warenkorb enthält 0 Gegenstände.
Das gleiche passiert, wenn ich die ArrayList direkt anspreche, also wenn ich nach dem Add ses.getWarenkorb().warenkorb.size() aufrufe, so erhalte ich auch eine 0.
Das heißt also, er fügt der ArrayList das Element ('abc') ganz normal hinzu, es bleibt aber nicht weiter erhalten.
Meine Idee wäre nun, dass der getWarenkorb() irgendwie immer neu intialisiert, was aber irgendwie auch keinen Sinn macht.
Wäre echt super wenn mir jemand weiterhelfen könnte, irgendwie verzweifel ich langsam daran.
ich habe ein eher merkwürdiges Problem mit EJB 3.0 (GlassFish V2) und ArrayList.
Und zwar bleiben die Elemte in einer ArrayList irgendwie nicht erhalten.
Zuerstmal meine Klassen (ohne import Anweisungen):
SessionBean.java - Der Java Client hält nur ein Objekt dieser Klasse
Code:
@Stateful
public class SessionBean implements Session {
private Warenkorb warenkorb = new Warenkorb();
public Warenkorb getWarenkorb() {
return this.warenkorb;
}
}
Warenkorb.java - Eine Hilfsklasse, mit der der Java Client dann später auf seinen Warenkorb zugreifen kann
Code:
public class Warenkorb implements java.io.Serializable {
public ArrayList<String> warenkorb = new ArrayList<String>();
public int add(String item) {
warenkorb.add(item);
return warenkorb.size(); //Gib neue Größe zurück
}
public int size() {
return warenkorb.size();
}
}
ShopClient.java - Der Client für den Shop
Code:
public class ShopClient {
@EJB
private static Session ses;
public static void main(String[] args) {
System.out.println("Anzahl der Items wenn ich eins hinzufüge:" + ses.getWarenkorb().add("abc"));
System.out.println("Dein Warenkorb enthält "+ses.getWarenkorb().size() + " Gegenstände");
}
}
So das klappt alles einwandfrei, aber:
Also die Ausgabe ist:
Anzahl der Items wenn ich eins hinzufüge: 1
Dein Warenkorb enthält 0 Gegenstände.
Das gleiche passiert, wenn ich die ArrayList direkt anspreche, also wenn ich nach dem Add ses.getWarenkorb().warenkorb.size() aufrufe, so erhalte ich auch eine 0.
Das heißt also, er fügt der ArrayList das Element ('abc') ganz normal hinzu, es bleibt aber nicht weiter erhalten.
Meine Idee wäre nun, dass der getWarenkorb() irgendwie immer neu intialisiert, was aber irgendwie auch keinen Sinn macht.
Wäre echt super wenn mir jemand weiterhelfen könnte, irgendwie verzweifel ich langsam daran.