Beispiel: Stateful Session Bean (IBM WebSphere)


Beispiel für eine Stateful Session Bean, auf die per Webclient zugegriffen wird.
Die Deployanleitung bezieht sich auf IBM WebSphere.
Hier gibt es das WebSphere-Projekt zum Download (dies ist ein Projektaustausch-Export, die Importanleitung findet man im Stateless-Beispiel): StatefulExport.zip

Aufbau des Beispieles


a) Stateless Bean-Klasse mit Remote-Interfaces.
b) Stateful Bean-Klasse mit Remote-Interfaces.
c) Webclient: JSP-Seite


Anlegen der Application

Ein Enterprise Application Project mit dem Namen "Stateful" erstellen.
Zu erzeugende Module definieren. Dieses Beispiel benötigt ein EJB-Projekt und ein Webprojekt.
Erzeugen einer Application (Module)
Im Project Explorer sollte es so aussehen:
Project Explorer


Anlegen der Stateless Bean

Die Schritte sind identisch mit denen des letzten Beispiels, einschließlich der Geschäftsmethoden. Einziger Unterschied ist, dass hier keine Local Interfaces erzeugt werden und dass das Package ein anderes ist.
Stateless Session Bean, Schritt 1
Stateless Session Bean, Schritt 2

Vorbereiten der Business-Methoden:
Die beiden Business-Methoden werfen eine eigene Exception. Diese wird dem Projekt so zugefügt: Im Projekt-Explorer den Knoten "EJB-Projekte" \ "StatelessEJB" auswählen. Rechtsklick, "New" -> "Class". Eine Klasse namens "InvalidParameterException" zufügen, die von "java.lang.Exception abgeleitet ist.

Hinzufügen der Business-Methoden:
Die Bean-Klasse "StatelessBean" wird bearbeitet und zwei Methoden "computeCuboidVolume" und "computeCuboidSurface" zugefügt. Business-Methoden in die Remote-Interfaces zufügen. Dazu wählt man in der "Outline" (Fenster/TabPage links unten) die Methode "computeCuboidVolume" aus und klickt mit rechts darauf. Im Contextmenü wählt man den Punkt "Enterprise Bean" -> "Auf Remote-Schnittstelle hochstufen". Das gleiche führt man für "computeCuboidSurface" durch.

Anlegen der Stateful Bean

Die Bean hat den Namen "GeometricModelStore" im Package "com.knauf.ejb.stateful".
Stateful Session Bean, Schritt 1
Im nächsten Schritt muss als "Session type" natürlich "Stateful" gewählt werden.
Stateful Session Bean, Schritt 2

Implementieren der Bean:

Die beiden Methoden werden dem Remote-Interface zugefügt.


Anlegen des Webclients

Im Project Explorer einen Rechtsklick auf "Dynamic Web Projects" -> "StatefulWeb" ausführen und im Contextmenü "New" -> "JSP File" wählen.
Als Dateiname wird "GeometricModelTest" angegeben.
GeometricModelTest.jsp
Nach dem Klick auf "Fertig stellen" hat man die JSP-Seite erstellt und kann den Quellcode der JSP-Datei aus dem SunAppserver-Beispiel einfügen.
Nachbearbeitung:
Damit die JSP-Seite die EJB referenzieren kann, muss eine Referenz auf die JAR-Datei zugefügt werden.
Dazu einen Rechtsklick auf den Project Explorer-Knoten "Dynamic Web Projects" -> "StatefulWeb" ausführen und "Properties" wählen. Unter dem Punkt "Java JAR Dependencies" wählt man die Option "Use EJB Client JARs" und setzt den Haken beim JAR der EJB-Datei.
Webclient, EJB-Referenz, Schritt 1
Deklaration der EJB-Referenzen:
Per Doppelklick auf "Dynamic Web Projects" -> "StatefulWeb" -> "Deployment Descriptor: StatefulWeb" im Project Explorer gelangt man zum Bearbeiten des Webimplementierungsdeskriptors. Über die Karteikarten am unteren Rand wechselt man zu "References" und kann Referenzen auf die Home-Interfaces der beiden Beans zufügen. Zuerst fügt man eine Referenz namens "ejb/GeometricModel" zu.
Webclient, EJB-Referenz auf GeometricModelBean
Das gleiche wiederholt man für die Referenz "ejb/GeometricModelStore" auf die Remote-Interfaces der stateful GeometricModelStore-Bean. Webclient, EJB-Referenz auf GeometricModelStoreBean
Des Ergebnis sieht so aus:
Webclient, EJB-Referenzen

Die JSP-Seite "GeometricModelTest.jsp" soll als Startseite möglich sein. Dazu wieder in den Webimplementierungsdeskriptor gehen, dort auf die Karteikarte "Pages".
Webclient, Index-Seite, Schritt 1
Unter "Welcome Pages" auf "Add..." klicken und "GeometricModelTest.jsp" eingeben.
Webclient, Index-Seite, Schritt 2
Jetzt alle anderen Default-Seiten (index.html etc.) entfernen da sie nicht in unserem Projekt enthalten sind.
Webclient, Index-Seite, Schritt 3

Testen des Webclients

Im Project Explorer mit Rechts auf das Dynamic Web Project "StatefulWeb" klicken "Run" -> "Run on server..." wählen.
Es erscheint ein eingebettetes Browserfenster (Internet-Explorer). Da wir eine Index-Seite definiert haben, gelangen wir automatisch zu "GeometricModelTest.jsp":
http://localhost:9080/StatefulWeb/