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.
Stateless Session Bean
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).
Stateful Session Bean

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".
Deploy der Webapplication
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".