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.

}<br />

ANHANG A.2: KLASSENANTEIL-REPRÄSENTIERENDE OBJEKTE<br />

// für Replikationsstrategie: "Replikate-Bei-Schreibzugriff-Aktualisieren"<br />

protected final void lockReplicaForWriteAccess() throws RemoteException<br />

{<br />

// alle vorhandenen Replikate des ClassObjects für weitere Zugriffe sperren<br />

if (replicaGroup != null)<br />

{<br />

Iterator keys = replicaGroup.getClassObjectMemberKeys();<br />

}<br />

}<br />

while (keys.hasNext())<br />

{<br />

MigrateableRemoteClassObject classObject = replicaGroup.<br />

getClassObjectMember(keys.next());<br />

classObject.lockReplicaInstance();<br />

}<br />

// für Replikationsstrategie: "Replikate-Bei-Schreibzugriff-Aktualisieren"<br />

protected final void updateAndReleaseReplicaForWriteAccess(Memento toSerializeMemento)<br />

throws RemoteException<br />

{<br />

// alle vorhandenen Replikate des ClassObjects aktualisieren<br />

// und für weitere Zugriffe freigeben<br />

if (replicaGroup != null)<br />

{<br />

Iterator keys = replicaGroup.getClassObjectMemberKeys();<br />

}<br />

}<br />

while (keys.hasNext())<br />

{<br />

MigrateableRemoteClassObject classObject = replicaGroup.<br />

getClassObjectMember(keys.next());<br />

}<br />

// Objektzustand serialisieren<br />

byte[] serialisedState = RuntimeEnvironment.getMigrationStrategy().<br />

getObjectTransferer().convertMementoToByteArray(toSerializeMemento);<br />

classObject.updateReplicaInstance(serialisedState);<br />

// dient zum Aktualisieren des Objektzustands eines ClassObject-Replikats<br />

public final void updateReplica(byte[] serialisedState) throws RemoteException<br />

{<br />

// übertragenen Objektzustand als Memento deserialisieren<br />

Memento memento = RuntimeEnvironment.getMigrationStrategy().getObjectTransferer().<br />

createMementoForByteArray(serialisedState);<br />

}<br />

setState(memento); // neuen Objektzustand das Replikats über Memento setzen<br />

_isReplicaLocked = false; // ClassObject für weitere Zugriffe freigeben<br />

// Schnittstelle zum Setzen des Objektzustandes nach Replikation<br />

public abstract void setState(Memento memento) throws RemoteException;<br />

// Schnittstelle zum Serialisieren des Zustandes eines ClassObjects als Memento<br />

public abstract Memento createMemento() throws RemoteException;<br />

Anhang A.3: Replikatgruppen-Objekte<br />

package de.upb.jscatter.runtime.migration;<br />

import ...;<br />

// Repräsentiert eine Replikatgruppe im JScatter-System<br />

public class ReplicaGroup<br />

{<br />

// definiert die Datenstrukturen welche die Stubs <strong>auf</strong> die Replikate eines Cuckoo- oder<br />

// ClassObjects enthalten<br />

private HashMap instanceManagerStubs;<br />

private HashMap classObjectStubs;<br />

public ReplicaGroup() // initialisiert ReplicaGroup-Objekt<br />

{ ... }<br />

// Schnittstelle zum Hinzufügen eines InstanceManager-Stubs<br />

public void addInstanceManagerMember(int destinationNodeHostID, Object instanceManager)<br />

85

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!