04.10.2013 Aufrufe

Strategien zur automatischen Objektmigration auf Grundlage ...

Strategien zur automatischen Objektmigration auf Grundlage ...

Strategien zur automatischen Objektmigration auf Grundlage ...

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 4 DAS JSCATTER-SYSTEM<br />

Suffix InstanceManager generiert, die alle Instanzenanteil-repräsentierenden<br />

Objekte der Originalklasse pro Rechner verwaltet. Somit ist <strong>zur</strong> L<strong>auf</strong>zeit<br />

<strong>auf</strong> jeden beteiligten Rechner der verteilten L<strong>auf</strong>zeitumgebung genau eine<br />

Verwaltungsinstanz pro Originalklasse vorhanden.<br />

Damit <strong>auf</strong> ein entfernt platziertes Instanzenanteil-repräsentierendes Objekt<br />

auch über seine Verwaltungsinstanz zugegriffen werden kann, wurde eine<br />

Stellvertreterklasse mit Suffix Handle geschaffen, deren Instanzen <strong>zur</strong><br />

L<strong>auf</strong>zeit jeweils über eine Referenz zum zugehörigen InstanceManager<br />

verfügen. Über diese Referenz leitet ein Handle <strong>zur</strong> L<strong>auf</strong>zeit Zugriffe <strong>auf</strong> das<br />

Instanzenanteil-repräsentierende Objekt weiter.<br />

Eine ausführliche Beschreibung des Klassentransformationskonzepts kann in<br />

[FFF+2002] nachgelesen werden.<br />

In der Abbildung 4.3 ist beispielhaft für die Klasse Example, die nach der<br />

Transformation bestehende Klassenhierachie dargestellt. Hierbei ist im Zusammenhang<br />

mit Abbildung 4.2 zu sehen, dass Klassen mit dem Suffix<br />

Handle, InstanceManager und ClassObject gemäß ihren Suffixen<br />

gleichnamige Klassen erweitern.<br />

4.2 Transformator<br />

Der Transformator erzeugt aus einer übersetzten Java-Anwendung, unter<br />

Verwendung des in Abschnitt 4.1 erläuterten Transformationskonzeptes, eine<br />

Java-Anwendung, die im JScatter-L<strong>auf</strong>zeitsystem verteilt ausgeführt werden<br />

kann.<br />

Für die Arbeit mit Java-Klassen setzt der Transformator die Bibliothek BCEL<br />

[Dah1998, Dah2001] und die Analyseumgebung Pauli [Thi2001] ein. Bei der<br />

Transformation einer Java-Anwendung werden Instruktionen zum Bytecode<br />

der Klassen hinzugefügt, über die <strong>zur</strong> L<strong>auf</strong>zeit mit einem Verteilungsplan<br />

(siehe Abschnitt 4.4) die Rechnerknoten bestimmt werden, <strong>auf</strong> denen ein<br />

Objekt platziert wird.<br />

Der Transformationsprozess besteht aus vier Phasen (siehe Abbildung 4.4). In<br />

der ersten Phase, der Hüllenbildung, wird die Menge aller Klassen und<br />

Methoden der Eingabeanwendung sowie der notwendigen Bibliotheken<br />

inklusive der Java-Standard-Bibliothek <strong>auf</strong> den minimal <strong>zur</strong> Ausführung<br />

benötigten Umfang reduziert [FFF+2002].<br />

Die Hüllenbildung wird mit einem Werkzeug namens Jode [JSN2002] durchgeführt.<br />

Jode benötigt als Eintrittspunkte die Namen der Methoden einer<br />

Klassen, von denen aus die Anwendung ausgeführt wird.<br />

In der zweiten Phase, der sogenannten Stellenersetzung, werden alle zu transformierenden<br />

Stellen untersucht, an denen entweder ein neues Objekt erzeugt<br />

wird (Erzeugungsstelle) oder ein erzeugtes Objekt verwendet wird (Verwendungsstelle).<br />

In der dritten Phase generiert der Transformator alle Klassen,<br />

30

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!