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.

4.1 TRANSFORMATION EINER JAVA-KLASSE<br />

eine gleichnamige Klasse, die jedoch nur die Instanzenanteile der Originalklasse<br />

enthält. Diese neue Klasse Example repräsentiert in der transformierten<br />

Anwendung den Instanzenanteil der Originalklasse. Die Felder und Methoden,<br />

die in der Originalklasse zum Klassenanteil gehören, bilden die Felder und Methoden<br />

der Klasse _ExampleClassObject. Sie stellt in der transformierten<br />

Anwendung den Klassenanteil der Originalklasse Example dar.<br />

Im Unterschied <strong>zur</strong> Originalklasse sind die Felder und Methoden jedoch nicht<br />

mehr statisch, sondern werden durch gleichnamige Instanzenfelder und<br />

Instanzmethoden ersetzt. Diese Ersetzung des statischen durch Instanzenanteil<br />

war notwendig, da statischer Klassenanteil in einer JVM nur einmal vorhanden<br />

ist, die verteilte L<strong>auf</strong>zeitumgebung jedoch aus mehreren JVMs besteht, die <strong>auf</strong><br />

verschiedenen Rechnern verteilt platziert sind.<br />

In der verteilten L<strong>auf</strong>zeitumgebung darf der Klassenanteil einer Klasse auch<br />

nur einmal vorhanden sein, jedoch kann er in verschiedenen JVMs der verteilten<br />

L<strong>auf</strong>zeitumgebung für Zugriffe benötigt werden. Aus diesem Grund<br />

steht in allen JVMs ein Stellvertreter <strong>auf</strong> die Klassenanteil-repräsentierende<br />

Instanz _ExampleClassObject <strong>zur</strong> Verfügung. Da die Kommunikation zwischen<br />

Stellvertreter und Original über RMI durchgeführt wird, wird für die<br />

Beispielklasse ein Interface namens _ExampleClassObjectInterface<br />

generiert, das die entfernte Schnittstelle <strong>auf</strong> das _ExampleClassObject<br />

definiert.<br />

besitzt<br />

1 ..*<br />

besitzt<br />

1<br />

Object<br />

Example<br />

_ExampleHandel<br />

InstanceManager<br />

_ExampleInstanceManager<br />

Serializable<br />

Handle<br />

_ExampleInstanceManagerInterface<br />

Anmerkung: Um die Verbindungen der Klassen zu verdeutlichen,<br />

wurden die Assoziationen zwischen _ExampleHandel und _Example-<br />

InstanceManager und _ExampleInstanceManager und Example<br />

zusätzlich eingezeichnet.<br />

UnicastRemoteObject<br />

Remote<br />

_ExampleClassObjectInterface<br />

Abbildung 4.3: Klassenhierachie der Klasse Example<br />

ClassObject<br />

Legende<br />

X Y<br />

X Y<br />

n<br />

X Y<br />

_ExampleClassObject<br />

So wie in der Originalanwendung mehrere Instanzen einer Klasse in einer JVM<br />

erzeugt werden können, muss dies in einer verteilten L<strong>auf</strong>zeitumgebung<br />

möglich sein. Aus diesem Grund wird für die Originalklasse eine Klasse mit<br />

Klasse<br />

Interface<br />

X erweitert Y<br />

X implementiert Y<br />

X assoziiert n Y<br />

29

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!