Allerlei zum Praktikum Softwaretechnik - Vertiefung


Aktuelle Termine:

16.2. (Do), 17 Uhr: Fragestunde. Teilnahme ist freiwillig. Da mittlerweile genügend Leute ihr Kommen zugesagt haben bin ich auf jeden Fall da.
23.2. (Do), 17 Uhr: Projektabnahme. Ich will die fertige Anwendung haben. Damit ich mich ans Testen machen kann brauche ich von euch außerdem eine kurze Installationsanleitung, vor allem in Bereichen wo es die Standard-J2EE-Bereiche verläßt, also z.B. Security !
Ca. eine Woche später hätte ich gerne die komplette Doku (Use-Case- und Klassendiagramme sowie Benutzerhandbuch). Das bitte per Mail schicken, dafür gibt es keinen Termin mehr.
Wer nicht den UML-Designer von WebSphere oder Together verwenden will der kann ArgoUML ausprobieren (http://argouml.tigris.org/). Das Design-Tool ist Java-basiert und OpenSource.

Beispiele:

SunAppServer (Referenzimplementation) IBM WebSphere 6.0 JBoss 4.0
Einrichten der FH-Umgebung
Eigene Domain und Datenbank
   
Allgemeine Infos Allgemeine Infos Allgemeine Infos
Stateless Bean Stateless Bean Stateless Bean
Stateful Bean Stateful Bean Stateful Bean
Entity Bean Entity Bean Entity Bean
CMR, manueller PK CMR, manueller PK CMR, manueller PK
CMR, Autogenerated PK entfällt CMR, Autogenerated PK
--- N:M CMR N:M CMR
BMP Persistence BMP Persistence BMP Persistence
--- --- MessageDrivenBean
--- JSP-Beispiele JSP-Beispiele
--- Security Security


Aufgaben

Aufteilung der Gruppen:
1 2 3 4 5 6 7 8
130 623
830 621
334 832
937 276
737 402
736 820
336 818
834 714
530 791
546 873
838 386
840 561
243 408
140 572
139 902
639 924
637 338
139 855

Aufgabe 1: SessionFacade, ValueObjects/DataObjects (24.11.2005):
Es soll das KuchenZutatNM-Beispiel um einen Application-Client auf Swing-Basis erweitert werden, der die gleiche Funktionalität wie der Webclient bietet. Die Entity-Bean-Schicht soll dabei unverändert bleiben.
Da die Entity-Beans wegen der Container Managed Relationship nur über Local Interfaces verfügen kann der AppClient nicht direkt darauf zugreifen, sondern nur über eine Session Facade, also eine Session-Bean (Stateful oder Stateless, wie ihr wollt).
Alle Bean-Daten sollen von der Session Bean in Value Objects gepackt werden und auf diesem Wege zum Client gebracht werden.
Hier (KuchenZutatNMAppClient.zip) gibt es fertig designte Klassen für die grafische Oberfläche, ihr müßt eigentlich nur noch Anwendungslogik in die Button-Klicks packen (siehe TODOs in den Dateien). Die Dateien funktionieren mit WebSphere und JBoss/Eclipse.
Hinweise:
Als Package empfehle ich de.fhw.swtvertiefung.gruppebX, wobei das "x" für die Nummer eurer Gruppe steht.

WebSphere-Verwender: bitte verwendet ein eigenes Profil und eine eigene Datenbank ! Namenskonvention hierfür: Datenbank=GRUPPEBXDB, Profil sollte auch "GruppeBx" enthalten.

JBoss-Verwender: Die erzeugte DataObject-Klasse (KuchenNMData bzw. ZutatNMData) sind für unsere Fälle als Value Object ungeeignet da sie den unknown Primary Key nicht mitführen.
Lösung des Problems: in die XDoclet-Deklaration der beiden Beans das Tag @ejb.value-object (ohne weitere Parameter) einfügen. Dies erzeugt ein Value-Object (eine Klasse namens KuchenNMValue, ähnliches Design Pattern, aber mit mehr Möglichkeiten). Das Value Object führt den Primary Key als Membervariable private java.lang.Object primaryKey; mit und bietet eine Methode setPrimaryKey, um den Key von außen zu setzen. Die Session Bean(s) müssen also nach dem Erzeugen eines Value Objects noch den Primary Key aus der Entity Bean holen und in das Value Object packen !

Sollte in 2 Wochen, also 9.12., fertig sein. Es wird nicht bewertet, nehmt es trotzdem ernst !


Aufgabe 2: Praktikumsabgabe 1:
Sollte noch vor den Weihnachtsferien, also 15.12., grundlegend vorzeigbar sein.
Ich würde gerne folgendes sehen:
-UseCase-Diagramm
-Klassendiagramm mit allen Beans (Entity, Session) und den Value Objects. Noch keine Webschicht nötig.
-Die Beans sollten in Grundzügen implementiert sein (es sollte also zumindest die Bean-Struktur erkennbar sein, und es sollte erkennbar sein dass ihr euch schon mit der jeweiligen Entwicklungsumgebung beschäftigt habt ;-).
Das ganze in Form einer kurzen Präsentation (ca. 15 Minuten pro Gruppe). Dabei die beiden Diagramme und das Anwendungsgrundgerüst am Beamer vorführen.

Info: Hier ein Beispiel für die Implementierung des SequenceBlock-Patterns. Das Beispiel stammt aus Middlegen 2.1 (http://boss.bekk.no/boss/middlegen/), eine auf XDoclet aufbauende Erweiterung, die z.B. aus einer Datenbanktabelle eine EntityBean erzeugen kann. Das Tool bietet auch die Generierung der ID gemäß SequenceNumber-Pattern an.
Hier (SequenceBlock.zip) gibt es einen Auszug aus dem erzeugten Code für ein Middlegen-Sample (die ID einer PersonBean wird vergeben). Hilft hoffentlich um das SequenceBlock-Pattern zu verstehen.

Links:

J2EE-Tutorial von Sun: http://java.sun.com/j2ee/1.4/download.html

Übersicht über diverse Taglibs des Jakarta-Projekts: http://jakarta.apache.org/taglibs/index.html
Hier findet man eine Implementation der JSTL, aber auch weitere Hilfs-Libraries wie z.B. eine TagLib für das Arbeiten mit dem Request (siehe JSP-Beispiel 3).

Die Dokumentationen zur Java Standard Tag Library 1.1 findet man z.B. im J2EE-Tutorial von Sun, oder auch auf der JSTL-Seite von Sun unter http://java.sun.com/products/jsp/jstl/ (dem Link "JSTL 1.1 Specification Maintenance Release" folgen)
Ich habe die PDF-Datei der JSTL 1.1-Spezifikation auch hier abgelegt: jstl-1_1-mr2-spec.pdf

Weitere Links in den allgemeinen Infos zu den einzelnen Application Servers.

Literatur:

An Literaturempfehlungen habe ich dieses:

Richard Monson-Haefel, "Enterprise Java Beans", 4. Edition, 760 Seiten, bei O'Reilly erschienen. ISBN (englische Version): 0-596-00226-2
http://www.oreilly.com/catalog/entjbeans4/index.html
Enterprise Java Beans
Heiko W. Rupp, "JBoss - Server-Handbuch für J2EE-Entwickler und Administratoren", 350 Seiten, im "dpunkt.verlag" erschienen. ISBN: 3-89864-318-2
Eignet sich nicht zum EJB-Lernen, sondern mehr für die Grundlagen des JBoss.
http://www.dpunkt.de/buecher/3-89864-318-2.html
JBoss