pdf 1.967 kB - Praktische Informatik - Universität Siegen
pdf 1.967 kB - Praktische Informatik - Universität Siegen
pdf 1.967 kB - Praktische Informatik - Universität Siegen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
KAPITEL 3. ENTWICKLUNG DES SYSTEMS<br />
Die Serverklasse ruft beim Initialisiarungsprozess die geforderte statische Methode<br />
"exportObject(java.rmi.Remote)" der Klasse<br />
"java.rmi.server.UnicastRemoteObject" auf. Anschließend meldet sie sich mit dem<br />
nachfolgenden Aufruf bei der RMI-Registry an und steht für die Aufträge potenzieller<br />
Clients zur Verfügung.<br />
Naming.rebind("rmi://"+<br />
InetAddress.getLocalHost().getHostName()+"/CAEWServer", this);<br />
Die Funktionalität des Clients gehört nicht mehr zu der Funktionalität des Hauptsystems,<br />
sondern wird als Plugin mit dem Namen "Run-Plugin" in das System integriert.<br />
Dies bietet den Vorteil, diese Funktionalität relativ einfach verändern, aktualisieren bzw.<br />
ersetzen zu können. Das System aktiviert die Client-Funktion erst nachdem ein Benutzer<br />
einen bzw. eine Reihe von Testläufen definiert hat und den Befehl zur Berechnung dieser<br />
gegeben hat. Die definierten Testläufe befinden sich in einer tabellarisch strukturierten<br />
Anordnung in einem Vector. 6 Wurde nun der Befehl erteilt eine Reihe von Testläufen<br />
zu starten, beschafft das System die vom Benutzer erstellte Liste der Servernamen, die<br />
für Testlaufberechnungen zur Verfügung stehen. Nach einer Verbindungsprüfung wird<br />
als nächstes zu jedem Server, der in der Liste als verfügbar eingetragen ist, ein Client-<br />
Objekt 7 erstellt. Somit ist jedem Client-Objekt genau ein Server zugeteilt mit dem dieser<br />
kommuniziert. Als nächstes werden diese Client-Objekte an ein Scheduler-Objekt<br />
des Typs "runPlugin.de.usi.caew.rmi.ServerScheduler" übergeben, welches unter<br />
anderem die Aufgabe hat, die definierten Testläufe an die einzelnen Clients zu verteilen.<br />
Das Scheduler-Objekt startet anschließend die Ausführung der einzelnen Client-Objekte,<br />
die als eigenständige Threads ausgeführt werden und wartet auf deren Anfragen.<br />
Nachdem ein Client-Objekt als eigener Thread gestartet wurde, fordert es beim Scheduler-<br />
Objekt den nächsten anstehenden Testlauf an.<br />
Um zu vermeiden, dass eine fehlerhafte Zuteilung von Testläufen an die Clients auftritt<br />
- wie beispielsweise das Berechnen der selben Läufe auf mehreren Servern zur gleichen<br />
Zeit oder das mehrmalige Zuteilen des gleichen Testlaufs an den selben Client - besitzen<br />
die definierten Testläufe zusätzliche Informationen. Diese Informationen stehen in Form<br />
einer Integer-Variablen bei jedem Testlauf zur Verfügung und geben den Zustand dieses<br />
Testlaufs an. Dabei haben die Zustände folgende Bedeutungen:<br />
0 - Testlauf bereit zur Vergabe an nächsten Client um die Berechnung zu durchlaufen.<br />
1 - Testlauf wird zur Zeit berechnet.<br />
2 - Testlauf wurde bereits erfolgreich berechnet<br />
Zudem übermittelt jeder Client bei der Anfrage an den Scheduler eine Liste der Testläufe,<br />
6 Objekte der Klasse java.util.Vector bieten eine ähnliche Funktionsweise wie Arrays. Somit ist es<br />
möglich, Werte bzw. Objekte in ihnen abzulegen und auf diese zuzugreifen.<br />
7 Die Client-Objekte sind Instanzen der Klasse “RunClient“, die im Paket “runPlugin.de.usi.caew.rmi“<br />
des Run-Plugins zu finden ist.<br />
28