Session Beans
aus www.iwiki.de, der freien Wissensdatenbank
Session Beans
Session Beans repräsentieren Prozesse, die im Auftrag anfragender Clients ausgeführt werden. Ein Beispiel dafür ist die Durchführung einer Überweisung.
D.h. die Geschäftslogik wird in den Session Beans implementiert. Session Beans kooperieren mit Entity Beans und können bestimmte Client-Services oder Workflows implementieren.
Ein Beispiel für eine Methode einer Session Bean wäre:
In einer Anwendung die alle Mitarbeiter einer Firma verwaltet: alleMitarbeiterAusgeben(), mitarbeiterAusgeben (id).
Von Session Beans werden zwei Varianten unterstützt:
- Stateful Session Beans
- Stateless Session Beans
Stateful Session Beans
Stateful Session Beans verwalten den Zustand einer Client - Session und können als Erweiterung des Clients in der Business Schicht betrachtet werden.
Stateful Session Beans sind immer dann notwendig, wenn sich der Prozess über mehrere Client Anfragen hinweg erstreckt. Zwischen den Anfragen muss der aktuelle Zustand gehalten werden. Die Lebensdauer einer Stateful Session Bean ist an eine Client Session gebunden und durch diese begrenzt. Nach Ende der Session wird die Komponente durch den Container wieder freigegeben. Ein Timeout stellt sicher, dass das Session Ende erreicht ist. Stateful Session Beans werden nicht zwischen Clients geteilt.
Eine zustandsbehaftete Session Bean hat also ein eigenes Gedächtnis. Sie kann Informationen aus einem Methodenaufruf speichern, damit sie bei einem späteren Aufruf einer anderen (oder der gleichen) Methode wieder zur Verfügung stehen. Die Zustandsbehaftung wird durch die Vergabe einer eindeutigen ID umgesetzt, über diese ID können die stateful Session Beans unterschieden werden.
Stateless Session Beans
Im Gegensatz dazu müssen einer zustandslosen Session Bean bei jedem Aufruf alle Informationen als Parameter übergeben werden, die für die Abarbeitung dieses Aufrufs benötigt werden. Da eine zustandslose Session Bean keine Informationen speichern kann, ist sie nicht von anderen Session Beans der gleichen Klasse unterscheidbar, sie hat also keine eigene Identität.
Stateless Session Beans können damit zwischen Clients geteilt werden. Insbesondere können sie in einem Pool gehalten werden. Sie sind solchen Prozessen vorbehalten, die durch eine einmalige Client-Anfrage angestoßen und vollständig ausgeführt werden. Diese Prozesse haben tendenziell allgemeingültigeren Charakter als solche, die durch Stateful Session Beans implementiert werden. Die Lebensdauer einer Stateless Session Bean ist nicht an eine Client - Session gebunden.
