1 - Java RMI [ID:30690]
49 von 49 angezeigt

Hallo zusammen, in diesem Video gibt es einen Ausblick auf unser eigenes Fernaufrufssystem,

das wir in den ersten drei Übungsaufgaben realisieren wollen und auf die ersten dafür

nötigen Komponenten. Wie gerade erwähnt ist es unser Ziel ein eigenes kleines Fernaufrufssystem

zu entwickeln. Dieses soll es dann ermöglichen, dass ein Methodenaufruf nicht mehr lokal ausgeführt

wird, sondern eben entfernt auf einem anderen Rechner. Dabei wird ein Methodenaufruf dann

von einer Komponente namens stub entgegengenommen, die am Client als Platzhalter für das Objekt

am Server dient. Der Aufruf wird in eine Nachricht verwandelt und an den Zielrechner versendet.

Dort führt dann das sogenanntes gelten, als Stellvertreter für den Client, den eigentlichen

Aufruf durch und schickt das Ergebnis zurück. Der Aufbau unseres Fernaufrufsystems wird

sich dabei an Java RMI orientieren. Mehr Details dazu gibt es im entsprechenden Video.

Nach der dritten Übungsaufgabe werden wir ein Fernaufrufsystem bestehend aus den hier

gezeigten Komponenten haben. In der ersten Übungsaufgabe fangen wir erstmal damit an,

die grün hervorgehobenen Komponenten umzusetzen. Dazu gehört ein kleinerer Auktionsdienst

mit Client und der zugehörigen Serverimplementierung. Für diese nutzen wir zunächst Java RMI. In

der nächsten Übungsaufgabe wird der Auktionsdienst dann auf unser eigenes Fernaufrufssystem umgestellt.

Zusätzlich zum Auktionsdienst implementieren wir in der ersten Übungsaufgabe auch noch

die Kommunikationsschicht für unser Fernaufrufssystem. Diese dient zum Austauschen von Nachrichten

zwischen dem Client und dem Serverrechner. Unser Auktionsdienst bietet einem Client

die Möglichkeit eine neue Auktion zu registrieren, die aktuell laufenden Auktionen abzufragen

sowie ein neues Gebot zu einer laufenden Auktion abzugeben. Die Klasse VSauction repräsentiert

eine Auktion und enthält den Auktionsnamen und das aktuelle Höchstgebot. Beim Registrieren

und Bieten kann der Client einen Eventhändler mitgeben, um über neue Gebote den Ablauf

sowie den Gewinn der Auktion informiert zu werden. Die hier gezeigten Schnittstellen,

ein Kommandozahleninterface für den Client und ein paar Klassen des Auktionsdienstes

sind bereits im Pub-Verzeichnis der Aufgabe bereitgestellt. Die Verteilung des Dienstes

erfolgt dann mittels Java RMI. Der Server stellt dabei die Anwendung als Remoteobjekt

bereit, sodass diese per Fernaufruf nutzbar wird. Damit der Client später darauf zugreifen

kann, muss der Auktionsdienst dann noch mithilfe einer Registry bekannt gemacht werden. Der

Client dient dann dazu, um per Fernaufruf auf den Auktionsdienst zuzugreifen und ermöglicht

die Nutzung des Dienstes per Kommandozahlen. Für unsere Kommunikationsschicht sind zwei

Klassen zu implementieren. Die VOS Connection dient dazu, Byte Arrays beliebiger Länge zu

senden und zu empfangen. Für die Übermittlung selbst soll dabei eine TCP-Verbindung verwendet

werden. Darauf aufbauen gibt es dann die VOS Object Connection, die beliebige Objekte senden

und empfangen können soll. Dazu muss sich diese um das Margining und Anmargining kümmern,

sodass die Objekte als Nachrichten zwischen den Rechnern übertragen werden können. Hierzu

gibt es mehr Details im entsprechenden Video. Der eigentliche Versand der dabei durch das

interne serialisieren entstehenden Binärdaten bzw. Byte Arrays soll dann mithilfe der VOS

Connection erfolgen. Java besitzt bereits eine eingebaute Möglichkeit, Objekte zu serialisieren

und zu deserialisieren. Allerdings ist das dabei verwendete Datenformat nicht besonders

kompakt. Als Teil der erweiterten Übungsaufgabe ist es hier auch das Ziel, die Menge der über

das Netzwerk zu übertragenen Daten zu minimieren. Dazu sollen die mittels des von Java bereitgestellten

Object Output Streams erzeugten Daten für eine Beispielklasse analysiert und anschließend

kompakter codiert werden. Die Beispielklasse besteht aus einem Int, einer Zeichenkette und

einem Array von Objekten. Zum Beeinflussen der erzeugten Daten gibt es über die Schnittstelle

externalizable die Möglichkeit selbst Serialisierungs- und Deserialisierungsmethoden zu implementieren,

in denen ein Objekt kompakter codiert werden kann. Um die codierten Binärdaten zur Analyse

in Eclipse ausgeben zu können, kann es notwendig sein, diese von Java als Compound Text interpretieren

zu lassen. Soviel zur Übungsaufgabe. Bei Fragen oder Anmerkungen schreibt einfach an die Mailingliste

oder schaut in der rechten Übung vorbei.

Teil einer Videoserie :
Teil eines Kapitels:
Java RMI

Presenters

Michael Eischer Michael Eischer

Zugänglich über

Offener Zugang

Dauer

00:04:47 Min

Aufnahmedatum

2021-04-09

Hochgeladen am

2021-04-09 17:37:47

Sprache

de-DE

Einführung zu Java RMI und Aufgabenbeschreibung

Einbetten
Wordpress FAU Plugin
iFrame
Teilen