Stateful Session Bean

Ein Stateful Session Bean ist einem Nutzer exklusiv für mehrere Methodenaufrufe zugeordnet und behält seinen inneren Zustand, während das Nutzungsverhältnis (also die Session) besteht.

Im Gegensatz dazu arbeiten Stateless Session Beans (siehe Stateless Session Bean) ohne inneren Zustand über mehrere Aufrufe hinweg.

Eine Java Klasse kann durch die Annotation @Stateful als Stateful Session Bean markiert werden.

Der Lebenszyklus eines Stateful Session Beans beginnt damit, dass ein Nutzer eine Instanz explizit anfordert. Das Bean wird erzeugt, deklarierte Resourcen werden eingefügt (Dependency Injection) und die Methode mit der Annotation @PostConstruct wird aufgerufen.

Danach ist das Bean bereit und die Methoden seiner Schnittstelle (siehe @Local und @Remote) können aufgerufen werden.

Nach den Erfordernissen des Application Servers kann das Bean passiviert werden, wenn gerade kein Methodenaufruf erfolgt. Vor der Passivierung wird die Methode mit der Annotation @PrePassivate aufgerufen. Wenn das Bean wieder benötigt wird, aktiviert der Application Server das Bean und ruft danach die Methode mit der Annotation @PostActivate auf.

Der Nutzer signalisiert durch das Aufrufen der Methode mit der Annotation @Remove, dass er das Bean nicht mehr benötigt. Der Application Server übergibt das Bean der Garbage Collection, nachdem er die mit @PreDestroy annotierte Methode ausgeführt hat.


Quelle

Sun Microsystems "The Java EE 5 Tutorial"