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 ANHANG E: BEISPIELIMPLEMENTIERUNGEN FÜR<br />

ENTSCHEIDUNGSSTRATEGIEN<br />

}<br />

}<br />

}<br />

}<br />

// Hierdurch wird nicht mehr benötigter Speicher freigegeben.<br />

RuntimeEnvironment.getMigrationStrategy().getInformationRegistration().<br />

removeObjectFromRegistration(className, objectID);<br />

// Migrationsfreigabe: Migration im System als beendet erklären. Dies ist<br />

// notwendig, damit neue Migration im System durchgeführt werden kann.<br />

RuntimeEnvironment.localNode.releaseMigrationAtSystem();<br />

/**<br />

* Entscheidungsstrategie für Replikationsstrategie DELETE des Post-Beispiels<br />

* für Replikation Instanzenanteil- oder Klassenanteil-repräsentierender Objekte.<br />

*<br />

* Strategiebeschreibung:<br />

* Überprüfe nach 20 Zugriffen <strong>auf</strong> das Objekt, ob die Anzahl der entfernten<br />

* Zugriffe vom Rechner des aktuell zugreifenden Objekt aus größer ist, als<br />

* die Anzahl aller lokalen Zugriffe <strong>auf</strong> das zugegriffene Objekt. Ist dies<br />

* der Fall, dann repliziere das zugegriffene Objekt <strong>auf</strong> den Rechner des aktuell<br />

* zugreifenden Objektes. Sonst brich die Replikation ab.<br />

* Führe nach 50 Zugriffen ein Reset <strong>auf</strong> die gesammelten Informationen aus, und<br />

* beginne mit der Überprüfung von vorn.<br />

* Eine Replikation soll jedoch nur stattfinden, wenn aktuell keine Replikation im<br />

* System durchgeführt wird.<br />

* Wird eine Replikation durchgeführt, dann lösche bei einem Schreibzugriff alle<br />

* Replikate der zugehörigen Replikatgruppe.<br />

*/<br />

public class PostDeleteReplicationDecidionStrategy extends PostMigrationDecidionStrategy<br />

{<br />

// definiert den zu verwendenden Replikationstyp der Strategie<br />

public int getReplicationStrategieType()<br />

{ return REPLICATIONTYPE_DELETE_REPLICAS_BY_WRITEACCESS; }<br />

}<br />

public void checkMigration(AccessObjectManager accessObjectManager,<br />

String className, int objectID, String objectIP, String accessObjectName,<br />

int accessObjectID, String remoteHostIP)<br />

{<br />

... // anlalog zu PostMigrationDecidionStrategy<br />

// Überprüfe, ob die ID des Zielrechners nicht die ID des lokalen<br />

// Rechners ist.<br />

if(!RuntimeEnvironment.localNode.getIp().trim().<br />

equals(remoteHostIP.trim()) && destinationNodeHostID != -1)<br />

{<br />

// Repliziere zugegriffenes Objekt zum/<strong>auf</strong> den Rechner des zugreifenden<br />

// Objektes.<br />

RuntimeEnvironment.getMigrationStrategy().getObjectTransferer().<br />

replicateObject(className, objectID, objectIP, destinationNodeHostID);<br />

}<br />

}<br />

... // anlalog zu PostMigrationDecidionStrategy<br />

/**<br />

* Entscheidungsstrategie für Replikationsstrategie UPDATE des Post-Beispiels<br />

* für Replikation Instanzenanteil- oder Klassenanteil-repräsentierender Objekte.<br />

*<br />

* Strategiebeschreibung:<br />

* Überprüfe nach 20 Zugriffen <strong>auf</strong> das Objekt, ob die Anzahl der entfernten<br />

* Zugriffe vom Rechner des aktuell zugreifenden Objekt aus größer ist, als<br />

* die Anzahl aller lokalen Zugriffe <strong>auf</strong> das zugegriffene Objekt. Ist dies<br />

* der Fall, dann repliziere das zugegriffene Objekt <strong>auf</strong> den Rechner des aktuell<br />

* zugreifenden Objektes. Sonst brich die Replikation ab.<br />

* Führe nach 50 Zugriffen ein Reset <strong>auf</strong> die gesammelten Informationen aus, und<br />

* beginne mit der Überprüfung von vorn.<br />

* Eine Replikation soll jedoch nur stattfinden, wenn aktuell keine Replikation im<br />

* System durchgeführt wird.<br />

* Wird eine Replikation durchgeführt, dann führe bei einem Schreibzugriff eine<br />

* Aktualisierung der Replikate der zugehörigen Replikatgruppe durch.<br />

*/<br />

public class PostUpdateReplicationDecidionStrategy extends<br />

PostDeleteReplicationDecidionStrategy<br />

{ // definiert den zu verwendenden Replikationstyp der Strategie<br />

public int getReplicationStrategieType()<br />

{ return REPLICATIONTYPE_UPDATE_REPLICA_BY_WRITEACCESS; }<br />

}<br />

104

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!