Beispiel: Stateless Session Bean


Beispiel für eine Stateless Session Bean, auf die per Webclient und mittels Application Client zugegriffen wird.

Aufbau des Beispieles


a) Bean-Klasse mit Local und Remote-Interfaces.
b) Webclient: JSP-Seite
c) WebClient: Servlet
d) App-Client.


Anlegen der Application

Schritt 1: Starten des Deploytools (entweder im Startmenü über "Programme"\"Sun Microsystems"\ "Application Server"\"Deploytool" oder durch Aufruf von "C:\Programme\Sun\AppServer\bin\deploytool.bat").
Schritt 2: Anlegen einer neuen Application über "File"->"New"->"Application...". Im Textfeld "Application File Name" gibt man den Namen der anzulegenden EAR-Datei an. Im Feld "Application Display Name" wird der Anzeigename angegeben, wie ihn das Deploytool (oder später auch der Application Server) anzeigt.
Erzeugen einer Application


Deploy der StatelessBean

Die Application im Deploytool auswählen.
Im Menü "File" den Punkt "New" -> "Enterprise Bean" wählen. Es öffnet sich der Assistent zum Anlegen einer Bean.
Schritt 1: Einstellungen siehe Screenshot. Im der Radiobutton-Gruppe "Jar-Location" wird (falls nicht automatisch vorgewählt) der Punkt "Create New JAR Modul in Application" gewählt, die Anwendung sollte die eben erzeugt sein.
Rechts wird ein JAR-Name angegeben. In diesem JAR werden alle Klassen dieses Moduls gespeichert, es ist in der EAR-Datei enthalten.
Schließlich muss der Inhalt des JARs definiert werden. Dies geschieht über "Edit Contents". Im oberen Baum wählt man die .class-Dateien (nur die der Bean und die Exception "InvalidParameterException", nicht aber den Application-Client, dessen .class-Datei sich im selben Verzeichnis befindet) und klick auf "Add".
Bean-Deploy, Schritt 1a

Bean-Deploy, Schritt 1
Schritt 2: Bean-Klasse sowie die Interfaces auswählen.
Bean-Deploy, Schritt 2
Damit ist das Bean-Deploy fast fertig. Im nächsten Schritt beläßt man den Radiobutton "Expose bean as web service endpoint" auf "No" und kann auf "Finish" klicken.

Deploy der Web-Anwendung


Schritt 1: Hinzufügen einer neuen Web Componente mit der JSP, dem Servlet, Local/Remote Interface
und Local/Remote Home der Bean sowie der Exception-Klasse "InvalidParameterException". Den Assistenten erreicht man über "File" -> "New" -> "Web Component..."
Webclient Schritt 1
Schritt 2: Typ der Komponente ist "JSP Page"
Schritt 3: Als JSP-Filename die einzige JSP-Seite der Anwendung verwenden.

Für das Deploy des Servlets erneut eine Webcomponente zu der bestehenden WAR-Datei zufügen. Es müssen keine weiteren Dateien gewählt werden, da die Servlet-Klasse bereits im vorherigen Schritt gewählt war.
Schritt 2: Typ der Komponente ist diesmal "Servlet".
Schritt 3: Die Servlet-Klasse auswählen, alle anderen Werte auf Defaults belassen.
Servlet Schritt 3

Nachbearbeitung


In der WebApp müssen die benötigten EJB-Referenzen zugefügt werden. Dazu die WebApplication auswählen und auf der Registerkarte "EJB Ref's" den Button "Add" klicken.
EJB-Referenzen der Webapplication
Remote-Interfaces: "ejb/GeometricModel" referenziert "com.knauf.ejb.stateless.GeometricModelHome" und "com.knauf.ejb.stateless.GeometricModel".
Remote-Referenzen
Local Interfaces: "ejb/LocalGeometricModel" referenziert "com.knauf.ejb.stateless.LocalGeometricModelHome" und "com.knauf.ejb.stateless.LocalGeometricModel".
Local-Referenzen

Auf der Registerkarte "General" eine Context Root angeben, z.B. "stateless".
Context-Root der Webapplication
Jetzt ist der Webclient über http://localhost:8080/stateless/ erreichbar. Es erscheint eine Tomcat-Standard-Seite mit einer Auflistung aller Dateien in diesem Context. Man muss die JSP "GeometricModelTest.jsp" auswählen. Für Fortgeschrittene: Man kann die JSP-Datei unter "File Ref's" als "Welcome File" angeben und erhält sie dann direkt beim Aufrufen des obenstehenden Links.

Für das Servlet muss ein Alias angelegt werden, der den Namen angibt, unter dem es von außen erreichbar ist. Dies geschieht, indem man die Servlet-Komponente wählt und auf der Registerkarte "Aliases" einen Alias namens "/servlet/GeometricModelServlet" zufügt. Wichtig ist, dass der Servletname "GeometricModelServlet" lautet, da er so im Code beim Aufbau des Formulars verwendet wird.
Das Servlet ist über http://localhost:8080/stateless/servlet/GeometricModelServlet erreichbar.
Servlet-Alias


Deploy des Application Clients


Durch Aufruf von "File" -> "New" -> "Application Client..." gelangt man in den Assistenten für Application Clients. Schritt 1: Hinzufügen eines Application Clients, bestehend aus der Application-Datei, den Interfaces der Bean und der Exception-Klasse "InvalidParameterException".
Application Client, Schritt 1
Schritt 2: Auswählen der MainClass "GeometricModelApplicationClient".

Nachbearbeitung: Hinzufügen der EJB-Referenz. Wichtig: Es MUSS das RemoteInterface sein, die Eingabe einer lokalen Referenz ist im Dialog möglich, ist allerdings inhaltlich falsch und verursacht ungültiges XML in der Config-Datei.


Endgültigs Deploy

Für den ApplicationClient müssen wir ein ClientJar zurückgeben lassen. Hierzu die Checkbox "Return client jar" setzen und ein Zielverzeichnis irgendwo im Dateisystem wählen. Der Name der JAR-Datei ergibt sich aus dem Namen, den man beim Erstellen des ApplicationClients im Deploytool angegeben hat.
Deploy
Start des Appclients durch diesen Aufruf
appclient -client StatelessAppClient.jar
"appclient" ist eine Bat-Datei im Verzeichnis "C:\Programme\Sun\AppServer\bin". Falls beim Aufruf die Meldung "Datei nicht gefunden" erscheint, fehlt wahrscheinlich der Pfad in der PATH-Umgebungsvariablen.