Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

Dimension: px
Commencer à balayer dès la page:

Download "Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7. Remerciements"

Transcription

1 Modèle à composants Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7 Remerciements Eric Bruneton Sacha Krakowiak 1

2 Des objets aux composants Notion de composant logiciel Nécessité perçue très tôt [McIlroy 1968] mais conception et réalisation n'ont pas suivi Les objets : première approche pour la décomposition Encapsulation (séparation interface-réalisation) Mécanismes de réutilisation (héritage, délégation) Limitation des objets Pas d'expression explicite des ressources requises par un objet (autres objets, services fournis par l'environnement) Pas de vue globale de l'architecture d'une application Pas de possibilité d'expression de besoins non-fonctionnels (par ex. persistance, transactions, etc.) Peu d'outils pour le déploiement et l'administration 2

3 Modèles et infrastructures Pour mettre en œuvre des composants, il faut Un modèle de composants, qui définit les entités et leur mode d'interaction et de composition Une infrastructure à composants, qui met en œuvre le modèle et permet de construire, déployer, administrer et exécuter des applications conformes au modèle Situation actuelle Les infrastructures industrielles (EJB, CCM,.Net, OSGi) sont limitées Des modèles issus de la recherche ont été proposés (Fractal, CCM, ) ainsi que des infrastructures prototypes Plus récemment : SCA (Service Component Architecture)... 3

4 Que doit fournir un modèle de composants? Encapsulation Interface = seule voie d'accès, séparation interface-réalisation Possibilité de définir des interface multiples Composabilité Dépendances explicites (expression des ressources fournies et requises) Composition hiérarchique (un assemblage de composants est un composant) Capacité de description globale Si possible exprimée formellement (langage de description) Réutilisation et évolution Modèles génériques de composants (types de composants) Adaptation (interfaces de contrôle) Reconfiguration 4

5 Que doit fournir une infrastructure à composants? Couverture du cycle de vie Non limitée aux phases de développement et d'exécution Administration Déploiement : installation et activation des composants Surveillance : collecte et intégration de données, tenue à jour de la configuration Contrôle : réaction aux événements critiques (alarme, surcharge, détection d'erreur) Service communs Propriétés non-fonctionnelles (persistance, transactions, QoS) 5

6 Paradigmes de la composition Eléments de la composition Composant. Unité de composition et de déploiement, qui remplit une fonction spécifique et peut être assemblé avec d'autres composants. Il porte une description des interfaces requises et fournies. Connecteur. Elément permettant d'assembler des composants en utilisant leurs interfaces fournies et requises. Remplit 2 fonctions : liaison et communication. Configuration : un assemblage de composants (peut, selon les modèles, être lui-même un composant). NB1: la notion de composant est préservée à l'exécution pour faciliter l'adaptation dynamique NB2 : la différence entre composant et connecteur est une différence de fonction, non de nature : un connecteur est lui-même un composant 6

7 Exemples de schémas de composition Liaison simple Client serveur Une autre vue : le connecteur comme composant Client serveur Une autre vue : le connecteur comme composant composite Client talon session talon serveur 7

8 Exemples de schémas de composition subscriber subscriber Publish-subscribe connector subscriber Publisher and subscriber 8

9 Décrire la composition Une description formelle Donner un support aux notions d'architecture logicielle Composants, interfaces, connecteurs, configuration Permettre un traitement formel Vérification, preuves (contrôle de types) Permettre d'automatiser (ou assister) des opérations globales (mettant en jeu des configurations) Déploiement Reconfiguration Servir d'aide à la documentation (description globale, visualisation) Notion d'adl (Architecture Description Language) 9

10 Eléments d'un ADL Description des composants Définition des interfaces (requises, fournies) Types (synchrone, asynchrone, ) Signatures, contrats, annotations Description des configurations Association interfaces fournies-requises Directe (invisible, réalisée par édition de liens) Via un connecteur : description Composition hiérarchique (si le modèle l'autorise) Interfaces importées/exportées Interface graphique (visualisation, action) Aspects dynamiques (reconfiguration) 10

11 Organisation logique d'un composant Interface externe du contrôleur Interface fournie contenu Interface requise Interface interne contrôleur du contrôleur La séparation entre contrôleur et contenu est motivée par la séparation des préoccupations : isoler la partie purement fonctionnelle (propre à l'application) 11

12 Fonctions d'un contrôleur Gestion du cycle de vie Création, destruction Activation, passivation Gestion des composants inclus Si le modèle comporte des composants composites Liaison Connexion avec d'autres composants Réflexion Introspection des interface, composants Met en œuvre l'inversion de contrôle Hollywood : Ne nous appelez pas, c'est nous qui vous appellerons Contrôleur Contenu 12

13 Le modèle à composants Fractal Fractal Modèle général, peu de restrictions Fondé sur une base mathématique rigoureuse Plusieurs implémentations Très utilisé dans la recherche Source Auteurs Eric Bruneton (France Telecom R&D) Jean-Bernard Stefani (INRIA) 13

14 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants Langage de description d'architecture Reconfiguration dynamique Conclusion 14

15 Aperçu : l'exemple Comanche Serveur HTTP minimal Écoute sur un ServerSocket Pour chaque connexion: Lance un nouveau thread Lit l'url Envoie le fichier demandé Ou un message d'erreur public class Server implements Runnable { private Socket s; public Server (Socket s) { this.s = s; } public static void main (String[] args) throws IOException { ServerSocket s = new ServerSocket(8080); while (true) { new Thread(new Server(s.accept())).start(); } } public void run () { try { InputStreamReader in = new InputStreamReader(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); String rq = new LineNumberReader(in).readLine(); System.out.println(rq); if (rq.startswith("get ")) { File f = new File(rq.substring(5, rq.indexof(' ', 4))); if (f.exists() &&!f.isdirectory()) { InputStream is = new FileInputStream(f); byte[] data = new byte[is.available()]; is.read(data); is.close(); out.print("http/ OK\n\n"); out.write(data); } else { out.print("http/ Not Found\n\n"); out.print("<html>document not found.</html>"); } } out.close(); s.close(); } catch (IOException _) { } } } 15

16 Conception : trouver les composants Composants statiques Durée de vie Celle de l'application Correspondent aux «services» Composants dynamiques Durée de vie plus courte Correspondent aux «données» Définition des composants Trouver Les services [ les structures de données ] Un service = un composant public class Server implements Runnable { private Socket s; public Server (Socket s) { this.s = s; } public static void main (String[] args) throws IOException { ServerSocket s = new ServerSocket(8080); while (true) { new Thread(new Server(s.accept())).start(); } } public void run () { try { InputStreamReader in = new InputStreamReader(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); String rq = new LineNumberReader(in).readLine(); System.out.println(rq); if (rq.startswith("get ")) { File f = new File(rq.substring(5, rq.indexof(' ', 4))); if (f.exists() &&!f.isdirectory()) { InputStream is = new FileInputStream(f); byte[] data = new byte[is.available()]; is.read(data); is.close(); out.print("http/ OK\n\n"); out.write(data); } else { out.print("http/ Not Found\n\n"); out.print("<html>document not found.</html>"); } } out.close(); s.close(); } catch (IOException _) { } } } 16

17 Conception : trouver les composants Receiver Scheduler Analyzer Logger FileHandler ErrorHandler public class Server implements Runnable { private Socket s; public Server (Socket s) { this.s = s; } public static void main (String[] args) throws IOException { ServerSocket s = new ServerSocket(8080); while (true) { new Thread(new Server(s.accept())).start(); } } public void run () { try { InputStreamReader in = new InputStreamReader(s.getInputStream()); PrintStream out = new PrintStream(s.getOutputStream()); String rq = new LineNumberReader(in).readLine(); System.out.println(rq); if (rq.startswith("get ")) { File f = new File(rq.substring(5, rq.indexof(' ', 4))); if (f.exists() &&!f.isdirectory()) { InputStream is = new FileInputStream(f); byte[] data = new byte[is.available()]; is.read(data); is.close(); out.print("http/ OK\n\n"); out.write(data); } else { out.print("http/ Not Found\n\n"); out.print("<html>document not found.</html>"); } } out.close(); s.close(); } catch (IOException _) { } } } 17

18 Conception : définir l'architecture Structure hiérarchique : Correspond aux niveaux d'abstraction Dépendances : Liaisons entre les composants Receiver Analyzer Logger Frontend Scheduler File Handler Comanche Backend Dispatcher Handler Error Handler 18

19 Conception : définir les interfaces Interfaces entre composants : Doivent être définis avec attention Pour être le plus stable possible ne doivent concerner que les aspects fonctionnels Pour Comanche public interface Logger { void log (String msg); } public interface Scheduler { void schedule (Runnable task); } public interface RequestHandler { void handlerequest (Request r) throws IOException; } public class Request { Socket s; Reader in; PrintStream out; String url; } Passage en paramètre de la requête 19

20 Implémentation : composants Composants sans dépendances : Implémentés comme en Java standard public class BasicLogger implements Logger { public void log (String msg) { System.out.println(msg); } } public class SequentialScheduler implements Scheduler { public synchronized void schedule (Runnable task) { task.run(); } } public class MultiThreadScheduler implements Scheduler { public void schedule (Runnable task) { new Thread(task).start(); } } 20

21 Implémentation : composants Composants avec dépendances : Première solution : ne permet pas la configuration statique public class RequestReceiver implements Runnable { } private Scheduler s = new MultiThreadScheduler(); private RequestHandler rh = new RequestAnalyzer(); // rest of the code not shown Deuxième solution: ne permet pas la reconfiguration dynamique public class RequestReceiver implements Runnable { } private Scheduler s; private RequestHandler rh; public RequestReceiver (Scheduler s, RequestHandler rh) { this.s = s; this.rh = rh; } // rest of the code not shown 21

22 Implémentation : composants Composants avec dépendances : public class RequestReceiver implements Runnable, BindingController { private Scheduler s; private RequestHandler rh; public String[] listfc () { return new String[] { "s", "rh" }; } public Object lookupfc (String n) { if (n.equals("s")) { return s; } else if (n.equals("rh")) { return rh; } else return null; } public void bindfc (String n, Object v) { if (n.equals("s")) { s = (Scheduler)v; } else if (n.equals("rh")) { rh = (RequestHandler)v; } } public void unbindfc (String n) { if (n.equals("s")) { s = null; } else if (n.equals("rh")) { rh = null; } } // 22

23 Configuration : par programme Avantages : Méthode la plus directe Aucun outils requis Inconvénients : Propices aux erreurs Ne montre pas l'architecture public class Server { public static void main (String[] args) { RequestReceiver rr = new RequestReceiver(); RequestAnalyzer ra = new RequestAnalyzer(); RequestDispatcher rd = new RequestDispatcher(); FileRequestHandler frh = new FileRequestHandler(); ErrorRequestHandler erh = new ErrorRequestHandler(); Scheduler s = new MultiThreadScheduler(); Logger l = new BasicLogger(); rr.bindfc("rh", ra); rr.bindfc("s", s); ra.bindfc("rh", rd); ra.bindfc("l", l); rd.bindfc("h0", frh); rd.bindfc("h1", erh); rr.run(); } } 23

24 Configuration : avec un ADL Avantages : Bonne séparation des aspects architecture et déploiement Vérifications statiques possibles Liaisons invalides, Liaisons manquantes, Inconvénients : L'architecture n'est pas très visible <definition name="handlertype"> <interface name="rh" role="server" </definition> signature="comanche.requesthandler"/> <definition name="filehandler" extends="handlertype"> <content class="comanche.filerequesthandler"/> </definition> <definition name="comanche" extends="runnabletype"> <component name="fe" definition="frontend"/> <component name="be" definition="backend"/> <binding client="this.r" server="fe.r"/> <binding client="fe.rh" server="be.rh"/> </definition> 24

25 Configuration : avec un outil graphique Outils graphique pour éditer des fichiers ADL La représentation en graphe montre clairement l'architecture 25

26 Reconfiguration Statique : stopper l'application, changer l'adl, redémarrer Pas toujours possible, par exemple pour raisons de disponibilité Dynamique : reconfigurer l'application pendant son exécution Pose des problèmes de cohérence Outil de base pour aider à les résoudre : gestion du cycle de vie Exemple : Remplacer le composant FileHandler dynamiquement : RequestHandler rh = new FileAndDirRequestHandler(); rd.unbindfc("h0"); rd.bindfc("h0", rh); Le RequestDispatcher (composant englobant) doit être suspendu pendant l'opération 26

27 Cycle de vie Interface LifeCycleController : 1ère solution public class RequestDispatcher implements RequestHandler, BindingController, LifeCycleController { private boolean started; private int counter; public String getfcstate () { return started? STARTED : STOPPED; } public synchronized void startfc () { started = true; notifyall(); } public synchronized void stopfc () { while (counter > 0) { wait(); } started = false; } public void handlerequest (Request r) throws IOException { synchronized (this) { while (!started) { wait(); } ++counter; } try { // original code } finally { synchronized (this) { --counter; if (counter == 0) { notify(); } } } } // rest of the class unchanged 27

28 Reconfiguration: cycle de vie Interface LifeCycleController : autres solutions Implémenter l'interface dans une (sous) classe séparée Meilleure séparation des aspects Composants déployables avec ou sans gestion du cycle de vie Générer cette classe ou cette sous classe automatiquement Génération de code statique ou dynamique Dans le contrôleur LifeCycleController BindingController RequestHandler 28

29 Reconfiguration : autres APIs Avant de stopper ou de reconfigurer un composant, il faut obtenir sa référence D'où les interfaces d'introspection (et de reconfiguration) suivantes : public interface Component { Object[] getfcinterfaces (); Object getfcinterface (String itfname); Type getfctype (); } public interface ContentController { Object[] getfcinternalinterfaces (); Object getfcinternainterface(string itfname); Component[] getfcsubcomponents (); void addfcsubcomponent (Component c); void removefcsubcomponent(component c); } Une interface Fractal implante à la fois l'interface Interface et l'interface métier, ce qui explique le type Object. 29

30 30 Quelques choix de déploiement BC BC BC BC LC BC LC LC LC LC BC LC LC BC C LC BC C LC C LC C LC C LC BC C LC C LC BC C LC CC BC C LC CC BC C LC CC BC C LC CC BC C C BC C C C BC C C BC C CC BC C CC BC C CC BC C CC

31 Quelques choix de déploiement C CC BC LC C BC LC C BC LC C LC C LC C LC C BC LC C LC 31

32 En résumé Les composants Encapsulent du code fonctionnel Possèdent des interfaces (requises et fournies) Possèdent un ensemble de contrôleurs Les contrôleurs Fournissent une API de gestion des composants (non fonctionnelles) L'ADL est un langage de description des composants des assemblages de composants 32

33 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants avec l'api Langage de description d'architecture Reconfiguration dynamique Conclusion 33

34 Modèle : fondations Composant Fractal : Entité à l'exécution Par exemple, en Java, des objets et non pas des classes ou des.jar De n'importe quel type Service, ressource, donnée, activité, processus, protocole, liaison, Sans cible ni granularité particulière Application, intergiciel (middleware), système d exploitation 34

35 Modèle : structure externe De l extérieur, un composant Fractal : Est une boite noire, Avec des points d accès appelés interfaces (externes) Chaque interface à un nom (unique dans le composant) Une signature (ensemble d opérations i.e. méthodes en Java) Un rôle (client, serveur ou contrôle) component, Component interfaces de contrôle interfaces serveur -ou fournies -reçoivent des appels -à gauche par convention s, I t, J u, I v, I w, K interfaces clientes -ou requises -émettent des appels -à droite par convention 35

36 Modèle : structure externe Composant de base : Aucune interface de contrôle => pas d'introspection Équivalent à un objet au sens des langages orienté objets Premier niveau de contrôle : introspection Introspection des composants : Interface Component Donne accès à la liste des interfaces d'un composant Introspection des interfaces : Interface Interface Donne accès au nom d'une interface Donne accès à l'interface Component du composant Autres niveaux de contrôle : BindingController, LyfeCycleController, ContentController... 36

37 Modèle : structure interne composant composite A l intérieur, un composant : À un contrôleur et un contenu Contenu Composants primitifs Composants composites Composants partagés Le contrôleur peut (entre autres) : contenu contrôleur composant primitif Fournir des fonctions d introspection et de reconfiguration Intercepter les appels d opération entrants et sortants Pour les aspects non fonctionnels (cycle de vie, transactions, sécurité, ) Modifier le comportement de ses sous contrôleurs 37

38 Modèle : structure interne Liaisons Liaison primitive Lie une interface cliente à une interface serveur Dans le même espace d adressage Liaison multiple Lie une interface cliente À un nombre arbitraire d interface serveur Liaison composite Est formée d'un ensemble de composants de liaisons Liaisons normales, d import et d export 38

39 Modèle : structure interne Interfaces internes Interfaces du contrôleur Visibles seulement des sous composants Interfaces complémentaires Deux interfaces internes et externes De même nom et même signature, mais de rôle opposés interfaces complémentaires liaison d'export Exporte une interface d'un sous composant à l'extérieur du composant englobant liaison d'import Importe une interface externe à l'intérieur d'un composant composite 39

40 Modèle : typage Type de composant ensemble de types d interface non modifiable à l exécution c, J Type d interface nom signature contingence obligatoire, optionnelle cardinalité singleton, collection s, I c : interface de type singleton c1, J c2, J c3, J c : interface de type collection 40

41 Modèle : API Le modèle se définit principalement au travers de ses API de contrôle 41

42 Modèle : API d'introspection Interface de contrôle pour la découverte d'interfaces Les interfaces ont un nom (valide dans le composant qui possède l'interface) Les interfaces sont typées (interface fonctionnelle et Interface Fractal) public interface Component { Object[] getfcinterfaces (); Object getfcinterface (String itfname) throws NoSuchInterfaceException; Type getfctype (); } public interface Interface { String getfcitfname (); Type getfcitftype (); Component getfcitfowner (); boolean isfcinternalitf (); } public interface Type { boolean isfcsubtypeof (Type type); } 42

43 Modèle : API de gestion des liaisons Interface de gestion des liaisons entre interfaces de composants Les interfaces liées doivent être dans le même composant composite englobant Les liaisons complexes peuvent impliquer des composants de liaison interface BindingController { String[] listfc (); Object lookupfc (string clientitfname) throws NoSuchInterfaceException; void bindfc (String clientitfname, Object serveritf) throws NoSuchInterfaceException, IllegalBindingException, IllegalLifeCycleException; void unbindfc (String clientitfname) throws NoSuchInterfaceException, IllegalBindingException, IllegalLifeCycleException; } 43

44 Modèle : API de gestion du contenu Interface de gestion de la structure hiérarchique des composants Gestion des liaisons entre sous et super composants interface ContentController { Object[] getfcinternalinterfaces (); Object getfcinternalinterface (String itfname) throws NoSuchInterfaceException; Component[] getfcsubcomponents (); void addfcsubcomponent (Component c) throws IllegalContentException, IllegalLifeCycleException; void removefcsubcomponent (Component c) throws IllegalContentException, IllegalLifeCycleException; } interface SuperController { Component[] getfcsupercomponents (); } 44

45 Modèle : API de gestion d'attributs Les attributs sont des propriétés configurables des composants interface AttributeController { } interface MyAttributeController extends AttributeController { int getmyattributex (); void setmyattributex (int newattributex); } 45

46 Modèle : API de gestion du cycle de vie Permet d'arrêter / démarrer des composants Gère 2 états STARTED et STOPPED Peut s'appuyer sur l'arrêt/démarrage de threads ou de sous composants interface LifeCycleController { string getfcstate (); void startfc () throws IllegalLifeCycleException; void stopfc () throws IllegalLifeCycleException; } 46

47 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants avec l'api Langage de description d'architecture Reconfiguration dynamique Conclusion 47

48 Déploiement : avec l API Component boot = Fractal.getBootstrapComponent(); class Fractal static getbootstrapcomponent interface Component Object[] getfcinterfaces Object getfcinterface getfctype interface Interface Component getfcitfowner getfcitfname m rcomp m ccomp s s scomp getfcitftype isfcinternalitf 48

49 Déploiement : avec l API TypeFactory tf = Fractal.getTypeFactory(boot); interface Component Interface[] getfcinterfaces Interface getfcinterface getfctype TypeFactory createfcinterfacetype createfctype On devrait écrire (TypeFactory)boot.getFcInterface("type-factory"); 49

50 Déploiement : avec l API ComponentType rtype = tf.createfctype(new InterfaceType[] { tf.createfcitftype("m", "pkg.main", false, false, false)}); TypeFactory createfcinterfacetype createfctype ComponentType extends Type getfcinterfacetypes getfcinterfacetype InterfaceType extends Type getfcitfname getfcitfsignature isfcclientitf isfcoptionalitf isfccollectionitf m m ccomp s s scomp rcomp 50

51 Déploiement : avec l API ComponentType ctype = tf.createfctype(new InterfaceType[] { tf.createfcitftype("m", "pkg.main", false, false, false), tf.createfcitftype("s", "pkg.service", true, false, false)}); ComponentType stype = tf.createfctype(new InterfaceType[] { tf.createfcitftype("s", "pkg.service", false, false, false), tf.createfcitftype("attribute-controller","pkg.serviceattributes", )}); nom signature isclient isoptional iscollection m m ccomp s s scomp rcomp 51

52 Déploiement : avec l API GenericFactory gf = Fractal.getGenericFactory(boot); GenericFactory newfcinstance 52

53 Déploiement : avec l API Component rcomp = gf.newfcinstance(rtype, "composite", null); LifeCycleController, BindingController, ContentController contenu m rcomp 53

54 Déploiement : avec l API Component ccomp = gf.newfcinstance(ctype, "primitive", "pkg.clientimpl"); LifeCycleController, BindingController m m ccomp s rcomp 54

55 Déploiement : avec l API Component scomp = gf.newfcinstance(stype, "parametricprimitive", "pkg.serverimpl"); si attributs m m ccomp s s scomp rcomp 55

56 Déploiement : avec l API Fractal.getContentController(rComp).addFcSubComponent(cComp); ContentController getfcinternalinterfaces getfcinternalinterface getfcsubcomponents addfcsubcomponent removefcsubcomponent m m ccomp s s scomp rcomp 56

57 Déploiement : avec l API Fractal.getContentController(rComp).addFcSubComponent(sComp); m m ccomp s s scomp rcomp 57

58 Déploiement : avec l API Fractal.getBindingController(rComp).bindFc( "m", ccomp.getfcinterface("m")); BindingController listfc lookupfc bindfc unbindfc m m ccomp s s scomp rcomp 58

59 Déploiement : avec l API Fractal.getBindingController(cComp).bindFc( "s", scomp.getfcinterface("s")); m m ccomp s s scomp rcomp 59

60 Déploiement : avec l API Fractal.getLifeCycleController(rComp).startFc(); ((pkg.main)rcomp.getfcinterface("m")).main(null); LifeCycleController getfcstate startfc stopfc m m ccomp s s scomp rcomp 60

61 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants avec l'api Langage de description d'architecture Reconfiguration dynamique Conclusion 61

62 Déploiement : Fractal ADL Définition des types de composants <definition name="roottype"> <interface name="m" role="server" signature="pkg.main" contingency="mandatory" cardinality="singleton"/> </definition> <definition name="clienttype"> <interface name="m" role="server" signature="pkg.main"/> <interface name="s" role="client" signature="pkg.service"/> </definition> optionnel 62

63 Déploiement : Fractal ADL Héritage entre définitions <definition name="clienttype" extends="roottype"> <interface name="s" role="client" signature="pkg.service"/> </definition> Est équivalent à : <definition name="clienttype"> <interface name="m" role="server" signature="pkg.main" contingency="mandatory" cardinality="singleton"/> <interface name="s" role="client" signature="pkg.service"/> </definition> 63

64 Déploiement : Fractal ADL Héritage entre définitions (suite) <definition name="extendedclienttype" extends="clienttype"> <interface name="s" role="client" signature="pkg.extendedservice"/> </definition> Est équivalent à : <definition name="extendedclienttype"> <interface name="m" role="server" signature="pkg.main" contingency="mandatory" cardinality="singleton"/> <interface name="s" role="client" signature="pkg.extendedservice"/> </definition> 64

65 Déploiement : Fractal ADL Définition des composants primitifs <definition name="basicclient" extends="clienttype"> <content class="pkg.clientimpl"/> </definition> <definition name="basicserver" extends="servertype"> <content class="pkg.serverimpl"/> <attributes signature="pkg.serviceattributes"> <attribute name="header" value="-> "/> <attribute name="count" value="1"/> </attributes> </definition> 65

66 Déploiement : Fractal ADL Définition des composants composites <definition name="basicclientserver" extends="roottype"> <component name="client" definition="basicclient"/> <component name="server" definition="basicserver"/> <binding client="this.m" server="client.m"/> <binding client="client.s" server="server.s"/> </definition> m m client s s server BasicClientServer 66

67 Déploiement : Fractal ADL Définition des composants composites (suite) <definition name="abstractclientserver" extends="roottype"> <component name="client" definition="clienttype"/> <!-- pas d'implémentation --> <component name="server" definition="servertype"/> <!-- pas d'implémentation --> <binding client="this.m" server="client.m"/> <binding client="client.s" server="server.s"/> </definition> <definition name="basicclientserver" extends="abstractclientserver"> <component name="client" definition="basicclient"/> <component name="server" definition="basicserver"/> </definition> 67

68 Déploiement : Fractal ADL Création d'un composant avec l'adl (en Java) en ligne de commande java org.objectweb.fractal.adl.launcher template par programme Factory f = FactoryFactory.getFactory(FRACTAL_BACKEND); Component c = (Component)f.newComponent("template", null); les définitions doivent être dans le CLASSPATH 68

69 Composants primitifs : utilisation d'annotation : une interface public interface Service { : un composant Fournit les interfaces qu'il public class ServerA implements Service { : une interface fournie importée (pré-compilée) signature=java.lang.runnable.class, cardinality=cardinality.singleton, contingency=contingeny.mandatory)} public class Client implements Runnable { } 69

70 Composants primitifs : utilisation d'annotation une propriété configurable d'un composant Génère un controller CompAttibuteController (pour un composant private String message : une interface = "service", cardinality = Cardinality.COLLECTION) private Map<String,Service> services = new : une méthode à exécuter lors d'un private void init() {... } 70

71 Plan Introduction Premier aperçu Définition du modèle Déploiement des composants Langage de description d'architecture Reconfiguration dynamique Conclusion 71

72 Reconfiguration dynamique ContentController rcompcc = Fractal.getContentController(rComp); Component ccomp = rcompcc.getfcsubcomponents()[0]; Component scomp = rcompcc.getfcsubcomponents()[1]; Fractal.getLifeCycleController(rComp).stopFc(); Fractal.getBindingController(cComp).unbindFc("s"); m m ccomp s s scomp rcomp 72

73 Reconfiguration dynamique rcompcc.removefcsubcomponent(scomp); m m ccomp s rcomp 73

74 Reconfiguration dynamique scomp = gf.newfcinstance(stype, "primitive", "pkg.newserverimpl"); rcompcc.addfcsubcomponent(scomp); m m ccomp s s scomp rcomp 74

75 Reconfiguration dynamique Fractal.getBindingController(cComp). bindfc("s", scomp.getfcinterface("s")); Fractal.getLifeCycleController(rComp).startFc(); m m ccomp s s scomp rcomp 75

76 Bilan de Fractal Principes architecturaux pour l ingénierie des systèmes Construction par composition de briques logicielles : les composants Vision homogène de la topologie des systèmes logiciels applications, intergiciel, systèmes d exploitation Gestion uniforme des ressources, des activités et des domaines de contrôle Couverture du cycle de vie complet : - développement, déploiement, supervision Réalisation d un support d exécution pour composants : Fractal Julia Le modèle peut être mis en oeuvre dans de nombreux environnements (Think, Plasma...) des tutoriaux en ligne... 76

Composants logiciels Introduction aux composants

Composants logiciels Introduction aux composants Des objets aux composants Composants logiciels Introduction aux composants Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia! Notion de composant

Plus en détail

LOG4430 : Architecture logicielle et conception avancée

LOG4430 : Architecture logicielle et conception avancée LOG4430 : Architecture logicielle et conception avancée Abdou Maiga Composition et architectures par composants Département de génie informatique et de génie logiciel École Polytechnique de Montréal Guéhéneuc

Plus en détail

Introduction au Déploiement

Introduction au Déploiement Introduction au Déploiement Noël De Palma - Projet SARDES - INRIA - IMAG LSR Remerciement à d. donsez 03/03/06 PLAN Définition et problématique OSGI FRACTAL JADE Conclusion 03/03/06 2 Définition Environnement

Plus en détail

Modélisation et évaluation de performance des systèmes basés composants

Modélisation et évaluation de performance des systèmes basés composants 9 ième Atelier en Evaluation de Performances Aussois 1-4 juin 2008 Modélisation et évaluation de performance des systèmes basés composants N.Salmi, P.Moreaux, M.Ioualalen LISTIC, Polytech'Savoie LSI, USTHB

Plus en détail

Package java.net. Interfaces Interface ContentHandlerFactory Interface SocketImplFactory Interface URLStreamHandlerFactory

Package java.net. Interfaces Interface ContentHandlerFactory Interface SocketImplFactory Interface URLStreamHandlerFactory Package java.net Classes class ContentHandler class DatagramPacket class DatagramSocket class InetAddress final class ServerSocket final class Socket class SocketImpl final class URL abstract class URLConnection

Plus en détail

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI

objectif : plan : Java, CORBA et RMI A. Le Grand,1997 1 JAVA, CORBA et RMI JAVA, CORBA et RMI objectif : développer des applications client/serveur incluant des objets répartis Java / CORBA : client/serveur hétérogènes Java / RMI : client/serveur homogènes plan : l architecture

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

CEG3585/CEG3555 Tutorat 2. Été 2015

CEG3585/CEG3555 Tutorat 2. Été 2015 CEG3585/CEG3555 Tutorat 2 Été 2015 Architecture TCP/IP Les applications sont développées avec le socket API (en Java les classes Socket et ServerSocket) Adresse socket: Port TCP Adresse IP Les deux adresses

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

WildCAT : un cadre générique pour la construction d'applications sensibles au contexte

WildCAT : un cadre générique pour la construction d'applications sensibles au contexte WildCAT : un cadre générique pour la construction d'applications sensibles au contexte Pierre-Charles David France Télécom, Recherche & Développement Réunion Adapt, Paris 2006-04-06 Plan 1 Introduction

Plus en détail

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

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

Plus en détail

FROGi : Déploiement de composants Fractal sur OSGi

FROGi : Déploiement de composants Fractal sur OSGi FROGi : Déploiement de composants Fractal sur OSGi Humberto Cervantes, Mikael Désertot, Didier Donsez Universidad Autonoma Metropolitana-Iztapalapa, San Rafael Atlixco Nº 186, Col. Vicentina, C.P. 09340

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

Introduction : les processus. Introduction : les threads. Plan

Introduction : les processus. Introduction : les threads. Plan IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Figure 1. Structure répartie

Figure 1. Structure répartie Chapitre I: Applications Réparties et Middleware 1. Définition d une application répartie Une application répartie est constituée d un ensemble de processus (d objets, d agents, d acteurs) s exécutant

Plus en détail

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java Info0604 Programmation multi-threadée Cours 5 Programmation multi-threadée en Java Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 février 2015 Plan

Plus en détail

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Composants logiciels Exemples : Java Beans, Enterprise Java Beans Composants logiciels Exemples : Java Beans, Enterprise Java Beans Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia Introduction : évolution

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

pac4j : la librairie de sécurité pour Java par Jérôme LELEU

pac4j : la librairie de sécurité pour Java par Jérôme LELEU pac4j : la librairie de sécurité pour Java par Jérôme LELEU www.parisjug.org Copyright @ 2014 ParisJug. Licence CC - Creatve Commons 2.0 France Paternité - Pas d'utlisaton Commerciale - Partage des Conditons

Plus en détail

SOA facile avec SCA. Christophe Demarey, Damien Fournier. To cite this version: HAL Id: inria-00531338 https://hal.inria.

SOA facile avec SCA. Christophe Demarey, Damien Fournier. To cite this version: HAL Id: inria-00531338 https://hal.inria. SOA facile avec SCA Christophe Demarey, Damien Fournier To cite this version: Christophe Demarey, Damien Fournier. SOA facile avec SCA. Programmez, Programmez, 2010. HAL Id: inria-00531338

Plus en détail

Architecture Logicielle

Architecture Logicielle Architecture Logicielle Chapitre 3: UML pour la description et la documentation d une architecture logicielle Année universitaire 2013/2014 Semestre 1 Rappel L architecture d un programme ou d un système

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Introduction. Réalisation d'une application répartie (fournissant un ou plusieurs services)

Introduction. Réalisation d'une application répartie (fournissant un ou plusieurs services) Intergiciels Introduction Réalisation d'une application répartie (fournissant un ou plusieurs services) Bas niveau : Sockets Haut niveau : Intergiciels (Middleware) Appel de procédure à distance (RPC),

Plus en détail

Programmation par RPC et Java-RMI :

Programmation par RPC et Java-RMI : 2A-SI 3 Prog. réseau et systèmes distribués 3.2 et JavaRMI Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l équipe pédagogique du

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

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

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

2 Chapitre 1 Introduction

2 Chapitre 1 Introduction 1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné

Plus en détail

Architectures logicielles pour les systèmes embarqués temps réel

Architectures logicielles pour les systèmes embarqués temps réel ETR 07 4 septembre 2007 Architectures logicielles pour les systèmes embarqués temps réel Jean-Philippe Babau, Julien DeAntoni jean-philippe.babau@insa-lyon.fr 1/31 Plan Architectures logicielles pour les

Plus en détail

Administration d'infrastructures logicielles avec Jade

Administration d'infrastructures logicielles avec Jade Administration d'infrastructures logicielles avec Jade Daniel Hagimont IRIT, décembre 2006 Contexte Infrastructures logicielles réparties Complexité et hétérogénéité Besoin d administration Fonctions d

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

Etude de cas PLM. Patrice TORGUET IRIT Université Paul Sabatier

Etude de cas PLM. Patrice TORGUET IRIT Université Paul Sabatier Etude de cas PLM Patrice TORGUET IRIT Université Paul Sabatier Plan Exemple PLM Répartition avec Sockets Répartition avec RMI Répartition avec CORBA Répartition avec JMS Répartition avec Java EE Améliorations

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

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

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry. : Java Agent DEvelopment framework Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.fr Introduction à la plateforme JADE 1) Modèle d agent 2) Services 3) Norme FIPA

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Une introduction à la technologie EJB (2/3)

Une introduction à la technologie EJB (2/3) Une introduction à la technologie EJB (2/3) 1 Les singletons des EJB 3.1 1.1 Synchronisation gérée manuellement Depuis la version 3.1, des EJB Statless à instance unique sont maintenant disponibles : ce

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

Plus en détail

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés) Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les

Plus en détail

Programmation client-serveur sockets - RPC

Programmation client-serveur sockets - RPC Master Informatique M Plan de la suite Programmation client-serveur sockets - RPC Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/people/krakowia

Plus en détail

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Messagerie asynchrone et Services Web

Messagerie asynchrone et Services Web Article Messagerie asynchrone et Services Web 1 / 10 Messagerie asynchrone et Services Web SOAP, WSDL SONT DES STANDARDS EMERGEANT DES SERVICES WEB, LES IMPLEMENTATIONS DE CEUX-CI SONT ENCORE EN COURS

Plus en détail

Android et le Cloud Computing

Android et le Cloud Computing Android et le Cloud Computing 1 Plan de l'exposé Rappels sur Android et le cloud Présentation de GCM Notions fondamentales de GCM Construire un projet GCM Ecrire un client GCM (récepteur GCM) Ecrire un

Plus en détail

SOA et Services Web. 23 octobre 2011. SOA: Concepts de base

SOA et Services Web. 23 octobre 2011. SOA: Concepts de base SOA et Services Web 23 octobre 2011 1 SOA: Concepts de base 2 Du client serveur à la SOA N est Nest pas une démarche entièrement nouvelle: années 1990 avec les solutions C/S Besoins d ouverture et d interopérabilité

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

CORBA avec OpenORB. Samir Torki et Patrice Torguet

CORBA avec OpenORB. Samir Torki et Patrice Torguet CORBA avec OpenORB Samir Torki et Patrice Torguet 1 Présentation de CORBA CORBA (Common Object Request Broker Architecture) est un standard décrivant une architecture pour la mise en place d objets distribués.

Plus en détail

M2 FMIN305 - Novembre 2010 CORBA

M2 FMIN305 - Novembre 2010 CORBA FMIN05 - Novembre 0 Ce TD est très largement inspiré de ceux de Gilles Roussel. Vous trouverez beaucoup de choses intéressantes ici : http://www-igm.univ-mlv.fr/ roussel. 1 Horloge distante On souhaite

Plus en détail

1. QCM (40 points) (1h)

1. QCM (40 points) (1h) Examen 1ère session 2012-2013 page 1 NSY 102 - AISL IPST-CNAM Intranet et Designs patterns NSY 102 Vendredi 26 Avril 2013 Durée : 3 heures Enseignants : LAFORGUE Jacques 1. QCM (40 points) (1h) Mode d'emploi

Plus en détail

Création d'un convertisseur SQL SiTools

Création d'un convertisseur SQL SiTools Création d'un convertisseur SQL SiTools 1 - Introduction Un convertisseur permet de transformer la requête SQL, envoyé par la webapp SiTools à la webapp catalog ou l'inverse. C'est à dire que cette conversion

Plus en détail

Service Component Architecture

Service Component Architecture Plan Service Component Architecture (SCA) 1. SCA 1. Principes 2. Modèle de programmation 3. Outils 4. FraSCAti 5. Conclusion Université Lille 1 & INRIA Lionel.Seinturier@univ-lille1.fr 14/02/10 1 2 1.

Plus en détail

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)

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) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net

Synchronisation par. Rappels. Plan. Conditions et moniteurs (1/7) Inf 431 Cours 11. jeanjacqueslevy.net Rappels Inf 431 Cours 11 un processus t (Thread) est un programme qui s exécute Synchronisation par mémoire partagée tstart lance l exécution concurrente de la méthode trun de t tinterrupt signale qu on

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1ère partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Introduction 2 les étapes de la connexion

Plus en détail

Programmation par composants avec Spring

Programmation par composants avec Spring Programmation par composants avec Spring Intervenant : Chouki TIBERMACINE Bureau : LIRMM (E.311) Tél. : 04.67.14.97.24 Mél. : Chouki.Tibermacine@lirmm.fr Web : http://www.lirmm.fr/~tibermacin/ens/gmin30f/

Plus en détail

ARCHITECTURES MATÉRIELLES SYSTÈMES INFORMATIQUES

ARCHITECTURES MATÉRIELLES SYSTÈMES INFORMATIQUES CENTRALISÉE RÉPARTIE mémoire locale mémoire locale mémoire locale mémoire locale mémoire locale mémoire locale processeur processeur processeur processeur processeur processeur instructions messages MÉMOIRE

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

Introduction aux Systèmes Distribués. Introduction générale

Introduction aux Systèmes Distribués. Introduction générale Introduction aux Systèmes Distribués Licence Informatique 3 ème année Introduction générale Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Plan

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184 Frédéric BERTIN fbertin@neotilus.com Présentaion : Mobile 3D Graphics API JSR 184 M3G :présentation Package optionnel de l api J2ME. Prend

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

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.

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. ASTRIUM - Toulouse JEE Formation 2013 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. Figure 1 Architecture

Plus en détail

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.

Plus en détail

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

Composants Logiciels. Le modèle de composant de CORBA. Plan Composants Logiciels Christian Pérez Le modèle de composant de CORBA Année 2010-11 1 Plan Un rapide tour d horizon de CORBA 2 Introduction au modèle de composant de CORBA Définition de composants CORBA

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 46 NFP111 Systèmes et Applications Réparties Cours 2 - Les appels de procédure distants (Partie 1) Claude Duvallet Université du Havre UFR Sciences et Techniques

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Remote Method Invocation en Java (RMI)

Remote Method Invocation en Java (RMI) Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Architecture des applications

Architecture des applications Architecture des applications Table des matières 1 Introduction 1 2 Les classes valeurs 2 2.1 Les Javaeans............................................. 2 2.2 Les différents types de Javaeans...................................

Plus en détail

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

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques

Tolérance aux Fautes des Grappes d Applications J2EE. Applications Internet dynamiques Application statique Tolérance aux Fautes des Grappes d Applications J2EE Sara Bouchenak Sacha Krakowiak, Noël de Palma, Stéphane Fontaine Projet SARDES INRIA IMAG CFSE'4, 6-8 avril 2005 Tolérance aux

Plus en détail

Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau)

Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau) Année 2008-2009 Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau) Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Introduction

Plus en détail

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

CORBA. (Common Request Broker Architecture)

CORBA. (Common Request Broker Architecture) CORBA (Common Request Broker Architecture) Projet MIAGe Toulouse Groupe 2 1 CORBA, introduction (1/4) Les systèmes répartis permettent de créer des applications basées sur des composants auto-gérables,

Plus en détail

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Durée de l'épreuve : 2 heures TRÈS IMPORTANT : respectez l'ordre des questions. La lisibilité sera un critère important pour

Plus en détail

TP 7 Client REST Java - OAuth

TP 7 Client REST Java - OAuth TP 7 Client REST Java - OAuth Xavier de Rochefort xderoche@labri.fr - labri.fr/~xderoche 15 mai 2014 Résumé Dans le TP5 nous avons comment effectué des requêtes à un service tiers et comment permettre

Plus en détail

Cours de Programmation Orientée Objet

Cours de Programmation Orientée Objet Contrat et application à la librairie standard JAVA mailto:marc.champesme@lipn.univ-paris13.fr 6 février 2011 1 Qu est ce qu une classe? Un exemple en JAVA Résumé Expression du contrat Par des commentaires

Plus en détail

Programmation par composants (1/3) Programmation par composants (2/3)

Programmation par composants (1/3) Programmation par composants (2/3) Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant

Plus en détail

Programmation orientée objet et interfaces web en PHP

Programmation orientée objet et interfaces web en PHP Programmation orientée objet et interfaces web en PHP La programmation objet avec PHP5 Bases de données et interfaces web Fonctionnement des sessions Nicolas Moyroud Cemagref - UMR TETIS 26 Juin 2008 Programmation

Plus en détail

RESEAUX. Communications dans les systèmes Centralisés vs Répartis. Le modèle OSI : 7 couches Open System Interconnexion. Plan.

RESEAUX. Communications dans les systèmes Centralisés vs Répartis. Le modèle OSI : 7 couches Open System Interconnexion. Plan. RESEAUX Communications dans les systèmes Centralisés vs Répartis Espace utilisateur P1 P2 P1 P2 Programmation par sockets Espace noyau Systèmes centralisés Systèmes répartis Nécessité d avoir une mémoire

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages AntLR - Générateur d analyseurs Claude Moulin Université de Technologie de Compiègne Printemps 2015 Sommaire 1 Introduction 2 AntLR ANTLR : ANother Tool for Language Recognition URL

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail