# Unterschied Stateless,Stateful



## mavinatic (16. Mai 2011)

Hallo J2EEler,

ich probiere mich gerade mit J2EE einzuarbeiten jedoch bin ich seit Wochen an einer Stelle stehen geblieben. Mein Problem ist die Stateful SessionBean zuverstehen.

Ich verstehe es so, dass zwischen Client und Server eine clientspezifische Instanz gebildet wird. Dh wenn ich in der Instanz A die Variable String auto = "BMW" setze und mich mit einem anderen Client verbinde, wird diese Variable NULL sein. Abgesehen davon, dass sie eh nicht persistent gespeichert wird.
Jedoch habe ich das Problem, wie erkennt der Server, dass er wieder Instanz A meinem Client aufrufen muss?

Momentan sehe ich noch nicht den Unterschied zwischen Stateless und Stateful. Wäre Nett wenn mir das jemand erklären könnte  Ich habe es schon alles in Büchern und auf jeglichen Webseiten gelesen, mir wird aber nicht deutlich, worin der Unterschied besthet.

Gruß 
George


----------



## Deadalus (17. Mai 2011)

1. Es heißt seit geraumer Zeit JEE nicht mehr J2EE.

2. Bei Statless Bean existiert immer ein pool von Instanzen. Ruft jetzt ein Client eine Methode auf, wählt der Application Server per Zufall eine Instanz aus dem Pool und die Methode wird ausgeführt. Nach der Methode wird die Instanz wieder in den Pool gelegt. 

3. Bei einem Statefull Bean existiert kein Pool. Stadtessen wird beim 1. aufrufen des Clients eine Instanz erzeugt und diese so lange wie die Session läuft an den Client gebunden. 

Bei deinem Vergleich mit den Strings setzen bedeutet dass: 
Würdest du in einem Stateless Bean mit einem Setter einem String setzen und direkt danach den Getter aufrufen ist dein Ergebnis undefiniert. Evtl. bekommst du den String zurück evtl. nicht. Auf jeden Fall schwirrt jetzt eine Instanz mit dem String BMW im Pool herum, die per Zufall von allen Clients mal verwendet werden kann. 

Bei einem Statefull Bean kann sich ein Client in einer Session sicher sein auch wieder den String auslesen zu können. 

Aus diesem Grund darfst du niemals in einem Stateless Bean Zustände setzen.


----------



## mavinatic (17. Mai 2011)

Coool, ich habs verstanden  Nur habe ich nun noch ein Problem, bei mir werden die Zustände in der StatefulBean auch nicht gespeichert  Ist das ein Unterschied ob ich das mit dem LocalInterface bzw RemoteInterface speicher?

Gruß george


----------



## TheDarkRose (17. Mai 2011)

wie greifst du den auf deine SFSB zu?


----------

