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.
Presenters
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