Einführung in Verteilte Systeme

Werbung
Einführung in Verteilte Systeme
Wintersemester 2004/2005
Übungsblatt Nr. 3
Prof. Dr. Odej Kao
Dipl. Inf. Ulf Rerrer
Abgabe: in der Woche vom 22. bis 26.11.2004
Aufgabe 1: [RMI-HelloWorld]
Schauen Sie sich das in der Vorlesung vorgestellte RMI Programm Hello an. Erstellen Sie
HelloInterface.java, HelloImplementation.java, Hello-Server.java und
HelloClient.java wie auf den Folien beschrieben. Kompilieren Sie das RMI-System und
starten Sie es. Zum erfolgreichen Starten sind eine Policy-Datei und evtl. eine Anpassung des
CLASSPATHs notwendig.
Aufgabe 2: [BookZone]
Programmieren Sie mittels Java RMI den Online-Buchshop BookZone. Der BookZone-Server
soll dem Benutzer (Client) folgende Funktionen anbieten:
• Authentifizierung: Benutzer melden sich per Dialog mit einem Benutzernamen und
Passwort an.
• Katalog: Benutzer können sich Artikel des Shops auflisten und in einer Detailansicht
anzeigen lassen. Die Artikel sind dabei wie folgt kategorisiert:
o Bücher (Oberkategorie)
! Sachbücher, Romane, Belletristik, Fachbücher (Unterkategorien)
o Musik
! Charts, Rock, Klassik, Sampler, Soundtracks
o Video und DVD
! Spielfilme, Konzerte, Serien
o Elektronik
! Kameras, Computer, HiFi
• Kaufen: Benutzer können Artikel kaufen. Die Artikel können in BookZone mehrfach
vorhanden sein und werden durch IDs zur eindeutigen Identifizierung ausgestattet.
Wenn ein Artikel gekauft wurde, wird dieser aus dem Katalog gelöscht.
• Werbung: Ein Benutzer kann für sich einen Werbemodus aktivieren. In diesem wird er
über neue Artikel im Katalog bei Anmeldung ans System informiert, sofern er in der
gleichen Unterkategorie schon einmal einen Artikel erworben hat.
Hinweise:
• BookZone ist als RMI Server zu implementieren. Dabei wird empfohlen, die drei Dateien BookZoneInterface, BookZoneImplementation und BookZoneServer
anzulegen.
• Für die Auflistung und Detailanzeige sollen die Artikel (Klassen, nicht nur Text) an
den Client übertragen werden, die entsprechende Datenstruktur (in einer Datei BookZoneItem implementiert) muss also von der Klasse Serializable abgeleitet werden. Die Artikel soll man sich mittels der Methode toString() auf der Konsole anzeigen lassen können.
•
•
•
Fehler sollen vom Server mittels Ausnahmen zurückgeliefert werden (Klasse BookZoneException).
Achten Sie auf Nebenläufigkeit von mehreren Benutzern und benutzen Sie synchronisierte Abschnitte falls notwendig.
Die einzelnen Funktionalitäten des Clients sollen jeweils über einen interaktiven Dialog steuerbar sein (siehe Beispielprotokoll).
Beispielprotokoll: (Eingaben sind durch ">", Ausgaben durch ":" gekennzeichnet)
Server:
Admin(Server):
: 5 Artikel "Herr der Ringe",
Preis 19.99 EUR in Katego
rie BUCH.ROMAN
: 2 Artikel "Pulp Fiction",
Preis 9.59 EUR in Kategorie
DVD.SPIELFILM
: 1 Artikel "Hits der
80iger", Preis 6.99 EUR in
Kategorie MUSIK.SAMPLER
: Benutzerkonto Alice anlegen
: Benutzerkonto Bob anlegen
: (Alice) Login
> ADD 5 "Herr der Ringe"
BUCH.ROMAN 19.99
Alice:
Bob:
> ADD 2 "Pulp Fiction"
DVD.SPIELFILM 9.59
> ADD 1 "Hits der 80iger"
MUSIK.SAMPLER 6.99
> CREATE Alice x
> CREATE Bob y
> LOGIN Alice x
: ok
: (Bob) Login
> LOGIN Bob y
: ok
: (Alice) Kategorien anzeigen
> KATEGORIES
: BUCH (ROMAN)
DVD (SPIELFILM)
MUSIK (SAMPLER)
> GOTO MUSIK.SAMPLER
: (Alice) Geht in Kategorie
MUSIK.SAMPLER
: (Alice) Artikel anzeigen
> LIST
: ID 8 "Hits der 80iger"6.99
> BUY 8
: (Alice) Kauft ID 8
: (Bob) Geht in Kategorie
MUSIK.SAMPLER
: (Bob) Artikel anzeigen
> GOTO MUSIK.SAMPLER
> LIST
: empty
: (Alice) Werbung aktivieren
: (Alice) Logout
> ADVERTISE true
> LOGOUT
> ADD 1 "ACDC Bestof"
MUSIK.ROCK 8.99
: (Alice) Login,
Werbung zeigen
: (Alice) Logout
: (Bob) Logout
> LOGIN Alice x
: ok
: New Items in BookZone …
ID 9 "ACDC Bestof" in
MUSIK.ROCK for 8.99
> LOGOUT
> LOGOUT
Wichtig:
Zum Bestehen dieser Übung muss die zweite Aufgabe gelöst und erfolgreich vorgeführt werden. Auf Anfrage müssen einzelne Zeilen oder Vorgehensweisen des Programms von jedem
Gruppenmitglied erläutert werden können. Es dürfen maximal Dreiergruppen gebildet werden. Eine alleinige Abgabe ist unzulässig.
Hinweise zum Übungsablauf:
• Benutzen Sie die auf den Pool-Rechnern installierte Java-Version. Bei eigenen Laptops mindestens Java 1.4.1.
• Es können Entwicklungsumgebungen benutzt werden (Eclipse, JBuilder, ...)
• Die Programme müssen an essentiellen bzw. schwierigen Stellen ausreichend kommentiert sein und es sollten die häufigsten Fehler abgefangen werden.
• Die Programme sollten weitestgehend vor der Übung in der Gruppe erstellt werden.
Die Übung dient zum Beantworten von Fragen und zur Abgabe der Programme.
• Achten Sie darauf, dass nach Abgabe alle Ihre Prozesse beendet werden (vor allem die
RMIRegistry und Serverprozesse!!!)
Herunterladen