13.05.2014 Views

these doctorat une architecture de securité

these doctorat une architecture de securité

these doctorat une architecture de securité

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapitre 4. Contexte : ProActive<br />

Voici un exemple :<br />

// Creation du groupe <strong>de</strong> parametres<br />

B bg = (B) ProActiveGroup.newGroup("B", {{...},{...},...} , {...,...,...});<br />

// bg est envoye a tous les membres <strong>de</strong> ag<br />

ag.bar(bg);<br />

// Changement du mo<strong>de</strong> <strong>de</strong> communication <strong>de</strong> ag (\emph{distribution})<br />

ProActiveGroup.setScatterGroup(bg);<br />

// Chaque membre <strong>de</strong> bg est envoye a un membre <strong>de</strong> ag<br />

ag.bar(bg);<br />

}<br />

Pour profiter du modèle d’appel distant et asynchrone <strong>de</strong> ProActive, quelques nouveaux mécanismes<br />

<strong>de</strong> synchronisation ont été ajoutés. Des métho<strong>de</strong>s définies sur l’interface Group permettent<br />

d’exécuter diverses formes <strong>de</strong> synchronisation (waitOne, waitN, waitAll, waitTheNth,<br />

waitAndGet, ...).<br />

Par exemple :<br />

tel-00239252, version 1 - 5 Feb 2008<br />

// Une metho<strong>de</strong> appelee sur un groupe type<br />

V vg = ag.bar(...);<br />

// On acce<strong>de</strong> a la representation Group <strong>de</strong> vg<br />

Group gV = ProActiveGroup.getGroup(vg);<br />

// Pour attendre et retourner le premier membre <strong>de</strong> vg<br />

V v = (V) gV.waitAndGetOne();<br />

// Pour attendre que tous les membres <strong>de</strong> vg soient arrives<br />

gV.waitAll();<br />

}<br />

4.6 Déploiement <strong>de</strong>s applications<br />

Déployer <strong>une</strong> application consiste à créer et configurer toute l’infrastructure nécessaire à<br />

l’exécution <strong>de</strong> l’application. Cependant, les contraintes et les besoins d’<strong>une</strong> application peuvent<br />

varier selon le déploiement choisi. L’approche par <strong>de</strong>scripteurs <strong>de</strong> déploiement présentée dans<br />

cette section permet <strong>de</strong> résoudre les problèmes <strong>de</strong> configuration <strong>de</strong> l’application lors <strong>de</strong> son déploiement.<br />

Le slogan <strong>de</strong> Sun concernant Java était « Compile once, run everywhere » 1 , celui <strong>de</strong><br />

ProActive pourrait être « Compile once, <strong>de</strong>ploy and run everywhere » 2 .<br />

4.6.1 Limitations<br />

Lors <strong>de</strong> l’instanciation d’un objet actif, il est possible <strong>de</strong> spécifier sa localisation future. Pour<br />

i<strong>de</strong>ntifier les différents emplacements pouvant contenir <strong>de</strong>s objets actifs, on utilise le concept <strong>de</strong><br />

Nœud. Un nœud est un objet ProActive dont le but est <strong>de</strong> créer <strong>une</strong> entité logique capable <strong>de</strong><br />

contenir <strong>de</strong>s objets actifs [10]. Un nœud est i<strong>de</strong>ntifié par <strong>une</strong> URL (<strong>une</strong> chaîne <strong>de</strong> caractères) <strong>de</strong><br />

la forme suivante : protocole://machine:numero_<strong>de</strong>_port/Nom_du_Noeud. Par exemple,<br />

l’URL rmi://noadcoco.inria.fr:2026/Noeud1 indique que le nœud Noeud1 est accessible<br />

en ouvrant <strong>une</strong> connexion en utilisant le protocole rmi vers la machine noadcoco.inria.fr sur le<br />

port 2026.<br />

Un nœud est toujours contenu dans un Runtime. Un runtime est un objet Java accessible à<br />

distance qui offre un ensemble <strong>de</strong> services (création <strong>de</strong> nœuds, d’objets actifs, ...) permettant l’accès<br />

à <strong>de</strong>s machines virtuelles distantes. Un runtime est aussi i<strong>de</strong>ntifié par <strong>une</strong> URL qui possè<strong>de</strong><br />

la même syntaxe que celle <strong>de</strong>s nœuds.<br />

1 Compiler <strong>une</strong> fois, exécuter partout<br />

2 Compiler <strong>une</strong> fois, déployer et exécuter partout<br />

58

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!