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.
Die J2EE-Hierarchie sollte so aussehen:
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.
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".
Im nächsten Schritt muss als "Sitzungstyp" natürlich "Stateful" gewählt werden.
Implementieren der Bean:
- Es müssen die Membervariablen "vectorA", "vectorB" und "vectorC" zugefügt werden
- In ejbCreate müssen die drei Vektoren initialisiert werden.
- Die Business-Methoden "addCalculation" und "getAllCalculations" werden implementiert.
.
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".
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.
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.
Das gleiche wiederholt man für die Referenz "ejb/GeometricModelStore" auf die Remote-Interfaces der stateful GeometricModelStore-Bean.
Die JSP-Seite "GeometricModelTest.jsp" soll als Startseite möglich sein. Dazu einen Doppelklick auf
"Stateful Web" durchführen. Man gelangt in den Webimplementierungsdeskriptor.
In der Sektion "Seiten" auf "Details" klicken.
Unter "Willkommensseiten" auf "Hinzufügen" klicken und "GeometricModelTest.jsp" eingeben.
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