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