SEP SS 2018
Einführungsaufgabe

Hintergrund

In vergangenen SEPs mit ähnlichen Aufgabenstellungen musste immer wieder festgestellt werden, dass eine große Fülle von Techniken und Technologien benötigt werden. Wir haben eine Liste von Tools, Einführungen, Tutorials und Handbüchern zu Technologien wie Java Server Faces, Servlets, etc. zusammengestellt. Den meisten Nutzen zieht man aus diesen Dokumentationen erfahrungsgemäß indem man das Beschriebene sofort ausprobiert. Auf dieser Seite finden Sie daher eine Aufgabe, zu deren Realisierung Sie viele der im SEP benötigten Techologien und Techniken einsetzen müssen.

Die Aufgabe ist zur Einarbeitung in SEP wichtig. Unserer Meinung nach ist es für das Gelingen des SEP notwendig dass jedes Mitglied Ihrer Gruppe in der Lage ist diese Aufgabe zu bewältigen und zwar bevor mit dem Pflichtenheft begonnen wird. Deshalb raten wir dringend, dass diese Aufgabe von jedem Teammitglied eigenständig bearbeitet und beim jeweiligen Betreuer abgegeben wird. Letztmöglicher Abgabetermin ist bereits der 4. April 10:00 Uhr.

Sie sollen wie das spätere Projekt die Einführungsaufgabe in JSF Technologie realisieren. Dazu sollen/müssen Sie sich erst/parallel in JSF einlesen!

Vorbereitung

Installieren Sie Tomcat 9.0.x wie im SEP-Tutorial beschrieben im CIP-Pool oder auf Ihrem privaten Rechner.

Falls Sie Ihren privaten Rechner nutzen wollen installieren Sie darauf Eclipse IDE for Java EE Developers in der jeweils neusten Version welches das für JEE Projekte notwenige WTP-Plugin und dessen Voraussetzungen bereits enthält. Dieses Plugin übernimmt eine Vielzahl von Routineaufgaben im Zusammenhang mit Tomcat, wie z.B. das Starten und Stoppen, das Deployment, bietet aber auch Syntaxhighlighting für Facelets und HTML. Alternativ können Sie natürlich auch Eclipse Classic verwenden und die Plugins separat installieren. Im CIP-Pool ist die Eclipse Installation mit den notwenidgen Plugins für Sie bereits erledigt. Sie können es einfach mit dem Kommando eclipse starten. Die Abgabe versteht sich dann als von Eclipse WTP exportierte war-Datei Ihres Projekts, welche auch die Sourcen enthält. Falls Sie eine andere Entwicklungsumgebung oder z.B. das Build Tool Ant einsetzen wollen, besprechen Sie die Form der Abgabe vorher mit Ihrem Betreuer.

Nach dem ersten Start von Eclipse sollten Sie der IDE das Installationsverzeichnis des Java SDKs/JRE kontrollieren. Bei Bedarf erstellen Sie unter Window > Preferences > Java > Installed JREs mit Add... > Standard VM > Next einen Eintrag. Im erscheinenden Dialog geben Sie unter JRE home: den Pfad unter dem Ihr Java SDK/JRE gespeichert ist an. Im CIP Pool ist dieser z.B. /usr/lib/jvm/java-9-oracle (Debian) oder /opt/oracle-jdk-bin-9.0.xx (Gentoo). Auf Ihrem Windows Rechner ist z.B. C:/Programme/Java/jre-9.0.x der richtige Eintrag. Bestätigen Sie dann mit Finish.

Nun geben Sie der IDE das Tomcat Installationsverzeichnis bekannt. Legen Sie dazu im Menü Window > Preferences > Server > Runtime Environment mit Add... ein neues Server Runtime Environment für Apache Tomcat 9.0.x an. In der zweiten Dialogseite (nach Drücken von Next ändern Sie den Eintrag unter JRE: auf Ihr vorher installiertes Java JDK. Anonsten erscheint oben eine Warnmeldung. Das Tomcat installation directory setzen Sie auf den Pfad wo Sie den Server installiert haben, z.B. /home/cip/<login>/apache-tomcat-9.0.x . Alle sonstigen Einstellungen des Wizards lassen Sie auf Default.

Um die Konfiguration zu testen importieren Sie jetzt die Demo Webapplikation im Menü File > Import... > Web > WAR file. Sie starten die Applikation mit einem Rechtsklick auf das jsfdemo-Projekt mit dem Menüpunkt Run As > Run on Server. Im folgenden Dialog bestäigen Sie die Auswahl Ihrer vorher installierten Server Runtime Umgebung. Ab Java 9 erscheinen beim ersten Start der Anwendung in der Konsole wahrscheinlich Fehlermeldungen. Ändern Sie deshalb in Run (Menü) > Run Configurations... > Apache Tomcat > Tomcat v9.0 Server at localhost > (x)=Arguments > VM arguments die Startparameter der JVM: löschen Sie (falls existent) den Eintrag -Djava.endorsed.dirs=".../Tomcat/endorsed" und fügen Sie am Ende --add-modules=java.xml.bind hinzu. Achten Sie dabei auf je ein Leerzeichen zwischen den Parametern. Unseren Kommentar zur Verwendung von CDI wie in der Demo lesen Sie bitte im Tutorial.

Für JSF-Projekte stellen Sie sicher, dass sich die entsprechende jar-Dateien für JSF im Classpath befinden. Am einfachsten legen Sie die Datei in das Verzeichnis WebContent/WEB-INF/lib Ihrer Web-Applikation.

Aufgabenstellung I

Auf der ersten Seite soll sich der Benutzer mit einem Loginnamen und einem Passwort anmelden können. Die Anmeldung wird überprüft indem Loginname und Passwort mit einer im Programm fest kodierten Liste von zulässigen Benutzern verglichen wird. Praktisch sieht das Ganze so aus, dass die Applikation über eine Start-Seite betreten wird, auf der ein Login-Formular angeboten wird. Nachdem der Benutzer auf den Login Knopf gedrückt hat, werden in der damit registrierten Action-Methode die Login-Daten überprüft. Je nach Ergebnis wird (über den Rückgabewert der Action-Methode) die gleiche Seite weiter angezeigt, jedoch jetzt mit einer Fehlermeldung, oder zur Seite mit den jeweiligen Nutzerdaten gewechselt.

Die Daten sind ebenfalls fest im System kodierten und sollen mindestens Loginnamen, Passwort als "****", Name, Geburtsdatum und Anschrift umfassen. Alle angezeigten Daten sollen editierbar sein, entweder direkt (und am einfachsten) durch ein Formular mit Speichern-Knopf oder erst durch einen Klick auf einen Link pro Datum. Nach einer Änderung soll wieder die Seite mit allen Benutzerinformationen angezeigt werden. Geänderte Daten sollen zwar erhalten bleiben solange Tomcat läuft, sie brauchen aber hier nicht persistent gemacht werden.

Achten Sie darauf dass es mindestens zwei Benutzer in Ihrem System gibt. Ihr System sollte folgenden Testfall korrekt verarbeiten: Melden Sie sich als Benutzer A an und ändern Sie einige der Daten. Gehen Sie dann wieder zurück zur ersten Seite (Anmeldung) und melden sich als Benutzer B an. Welche Daten sehen Sie? Sie brauchen eine Sessionverwaltung! JSF unterstützt Sie dabei weitgehend automatisch.

Aufgabenstellung II

Nun sollen die Daten über die Benutzer nicht mehr fest in Ihre Webapplikation kodiert sein, sondern in der PostgreSQL SEP-Datenbank verwaltet werden und Neustarts von Tomcat überstehen.

Besorgen Sie sich dazu (soweit nicht schon automatisch zugewiesen) bei einem der Betreuer eine Kennung. Auf der Download Seite finden Sie eine Beispielapplikation zur Datenbankanbindung und den passenden Datenbanktreiber. Damit Ihre Web-Applikation den Datenbanktreiber automatisch findet, legen Sie die jar-Datei einfach in den WEB-INF/lib Ordner.

Verwenden Sie keinen O/R-Mapper zum Datenbankzugriff, wie z.B. Hibernate, EclipseLink oder/und JPA. Leider benutzt Bernd Müller JPA in seinem Buch, es ist aber relativ einfach davon zu abstrahieren. Auch im Praktikum/Projekt selbst wird klassisch per SQL über JDBC auf eine Datenbank zugegriffen. Dies soll verhindern sich neben JSF in eine weitere neue Technologie einarbeiten zu müssen und eine (weitere und ggf. sehr lästige) Fehlerquelle soll ausgeschlossen werden. Vom Aufwand und Codeumfang sollte dies keinen wesentlichen Unterschied bedeuten.