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 />

deren Durchführung auf seinem zugeordneten Server bereits versucht worden ist. Aus<br />

diesen Informationen kann der Scheduler bestimmen welcher Testlauf an welches Client-<br />

Objekt weitergeleitet werden kann bzw. wann die Berechnung aller Testläufe abgeschlossen<br />

ist.<br />

Hat ein Client einen Testlauf zugeordnet bekommen, vermerkt er dies als allererstes, indem<br />

er dessen ID zu der Liste der versuchten Testläufe hinzufügt. Als nächstes nimmt er<br />

die Verbindung mit dem ihm zugeordneten Server auf. Dies geschieht durch den Aufruf<br />

der RMI-Methode "lookup". Der Methodenaufruf sieht folgendermaßen aus:<br />

ServerInterface server =<br />

(ServerInterface)Naming.lookup("rmi://"+serverName+"/CAEWServer");<br />

Wurde eine Verbindung erfolgreich aufgebaut, wird als nächstes der Status des Servers<br />

mit der Remote-Methode "server.isBuisy()" abgefragt. Ist dieser mit der Berechnung<br />

eines anderen Testlaufs, welcher ihm als Auftrag durch eine andere Instanz<br />

des Programms erteilt wurde, beschäftigt, wird solange abgewartet bis der Server das<br />

“Ready“-Signal zurückliefert. Ist der Server nicht beschäftigt, wird zunächst der Status<br />

des Testlaufs auf “Testlauf wird berechnet“ gesetzt. Als nächstes wird mit Hilfe der<br />

Remote-Methode "server.getOS()" das Betriebssystem des Rechners, auf dem der Server<br />

ausgeführt wird, abgefragt. Ist das Betriebssystem nicht kompatibel zu den Einstellungen<br />

des Algorithmus des Testlaufs, wird die Verbindung an dieser Stelle abgebrochen<br />

und die Zuweisung des nächsten Testlaufs beim Scheduler angefordert. Ist das Betriebssystem<br />

jedoch kompatibel, beginnt der eigentliche Datenaustausch zwischen Client und<br />

Server.<br />

Der erste Schritt ist hierbei die Übertragung aller relevanter Daten zum Server. Hierfür<br />

ruft der Client die Remote-Methoden des Servers auf, die für die Datenübermittlung<br />

zuständig sind:<br />

server.setExeVec(exeVec);<br />

server.setInputVec(inputVec);<br />

server.setConfigVec(configVec);<br />

server.setTrnfVec(trnfVec);<br />

server.setBuildVec(buildVec);<br />

server.setBuildDirVec(buildDirVec);<br />

server.setInputDTD(inputDTD);<br />

server.setConfigDTD(configDTD);<br />

server.setTrnfDTD(trnfDTD);<br />

Als Argumente werden hierbei Vectoren übergeben, welche die relevanten Daten in Form<br />

von Byte-Arrays beinhalten.<br />

Ist die Datenübertagung abgeschlossen, wird die Remote-Methode "server.run()" gestartet,<br />

die den Server anweist, die Berechnung des Testlaufs zu beginnen. Während<br />

die Berechnung durch den Server andauert, befindet sich der Client im Wartemodus.<br />

Ist der Testlauf nach der benötigten Zeit abgeschlossen, sammelt der Server alle relevanten<br />

Informationen zum Testlauf in Form eines "Result"-Objektes. Dieses Objekt<br />

29

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!