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 Unternehmensanwendungsprojekt mit dem Namen "Stateful" erstellen.
Zu erzeugende Module definieren. Dieses Beispiel benötigt ein EJB-Projekt und ein Webprojekt.
Erzeugen einer Application (Module)
Die J2EE-Hierarchie sollte so aussehen:
Erzeugte J2EE-Hierarchie


Anlegen der StatelessBean

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, Step 3
Stateless Session Bean, Step 4

Vorbereiten der Business-Methoden:
Die beiden Business-Methoden werfen eine eigene Exception. Diese wird dem Projekt so zugefügt: Wechseln zur Ansicht "Projektnavigator", Package "com.knauf.ejb.stateful" im Projekt "StatefulEJB" auswählen. Rechtsklick, "Neu" -> "Klasse". 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. Zu beachten ist, dass das Logging wie im Sun Application Server - Beispiel hier nicht funktioniert, da das Package "java.util.logging" erst in JDK 1.4 verfügbar ist.
Business-Methoden in das Remote-Interface zufügen. Dazu wählt man in der Gliederung (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 wiederholt man für "computeCuboidSurface".

Anlegen der StatefulBean

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

Implementieren der Bean:

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


Anlegen des Webclients

In der J2EE-Hierarchie einen Rechtsklick auf "Webmodule" ausführen und im Contextmenü "Neu" -> "Andere..." -> "Web" -> "JSP-Datei" wählen.
Schritt 3: Definition der JSP-Seite. Als Dateiname wird "GeometricModelTest" angegeben. Den Ordner wählt man nach einem Klick auf "Durchsuchen..." als "StatefulWeb\WebContent".
Webclient
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 J2EE-Hierarchie-Knoten "Webmodule \ StatefulWeb" ausführen und "Eigenschaften" wählen. Unter dem Punkt "Java-JAR-Abhängigkeiten" wählt man die Option "EJB-Client-JARs verwenden" und setzt den Haken beim JAR der EJB-Datei.
Webclient, EJB-Referenz, Schritt 1
Deklaration der EJB-Referenzen:
Per Doppelklick auf "Webmodule" \ "StatefulWeb" in der J2EE-Hierarchie gelangt man zum Bearbeiten des Webimplementierungsdeskriptors. Über die Karteikarten am unteren Rand wechselt man zu "Verweise" und kann dann am oberen Rand eine Referenz auf die Home-Interfaces der beiden Beans zufügen. Zuerst fügt man eine Referenz namens "ejb/GeometricModel" zu.
Webclient, EJB-Referenz, Schritt 2
Das gleiche wiederholt man für die Referenz "ejb/GeometricModelStore" auf die Remote-Interfaces der stateful GeometricModelStore-Bean. Webclient, EJB-Referenz, Schritt 3

Die JSP-Seite "GeometricModelTest.jsp" soll als Startseite möglich sein. Dazu einen Doppelklick auf "Stateful Web" durchführen. Man gelangt in den Webimplementierungsdeskriptor.
Webclient, Index-Seite, Schritt 1
In der Sektion "Seiten" auf "Details" klicken.
Unter "Willkommensseiten" auf "Hinzufügen" klicken und "GeometricModelTest.jsp" eingeben.
Webclient, Index-Seite, Schritt 2

Testen des Webclients

In der J2EE-Hierarchie mit Rechts auf das Webmodul "StatelessWeb" klicken und "Auf Server ausführen..." 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/GeometricModelTest.jsp