Hallo zusammen, in diesem Video werfen wir einen genaueren Blick auf den Aufbau und die
Verwendung von Java RMI.
Das Kürzel RMI steht dabei für Remote Method Invocation und verrät bereits, worum es geht.
Und zwar darum, Methoden in der Ferne aufzurufen.
Also beispielsweise die Methode eines Objekts, das auf einem anderen Rechner existiert.
Ähnlich wie bei einem regulären Methodenaufruf, bei dem man eine Referenz auf ein Objekt
benötigt, um dort Methoden aufzurufen, gibt es mit der Remote-Referenz ein verteiltes
Gegenstück.
Die Remote-Referenz lässt sich dabei weitestgehend transparent wie ein lokales Objekt verwenden,
zeigt aber tatsächlich auf ein Objekt auf einem anderen Rechner.
Als erstes schauen wir uns genauer an, aus welchen Bestandteilen Java RMI besteht.
Dazu beginnen wir mit der untersten Schicht, der Transportschicht.
Diese dient dazu, Daten bzw. Objekte zwischen einzelnen Rechnern zu übertragen.
Standardmäßig wird dazu eine TCP-Verbindung genutzt.
Grundsätzlich wären aber auch andere Transportmechanismen wie HTTP oder UDP mit oder ohne Verschließung
möglich.
Die Schicht oben drüber, die Referenzschicht, ist zuständig für die Verwaltung der Remote-Referenzen.
Für einen Methodenaufruf bestimmt die Referenzschicht auf kleinen Seiten, zu welchem Server ein
Aufruf muss und gibt diese am Server zum richtigen Objekt weiter.
Dabei verwaltet die Referenzschicht die Information, welche Objekte existieren und ob diese noch
genutzt werden.
Bei einem viel geschlagenen Aufruf wird zudem die Strategie zur Fehlerbehandlung bestimmt,
also beispielsweise ob Aufrufe erneut gesendet werden oder direkt ein Fehler zurückgegeben
wird.
Darauf kommen wir in einer späteren Übungsaufgabe nochmal zurück.
Der Stub dient auf kleinen Seiten als Platzhalter für das entfernte Objekt, sodass man das
darüber ganz normal verwenden kann.
Der Skeleton führt dann auf Serverseite den eigentlichen Aufruf am Objekt durch.
Etwas genauer betrachtet passiert Folgendes.
Bei einem Methodenaufruf holt sich der Stub von der Referenzschicht einen Objektausgabestrom
und schreibt die Parameter des Methodenaufrufs in diesen.
Anschließend weist der Stub die Referenzschicht an, die Methode aufzurufen.
Auf Serverseite erhält der Skeleton daraufhin einen Objektausgabestrom von der Referenzschicht
und liest die Parameter des Methodenaufrufs aus dem Strom.
Anschließend ruft der Skeleton die Methode am echten Objekt auf.
Für den Rückgabewert des Methodenaufrufs nutzt der Skeleton wieder einen Ausgabestrom
der Referenzschicht, um das Ergebnis zurück zum Stub zu schicken.
Letzterer holt ein Objektausgabestrom von der Referenzschicht, liest das Rückgabeobjekt
und gibt es an den Aufrufer zurück.
Damit ein Objekt aus der Ferne genutzt werden kann, muss es zuerst exportiert und dadurch
in ein Remote-Objekt umgewandelt werden.
Erst danach ist es aus einem anderen Java-Prozess heraus erreichbar.
Das hat den großen Vorteil, dass der Zugriff auf Objekte über das Netzwerk erst dann
möglich ist, nachdem sie exportiert wurden.
Die tatsächlich exportierten Methoden eines Remote-Objekts in Java-RMI sind durch dessen
Remote-Schnittstelle vorgegeben.
Diese bestimmt, welche Methoden des Remote-Objekts per Fernaufruf nutzbar sind und welche dann
auch vom Stub angeboten werden.
Damit Java weiß, dass es sich bei einer Schnittstelle um eine Remote-Schnittstelle handelt, muss
diese von der Schnittstelle Java-RMI Remote erben.
Presenters
Michael Eischer
Zugänglich über
Offener Zugang
Dauer
00:12:39 Min
Aufnahmedatum
2021-04-09
Hochgeladen am
2021-04-19 14:40:15
Sprache
de-DE
Erläuterung des Aufbaus und der Verwendung von Java Remote Method Invocation (RMI)