Praktikum RMI
Ziel
Praktisches experimentieren mit dem Java-Framework Remote Method Invokation. Anzeige und Nutzung entfernter Objekte.
Auflistung der exportieren Objekte
- Programmieren Sie einen Client, welcher sich mit einem beliebigen RMI-Server verbindet und die exportierten Objekte anzeigt.
- Nutzen Sie dazu die statische Funktion list der Klasse naming, siehe dazu auch Vorlesungsfolien.
Counter-Server
- Entwerfen Sie einen Counter-Client auf Grundlage der Vorlesungsfolien zur Nutzung des
CounterServers
auf Idefix und spielen Sie mit diesem herum. - Remote-Schnittstelle: Counter.java
- Beachten Sie, dass das Package counter der Schnittstelle Counter erhalten bleibt (der RMI-Server verwendet dieses Package). Ansonsten erhält man eine ClassLoader-Exception.
- Nutzen Sie in einem zweiten Schritt einen eigenen Counter-Server auf localhost.
- Hinweis: Starten der Registry (
rmiregistry
) auf der Kommandozeile im Verzeichnis der Klassdateien oberhalb des Packages counter notwendig.
Chat-Server
- Der Chat-Server dient der Demonstration von Callback-Funktionen sowohl auf dem Server als auch dem Client.
- Nutzen Sie die Quellen aus der Vorlesung um einen Chat-Server und einen Chat-Client mittels Remote Methode Invocation (RMI) zu realisieren. Die Quellen müssen alle das Package chat verwenden, um mit dem Chat-Server auf idefix kompatibel zu sein.
- In einem ersten Schritt können Sie den Chatserver auf Server idefix nutzen. Es können sich dann beliebig viele Clients anmelden. In einem späteren Schritt sollen sie den Server auf einem eigenen Rechner starten.
- Hier nochmals die Schritte zur Realisierung eines RMI-Projektes:
- Schnittstelle definieren
- Schnittstelle implementieren
- Server implementieren
- Client implementieren
- u.U. RMI-Registry starten
- Server und Client starten
- Dateien zum Chat-Projekt
- Erweitern Sie den Client um eine weitere Callback-Methode. Beispielsweise käme eine akustische Signalisierung einer eingehenden Nachricht in Betracht.
Bootstrap-Server
- Sie können einen eigenen RMI-Bootstrap-Server nutzen, um beliebige Worker an diesem zu registrieren (
registerWorker()
) ohne das diese Worker auf einem Rechner mit derrmiregistry
arbeiten. - Ein Master kann eine Liste der Namen (
List<String> getList()
) und eine Liste der Stubs der registrierten Worker erhalten (List<Remote> getWorkerList()
). - Nutzen Sie den zur Verfügung gestellten Bootstrap-Server, um eine eigene simple Anwendung anzubieten, z.B. einen Zeitdienst oder modifizieren Sie den Counter-Server.
- Bootstrap.java
- BootstrapImpl.java
- WorkerRegistration.java
- zip-Archiv
Fakultativ
Counter-Export
- Nutzen Sie die beigefügten Quellen und die Vorlesungsfolien zum praktischen Test des Beispiels CounterMigration. Ergänzen Sie dazu die Klasse Mediator und schreiben Sie die Klassen CounterImpl und MigratorImpl.
- Auf dem Server idefix läuft für Testzwecke ein Migrationsserver.
- Nach erfolgreichem Test der Anwendung sollten Sie diese dahingehend erweitern, dass Sie das Counterobjekt zwischen zwei Servern hin und her verschieben.
- Hier nochmals die Schritte zur Realisierung eines RMI-Projektes:
- Schnittstelle definieren
- Schnittstelle implementieren
- Server implementieren
- Client implementieren
- u.U. RMI-Registry starten
- Server und Client starten
- Dateien zum Export-Projekt
Zeitserver
Letzte Änderung: 05. May 2025 15:55