Beispiel: Stateful Session Bean


Beispiel für eine Stateful Session Bean, auf die per Webclient zugegriffen wird. 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


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".