06.10.2013 Aufrufe

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

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!