Übungsblatt Nr. 3

Werbung
Einführung in Verteilte Systeme
Wintersemester 2005 / 2006
Prof. Dr. Odej Kao
Dipl.-Inf. Ulf Rerrer
Übungsblatt Nr. 3
Aufgabe 0: [Erstes RMI-Programm starten]
Laden Sie das in der Übung vorgestellte Bank-Simulations-Programm von der
Webseite der AG-Kao herunter. Neben der Bankanwendung (RemoteBank.java)
existieren wie in jeder RMI-Anwendung ein Client, ein Server und ein Interface
(RemoteBankService.java). Desweiteren werden die Dateien Money.java und
BankingException.java zur Ausführung benötigt. Kompilieren Sie das RMISystem und starten Sie es. Zum erfolgreichen Starten sind eine Policy-Datei und evtl.
eine Anpassung des CLASSPATHs nötig.
Aufgabe 1: [Yet Another Bidding System (YABS)]
Programmieren Sie mittels Java RMI die Intranet Auktionsplattform YABS. Der YABSServer soll dem YABS-Client folgende Funktionen anbieten:
• Anmeldung: Benutzer melden sich mit Benutzernamen und Passwort an
• Anbieten: Angemeldete Benutzer können Gegenstände anbieten und dabei
den Mindestpreis und die maximale Dauer der Auktion (in Sekunden)
festlegen. Gegenstände werden vom Server mit einer eindeutigen ID zur
Identifizierung ausgestattet.
• Auflisten: Alle Gegenstände oder Auktionen (eines bestimmten Benutzers)
sollen aufgelistet werden können.
• Bieten: Angemeldete Benutzer können für angebotene Gegenstände bieten.
• Beobachten: Ein Benutzer kann den Client in einen Beobachtungsmodus
schalten. In diesem wird er über die ihn betreffenden Auktionen informiert,
z.B. über das Ende einer Auktion oder ein höheres Gebot eines anderen
Benutzers.
Die Auktionsplattform soll folgenden Kriterien genügen:
• YABS ist als RMI-Server zu implementieren. Dabei wird empfohlen, die drei
Dateien YABSInterface, YABSImplementation und YABSServer
anzulegen.
• Für die Auflistung sollen die Gegenstände (Klassen, nicht nur Text) an den
Client übertragen werden, die entsprechende Datenstruktur (z.B. in der Datei
YABSItem implementiert) muss also von der Klasse Serializable
abgeleitet werden. Die Gegenstände sollen sich mittels der Methode
toString() selbst auf der Konsole identifizieren können.
• Der Server zählt die Zeit der Angebote herunter. Benutzen Sie hierfür z.B. die
Klasse TimerTask.
• Fehler sollen vom Server mittels Ausnahmen zurückgeliefert werden (Klasse
YABSException).
• Achten Sie auf Nebenläufigkeit und benutzen Sie synchronisierte Abschnitte
falls notwendig. Versuchen Sie die gesperrten Bereiche so klein wie möglich zu
halten.
•
•
•
Wahlweise ist es möglich, die einzelnen Funktionalitäten des Clients als jeweils
ein eigenständiges Programm zu implementieren, oder eine über die
Kommandozeile steuerbare Anwendung zu schreiben, welche alle
Funktionalitäten zusammenfasst.
Um zu beobachten, soll ein RMI Callback genutzt werden, d.h. der Client wird
selbst auch zum Server. Erstellen Sie die benötigten Funktionalitäten in den
Dateien YABSMonitorInterface und YABSMonitorImplementation.
Der Client soll sich beim Server durch die Übergabe einer Selbstreferenz this
anmelden (also nicht über die Registrierung). Das Beobachten wird z.B. durch
das Drücken von Ctrl-C beendet.
Beispielprotokoll (Eingaben mit „>“ markiert):
Server
YABSServer läuft
Anmeldung Anton
Anton
Bertie
Connie
> ANMELDUNG Anton x
ok
Anmeldung Connie
> ANMELDUNG Connie z
ok
> ANMELDUNG Anton y
fehlgeschlagen
Anbieten Fahrrad
von Anton
> ANBIETEN Anton x Fahrrad 10
600
Fahrrad unter ID 1 angeboten
Liste
> LISTE
1 Anton
546s null
Fahrrad
10
Anbieten
Hängematte
von
Connie
Bieten 1 Connie
12
Liste Connie
> ANBIETEN Connie z Hängematte
5 400
Hängematte unter ID 2 angeboten
BIETEN Connie z 1 12
> ok
> LISTE Connie
1 Anton Fahrrad 12 432s Connie
2 Connie Hängematte 5 312s null
> LISTE Anton
1
Anton
Fahrrad
Connie
12
417s
Anmeldung Bertie
Bieten 1 Bertie
14
Liste Connie
> ANMELDUNG Bertie y
> BIETEN Bertie y 1 14
ok
> LISTE Connie
2 Connie Hängematte 5 289s null
> BEOBACHTEN Bertie y
Bieten
15
1
Connie
Bieten 2 Anton 10
1 überboten von Connie
> BIETEN Anton x 2 10
> LISTE
1
Anton
Fahrrad
15
125s
Connie
2 Connie Hängematte 10 5s
Anton
Ende
2
(Hängematte)
Ende 1 (Fahrrad)
> BIETEN Connie z 1 13
fehlgeschlagen
> BIETEN Connie z 1 15
ok
> BEOBACHTEN Connie z
2 Gebot Anton 10
2 Ende Gebot Anton 10
1 Ende 15 Anton Fahrrad
> Ctrl-C
> BIETEN Bertie y 1 18
zu spät
> LISTE
1 Anton Fahrrad 15 Connie
2 Connie Hängematte 10 Anton
x, y und z sind die Passwörter von Anton, Bertie und Connie. Die Ausgabe LISTE
zeigt jeweils die ID, den Verkäufer, die Beschreibung des Gegenstands, das aktuelle
Gebot, die verbleibende Zeit und den Käufer.
Übungsablauf und -bewertung:
• Benutzen Sie die auf den Pool-Rechnern installierten JAVA Versionen. Eigene
Laptops sind zugelassen, müssen aber eigenständig konfiguriert werden.
• Die Programme müssen an essentiellen bzw. schwierigen Stellen ausreichend
kommentiert sein.
• Die Programme sollen weitestgehend vor der Übung in Gruppen erstellt werden.
Die Übung dient zum Beantworten von Fragen und zur Vorführung/Abgabe der
Programme.
• Der Übungszettel gilt als Bestanden, sofern die Aufgabe 1 in der Übung
erfolgreich vorgeführt und zufrieden stellend erklärt werden konnten.
Herunterladen