remoteinterfaceclassname ejb.demo.demo ; (* 4 *) ; See step 2



Documents pareils
Composants Logiciels. Le modèle de composant de CORBA. Plan

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Cedric Dumoulin (C) The Java EE 7 Tutorial

Plan. Department of Informatics

Applications des patrons de conception

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Java pour le Web. Cours Java - F. Michel

CORBA. (Common Request Broker Architecture)

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

JOnAS 5. Serveur d application d

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

RMI le langage Java XII-1 JMF

1. Installation d'un serveur d'application JBoss:

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation (RMI)

Java Naming and Directory Interface

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

NFP111 Systèmes et Applications Réparties

2 Chapitre 1 Introduction

EXA1415 : Annotations

Intergiciels orientés composants.

Once the installation is complete, you can delete the temporary Zip files..

Compte Rendu d intégration d application

Calcul Parallèle. Cours 5 - JAVA RMI

Création d un service web avec NetBeans 5.5 et SJAS 9

Création d une application JEE

Java Aspect Components (JAC)

JOnAS Day 5.1. Clustering

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

TP1 : Initiation à Java et Eclipse

Modèle d Administration des Systèmes Distribués à Base de Composants.

J2EE - Introduction. Développement web - Java. Plan du chapitre

Remote Method Invocation en Java (RMI)

Intergiciel - concepts de base

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

CORBA haute performance

Dis papa, c est quoi un bus logiciel réparti?

Mise en œuvre des serveurs d application

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Alfstore workflow framework Spécification technique

Java et les bases de données

Introduction à CORBA

Architecture Orientée Service, JSON et API REST

OpenPaaS Le réseau social d'entreprise

Web Tier : déploiement de servlets

J2EE. Java2 Enterprise Edition. Pierre Yves Gibello Mise à jour : 30 Septembre 2004

OpenCCM : une infrastructure à composants pour le déploiement d'applications à base de composants CORBA

Introduction à la plateforme J2EE

Introduction aux «Services Web»

Corrigé des exercices sur les références

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Architecture à base de composants pour le déploiement adaptatif des applications multicomposants

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Conception et Implémentation d un serveur d applications dans le cadre du projet EISMO

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Documentation de la plate forme JOnAS. Frederic Maistre

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Installer Enterprise Miner 5.1 en SAS environnement Windows

Configurer la supervision pour une base MS SQL Server Viadéis Services

Documentation de la plate forme JOnAS

Les Portfolios et Moodle Petit inventaire

Un environnement de déploiement automatique pour les applications à base de composants

Programmer en JAVA. par Tama

EJB. Karim Bouzoubaa Issam Kabbaj

How to Login to Career Page

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

SERVEUR DÉDIÉ DOCUMENTATION

Initiation à JAVA et à la programmation objet.

PRODUCTS LIST (updated 11th January 2010)

Threads. Threads. USTL routier 1

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

France SMS+ MT Premium Description

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Environnements de Développement

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Evaluation Idéopass Cahier d analyse technique

Introduction aux intergiciels

Vulgarisation Java EE Java EE, c est quoi?

Auto-évaluation Aperçu de l architecture Java EE

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

La démarche MDA. Auteur : Projet ACCORD (Assemblage de composants par contrats en environnement ouvert et réparti)*

Instructions Mozilla Thunderbird Page 1

Conception de serveurs d'applications ouverts

WEB page builder and server for SCADA applications usable from a WEB navigator

WORKSHOP OBIEE 11g (version ) PRE-REQUIS:

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Cours 1: Java et les objets

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Plan du cours. Historique du langage Nouveautés de Java 7

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Rapport de projet de fin d études

Transcription:

Enterprise Java Beans: EJB d ) Création d'un fichier ejb-jar Permet de packager et de distribuer des composants serveur de la même manière que l'on distribue des composants GUI Les étapes à réaliser sont les suivantes: 1. Compiler les sources.java 2. Créer un Descripteur de Déploiement Déploiement = installer un composant EJB dans un conteneur Permet de définir, et de personnaliser un certain nombre de propriétés avant le déploiement - Note: This example is for the BEA Weblogic server which uses the semi-colon (;) to comment out lines. (SessionDescriptor ; This file must start with SessionDescriptor or ; EntityDescriptor ; Indicate the name which the bean will be bound ; into the JNDI name as beanhomename demo.demohome ; (* 1 *) ; The enterprise Java Bean class (see step 4) enterprisebeanclassname ejb.demo.demobean ; (* 2 *) homeinterfaceclassname ejb.demo.demohome ; (* 3 *) ; The home interface implemented by a class ; generated by the container provided tools ; see step 3 remoteinterfaceclassname ejb.demo.demo ; (* 4 *) ; See step 2 Programmation Répartie -- V 6 -- Denis Caromel - 224

Enterprise Java Beans: EJB isreentrant false ; Always false for session beans STATELESS_SESSION statemanagementtype ; Either STATELESS_SESSION or STATEFUL_SESSION. ; DemoBean is a stateless session bean sessiontimeout 5 ; seconds (controldescriptors ; This section decides the run-time properties when ; a method is called. The DEFAULT sub-section applies ; to all methods, but can be overridden on a per-method ; basis, similar to the "accesscontrolentries" above. (DEFAULT isolationlevel TRANSACTION_SERIALIZABLE transactionattribute TX_REQUIRED runasmode CLIENT_IDENTITY ) ; end isolationlevel ) ; end controldescriptors (environmentproperties maxbeansinfreepool 100 ; end environmentproperties ) ; end SessionDescriptor On voit bien que le lien entre la classe du bean et: le nom pour le lookup (* 1 *), l'interface remote implémentée (* 4*), l interface Home (* 3*) n'est pas codé dans le code mais donné ici dans le descripteur. Programmation Répartie -- V 6 -- Denis Caromel - 225

Enterprise Java Beans: EJB 3. Création d'un manifeste il est créer automatiquement par l'outils jar ejb/demo/manifest.txt Name: ejb/demo/demobeandd.ser Enterprise-Bean: True Récapitulatif des fichiers nécessaires: bean class + autre classes utilisées par le bean bean s remote interface bean s home interface Descripteur de Déploiement Éventuellement une instance de java.util.properties si le bean utilise des propriétés Java un fichier manifeste 4. Enfin: création du ejb-jar file jar cvfm Demo.jar ejb/demo/manifest.txt ejb/demo/*.class ejb/demo/*.ser // DemoBeanDD.ser: fichier de déploiement généré par weblogic (depuis.tx) Des outils existent pour faciliter le packaging et la génération du ficier ejb-jar... Standard XML deploiement descriptor in EJB 2.0 jar tf Demo.jar META-INF/MANIFEST.MF ejb/demo/demo.class ejb/demo/demobean.class ejb/demo/demohome.class ejb/demo/demobeandd.ser Programmation Répartie -- V 6 -- Denis Caromel - 226

Enterprise Java Beans: EJB e ) Déploiement du bean Spécifique à l'implémentation du serveur d EJB Exemple de Weblogic server 1. Générer les classes d'implementation java weblogic.ejbc -d /export/weblogic/classes ejb/demo/demobeandd.ser Va générer les fichiers: ejb/demo/demobeaneoimpl.class ejb/demo/demobeanhomeimpl.class ejb/demo/skel5k5x705r2x671nd1i1vy2v524ua5y.class ejb/demo/skel5q585f5sfzo601q4e725b233m5140.class ejb/demo/stub5k5x705r2x671nd1i1vy2v524ua5y.class ejb/demo/stub5q585f5sfzo601q4e725b233m5140.class 2. Rendre le Demo.jar accessible au serveur d'ejb 3. Rendre le descripteur accessible au serveur d'ejb 4. Démarrer ou arrêter l'ejb serveur f ) Le code du client Le client d'un EJB peut être: un client Java une servlet, une applet, un programme C/C++ (par CORBA, IIOP) --> Dessin tableau (?) Programmation Répartie -- V 6 -- Denis Caromel - 227

Enterprise Java Beans: EJB Les étapes à réaliser pour le client sont: Établir un contexte initial (EJB, + JNDI) Trouver la Home Interface de l'ejb avec JNDI Utiliser la Home interface pour demander au conteneur de créer une instance de l'ejb, et récupérer une référence distante vers l'ejb Utiliser cette référence pour appeler des méthodes sur l'ejb (donc par RMI) /** * DemoClient -- demonstrates using a minimal * Java application to talk to the DemoBean * stateless session bean */ package ejb.demo; import javax.ejb.*; import javax.naming.*; import java.rmi.*; import java.util.properties; /** * DemoClient demonstrates using a minimal stateless * session bean. * Remember view session beans as an extension of your * client running in the server. */ public class DemoClient { public static void main(string[] args) { System.out.println("\nBegin DemoClient...\n"); parseargs(args); try { // Create A DemoBean object, in the server // Note: the name of the class corresponds to the // JNDI property declared in the // DeploymentDescriptor // From DeploymentDescriptor... Programmation Répartie -- V 6 -- Denis Caromel - 228

Enterprise Java Beans: EJB // beanhomename demo.demohome Context ctx = getinitialcontext(); DemoHome dhome = (DemoHome) // (* 3 *) ctx.lookup("demo.demohome"); // (* 1 *) // Now you have a reference to the DemoHome object // factory use it to ask the container to creat an // instance of the Demo bean System.out.println("Creating Demo\n"); Demo demo = dhome.create(); // (* 4 *) // In fact : from POOL // Here is the call that executes the method on the // server side object System.out.println("The result is "+ demo.demoselect()); (* 4 *) // CALL: Remote method invocation } catch (Exception e) { System.out.println(" => Error <="); e.printstacktrace(); } System.out.println("\nEnd DemoClient...\n"); } static void parseargs(string args[]) { if ((args == null) (args.length == 0)) return; for (int i = 0; i < args.length; i++) { if (args[i].equals("-url")) url = args[++i]; else if (args[i].equals("-user")) user = args[++i]; else if (args[i].equals("-password")) password = args[++i]; } } static String user = null; static String password = null; static String url = "t3://localhost:7001"; /** * Gets an initial context. * @return Context Programmation Répartie -- V 6 -- Denis Caromel - 229

Enterprise Java Beans: EJB * @exception java.lang.exception if there is * an error in getting a Context */ static public Context getinitialcontext() throws Exception { Properties p = new Properties(); p.put(context.initial_context_factory, "weblogic.jndi.t3initialcontextfactory"); p.put(context.provider_url, url); if (user!= null) { System.out.println ("user: " + user); p.put(context.security_principal, user); if (password == null) password = ""; p.put(context.security_credentials, password); } return new InitialContext(p); } } g ) Compilation et éxécution du client javac ejb/demo/democlient.java java ejb.demo.democlient Begin DemoClient... Creating Demo The result is hello world End DemoClient... Programmation Répartie -- V 6 -- Denis Caromel - 230

6.5 Récapitulatif EJB Récapitulatif EJB 6.5.1 Classes et interfaces EJB Remote (RMI) EntityBean SessionBean EJBObject Demo EJBHome create() DemoHome ejbactivate ejbremove ejbpassivate ejbcreate DemoBean demoselect Demo create() ejbcreate // BUSINESS LOGIC: demoselect () DeploymentDescriptor.tx (Deploiement): HelloWorld (name) demo.demohome /1/ (class) ejb.demo.demobean /2/ (Home) ejb.demo.demohome /3/ (RemoteInter) ejb.demo.demo /4/ Interface Class Implements Extends FIGURE 36 Classes et interfaces EJB Programmation Répartie -- V 6 -- Denis Caromel - 231

Récapitulatif EJB 6.5.2 Conclusion on EJB So for EJB components: Software module = Java Class and Interface (Home, Remote, Beans,...) Standardized description= a file with a standard format (txt, XML) with Association in descriptor of : Lookup Name, Factory (Home), Remote (functional) Interface Tools: Composition =? EJBrew? Deployment = JVM+ RMI, JTS, + Generators + EJB Servers Programmation Répartie -- V 6 -- Denis Caromel - 232

Récapitulatif EJB Examples of Development / Deployment tools: JBuilder+WebSphere, VisualAge+WebLogic, Cafe+PowerTier, NetBeans+NetDynamics some interactives. Un serveur EJB Open source et Français : Project ObjectWeb http://www.objectweb.org/ JOnAS (Java TM Open Application Server) Programmation Répartie -- V 6 -- Denis Caromel - 233

Web vs P2P 6.6 Web vs P2P Initial image from Emmanuel Cecchet (ObjectWeb) Programmation Répartie -- V 6 -- Denis Caromel - 234

Web vs P2P Architecture multi-tiers typique pour le Web : Programmation Répartie -- V 6 -- Denis Caromel - 235

Web vs P2P Architecture P2P typique : Programmation Répartie -- V 6 -- Denis Caromel - 236

Web vs P2P Architecture P2P typique (2) : Programmation Répartie -- V 6 -- Denis Caromel - 237

Web vs P2P CHAPITRE 7 Corba Programmation Répartie -- V 6 -- Denis Caromel - 238

Principes, objectifs, IDL, Mapping C++, etc. 7.1 Principes, objectifs, IDL, Mapping C++, etc. Voir transparents annexes. En particulier, sur le premier support CORBA : pages 14, 21, 23, 30, 31, 32, 33 + 66.. 72 (GIOP <==> JRMP) Cf. ETSI: European Telecommunications Standards Institute Sophia Antipolis, Interop, PlugTests à vous d étudier le reste des transparents. Programmation Répartie -- V 6 -- Denis Caromel - 239

Conclusion sur CORBA 7.2 Conclusion sur CORBA Bus logiciel: Recherche d objets distants sur des interfaces, et nom pas uniquement sur des identifiant (chaînes de caractères, cf. rmiregistry). RMI + Rmiregistry + Jini = Bus logiciel Java, global (standard: tcp/ip, sockets, démons) JRMP 7.2.1 Caractéristiques générales Il existes des implémentations commerciales: Component Broker (IBM) Object Broker (BEA Systems) ORBacus (OOC) Orbix (IONA) Visibroker (Inprise) Voyager (Object Space) Programmation Répartie -- V 6 -- Denis Caromel - 240

Conclusion sur CORBA ou libres, gratuites de CORBA: JacORB (ORB pour Java) Java IDL (Sun) ORBit (GNU) Fnorb (ORB pour Python) En pratique, aucun produit n implémente : - la totalité des spécifications (qui, de toute manière, évoluent en permanence), - pour la totalité de langages (C++, Java, Cobol, etc.), - et la totalité des OS. ==> il y a une explosion combinatoire qui le rend impossible. Programmation Répartie -- V 6 -- Denis Caromel - 241

Conclusion sur CORBA La solution: utiliser l intéropérabilité offerte par CORBA en utilisant plusieurs implémentations (Bien sur il faut payer plusieurs produits!) Note: Avec CORBA, 2.5 systèmes de Type: --> IDL --> Langage Cible --> Mapping standard IDL --> Lg cible Programmation Répartie -- V 6 -- Denis Caromel - 242

Conclusion sur CORBA 7.2.2 Choisir un mapping (IDL -->?) CORBA avec C++ projection complexe à utiliser efficace et plus ancienne utilisation (fiabilisé) CORBA avec Java: projection plus simple plus portable pas encore toujours efficace, mais en cours Autre mapping: CORBA avec CorbaScript: interactif, interprété et à objets projection simple pas de souche et squelettes: utilisation de l invocation dynamique Made in France: Lille, LIFL, thèse Philippe Merle accepté par l OMG comme standard! Programmation Répartie -- V 6 -- Denis Caromel - 243

Conclusion sur CORBA 7.2.3 Versions successives Normalement, pas de versions explicites, mais une suites continue de services, normes, etc. Mais en pratique, des caractéristiques nouvelles donnent souvent un nouveau numéro de version. C est également une façon de structurer et comprendre CORBA: a ) CORBA 1 Langage d interface: IDL mapping C++, etc. ORB: bus CORBA - communications - nommages, cycle de vie, événements - autres services (transactions, etc. ) b ) CORBA 2 Interopérabilité entre ORB: - GIOP, IIOP c ) CORBA 3 passage par valeur (sérialisation) Programmation Répartie -- V 6 -- Denis Caromel - 244

Conclusion sur CORBA langage de script (CorbaScript) minimumcorba autres (realtimecorba, CORBA/COM/DCE) firewall Mais surtout: Modèle de composant: CCM CORBA Component Model Largement inspiré des EJB: Service Components (un appel de méthode) Session Components Stateless Session Components Stateful Session Components Process Components Entity Components Container-managed et Component-managed persistance Fichiers de déploiement en XML etc. Programmation Répartie -- V 6 -- Denis Caromel - 245

Conclusion sur CORBA CCM est un sur-ensemble des EJB: Un exemple de chose en plus: CCM a un assembly descriptor qui contient des informations (metadata) sur la façon d interagir de deux composants. Des questions se pose à l heure actuelle: Le modèle est assez complexe Il n est pas clair si: une implémentation C++ a du sens si cela est même possible, --> oui et dans ce cas, pourquoi ne pas juste utiliser les EJB 2.0? (si Java uniquement) Les composants sont un modèle très servercentric, qui n utilise pas bien la puissance de calcul disponible chez le client Pas de modèle de composants user interface en Corba (à la JavaBeans),... à venir...? Programmation Répartie -- V 6 -- Denis Caromel - 246

7.3 Détails sur CCM Détails sur CCM CORBA Component Model Largement inspiré des EJB Services pour les clients: Événements Concurrence Transactions Sécurité Persistance A priori, pour l instant, pas de composants hiérarchiques, composite. Seulement assemblage au déploiement (diff erent de Fractal, ObjectWeb) 7.3.1 Principes OMG IDL3: une version étendue de IDL avec en particulier component xxxx {... Les composants (IDL3) présentent des Ports Ceux-ci permettent de spécifier : --> Connexions possibles --> Services offerts (classique) --> Services Fournis (Required, Nouveau) Programmation Répartie -- V 6 -- Denis Caromel - 247

Détails sur CCM Différents types de ports: --> Attributes: configuration --> Facets: un point de vue sur un composant --> Receptacles: gestion des connexions (Client Interface) --> Event Sources/Sinks: notification FIGURE 37 Composants Corba CCM, Un distributeur de boisson CCM D après: Raphaël Marvie et Philippe Merle, Vers un modèle de composants pour CESURE - Le CORBA Component Model, Rapport Technique no 3, projet RNRT 98 CESURE, novembre 2000. Programmation Répartie -- V 6 -- Denis Caromel - 248

Détails sur CCM FIGURE 38 Exemple de composition On peut donc maintenant faire de la composition de composants, assemblage, au déploiement. Mais pas de la composition hiérarchique, composants composites, par assemblage. Ceci n est pas, a priori ou pour l instant, possible avec EJB, car pas de Uses dépendances. Programmation Répartie -- V 6 -- Denis Caromel - 249

Détails sur CCM 7.3.2 IDL 3 spécifications: IDL3: Version étendue du langage IDL pour traiter les composants D après: Voir : Ces définitions vont être mappé par un compilateur IDL3 vers OMG IDL2 afin de permettre une implémentation: les développeurs des composants les utilisent comme les interfaces à implémenter (contrat à réaliser) les clients de composants comme interfaces avec les instances de composants à l exécution. Raphaël Marvie and Philippe Merle, CORBA Component Model: Discussion and Use with OpenCCM, Submitted to Special Issue of the Informatica - An International Journal of Computing and Informatics Dedicated to Component Based Software Development" Resources about the CORBA Component Model http://corbaweb.lifl.fr/openccm/ccm.html Programmation Répartie -- V 6 -- Denis Caromel - 250

Détails sur CCM a ) Attributes: Exemple de composant CCM, IDL3: component VendingMachine { attribute boolean on ; attribute DrinkSeq drinks ; }; OMG IDL2 Mapping of CORBA Component Type Denitions (IDL3) interface VendingMachine : Components::CCMObject { attribute boolean on ; attribute DrinkSeq drinks ; }; interface CardVendingMachine : VendingMachine, CardReader { //... }; Programmation Répartie -- V 6 -- Denis Caromel - 251

b ) Facets PROVIDES Exemple de Facets : (Server Interface) Détails sur CCM OMG IDL3 définition de Facets: interface ClientFacet {... } ; interface ProviderFacet {... } ; interface RepairmanFacet {... } ; component VendingMachine { provides ClientFacet client ; provides ProviderFacet provider ; provides RepairmanFacet repairman ; }; ClientFacet: client: Nom de Type Nom de Facet OMG IDL2 Mapping of Facets: interface VendingMachine : Components::CCMObject { ClientFacet provide_client () ; ProviderFacet provide_provider () ; RepairmanFacet provide_repairman () ; } Programmation Répartie -- V 6 -- Denis Caromel - 252

Détails sur CCM c ) Receptacles: USES Permet à un composant d accepter et d utiliser une référence. (Client Interface) C est aussi un moyen d expliciter la dépendance d un composant vis à vis d une autre interface, c est à dire d un autre composant. Ainsi, il sera possible d assembler les composants au déploiement, éventuellement de changer dynamiquement les inter-connexions entre composants. interface PowerPlug {... } ; interface WaterPlug {... } ; component VendingMachine { uses WaterPlug water ; uses multiple PowerPlug power ; }; OMG IDL2 Mapping of Receptacles: interface VendingMachine : Components::CCMObject { void connect_water (in WaterPlug cnx) raises (Components::AlreadyConnected, Components::InvalidConnection) ; WaterPlug disconnect_water () raises (Components::NoConnection) ; WaterPlug get_connection_water () ; struct powerconnection { PowerPlug objref ; Programmation Répartie -- V 6 -- Denis Caromel - 253

Détails sur CCM Components::Cookie ck ; }; typedef sequence<powerconnection> powerconnections; Components::Cookie connect_power (in PowerPlug cnx) raises (Components::ExceededConnectionLimit, Components::InvalidConnection) ; PowerPlug disconnect_power (in Components::Cookie ck) raises (Components::InvalidConnection) ; powerconnections get_connections_power () ; }; d ) Events: EMITS Push, or pull PUBLISHES Définition IDL3 de 2 sources d événements et un puis (sink): valuetype NoChangeEvt : Components::EventBase {... } ; valuetype EmptyEvt : Components::EventBase {... } ; valuetype TemperatureEvt : Components::EventBase {... } ; component VendingMachine { emits NoChangeEvt change ; publishes EmptyEvt empty ; consumes TemperatureEvt temp ; }; --> Mapping... OMG IDL2 Mapping of Events: Source et Sink Programmation Répartie -- V 6 -- Denis Caromel - 254

Event Sources: Détails sur CCM interface NoChangeEvtConsumer : Components::EventConsumerBase { void push (in NoChangeEvt evt) ; }; interface EmptyEvtConsumer : Components::EventConsumerBase { void push (in EmptyEvt evt) ; }; interface VendingMachine : Components::CCMObject { void connect_change (in NoChangeEvtConsumer consumer) raises(components::alreadyconnected) ; NoChangeEvtConsumer disconnect_change () raises(components::noconnection) ; Components::Cookie subscribe_empty (in EmptyEvtConsumer consumer) raises (Components::ExceededConnectionLimit) ; EmptyEvtConsumer unsubscribe_empty (in Components::Cookie ck) raises(components::invalidconnection) ; }; Event Sinks: interface TemperatureEvtConsumer : Components::EventConsumerBase { void push (in TemperatureEvt evt) ; }; interface VendingMachine : Components::CCMObject { TemperatureEvtConsumer get_consumer_temp () ; }; Programmation Répartie -- V 6 -- Denis Caromel - 255

Détails sur CCM Résumé: Composant IDL3 pour le distributeur de boissons: component VendingMachine { attribute boolean on; readonly attribute DrinkSeq drinks; provides Client client; provides Supplier supplier; provides Repairman repairman; consumes TemperatureEvt temp; uses WaterSupply water; uses multiple PowerSupply power; }; emits NoMoreChangeEvt nochange; publishes EmptyEvt empty; Programmation Répartie -- V 6 -- Denis Caromel - 256

Détails sur CCM 7.3.3 Framework de développement: CIF Un framework: CIF: Component Implementation Framework permet de décrire comment les parties fonctionnelles et non-fonctionnelles interagissent CIDL: Component Implementation Definition Language Permet de décrire l implémentation d un composant. Exemple de définition CIDL composition entity VendingMachineImpl { home executor VendingMachineHomeImpl { implements VendingMachineHome ; manages VendingMachineImpl ; }; }; FIGURE 39 Role des specifications CIDL Programmation Répartie -- V 6 -- Denis Caromel - 257

Détails sur CCM ; FIGURE 40 Génération des stub/proxy des composansts Fonctionnel, Modules Objets Composants Service... Service-Oriented Architecture?? Programmation Répartie -- V 6 -- Denis Caromel - 258

Détails sur CCM CHAPITRE 8 Conception et paternes pour la programmation répartie: Programmation Répartie -- V 6 -- Denis Caromel - 259

Principes et objectifs 8.1 Principes et objectifs Programmation Répartie -- V 6 -- Denis Caromel - 260

Exemples de paterns 8.2 Exemples de paterns 8.2.1 Acceptor et Connector 8.2.2 Thread par session 8.2.3 Thread par requête 8.2.4 Objets actifs vs. Moniteur 8.2.5 Services asynchrones 8.2.6 Migration (mobilité) Programmation Répartie -- V 6 -- Denis Caromel - 261