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.