• Aucun résultat trouvé

Software Dock

DMSA Définition de la phase de

2. D ÉROULEMENT DU DÉPLOIEMENT

2.1 Satisfaction des pré-conditions au déploiement

Le DMSA nécessite la satisfaction de trois pré-conditions afin de permettre effectivement le déploiement d'un modèle d'application à service dans un environnement d'exécution à services. Ces trois pré-conditions sont :

• L'enregistrement du/des environnements d'exécution cibles (embarquant la partie agent du DMSA) auprès du gestionnaire d'environnements du DMSA. Les enregistrements d'environnements se font via la servlet ExecutionEnvironmentsManager et les informations à fournir sont l'identifiant de l'environnement d'exécution (c'est-à-dire son adresse IP) et sa version (qui est soit R4.1, soit R3). Cette servlet est accessible, soit via l'IHM succincte du DMSA, soit directement à l'adresse : http://adresse_ip_du_serveur:9000/DMSA/ServicesRepository. Il est aussi possible de tester l'environnement cible via cette même servlet en spécifiant l'identifiant de l'environnement à tester. Ce test porte sur la présence et l'accessibilité de la partie agent du DMSA (c'est-à-dire sur l'accessibilité de l'environnement et du serveur de MBeans et sur la présence et l'accessibilité du MBean du DMSA). Pour remarque, le DMSA effectue ce test de façon systématique avant l'exécution de toute activité de déploiement ;

• L'enregistrement du/des modèles d'implémentations de services dans le dépôt de modèles d'implémentations de services du DMSA. Ces enregistrements se font via la servlet ServicesRepository. Les informations à fournir sont un modèle d'implémentation de service conforme au méta-modèle que nous avons défini pour les implémentations de services. Ce modèle est passé en paramètre au DMSA via un fichier XML. La figure ci-dessous présente le fichier XML correspondant au modèle d'une implémentation de service qui entrera en jeu dans le cadre du déploiement de l'application de validation CEPC ; sachant qu'une fois enregistré, le modèle contiendra aussi l'attribut sizeInOctet qui aura été complété automatiquement par le DMSA. Pour remarque, un tag "providedInterface" de figure ci-dessous a été tronqué pour améliorer la mise en page.

Figure 70. Exemple d'un modèle d'implémentation de service.

• L'enregistrement du/des modèles d'application à services cibles dans le dépôt du DMSA. Dans le cadre de cette validation, l'application ciblée est : CEPC. En complément de son enregistrement dans le dépôt de modèles d'application à services du DMSA, le modèle de l'application est ordonnancé. La figure ci-dessous la représente dans notre notation. La seconde figure ci-dessous présente, elle, le fichier XML correspondant à son modèle.

Figure 71. Représentation du modèle de l'application CEPC dans notre notation.

Pour remarque, nous n'avons pas fait apparaitre les identifiants des fournisseurs et demandeurs dans la figure ci-dessus afin de la rendre plus visible (cette information peut, par contre, être trouvée dans la figure ci-dessous).

<serviceOfTheRepository>

<implemURL>http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/dmsa.applipourlavalidation.aggregationettransf ormation.r4_1-0.1.0.jar</implemURL>

<executionEnvironmentVersion>R4.1</executionEnvironmentVersion>

<providedInterface>dmsa.applipourlavalidation.aggregationettransformation.r4_1.contract.AggregationEtTransformationService</providedI> <providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

<requiredInterfacesHashMap>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.voltacquisition.r4_1.contract.VoltageAcquisitionService</requiredInterface> <requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType>

</requiredInterfaceAndRequiredInterfaceInteractionType> <requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.ampereacquisition.r4_1.contract.AmpAcquisitionService</requiredInterface> <requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType>

</requiredInterfaceAndRequiredInterfaceInteractionType> <requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.date.r4_1.contract.DateService</requiredInterface> <requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType>

</requiredInterfaceAndRequiredInterfaceInteractionType> </requiredInterfacesHashMap>

<stateType>withoutState</stateType> <properties></properties> </serviceOfTheRepository>

<servicesApplication>

<applicationId>CEPC</applicationId> <servicesApplicationProvidedServicesArrayList>

<serviceIdProvidedInterfaceAndProvidedInterfaceInteractionType> <serviceId>AffichageConsoleService</serviceId>

<providedInterface>dmsa.applipourlavalidation.affichageconsole.r4_1.contract.AffichageConsoleService</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

</serviceIdProvidedInterfaceAndProvidedInterfaceInteractionType> <serviceIdProvidedInterfaceAndProvidedInterfaceInteractionType>

<serviceId>AccesDistantViaMOSGiBundleMBeanService</serviceId>

<providedInterface>dmsa.applipourlavalidation.accesdistantviamosgibundlembean.r4_1.AccesDistantViaMOSGiBundleMBean</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

</serviceIdProvidedInterfaceAndProvidedInterfaceInteractionType> </servicesApplicationProvidedServicesArrayList>

<resourcesArrayList>

<serviceIdRequiredInterfaceAndRequiredInterfaceInteractionType> <serviceId>VoltageAcquisitionService</serviceId>

<requiredInterface>dmsa.applipourlavalidation.voltmetre.r4_1.contract.VoltmetreService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </serviceIdRequiredInterfaceAndRequiredInterfaceInteractionType> <serviceIdRequiredInterfaceAndRequiredInterfaceInteractionType> <serviceId>AmpereAcquisitionService</serviceId>

<requiredInterface>dmsa.applipourlavalidation.amperemetre.r4_1.contract.AmperemetreService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </serviceIdRequiredInterfaceAndRequiredInterfaceInteractionType> </resourcesArrayList>

<contains> <service>

<serviceIdInTheServicesApplication>VoltageAcquisitionService</serviceIdInTheServicesApplication>

<providedInterface>dmsa.applipourlavalidation.voltacquisition.r4_1.contract.VoltageAcquisitionService</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

<requiredInterfacesHashMap>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.voltmetre.r4_1.contract.VoltmetreService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </requiredInterfaceAndRequiredInterfaceInteractionType>

</requiredInterfacesHashMap> <properties></properties> </service>

<service>

<serviceIdInTheServicesApplication>AmpereAcquisitionService</serviceIdInTheServicesApplication>

<providedInterface>dmsa.applipourlavalidation.ampereacquisition.r4_1.contract.AmpAcquisitionService</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

<requiredInterfacesHashMap>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.amperemetre.r4_1.contract.AmperemetreService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </requiredInterfaceAndRequiredInterfaceInteractionType>

</requiredInterfacesHashMap> <properties></properties> </service>

<service>

<serviceIdInTheServicesApplication>DateService</serviceIdInTheServicesApplication>

<providedInterface>dmsa.applipourlavalidation.date.r4_1.contract.DateService</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

<requiredInterfacesHashMap></requiredInterfacesHashMap> <properties></properties>

</service> <service>

<serviceIdInTheServicesApplication>AggregationEtTransformationService</serviceIdInTheServicesApplication>

<providedInterface>dmsa.applipourlavalidation.aggregationettransformation.r4_1.contract.AggregationEtTransformationService</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

<requiredInterfacesHashMap>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.voltacquisition.r4_1.contract.VoltageAcquisitionService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.ampereacquisition.r4_1.contract.AmpAcquisitionService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.date.r4_1.contract.DateService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </requiredInterfaceAndRequiredInterfaceInteractionType>

</requiredInterfacesHashMap> <properties></properties> </service>

Figure 72. Modèle de l'application CEPC sous la forme d'un fichier XML. Pour remarque, dans la figure ci-dessus, les tags :

• "servicesApplicationProvidedServicesArrayList" définissent les fournisseurs de services (appartenant à des services de l'application) promus au niveau de l'application,

• "resourcesArrayList" définissent les demandeurs de services (appartenant à des services de l'application) promus au niveau de l'application,

• "service" servent à définir les services appartenant à l'application

• et les tags "interaction" servent, quant à eux, à spécifier les interactions (entre services) appartenant à l'application.

En complément, l'ordonnancement de l'ordre d'activation du modèle de l'application CEPC calculé par le DMSA lors de son enregistrement est :

1. AmpereAcquisitionService, 2. VoltageAcquisitionService, 3. DateService, 4. AggregationEtTransformationService, 5. AffichageConsoleService 6. et AccesDistantViaMOSGiBundleMBeanService. <service>

<serviceIdInTheServicesApplication>AffichageConsoleService</serviceIdInTheServicesApplication>

<providedInterface>dmsa.applipourlavalidation.affichageconsole.r4_1.contract.AffichageConsoleService</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

<requiredInterfacesHashMap>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.aggregationettransformation.r4_1.contract.AggregationEtTransformationService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </requiredInterfaceAndRequiredInterfaceInteractionType>

</requiredInterfacesHashMap> <properties></properties> </service>

<service>

<serviceIdInTheServicesApplication>AccesDistantViaMOSGiBundleMBeanService</serviceIdInTheServicesApplication>

<providedInterface>dmsa.applipourlavalidation.accesdistantviamosgibundlembean.r4_1.AccesDistantViaMOSGiBundleMBean</providedInterface>

<providedInterfaceInteractionType>Server</providedInterfaceInteractionType>

<requiredInterfacesHashMap>

<requiredInterfaceAndRequiredInterfaceInteractionType>

<requiredInterface>dmsa.applipourlavalidation.aggregationettransformation.r4_1.contract.AggregationEtTransformationService</requiredInterface>

<requiredInterfaceInteractionType>Client</requiredInterfaceInteractionType> </requiredInterfaceAndRequiredInterfaceInteractionType>

</requiredInterfacesHashMap> <properties></properties> </service>

<interaction>

<interactionId>AggregationEtTransformationService_VoltageAcquisitionService</interactionId>

<provider>VoltageAcquisitionService</provider> <requester>AggregationEtTransformationService</requester> </interaction>

<interaction>

<interactionId>AggregationEtTransformationService_AmpereAcquisitionService</interactionId>

<provider>AmpereAcquisitionService</provider> <requester>AggregationEtTransformationService</requester> </interaction>

<interaction>

<interactionId>AggregationEtTransformationService_DateService</interactionId>

<provider>DateService</provider>

<requester>AggregationEtTransformationService</requester> </interaction>

<interaction>

<interactionId>AffichageConsoleService_AggregationEtTransformationService</interactionId>

<provider>AggregationEtTransformationService</provider> <requester>AffichageConsoleService</requester> </interaction>

<interaction>

<interactionId>AccesDistantViaMOSGiBundleMBeanService_AggregationEtTransformationService</interactionId>

<provider>AggregationEtTransformationService</provider>

<requester>AccesDistantViaMOSGiBundleMBeanService</requester>

</interaction> </contains> </servicesApplication>

Enfin, il n'y a aucune contrainte d'ordre quant à l'établissement de ces trois pré-conditions.

2.2 Déploiement dirigé par les modèles de l'application

Dans cette sous-section, nous allons dérouler le déploiement du modèle de l'application CEPC. Ainsi, nous allons expliciter le déroulement des activités d'installation, d'activation, de désactivation, de mise à jour statique de l'implémentation (qui effectue des calculs flottants) associée au service identifié par AggregationEtTransformationService dans CEPC par une autre implémentation de service (qui effectue les mêmes calculs mais qui retourne un résultat entier tronqué), d'activation (à nouveau), de désactivation et enfin de désinstallation.

Nous finirons cette sous-section avec deux tableaux qui présentent les performances du DMSA (en millisecondes). Le premier concerne les performances du DMSA pour le déploiement du modèle d'application CEPC en local, ce qui signifie que la partie serveur du DMSA, l'environnement cible et (donc) la partie agent du DMSA sont exécutés sur le même ordinateur et que les implémentations de services packagées (c'est-à-dire les unités de déploiement) sont elles aussi présentes sur ce même ordinateur. Le second tableau concerne les performances du DMSA pour le déploiement du modèle d'application CEPC en distribué, ce qui signifie que la partie serveur du DMSA est située sur un premier ordinateur (d'adresse IP : 192.168.0.3), que l'environnement d'exécution cible (et donc la partie agent du DMSA) est située sur un autre ordinateur (d'adresse IP : 192.168.0.4) et que les implémentations de services packagées sont situées sur un serveur web (d'adresse IP : 212.27.63.139).

L'environnement que nous ciblons contient d'ores et déjà un autre modèle d'application, à savoir l'application Date. L'application Date est constituée d'un service DateService similaire à celui utilisé dans CEPC. L'implémentation de service qui est utilisée pour réaliser le service DateService est sans état interne. Son identifiant est http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementation s/dmsa.applipourlavalidation.date.r4_1-0.1.0.jar. L'application Date est dans l'état activé.

La première étape de ce déroulement est l'installation du modèle de CEPC. Pour ce faire, l'administrateur utilise la servlet ServicesApplicationsDeployment afin, d'une part, de spécifier l'identifiant du modèle de l'application (c'est-à-dire CEPC), l'identifiant de l'environnement d'exécution cible (c'est-à-dire 192.168.0.4) et l'activité de déploiement à effectuer (c'est-à-dire l'installation) et afin, d'autre part, de lancer l'exécution de l'activité. Une fois l'activité lancée, le DMSA commence par vérifier la validité de l'activité spécifiée, puis, il effectue la sélection des implémentations de services qui réaliseront les modèles de services appartenant à l'application (en favorisant les implémentations de services d'ores et déjà déployées dans l'environnement cible), ensuite, il génère le plan de déploiement correspondant qu'il envoie et fait appliquer par sa partie agent présente dans l'environnement cible, après cela, la partie agent du DMSA retourne le résultat de l'exécution du plan de déploiement à la partie serveur du DMSA qui va alors mettre à jour le modèle global associé à l'environnement d'exécution cible et afficher le résultat à l'administrateur.

Le plan de déploiement généré pour l'installation de CEPC comporte cinq instructions "needInstallation" pour les implémentations de services suivantes :

• implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.ampereacquisition.r4_1-0.1.0.jar • implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.voltacquisition.r4_1-0.1.0.jar • implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.affichageconsole.r4_1-0.1.0.jar • implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.accesdistantviamosgibundlembean.r4_1-0.1.0.jar • implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.aggregationettransformation.r4_1-0.1.0.jar

Pour remarque, le plan de déploiement ci-dessus ne contient pas d'instruction de déploiement pour le modèle de service DateService de l'application CEPC puisque l'environnement contient d'ores et déjà une implémentation de service (http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImple

mentations/dmsa.applipourlavalidation.date.r4_1-0.1.0.jar) qui correspond au modèle de DateService et puisque cette implémentation a été choisie par l'algorithme de sélection du DMSA.

L'exécution de ce plan par la partie agent du DMSA consiste à utiliser la primitive d'installation de bundle de l'environnement afin d'installer les implémentations de services. Elle consiste aussi à, si besoin est, rattraper les erreurs/exceptions d'installation, à tenter une restauration de l'état de déploiement de l'application et donc à tenter une restauration de l'état (du point de vue du déploiement) de l'environnement.

La seconde étape de ce déroulement est l'activation du modèle de CEPC. Pour ce faire, l'administrateur utilise la servlet ServicesApplicationsDeployment afin, d'une part, de spécifier l'identifiant du modèle de l'application (c'est-à-dire CEPC), l'identifiant de l'environnement d'exécution cible (c'est-à-dire 192.168.0.4), l'activité de déploiement à effectuer (c'est-à-dire l'activation) et afin, d'autre part, de lancer l'exécution de l'activité. Une fois l'activité lancée, le DMSA commence par vérifier la validité de l'activité spécifiée, puis, il génère le plan de déploiement correspondant qu'il envoie et fait appliquer par sa partie agent présente dans l'environnement cible, après cela, la partie agent du DMSA retourne le résultat de l'exécution du plan de déploiement à la partie serveur du DMSA qui va alors mettre à jour le modèle global associé à l'environnement d'exécution cible et afficher le résultat à l'administrateur.

Le plan de déploiement généré pour l'activation de l'application CEPC comporte une instruction pour chacun des six modèles de services qui la composent :

• serviceId=AmpereAcquisitionService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.ampereacquisition.r4_1-0.1.0.jar, deploymentInstruction=needActivation, instanceInstruction=createAndUseANewPersonalizedInstance, • serviceId=VoltageAcquisitionService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.voltacquisition.r4_1-0.1.0.jar, deploymentInstruction=needActivation, instanceInstruction=createAndUseANewPersonalizedInstance, • serviceId=DateService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.date.r4_1-0.1.0.jar, deploymentInstruction=nothingToDo, instanceInstruction=useCommonInstance, • serviceId=AggregationEtTransformationService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.aggregationettransformation.r4_1-0.1.0.jar, deploymentInstruction=needActivation, instanceInstruction=createAndUseANewPersonalizedInstance, • serviceId=AffichageConsoleService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.affichageconsole.r4_1-0.1.0.jar, deploymentInstruction=needActivation, instanceInstruction=createAndUseANewPersonalizedInstance, • serviceId=AccesDistantViaMOSGiBundleMBeanService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.accesdistantviamosgibundlembean.r4_1-0.1.0.jar, deploymentInstruction=needActivation, instanceInstruction=createAndUseANewPersonalizedInstance

Pour rappel, chaque implémentation de service (et donc bundle OSGi) contient une classe "Activator" dont la méthode "start(BundleContext)", respectivement "stop(BundleContext)", est exécutée par l'environnement d'exécution à l'activation, respectivement à la désactivation, du bundle. C'est grâce à cette classe que nous avons pu mettre en place l'approche naming. Ainsi, lors de l'activation d'un bundle et donc lors de la création de l'instance singleton, la méthode "start" correspondante appelle la partie agent du DMSA afin que cette dernière lui retourne l'instance (ou les instances) que le singleton en cours de création doit utiliser. Pour être tout à fait précis, notre approche naming retourne soit les bons services pour les dépendances (requis) de services internes à l'application, soit la liste de tous les services satisfaisants et externes à l'application pour les dépendances de services externes à l'application (c'est-à-dire pour les requis de services exprimés au niveau de l'application par des services internes à l'application).

Dans le cadre de l'application CEPC, ses requis de services VoltmetreService et AmpereService sont satisfaits par les implémentations de services :

• DMSA_AppliPourLaValidation_Voltmetre_R4_1 • et DMSA_AppliPourLaValidation_Amperemetre_R4_1.

Les figures ci-dessous présentent respectivement les implémentations de services activées telles qu'elles apparaissent dans l'environnement d'exécution OSGi R4.1 (c'est-à-dire Felix) et le message console qui est affiché (dans l'environnement d'exécution) par le service AffichageConsoleService lorsque CEPC répond à une demande d'informations ; ainsi que ces mêmes informations affichées du côté du serveur (le résultat du calcul de puissance est un résultat flottant).

Figure 74. Affichage succinct, du côté du serveur, des données liées à l'utilisation de CEPC. La troisième étape de ce déroulement est la désactivation du modèle de CEPC. Pour ce faire, l'administrateur utilise toujours la servlet ServicesApplicationsDeployment afin, d'une part, de spécifier l'identifiant du modèle de l'application (c'est-à-dire CEPC), l'identifiant de l'environnement d'exécution cible (c'est-à-dire 192.168.0.4) et l'activité de déploiement à effectuer (c'est-à-dire la désactivation) et afin, d'autre part, de lancer l'exécution de l'activité. Une fois l'activité lancée, le DMSA commence par vérifier la validité de l'activité spécifiée, puis, il génère le plan de déploiement correspondant qu'il envoie et fait appliquer par sa partie agent présente dans l'environnement cible, après cela, la partie agent du DMSA retourne le résultat de l'exécution du plan de déploiement à la partie serveur du DMSA qui va alors mettre à jour le modèle global associé à l'environnement d'exécution cible et afficher le résultat à l'administrateur.

Le plan de déploiement généré pour la désactivation de l'application CEPC comporte une instruction pour chacun des six modèles de services qui la composent :

• serviceId=AccesDistantViaMOSGiBundleMBeanService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.accesdistantviamosgibundlembean.r4_1-0.1.0.jar, deploymentInstruction=needDeActivation, • serviceId=AffichageConsoleService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.affichageconsole.r4_1-0.1.0.jar, deploymentInstruction=needDeActivation, • serviceId=AggregationEtTransformationService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.aggregationettransformation.r4_1-0.1.0.jar, deploymentInstruction=needDeActivation, • serviceId=DateService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.date.r4_1-0.1.0.jar, deploymentInstruction=nothingToDo, • serviceId=VoltageAcquisitionService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.voltacquisition.r4_1-0.1.0.jar, deploymentInstruction=needDeActivation, • serviceId=AmpereAcquisitionService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.ampereacquisition.r4_1-0.1.0.jar, deploymentInstruction=needDeActivation,

Pour remarque, les instructions de ce plan de déploiement sont ordonnancées pour la désactivation. De plus, dans ce cas précis, l'implémentation de service correspondant au service DateService qui était utilisée via l'instance commune doit rester inchangée (cela signifie que l'instance "commonInstance" ne doit pas être détruite et que l'implémentation elle-même ne doit pas être désactivée), les cinq autres implémentations qui étaient utilisées chacune via une "PersonalizedInstance" doivent, quant à elles, être désactivées. Maintenant, si par exemple l'implémentation de service correspondante au service AmpereAcquisitionService était encore utilisée (dans le cadre d'au moins une autre application), alors l'instruction de déploiement, générée par la partie serveur du DMSA, la concernant aurait été : • serviceId=AmpereAcquisitionService, implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.ampereacquisition.r4_1-0.1.0.jar, deploymentInstruction=needPersonalizedInstanceDestruction, instanceId=identifiant de l'instance.

La quatrième étape de ce déroulement est la mise à jour statique de l'implémentation de service correspondant au service ID (AggregationEtTransformationService) dans l'application d'ID (CEPC) par l'implémentation de service (aggregationettransformation.r4_1-0.1.1.jar). La première implémentation donne un résultat flottant de la puissance instantanée consommée, la seconde/nouvelle implémentation donne, quant à elle, un résultat entier tronqué. Pour ce faire, l'administrateur utilise la servlet ServicesApplicationsDeployment afin, d'une part, de spécifier l'identifiant du service cible (AggregationEtTransformationService), l'identifiant du modèle de l'application (CEPC), l'identifiant de l'environnement d'exécution cible (192.168.0.4), l'activité de déploiement à effectuer (c'est-à-dire la mise à jour statique de l'implémentation de service correspondant à l'identifiant de service donné) et afin, d'autre part, de lancer l'exécution de l'activité. Une fois l'activité lancée, le DMSA commence par vérifier la validité de l'activité spécifiée, puis, il génère le plan de déploiement correspondant qu'il envoie et fait appliquer par sa partie agent présente dans l'environnement cible, après cela, la partie agent du DMSA retourne le résultat de l'exécution du plan de déploiement à la partie serveur du DMSA qui va alors mettre à jour le modèle global associé à l'environnement d'exécution cible et afficher le résultat à l'administrateur.

Le plan de déploiement généré pour cette mise à jour statique de CEPC comporte deux instructions : • implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.aggregationettransformation.r4_1-0.1.1.jar, deploymentInstruction=install, • implemURL=http://212.27.63.139/DMSA_AppliPourLaValidation_ServicesImplementations/d msa.applipourlavalidation.aggregationettransformation.r4_1-0.1.0.jar, deploymentInstruction=deinstall.

Pour remarque, l'implémentation "aggregationettransformation.r4_1-0.1.0.jar" pèse 13313 octets et l'implémentation "aggregationettransformation.r4_1-0.1.1.jar" pèse, quant à elle, 13369 octets. C'est pourquoi la première a été choisie lors de l'installation initiale de CEPC.