next up previous contents
Next: 5.6.4 Terminierung eines Agenten Up: 5.6 Lebenszyklus eines Agenten Previous: 5.6.2 Erzeugung eines Agenten

5.6.3 Transfer eines laufenden Agenten

Ähnlich wie bei der Erzeugung eines Agent gibt es beim Transfer eines Agenten mehrere mögliche Wege, die Aktion auszulösen: Nur Agenten die von der Klasse MobileAgent erben, können migriert werden. Es soll damit verhindert werden, daß Agenten, die z. B. von ihrer Programmierung her, nicht für einen Transfer geeignet sind, auch nicht migriert werden können. Das wird vom AgentManager durchgesetzt. Zusätzlich ruft der AgentManager die checkSerialization()-Methode des Agenten auf, damit dieser aktiv seine Serialierung beeinflussen kann. Der Agent wird suspendiert (suspend_agent()) und anschließend mit Hilfe von writeObject(...) der Klasse Agent zu einem Bytearray serialisiert, wobei eine Kopie des Agenten angelegt wird. Der Agent wird auf dem Quellagentensystem mittels terminate_agent() terminiert. Nun wird die Methode receive_agent(...) mit der CORBA-Objektreferenz des Zielagentensystems aufgerufen. Das Quellagentensystem entfernt nun den Agenten aus dem AgentTable und aus dem Naming Service.

Der AgentManager des Zielagentensystem stellt aus dem Bytearray mit der Methode readObject(...) der Klasse Agent den Agenten wieder her. Anschließend werden die transienten Attribute des Agenten mit initTransient(...) neu belegt. Die Tie-Klasse des Agenten wird über die Codebase nachgeladen. Nun wird wie bei create_agent(...) der transferierte Agent als Thread gestartet, falls der AgentStatus den Wert Running hat, eine AgentReference erzeugt, die in der AgentTable eingetragen wird. Schließlich wird der Agent noch in den Naming Service eingetragen.

Der migrierte Agent besitzt nun eine neue IOR. Damit wird bei Clients, die noch die alte CORBA-Objektreferenz besitzen und auf den Agenten zugreifen wollen, eine Ausnahmebehandlung eingeleitet, da der ORB keine Verbindung zum Agenten herstellen kann. Der Client muß nun über den Naming Service die neue IOR des Agenten herausfinden.


next up previous contents
Next: 5.6.4 Terminierung eines Agenten Up: 5.6 Lebenszyklus eines Agenten Previous: 5.6.2 Erzeugung eines Agenten
Copyright Munich Network Management Team