Beispiel: Stateful Session Bean
Beispiel für eine Stateful Session Bean, auf die per Webclient zugegriffen wird (SunAppServer).
Als Basis wird die Stateless Session Bean des vorherigen Beispieles verwendet.
Wichtiger Hinweis: Da hier die gleiche Bean wie im vorherigen Beispiel
unter dem gleichen JNDI-Namen verwendet wird, MUSS diese vorher aus dem Server entfernt werden! Alternativ könnte man hier
einen anderen JNDI-Namen verwenden.
Aufbau des Beispieles
Alle Berechnungen, die der aktuelle User durchführte, werden in einer Server-Session gespeichert
und ihm jedesmal angezeigt.
Bestandteile:
a) Stateless Bean-Klasse mit Remote-Interfaces aus dem letzten Beispiel.
b) Stateful Bean für das Speichern aller in der Session durchgeführten Berechnungen.
c) Webclient
Quellcode
Der Quellcode des Beispiels wurde als Projekt namens "Stateful" vom Typ "Dynamic Web Project" erstellt, siehe allgemeine
Eclipse-Anleitung für den SunAppServer.
Hier gibt es den Code als Export (siehe Anleitung zum Importieren eines Dynamic Web Projects)
StatefulExport.zip.
Hier steckt die EAR-Datei des Deploytools: Stateful.ear
Deploy der StatelessBean "GeometricModel"
Schritt 1: Einstellungen siehe Screenshot. Die Dateien der Stateful
Bean sowie "InvalidParameterException" werden hier ebenfalls ausgewählt.
Schritt 2: Bean-Klasse sowie die Remote-Interfaces auswählen.
Deploy der StatefulBean "GeometricModelStore"
Schritt 1: Neue Bean in dem JAR der Stateless Bean erstellen. Dadurch müssen keine weiteren Dateien
gewählt werden.
Schritt 2: Bean-Klasse sowie die Remote-Interfaces auswählen. Wichtig: Hier muss der Typ
auf "Stateful Session" gestellt werden ! (siehe Screenshot).
Deploy der Web-Anwendung
Schritt 1: Hinzufügen einer neuen Web Componente mit der JSP, Remote Interface
und Remote Home der beiden Beans und der "InvalidParameterException".
Schritt 2: Typ der Komponente ist "JSP Page"
Schritt 3: Als JSP-Filename die einzige JSP-Seite der Anwendung verwenden.
Nachbearbeitung:
In der WebApp folgende EJB-Referenzen zufügen:
"ejb/GeometricModel" referenziert "com.knauf.ejb.stateful.GeometricModelHome" und "com.knauf.ejb.stateful.GeometricModel".
"ejb/GeometricModelStore" referenziert "com.knauf.ejb.stateful.GeometricModelStoreHome" und "com.knauf.ejb.stateful.GeometricModelStore".
Auf der Registerkarte "General" eine Context Root angeben, z.B. "stateful".