Projektstudium SS98 - distributed computing


vorherige Seite Inhalt nächste Seite

Interfaces

Client Interface

Der Client benötigt nur die Klassen und Interfaces des java.rmi-Pakets, speziell:

Das Remote Interface dient dazu alle entfernten Objekte zu kennzeichnen, alle entfernten Objekte müssen dieses Interface direkt oder indirekt implementieren.

Die Naming Klasse erlaubt es entfernte Objekte durch die gebräuchliche URL Syntax zu definieren und zu finden.

Server Interface

Der Server braucht mehr "Infrastruktur" als der Client, deshalb gibt es für den Server ein zusätzliches Paket, das java.rmi.server-Paket.

Die Klasse RemoteObject implementiert das Verhalten der Object-Klasse für entfernte Objekte.

Die Klasse RemoteServer ist eine gemeinsame, abstrakte Überklasse aller Serverimplementationen und sorgt für den Rahmen für die Unterstützung einer großen Auswahl von entfernten Referenzsemantiken. Zur Zeit gibt es nur eine Unterklasse, die UnicastRemoteObject Klasse. Sie unterstützt eine TCP-basierte Punkt-zu-Punkt Verbindung.

Das Unreferenced Interface erlaubt es dem Serverobjekt Nachrichten zu erhalten, wenn keine Referenzen mehr auf es zeigen. Solange noch eine Referenz auf einem entfernten Objekt besteht, behält der distributed garbage collector eine Menge lokaler Referenzen. Wenn diese Menge leer ist wird die Methode unreferenced aufgerufen (wenn der Server sie implementiert hat).

Der SecurityManager ist eine Klasse um einfache Sicherheitsfunktionen zu gewährleisten, so daß nur zugehörige Klassen, und deren Argumente und Rückgabewerte, geladen werden können. Ohne Sicherheitsmanager können nur lokale Klassen geladen werden.

Die RMIClassLoader Klasse kann dazu benutzt werden Klassen über einen URL zu laden, entweder über die Eigenschaft java.rmi.server.codebase oder direkt als Parameter übergeben.

Die Methoden der Klasse RMISocketFactory spezifizieren welche Sockets für die Übertragung der Daten zu benutzen sind. Durch die Methode im Interface RMIFailureHandler kann definiert werden wie reagiert werden soll, wenn die Erzeugung einer Socketverbindung fehlschlägt.

Registry Interface

Das RMI System benutzt das Registry Interface und die LocateRegistry Klasse aus dem Paket java.rmi.registry, um Objekte durch einfache Namen zu registrieren, damit sie wieder gefunden werden können. Das Registry Interface sorgt für Methoden um den Inhalt der Registry zu verwalten, Methoden zum Finden, Eintragen, Auslösen, und Auflisten. Die Klasse LocateRegistry stellt statische Methoden zur Verfügung, durch die eine Referenz auf das Stellvertreterobjekt (den Stub) der Registry zurückgegeben wird. Dabei finden keine Operationen auf entfernten Hosts statt.

Stub/Skeleton Interface

Diese Klassen und Interfaces werden von den automatisch generierten Stellvertreterobjekten (Stub und Skeleton) genutzt. Das sind zum einem die RemoteStub Klasse als Überklasse aller Stubs. Stubs sind Stellvertreterobjekte die dieselbe Funktionalität zur Verfügung stellen, wie die aktuelle Implementation des entfernten Objekts.

Das RemoteCall Interface abstrahiert die Aufrufe die, durch die Stub- oder Skeletonobjekte, an das entfernte Objekt durchgeführt werden. Das Interface RemoteRef präsentiert ein Handle für das entfernte Objekt, d.h. jedes Stubobjekt beinhaltet eine Instanz von RemoteRef, welches eine konkrete Referenz auf das entfernte Objekt ist. Diese wird dazu benutzt Aufrufe des entfernten Objektes durchzuführen.

Das Interface ServerRef ist das Gegenstück zum RemoteRef auf der Serverseite. Es ist ein Handle für die Implementation des entfernten Objekts.

Das Skeleton Interface wird einzig von dem durch den rmic-Compiler generierten Code benutzt. Ein Skeleton für ein entferntes Objekt ist eine serverseitige Existenz, das die Aufrufe an die Implementation des aktuellen entfernten Objekts sendet.

Garbage Collector Interface

Das DGC Interface aus dem Paket java.rmi.dgc ist eine Abstraktion, die auf der Serverseite für den distributed garbage collection Algorithmus verwendet wird. Es beinhaltet zwei Methoden: dirty() und clean().
Dirty() wird aufgerufen, wenn ein Objekt noch auf einer VM gebraucht wird, d.h. der Garbage Collector darf es noch nicht löschen. Die Funktion gibt ein Lease-Objekt zurück, mit der Information über die VM und die Zeit die das Objekt bestehen bleibt.
Clean() wird aufgerufen, wenn ein entferntes Objekt in einer VM nicht mehr referenziert wird, dann kann dieses Objekt vom Garbage Collector gelöscht werden.

vorherige Seite Inhalt nach oben nächste Seite
© Copyright 1998 André Möller, Oliver Mentz & Magnus Wiencke