Ptt17 Assignment5

Distributed Systems

Aufgabe

Bearbeiten Sie die Aufgabe gemäß Ihrer zugewiesenen Option.

Modalitäten:

Projekt
  • Geben Sie das komplette Projekt ab. Verwenden Sie dabei entweder ein Buildmanagement-Tool wie Maven, Gradle oder Ant oder fügen Sie die benötigten Abhängigkeiten (In der Regel .jar-Dateien bei Java-Projekten) in ein Ordner des Projektes hinzu.
  • Kommentieren Sie ihren Code kurz (!) wo es sinnvoll erscheint.
  • Erstellen Sie ein oder mehrere Tests (Bei Java: JUnit4-Tests mit Quellcode-Datei Demo.java), welche die Funktionsweise des Systems mit allen Bestandteilen demonstrieren.
  • Code-Dateien müssen in Unicode codiert sein (etwa UTF-8).
Abgabeordner

Laden Sie ihre Ergebnisse in ihr Gruppenverzeichnis:
https://svn.uni-koblenz.de/softlang/ptt17/GRUPPENNAME/solutions/05/

Optionen

Option A: RESTful API

Motivation

Wir wollen das Klipsähnliche System implementieren. Die Daten, wie Studenten-, Dozenten- und Veranstaltungsinformationen, sollen dabei nur auf dem Server gespeichert sein. Der Client soll mithilfe der RESTFUL API bestimmte Datensätze hinzufügen, ändern, löschen oder abfragen können.

Aufgabe

Installieren Sie auf ihrem Rechner den Web-Server Flask. Flask ist ein Mini-Web-Server, der sehr einfach zu verwenden ist und für unsere Zwecke vollkommen ausreicht.

Erstellen Sie ein Python-Skript für den Server. Das Skript soll den Web-Server Flask starten und die RESTFUL Schnittstelle definieren. Die Daten aus dem Klipsähnlichen System sollen auf dem Server gespeichert werden (z.B. in JSON Dateien).

Erstellen Sie eine Java oder Python Implementation für den Client. Die Implementation soll einfache "HTTP-Requests" an die RESTFUL Schnittstelle senden können. Dabei sollen folgende Funktionen abgedeckt werden:

  • Erstellen von Studenten mit Name, Uni-Kennung und Matrikelnummer.
  • Erstellen von Dozenten mit Name, Uni-Kennung und Raum.
  • Erstellen von Veranstaltungen (Vorlesung, Seminar, Pruefung) mit Name, Semester, Raum und Dozentenname.
  • Belegen von Veranstaltungen durch Studenten
  • Ausgabe von Studentendaten (Name und Uni-Kennung) durch Eingabe der Matrikelnummer
  • Ausgabe des Raumes der Dozenten durch Eingabe des Dozentennamen
  • Ausgabe der Liste aller Veranstaltungen, die von einem Dozenten erstellt wurden, durch Eingabe des Dozentennamen
  • Ausgabe der Liste aller Veranstaltungen, die von einem Studenten belegt wurden, durch Eingabe des Studentennamen

Erstellen Sie eine Testdatei (Demo.java für Java-Implementation), wo Sie alle Funktionen aus der Implementation testen.

Erstellen Sie eine PDF in der Sie kurz beschreiben, wie man ihre Skripte und Implementationen ausführen soll. Dazu gehören auch die Benennung der verwendeten Bibliotheken/Abhängigkeiten.

Hinweise
  • Sie müssen Flask installiert und das Python-Skript über die Eingabeaufforderung/Terminal/Konsole ausgeführt haben, um die Implementation zu testen. Sobald die Konsole mit dem laufenden Skript geschlossen wird, wird auch der Web-Server beendet.
  • Die Standardbibliothek von Java hat bereits alle Abhängigkeiten um Anfragen an die RESTful API zu senden (siehe Klassen aus java.net)

Option B: Java Message Service (JMS) API

Motivation

Wir wollen das Klipsähnliche System implementieren. Die Daten, wie Studenten-, Dozenten- und Veranstaltungsinformationen, sollen beim JMS Consumer liegen. Man soll mithilfe der JMS API (hier: Point-To-Point Messaging) bestimmte Datensätze vom JMS Producer aus, hinzufügen, ändern, löschen oder abfragen können.

Aufgabe

Zur Vereinfachung soll der Consumer und Producer auf einem Gerät und die Message-oriented middleware (MOM) der Localhoast sein. Dadurch muss nur ein Java-Projekt erstellt werden, der sowohl Consumer als auch Producer enthält.

Erstellen Sie eine Java Implementation. Die Implementation soll einen JMS Producer, der Anfragen versenden kann, und einen JMS Consumer, der Anfragen annehmen kann, enthalten.

Der JMS Producer soll folgende Funktionen abdecken (Nachrichten senden):

  • Erstellen von Studenten mit Name, Uni-Kennung und Matrikelnummer.
  • Erstellen von Dozenten mit Name, Uni-Kennung und Raum.
  • Erstellen von Veranstaltungen (Vorlesung, Seminar, Pruefung) mit Name, Semester, Raum und Dozentenname.
  • Belegen von Veranstaltungen durch Studenten
  • Ausgabe von Studentendaten (Name und Uni-Kennung) durch Eingabe der Matrikelnummer
  • Ausgabe des Raumes der Dozenten durch Eingabe des Dozentennamen
  • Ausgabe der Liste aller Veranstaltungen, die von einem Dozenten erstellt wurden, durch Eingabe des Dozentennamen
  • Ausgabe der Liste aller Veranstaltungen, die von einem Studenten belegt wurden, durch Eingabe des Studentennamen

Der JMS Consumer soll die Nachrichten mit den Parametern vom JMS Producer erhalten und die Daten entsprechend verarbeiten können. Die Daten sollen z.B. in JSON Dateien gespeichert werden.

Erstellen Sie eine Testdatei (Demo.java), wo Sie alle Funktionen aus der Implementation testen.

Erstellen Sie eine PDF in der Sie kurz beschreiben, wie man ihr/e Skript/Implementation ausführen soll. Dazu gehören auch die Benennung der verwendeten Bibliotheken/Abhängigkeiten.

Hinweise
  • Die JMS API finden Sie beispielsweise über Maven

Gruppe-Option-Zuordnung

Optionen Gruppen
Option A uniform, whiskey, xray, yankee, zulu, alpha, charlie, delta, echo, golf
Option B kilo, mike, november, oscar, quebec, hotel, juliet, romeo, sierra, tango