4.2.2 Cycle de vie d'un aglet
Les types de comportement des aglets ont été
implémentés de manière à répondre aux
principaux besoins des agents mobiles.
Libération
Contexte A Contexte B
Clonage
Déportation
aglet aglet
Désactivation Activation
Récupération
Mémoire de masse
Fichiers.Class
Figure 3.4 Modèle du cycle de vie d'un aglet.
Les principales opérations affectant la vie d'un aglet
sont (figure 4.3) :
· Création: Se fait dans un Contexte. Un
Identifiant unique est assigné. L'initialisation et l'exécution
de l'aglet commencent immédiatement. Cet identifiant est globalement
immuable durant le cycle de vie de l'aglet.
· Clonage : Création d'un clone dans le même
contexte que l'original. Un Identifiant différent est alors
attribué. A noter que les processus (thread) ne peuvent pas être
clonés.
· Déportation (Dispatching) : Il s'agit ici
d'extraire un aglet de son contexte d'exécution et de l'insérer
dans un contexte destination. Précisément, dispatcher un aglet
entraînera sa suppression de son contexte courant et son insertion dans
son contexte de destination où il va reprendre son exécution;
ceci via la méthode dispatch (URL destination). La destination
spécifiée est de type URL. Elle inclut l'hôte, le nom du
domaine et des informations contenant le protocole utilisé pour
communiquer avec le serveur distant. L'appel de la méthode Dispatch()
mènera immédiatement à une invocation de la méthode
ondispatching() permettant de personnaliser l'envoi de l'aglet. Le protocole
réseau utilisé dans le cas d'envoi d'aglet est ATP (Agent
Transfer Protocol). Ce dernier est invoqué quand un agent demande de
migrer vers un autre serveur agent ou quand une application crée et
lance un agent à son serveur initial. Pour effectuer le transfert d'un
agent, le serveur courant envoie un message ATPRequest à travers la
connexion TCP déjà établie. Ce message contient des
paramètres tels que le temps d'exécution estimé de l'agent
à transférer, son nom, son URN (Uniform Resource Naming). Ces
paramètres d'identification de l'agent qui a demandé à
être transféré vont être utilisés par le
serveur destination pour qu'il décide de l'établissement du
transfert compte tenu de ses critères de sécurité. A titre
d'exemple, une politique de sécurité relative à un serveur
peut interdire l'accès à un ensemble d'agents appartenant
à un propriétaire donné.
· Récupération (Rétractation) :
L'aglet déporté est récupéré (tiré)
dans son contexte
d'origine. Autrement dit, le retrait d'un aglet va le
supprimer de son contexte courant et l'insérer dans le contexte
où l'opération a été invoquée. Le retrait
d'un aglet se fait via l'activation de la méthode retractAglet() qui
mène à une invocation distante de la méthode onReverting.
Ainsi tous les threads de l'aglet distant sont détruits. A
l'arrivée de l'aglet, la méthode onArrival() est invoquée,
suivie de la méthode run().
· Activation et Désactivation: La
désactivation d'un aglet est une interruption temporaire de son
exécution. Elle consiste à le stocker momentanément dans
un espace de stockage secondaire afin de pouvoir le réactiver
ultérieurement.
· Libération ou destruction (dispose) : Cette
dernière opération marque la fin du cycle de vie de l'aglet en le
supprimant de son contexte d'exécution courant.
La figure 5.3 représente le processus de transfert des
données dans le réseau d'un hôte à un autre.
Hote 1 Hote2
Contexte d'Origine
Arrêt de l'exécution
Sérialisation
Codage Expédition ds
te1 données
Contexte de Destination
Reprise de
l'exécution Désérialisation
Décodage
Réception des données
Réseau
Figure 3.5 Transfert d'un aglet.
|