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

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

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

Transcription

1 Dis papa, c est quoi un bus logiciel réparti? LIFL IRCICA Equipe GOAL Octobre Des sockets aux bus logiciels répartis

2 1 0. Une application répartie

3 2 Objectif Découvrir la notion et l architecture d un bus logiciel réparti, en concevant un petit bus simple from scratch. Construire un bus logiciel en 10 étapes : Chaque étape est un raffinement de la précédente Etape i + 1 = meilleure structuration de l étape i

4 3 Les services Service 1 : Hello world Une méthode hello avec un paramètre de type chaîne et retourne une chaîne : hello, + paramètre Deux méthodes lower et upper qui retournent le paramètre de type chaîne en minuscule ou majuscules Service 2 : Nombres premiers Calcule si un nombre est premier et retourne un booléen Calcule le carré d un nombre passé en paramètre Calcule la division de deux nombres passés en paramètre

5 4 1. Au début était la socket

6 5 Principe Deux programmes écrits en deux classes Java Une pour le serveur Server.java Une pour le client Client.java Dans chaque classe est implémenté Le code fonctionnel : manipulation des chaînes Le code technique : construction / analyse des messages réseau

7 6 Architecture version 1 Client Server Réseau

8 7 Interactions version 1 Client Server Servant connect () send (request) send (response)

9 8 Côté serveur Initialisation du réseau Instanciation d une socket serveur Gestion des requêtes Attente de connexion (accept) Initialisation des flux d entrée et de sortie Evaluation des requêtes Lecture de la requête sur le flux d entrée Création de la chaîne à retourner Ecriture de la réponse sur le flux de sortie

10 9 Code serveur (i) package step1 ; import java.io.* ; import java.net.* ; public class Server { private ServerSocket asock ; public Server () throws Exception { this.asock = new ServerSocket (12345) ; public static void main (String args[]) { Server s = new Server () ; s.run () ;

11 10 Code serveur (ii) public void run () throws Exception { while (true) { Socket sock = this.asock.accept () ; BufferedReader in = new BufferedReader (new InputStreamReader(sock.getInputStream ())); DataOutputStream out = new DataOutputStream (sock.getoutputstream ()); String msg = in.readline () ; String res = "Hello, " + msg + "\n" ; // fonctionnel out.writebytes (res) ;

12 11 Côté client Initialisation du réseau Instanciation d une socket de communication (connexion implicite) Gestion de l échange réseau Initialisation des flux d entrée et de sortie Demande de service Ecriture de la requête sur le flux de sortie Lecture de la réponse sur le flux entrée Affichage de la chaîne retournée Fermeture de la connexion

13 12 Code client (i) package step1 ; import java.io.* ; import java.net.* ; public class Client { private Socket sock ; public Client () throws Exception { this.sock = new Socket ("localhost", 12345) ; public static void main (String args[]) throws Exception { Client c = new Client () ; c.run (args[0]) ;

14 13 Code client (ii) public void run (String msg) throws Exception { BufferedReader in = new BufferedReader (new InputStreamReader(this.sock.getInputStream ())); DataOutputStream out = new DataOutputStream (this.sock.getoutputstream ()); out.writebytes (msg + "\n") ; String res = in.readline () ; System.out.println ("Server replied: " + res) ; this.sock.close();

15 14 Bénéfices et limitations Bénéfices Invocation d un service distant (hello world) Permet de réaliser des applications client / serveur Limitations Une seule connexion cliente à la fois Beaucoup de code très technique / peu de code métier (40 lignes de code technique pour une ligne de code métier) Un beau plat de spaghetti, non objet et difficilement évolutif

16 15 2. Gestionnaire de connexions

17 16 Principe Du côté serveur Etablissement de la connexion par le serveur (accept) La gestion de la connexion est déléguée Apparition d un objet Manager qui gère une connexion Du côté client Rien ne change pour le moment Réutilisation du client de l étape 1

18 17 Architecture version 2 Client Manager Réseau

19 18 Interactions version 2 Client Server Manager Servant create () connect () process (sock) send (request) send (response)

20 19 Côté serveur (Serveur) Intialisation De la socket d administration / serveur Création d un manager de connexions Gestion des requêtes Attente de connexion Délégation au manager

21 20 Côté serveur (Manager) Initialisation Rien de spécial Gestion des requêtes Initialisation du flux d entrée et de sortie Evaluation de la requête Lecture de la requête sur le flux entrée Création de la chaîne à retourner Ecriture de la réponse sur le flux de sortie

22 21 Code Serveur (i) package step2 ; import java.io.*; import java.net.*; public class Server { private ServerSocket asock ; private Manager mgr ; public Server () throws Exception { this.asock = new ServerSocket (12345) ; this.mgr = new Manager () ;

23 22 Code Serveur (ii) public void run () throws Exception { while (true) { Socket sock = this.asock.accept () ; this.mgr.process (sock) ; public static void main(string argv[]) throws Exception { Server s = new Server () ; s.run () ;

24 23 Code Manager package step2 ; import java.io.* ; import java.net.* ; public class Manager { public Manager () throws Exception { public void process (Socket sock) throws Exception { BufferedReader in =... DataOutputStream out =... String msg = in.readline () ; String res = "Hello, " + msg + "\n" ; out.writebytes (res) ;

25 24 Bénéfices et limitations Bénéfices Ebauche de structuration Distinction entre établir une connexion et la gérer Limitations Le manager ne sait répondre qu à une invocation Le code n est pas encore objet (i.e. le service)

26 25 3. Décodage des requêtes

27 26 Principe Côté serveur Le manager propose plusieurs services Le manager gère plusieurs requêtes par connexion Côté client Utilise les services séquentiellement Réalise plusieurs invocations avec la même connexion

28 27 Architecture version 3 Client Manager Réseau

29 28 Interactions version 3 Client Server Manager Servant create () connect () process (sock) send (request) send (response) send (request) send (response) send (request) send (response)

30 29 Côté serveur Gestion des requêtes par le Manager Initialisation des flux d entrée et de sortie Evaluation de la requête Lecture de la requête sur flux d entrée Décodage de la requête (quel service?) requête = numéro de service + arguments Evaluation du service demandé Ecriture de la réponse sur flux de sortie

31 30 Code Manager (i) public void process (Socket sock) throws Exception { BufferedReader in =... DataOutputStream out =... while (true) { String msg = in.readline () ; if (msg == null) // end of client connexion break ; String res ; switch (msg.charat (0)) {

32 31 Code Manager (ii) case 0 : res = "hello, " + msg.substring (1) + "\n" ; break ; case 1 : res = msg.substring (1).toLowerCase () + "\n" ; break ; case 2 : res = msg.substring (1).toUpperCase () + "\n" ; break ; default: res = "Unknown operation requested" ; out.writebytes (res) ;

33 32 Côté client Initialisation du réseau Instanciation de la socket de communication Gestion des échanges réseaux Intialisation des flux d entrée et de sortie Demande de service (x3) Requête réseau = numéro de service + arguments Ecriture requête, lecture réponse et affichage Fermeture de la connexion

34 33 Code Client (i) public void run (String msg) throws Exception { BufferedReader in =... DataOutputStream out =... String res ; out.writebytes ("0" + msg + "\n") ; res = in.readline () ; System.out.println ("Server replied (hello): " + res) ;

35 34 Code Client (ii) out.writebytes ("1" + msg + "\n") ; res = in.readline () ; System.out.println ("Server replied (lower): " + res) ; out.writebytes ("2" + msg + "\n") ; res = in.readline () ; System.out.println ("Server replied (upper): " + res) ; this.sock.close();

36 35 Bénéfices et limitations Bénéfices Un seul serveur propose plusieurs services Utilisation d une seule connexion par client Limitations Le code du service n est toujours pas objet Le code client est toujours un plat de spaghetti

37 36 4. Passage à un service objet

38 37 Principe Côté serveur Le service est implémenté comme un objet : le Servant Le manager est dédié au réseau décode les requêtes invoque le Servant Côté client Rien ne change

39 38 Architecture version 4 Client Servant Manager Réseau

40 39 Interactions version 4 Client Server Manager Servant create () create (servant) connect () process (sock) send (request) hello (str) send (response)

41 40 Côté serveur Initialisation du Manager dans le serveur Passage du Servant comme paramètre Gestion des requêtes par le Manager Initialisation des flux Evaluation des requêtes lecture et décodage de la requête invocation du Servant écriture de la réponse

42 41 Code Server public class Server { private ServerSocket asock ; private Manager mgr ; public Server () throws Exception { this.asock = new ServerSocket (12345) ; this.mgr = new Manager (new Servant ()) ; // unchanged

43 42 Code Servant public class Servant { public String hello (String msg) { return "hello, " + msg ; public String lower (String msg) { return msg.tolowercase () ; public String upper (String msg) { return msg.touppercase () ;

44 43 Code Manager (i) public class Manager { private Servant ref ; public Manager (Servant s) throws Exception { this.ref = s ; public void process (Socket sock) throws Exception { BufferedReader in =... DataOutputStream out =... while (true) { String msg = in.readline () ; if (msg == null) // no more to be read break ; String res ; switch (msg.charat (0)) {

45 44 Code Manager (i) case 0 : res = this.ref.hello (msg.substring (1)) + "\n" ; break ; case 1 : res = this.ref.lower (msg.substring (1)) + "\n" ; break ; case 2 : res = this.ref.upper (msg.substring (1)) + "\n" ; break ; default: res = "Unknown operation requested" ; out.writebytes (res) ;

46 45 Bénéfices et limitations Bénéfices Découplage complet entre code technique et code métier (côté serveur) Les services sont implantés comme des objets (Servant) Limitations L interface du service n est pas connue comme telle du client Le code client n est toujours pas objet

47 46 5. Passage à l objet du côté client

48 47 Principe Côté serveur Définition d un contrat à partager avec le client Le servant implémente le contrat commun Côté client Utilisation d un objet représentant le service : Proxy Même interface que le service Encapsule le code technique de gestion du réseau

49 48 Architecture version 5 Client Servant Proxy Contrat Manager Réseau

50 49 Interactions version 5 Client Proxy Server Manager Servant create () create (servant) init () connect () process (sock) hello (str) send (message) hello (str) send (message) return

51 50 Côté serveur Modifications Définition d un contrat de service Le servant implémente le contrat de service Contrat de service Définit toutes les méthodes accessibles à distance Chaque méthode peut lever une exception liée au réseau

52 51 Contrat de service package step5 ; interface Service { public String hello (String msg) throws Exception ; public String lower (String msg) throws Exception ; public String upper (String msg) throws Exception ;

53 52 Modification du Servant public class Servant implements Service { public String hello (String msg) throws Exception { return "hello, " + msg ; public String lower (String msg) throws Exception { return msg.tolowercase () ; public String upper (String msg) throws Exception { return msg.touppercase () ;

54 53 Côté client Programme client Instancie un proxy Invocation des méthodes du proxy Mise en œuvre du Proxy Implémente l interface de contrat Initialise la connexion au serveur Gère toute la partie échanges réseaux

55 54 Code du Client public class Client { private Service ref ; public Client () throws Exception { this.ref = (Service) new Proxy () ; public void run (String msg) throws Exception { System.out.println (this.ref.hello (msg)) ; System.out.println (this.ref.lower (msg)) ; System.out.println (this.ref.upper (msg)) ; // unchanged

56 55 Code du Proxy (i) public class Proxy implements Service { private Socket sock ; private BufferedReader in ; private DataOutputStream out ; public Proxy () throws Exception { this.sock = new Socket ("localhost", 12345) ; this.in =... this.out =... public String hello (String msg) throws Exception { this.out.writebytes ("0" + msg + "\n") ; String res = this.in.readline () ; return res ;

57 56 Code du Proxy (ii) public String lower (String msg) throws Exception { this.out.writebytes ("1" + msg + "\n") ; String res = this.in.readline () ; return res ; public String upper (String msg) throws Exception { this.out.writebytes ("2" + msg + "\n") ; String res = this.in.readline () ; return res ; protected void finalize () throws Throwable { this.sock.close () ;

58 57 Bénéfices et limitations Bénéfices Du point de vue du client la répartition est masquée Le service est vu et manipulé comme un objet local Limitations Comment utiliser des paramètres autres que de type String Comment désigner un service distant (sans le coder en dur)

59 58 6. Encodage et décodage des données

60 59 Principe Traduction des paramètres Empaquetage : application vers les messages réseau type de base vers représentation chaîne Dépaquetage : messages réseau vers application représentation chaîne vers type de base Opérations de traduction symétriques Serveur : dépaquetage des paramètres, empaquetages des valeurs de retour Client : empaquetage des paramètres, dépaquetages des valeurs de retour

61 60 Architecture version 6 Client Servant Proxy Contrat Manager Réseau

62 61 Interactions version 6 Client Proxy Server Manager Servant create () create (servant) init () connect () process (sock) sqr (val) marshal () send (message) unmarshall () sqr (val) send (message) marshall () return unmarshall ()

63 62 Côté serveur Modification du contrat de service Offre une opération supplémentaire Calcul du carré d un entier (retourne un entier) Modification de la mise en œuvre Manager : message réseau supplémentaire et décodage entier Servant : implémentation de la nouvelle méthode

64 63 Contrat Service interface Service { public String hello (String msg) throws Exception ; public String lower (String msg) throws Exception ; public String upper (String msg) throws Exception ; public int sqr (int a) throws Exception ;

65 64 Code Manager public void process (Socket sock) throws Exception { // unchanged switch (msg.charat (0)) { // unchanged for 0-2 case 3 : int val = Integer.parseInt (msg.substring (1)) ; res = "" + this.ref.sqr (val) + "\n" ; break ; default: res = "Unknown operation requested" ; out.writebytes (res) ;

66 65 Code Servant public class Servant implements Service { // unchanged public int sqr (int val) throws Exception { return val * val ;

67 66 Côté client Modification de la mise en œuvre Le proxy implémente la nouvelle opération Le programme client utilise la nouvelle opération Mise en œuvre du Proxy Empaquetage de l entier paramètre dans une chaîne Dépaquetage de l entier contenu dans la chaîne retour

68 67 Code Proxy public class Proxy implements Service { // unchanged public int sqr (int val) throws Exception { this.out.writebytes ("3" + val + "\n") ; String res = this.in.readline () ; return Integer.parseInt (res) ;

69 68 Code Client public class Client { // unchanged public void run (String msg) throws Exception { System.out.println (this.ref.hello (msg)) ; System.out.println (this.ref.lower (msg)) ; System.out.println (this.ref.upper (msg)) ; int res = this.ref.sqr (123) ; System.out.println (res) ;

70 69 Bénéfices et limitations Bénéfices Utilisation transparente des types de base autres que String Vision objet d une application répartie Limitations Comment désigner un service distant sans le coder en dur Comment écrire un client pouvant utiliser plusieurs services

71 70 7. Notion de référence distante

72 71 Principe Désignation d un service distant Equivalent à une référence Java mais en réparti Permet d établir une connexion avec un service Définition d une référence (base) Hôte distant : adresse IP Serveur distant : port IP

73 72 Architecture version 7 Client Servant Proxy Contrat Manager Réseau

74 73 Interactions version 7 Client Proxy Server Manager Servant create () create (servant) init () connect () process (sock) hello (str) marshal () send (message) unmarshall () hello (str) send (message) marshall () return unmarshall ()

75 74 Côté client Fourniture de la référence du serveur Propriété java contenant la référence Référence donnée sous la forme machine:port Ajout d un méthode de gestion des références Analyse la référence Instancie et initialise le Proxy d accès au service # utilisation avec une reference > java -Dservice.reference=localhost:12345 \ step7.client DrNo

76 75 Code Client public class Client { private Service ref ; public Client () throws Exception { this.ref = (Service) this.ref2proxy () ; // other methods unchanged

77 76 Code Client public Proxy ref2proxy () throws Exception { Properties props = System.getProperties () ; String ref = props.getproperty ("service.reference") ; if (ref == null) throw new Exception ("no server reference given") ; String parts[] = ref.split (":") ; if (parts.length < 2) throw new Exception ("malformed reference") ; String host = parts [0] ; int port = Integer.parseInt (parts [1]) ; return new Proxy (host, port) ;

78 77 Bénéfices et limitations Bénéfices Le code client n est pas lié à une instance de serveur Possibilité d utiliser différents serveurs Limitations Un seul objet service par serveur Un client ne peut utiliser qu un objet à la fois Le client doit connaître le type de la référence à la compilation

79 78 8. Notion d adaptateur d objet

80 79 Principe Rendre plusieurs objets (Servant) disponibles dans un serveur Chaque objet est associé à une clé unique dans le serveur Un référence inclut désormais la clé de l objet Adaptateur d objet Aiguillage et lien entre le réseau et les objets Gère les clés associées aux objets et leurs références Raffinement du Manager Adaptateur : lien référence / objet d implémentation Squelette : décodeur de requête pour un objet

81 80 Architecture version 8 Client Servant Servant Proxy Contrat Skeleton Skeleton ObjectAdapter Réseau

82 81 Interactions version 8 Client Proxy Server Object Adapter Skeleton Servant init () create () create (servant) register (skel) init () connect () process () run (sock) hello (str) marshal () send (message) unmarshall () hello (str) send (message) marshall () return unmarshall ()

83 82 Côté serveur Adaptateur d objet Gestion du accept et du routage des requêtes Connecte les objets et crée leurs références Squelette de service Défini par rapport au contrat de Servant Décodeur de messages réseau pour un Servant particulier Définition de deux squelettes Programme serveur Crée un adaptateur d objet Crée deux squelettes et servants, les enregistre Active l adaptateur d objet

84 83 Contrats interface ServiceA { public String hello (String msg) throws Exception ; public String lower (String msg) throws Exception ; public String upper (String msg) throws Exception ; interface ServiceB { public boolean isprime (int a) throws Exception ; public int sqr (int a) throws Exception ;

85 84 Code Server public class Server { public void run () throws Exception { ObjectAdapter oa = ObjectAdapter.init () ; SkeletonA skel_a = new SkeletonA (new ServantA ()) ; oa.register (skel_a) ; System.out.println (oa.obj2ref (skel_a)) ; SkeletonB skel_b = new SkeletonB (new ServantB ()) ; oa.register (skel_b) ; System.out.println (oa.obj2ref (skel_b)) ; oa.start () ; // rest is unchanged

86 85 Code ObjectAdapter (i) public class ObjectAdapter extends Thread { private static ObjectAdapter ref ; private ServerSocket asock ; private Vector skeletons ; protected ObjectAdapter () throws Exception { this.skeletons = new Vector () ; this.asock = new ServerSocket (0) ; public static ObjectAdapter init () throws Exception { if (ObjectAdapter.ref == null) ObjectAdapter.ref = new ObjectAdapter () ; return ObjectAdapter.ref ;

87 86 Code ObjectAdapter (ii) public String obj2ref (Skeleton obj) { int key = this.skeletons.indexof (obj) ; if (key == -1) return null ; String host = null ; try { host = InetAddress.getLocalHost ().gethostaddress () ; catch (UnknownHostException uhe) { return null ; int port = this.asock.getlocalport () ; return host + ":" + port + ":" + key ;

88 87 Code ObjectAdapter (iii) public void run () { try { while (true) { Socket sock = this.asock.accept () ; BufferedReader in =... String msg = in.readline () ; if (msg == null) { // no more to be read sock.close () ; continue ; int key = Integer.parseInt (msg.substring (0,1)) ;

89 88 Code ObjectAdapter (iv) try { Skeleton skel = (Skeleton)this.skeletons.elementAt (key) ; skel.init (sock) ; new Thread (skel).start () ; catch (ArrayIndexOutOfBoundsException e) { sock.close () ; catch (Exception e) { return ;

90 89 Interface Skeleton interface Skeleton extends Runnable { void init (Socket sock) throws Exception ;

91 90 Code SkeletonA (i) public class SkeletonA implements Skeleton { private ServantA ref ; public SkeletonA (ServantA s) throws Exception { this.ref = s ; public void init (Socket sock) throws Exception { this.in =... this.out =...

92 91 Code SkeletonA (ii) public void run () { try { while (true) { String msg = this.in.readline () ; if (msg == null) // no more to be read break ; String res ; switch (msg.charat (0)) { case 0 : res = this.ref.hello (msg.substring (1)) + "\n" ; break ; // etc.

93 92 Côté client Modification du proxy Prise en compte des clés d objets Connexion en deux temps au squelette Définition d un Proxy pour chacun des services Deux chaînes Proxy / Skeleton / Servant Fourniture de la référence comme une propriété Définition de deux programes clients Chacun utilise un proxy pour un service particulier

94 93 Code ProxyA (changes) public class ProxyA implements ServiceA { private Socket sock ; private BufferedReader in ; private DataOutputStream out ; public ProxyA (String host, int port, String key) throws Exception { this.sock = new Socket (host, port) ; this.in =... this.out =... this.out.writebytes (key + "\n") ;

95 94 Code ClientA (changes i) public class ClientA { private ServiceA ref ; public ClientA () throws Exception { this.ref = (ServiceA) this.ref2proxy () ; public void run (String msg) throws Exception { System.out.println (this.ref.hello (msg)) ; System.out.println (this.ref.lower (msg)) ; System.out.println (this.ref.upper (msg)) ;

96 95 Code ClientA (changes ii) public ProxyA ref2proxy () throws Exception { Properties props = System.getProperties () ; String ref = props.getproperty ("service.reference") ; if (ref == null) throw new Exception ("no server reference given") ; String parts[] = ref.split (":") ; if (parts.length < 3) throw new Exception ("malformed reference") ; String host = parts [0] ; int port = Integer.parseInt (parts [1]) ; String key = parts [2] ; return new ProxyA (host, port, key) ;

97 96 Bénéfices et limitations Bénéfices Serveur multi-services et multi-threadé (Skeleton) Identification complète d un service adresse:port:cle Les références sont créées au niveau du serveur Limitations Comment définir et utiliser des exceptions applicatives? Comment simplifier la traduction de référence en Proxy

98 97 9. Exceptions et traduction référence vers Proxy

99 98 Principe Exceptions Ajout d un code dans les messages de retour 0 : OK ; sinon un numéro d exception... Traduction automatique de références en Proxy Extension des références pour contenir le type des références Contrôle du typage lors de la création du proxy Instanciation et initialisation automatique du Proxy

100 99 Architecture version 9 Client Servant Servant Proxy Contrat Skeleton Skeleton ObjectAdapter Réseau

101 100 Interactions version 9 Client Proxy Server Object Adapter Skeleton Servant init () create () create (servant) register (skel) init () connect () process () run (sock) hello (str) marshal () send (message) unmarshall () hello (str) send (message) marshall () return unmarshall ()

102 101 Chargement automatique de proxy Motivations Transformation d une référence de service distant en proxy Contrôler la conformité entre le type du proxy et du service Modifications des implémentations Extension des références Ajout du type du service dans la référence : adresse:port:cle:type Règles de nommage des classes NomDuServiceProxy, NomDuServiceSkeleton, NomDuServiceServant Les squelettes fournissent le type du service (pour construire la référence) Interface de base Proxy implémentée par tous les proxy (pour init)

103 102 Opération ref2proxy (i) public class Util { public static Proxy ref2proxy (String ref) throws Exception { String parts[] = ref.split (":") ; if (parts.length < 4) throw new Exception ("malformed reference") ; String host = parts [0] ; int port = Integer.parseInt (parts [1]) ; String key = parts [2] ; String type = parts [3] ;

104 103 Opération ref2proxy (ii) // instanciation du bon proxy (present dans classpath) Class pclass = Class.forName (type + "Proxy") ; Proxy p = (Proxy) pclass.newinstance () ; // initialisation p.init (host, port, key) ; return p ;

105 104 Côté serveur Gestion des exceptions Définition des exceptions dans le contrat du service Modification des squelettes pour transférer les exceptions Ajout de try catch pour les exceptions applicatives Ajout d un code en début de message réponse réseau Typage des références Modification des squelettes : fourniture du type du servant Modification de l opération obj2ref dans l adapteur d objet

106 105 Contrat ServiceB public class DivByZero extends Exception { interface ServiceB { public boolean isprime (int a) throws Exception ; public int sqr (int a) throws Exception ; public int div (int a, int b) throws Exception, DivByZero ;

107 106 Interface Skeleton interface Skeleton extends Runnable { void init (Socket sock) throws Exception ; String type () ;

108 107 Code ServiceBSkeleton (changes i) public String type () { return "step9.serviceb" ; public void run () { // unchanged // managing isprime method from ServiceB case 0 : int val0 = Integer.parseInt (msg.substring (1)) ; res = "0" + this.ref.isprime (val0) + "\n" ; break ;

109 108 Code ServiceBSkeleton (changes ii) // managing div method from ServiceB case 2 : String args [] = msg.substring (1).split (" ") ; int arg0 = Integer.parseInt (args [0]) ; int arg1 = Integer.parseInt (args [1]) ; try { res = "0" + this.ref.div (arg0,arg1) + "\n" ; catch (DivByZero e) { res = "1\n" ; // first exception raised break ; // etc.

110 109 Code ObjectAdapter public String obj2ref (Skeleton obj) { int key = this.skeletons.indexof (obj) ; if (key == -1) return null ; String host = null ; try { host = InetAddress.getLocalHost ().gethostaddress () ; catch (UnknownHostException uhe) { return null ; int port = this.asock.getlocalport () ; return host + ":" + port + ":" + key + ":" + obj.type () ;

111 110 Côté client Modification des proxy Gestion des exceptions Si code interne supérieur à 0 alors lever l exception équivalente Modification des clients Utilisation de l opération ref2proxy Plus besoins préciser le nom du Proxy Utiliser le proxy avec le type de son interface

112 111 Code ServiceBProxy (changes i) public boolean isprime (int val) throws Exception { // automatic conversion of int to string out.writebytes ("0" + val + "\n") ; String res = in.readline () ; return Boolean.valueOf (res.substring (1)).booleanValue () ;

113 112 Code ServiceBProxy (changes ii) public int div (int a, int b) throws Exception, DivByZero { out.writebytes ("2" + a + " " + b + "\n") ; String res = in.readline () ; if (res.charat (0) == 1 ) throw new DivByZero () ; return Integer.parseInt (res.substring (1)) ;

114 113 Code ClientB (changes) public ClientB () throws Exception { Properties props = System.getProperties () ; String ref = props.getproperty ("service.reference") ; this.refb = (ServiceB) Util.ref2proxy (ref) ;

115 114 Bénéfices et limitations Bénéfices Bénéfices des exceptions sur le code produit Contrôle du typage à l utilisation des références Limitations Partage des références compliqué et réduit au fichier Utiliser facilement plusieurs services dans un même client?

116 Service de désignation

117 116 Principe Désignation des objets par des noms symboliques Association : nom symbolique / références Les serveurs enregistrent une référence avec un nom Les clients recherchent une référence avec un nom Service notoire : l annuaire

118 117 Architecture version 10 Client Naming Servant Service Servant Proxy Contrats Skeleton OAdapt Skeleton OAdapt Réseau

119 118 Interactions version 10 (*) Client Naming Proxy Service Proxy NameServer Naming Proxy Server Service connect () init () send (message) bind (ref) create () init () connect () lookup () send (message) ref2proxy () connect () hello (str) return send (message) send (message)

120 119 Annuaire Service au même titre qu un autre Défini par une interface Hébergé par un serveur Accessible au travers d un Proxy Particularités Serveur dédié initialisé sur un port prédéfini Connaître la machine = point d entrée du système Proxy particulier pour simplifier l utilisation Patron de conception Singleton

121 120 Contrat NameService interface NameService { public void export (String name, String ref) throws Exception ; public String lookup (String name) throws Exception ;

122 121 Proxy Naming (extrait) public class Naming { private static Naming ref ; private Naming () throws Exception { Properties props = System.getProperties () ; String host = props.getproperty ("naming.host") ; // etc. public static Naming init () throws Exception { if (Naming.ref == null) Naming.ref = new Naming () ; return Naming.ref ; // etc. // etc.

123 122 Côté serveur Diffusion des références Plus d affichage sur la ligne de commande Export des références de services Vers une application répartie Le serveur est client du service de nommage Utilisation du proxy de ce dernier Unique point d entrée : référence du service de nommage $ java -Dnaming.host=localhost step9.server

124 123 Code Server (changes) public void run () throws Exception { Naming ns = Naming.init () ; ObjectAdapter oa = ObjectAdapter.init () ; ServiceASkeleton skel_a = new ServiceASkeleton (new ServiceAServant ()) ; oa.register (skel_a) ; ns.export ("ServiceA", oa.obj2ref (skel_a)) ; ServiceBSkeleton skel_b = new ServiceBSkeleton (new ServiceBServant ()) ; oa.register (skel_b) ; ns.export ("ServiceB", oa.obj2ref (skel_b)) ; oa.run () ;

La programmation réseau. Java

La programmation réseau. Java Chapitre 7 : Java et les réseaux La programmation réseau Java Rémy Courdier 1996-2003 - Java Réseau - Version du cours 3.0 1 Sommaire La programmation réseau La classe URL Les Sockets TCP/IP et les principaux

Plus en détail

Modèle client-serveur

Modèle client-serveur Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr 1 Plan Principes généraux Modèle

Plus en détail

Programmation Réseau RMI. Jean-Baptiste.Yunes@univ-paris-diderot.fr armand@informatique.univ-paris-diderot.fr. ! UFR Informatique

Programmation Réseau RMI. Jean-Baptiste.Yunes@univ-paris-diderot.fr armand@informatique.univ-paris-diderot.fr. ! UFR Informatique Programmation Réseau RMI Jean-Baptiste.Yunes@univ-paris-diderot.fr armand@informatique.univ-paris-diderot.fr UFR Informatique 2014 Les RMI de Java Les applications RMI sont des applications bâties sur

Plus en détail

Programmation Socket en Java

Programmation Socket en Java Programmation Socket en Java Cours sockets Université Paul Sabatier Plan Un bon réflexe Les adresses IP en Java Sockets en mode flot La classe Socket La classe ServerSocket Communication via les Sockets

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

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

Programmation orientée objet appliquée avec le langage Java Réseaux

Programmation orientée objet appliquée avec le langage Java Réseaux Programmation orientée objet appliquée avec le langage Java Réseaux IUT d'aix en Provence Réseaux et Télécommunications Décembre 2013 Ivan Madjarov Partie XIII Programmation en Java par Socket en mode

Plus en détail

Modèle client-serveur

Modèle client-serveur Modèle client-serveur Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP 7122 31071 TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr http://hagimont.perso.enseeiht.fr Remerciements Michel Riveill 1

Plus en détail

Java RMI. Programmation des applications réparties. Olivier Flauzac URCA. Master EEAMI-Informatique première année

Java RMI. Programmation des applications réparties. Olivier Flauzac URCA. Master EEAMI-Informatique première année Java RMI Programmation des applications réparties Olivier Flauzac URCA Master EEAMI-Informatique première année Olivier Flauzac (URCA) PAR : Java RMI MSTIC-INFO 1 1 / 30 1 RMI 2 Architecture 3 Développement

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

Programmation Java Avancée

Programmation Java Avancée Programmation Java Avancée Module RPCI01 Département R&T IUT de Villetaneuse 2 novembre 2015 Département R&T Programmation Java Avancée 2 novembre 2015 1 / 74 Plan du cours 1 La gestion des exceptions

Plus en détail

Le réseau. Sommaire. Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif.

Le réseau. Sommaire. Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif. Le réseau Ce chapitre concerne les classes du package java.net qui permettent de travailler avec le réseau au niveau applicatif. Sommaire 1.LES URL... 2 1.1DÉFINITIONS...2 1.2LES CLASSES URL ET URLCONNECTION...

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

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP Chapitre 9 Dans ce chapitre nous abordons le mécanisme RMI (Remote Method Invocation) permettant le développe ment des systèmes répartis. Nous expliquerons comment les classes d un serveur peuvent être

Plus en détail

Données et communications en Java

Données et communications en Java Données et communications en Java Programmation des applications réparties Olivier Flauzac Master EEAMI-Informatique première année Olivier Flauzac (URCA) Données et communications en Java EEAMI-INFO 1

Plus en détail

La programmation réseau. Java

La programmation réseau. Java Chapitre 7 : Java et les réseaux La programmation réseau Java Rémy Courdier 1996-2009 - Java Réseau - Version du cours 3.0 1 Sommaire La programmation réseau Rappel Réseau Couches réseau et TCP-IP Notion

Plus en détail

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher

Serveurs réseau. 2011 Pearson Education France Java, mise à jour pour Java 7 Timothy Fisher 11 Serveurs réseau En pratique, il y a bien plus de chances que vous écriviez du code de client réseau que du code de serveur réseau. Toutefois, bon nombre d applications intègrent à la fois des fonctionnalités

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 7 : RMI iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 7 : RMI Nom(s) : Groupe : Date : Objectifs : savoir créer des applications client-serveur mettant en jeu des machines

Plus en détail

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Ce support est très largement inspiré du livre et du cours de S. Krakowiak S. Krakowiak Java Remote Method Invocation 1 / 25 Intérêt des objets pour la construction d applications

Plus en détail

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

Plus en détail

Le Langage Java et le Monde des Objets

Le Langage Java et le Monde des Objets . p.1 Le Langage Java et le Monde des Objets Les principes de la modélisation Orientée Objet. Qu est-ce qu une classe?. Les types de base. Utiliser les classes. Les tentacules de Java. . p.2 Bibliographie

Plus en détail

Le réseau est l ordinateur

Le réseau est l ordinateur Le réseau est l ordinateur (Bill Joy) Les applets 1 Les applets : principe Les applets sont des programme Java téléchargés à partir d un serveur WEB et qui s exécutent dans le browser d un client : Fichier.html

Plus en détail

CORBA. Cycle de développement

CORBA. Cycle de développement CORBA Cycle de développement Projet MIAGe Toulouse Groupe 2 1 Le cycle de développement (1/3) On s intéresse au développement selon le mode statique, c est à dire en utilisant les talons (stub, skeleton,

Plus en détail

Systèmes distribués. Les Sockets

Systèmes distribués. Les Sockets Systèmes distribués Plusieurs technologies existent : Les sockets Les remote procedure call (RPC) Remote Method Invocation (RMI) Les Sockets L'utilisation des Sockets nécessite De gérer le codage et le

Plus en détail

Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java

Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java Systèmes Distribués Des protocoles client serveur au paradigme objets distribués avec Java (application avec Java RMI) Éric Leclercq Département IEM / Laboratoire LE2i Décembre 2010 émail : Eric.Leclercq@u-bourgogne.fr

Plus en détail

Programmation par sockets-java

Programmation par sockets-java 2A-SI 3 Prog. réseau et systèmes distribués 3.1 - Programmation par sockets-java Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l

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

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Sockets. Karima Boudaoud IUT- R&T

Sockets. Karima Boudaoud IUT- R&T Sockets Karima Boudaoud IUT- R&T Rappels sur les sockets Qu est ce qu un socket? Point d entrée entre 2 appli. du réseau Permet l échange de donnée entre elles à l aide des mécanismes d E/S (java.io) Différents

Plus en détail

La plate-forme Java RMI

La plate-forme Java RMI La plate-forme Java RMI Frank Singhoff Bureau C-202 Université de Brest, France Lab-STICC/UMR 3192 singhoff@univ-brest.fr UE systèmes à objets répartis, Université de Brest Page 1/25 Sommaire 1. Le modèle

Plus en détail

TP d initiation aux systèmes et applications répartis

TP d initiation aux systèmes et applications répartis TP d initiation aux systèmes et applications répartis Grégory Mounié, Simon Nieuviarts, Sébastien Viardot Au début de l informatique, on exploitait simplement des ordinateurs. Maintenant, on construit

Plus en détail

Sensibilisation à RMI (Remote Method Invocation)

Sensibilisation à RMI (Remote Method Invocation) Jini Sensibilisation à RMI (Remote Method Invocation) Le rêve de tout système distribué L idéal serait d avoir un système distribué utilisant la technologie objet et permettant : 1) d invoquer une méthode

Plus en détail

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static Plan Environnement Client/Serveur Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

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

Programmation réseaux avec le langage Java

Programmation réseaux avec le langage Java Programmation réseaux avec le langage Java Février 2015 Ivan Madjarov Partie I Introduction à la programmation Java réseau 2 Introduction Le modèle OSI (Open System Interconnexion) 3 Routage et Passerelle

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

Plus en détail

Objets distribués et Appel de Méthodes à Distance 2009-2010

Objets distribués et Appel de Méthodes à Distance 2009-2010 Objets distribués et Appel de Méthodes à Distance 2009-2010 1 Objectif : construire une application où différents modules peuvent être situés sur des machines différentes, en utilisant un modèle à objets

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

POO LES EXCEPTIONS LES EXCEPTIONS

POO LES EXCEPTIONS LES EXCEPTIONS CHAPITRE 7 : LES EXCEPTIONS Objectifs spécifiques 1. Introduire la notion d exception, les règles d utilisation et de définition des exceptions. 2. Distinguer entre les exceptions prédéfinies et les exceptions

Plus en détail

Chapitre 7. Exceptions

Chapitre 7. Exceptions Chapitre 7 Exceptions 1 Exceptions en Java Séparation exécution normale/gestion des erreurs Inspiration : C++ et Ada Un composant peut : prendre en charge le problème signaler le problème en levant une

Plus en détail

TD 7 - Remote Procedure Call (RPC)

TD 7 - Remote Procedure Call (RPC) Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com Année scolaire 2008-2009 Claude Duvallet 1/25 Plan de la présentation

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

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

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques et d Informatique Module : POO Java Semestre : S5 Complément d exercices avec correction

Plus en détail

Exercice commenté. Mailer java. 1. Intitulé. 2. Approche

Exercice commenté. Mailer java. 1. Intitulé. 2. Approche Exercice commenté Auteur : cj-tronquet@ifrance.com Mailer java 1. Intitulé Ecrire une applet qui permette d envoyer un e-mail à partir d une page web. Cette applet devra contenir les champs From:, To:,

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

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

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

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

TP Java RMI. Alexandre Denis Alexandre.Denis@inria.fr. Inria Bordeaux Sud-Ouest France ENSEIRB PG306

TP Java RMI. Alexandre Denis Alexandre.Denis@inria.fr. Inria Bordeaux Sud-Ouest France ENSEIRB PG306 TP Java RMI Alexandre Denis Alexandre.Denis@inria.fr Inria Bordeaux Sud-Ouest France ENSEIRB PG306 Paradigme RMI RMI (Remote Method Invocation) RPC orientés objet (encapsulation, héritage,...) objet :

Plus en détail

Les Systèmes et Applications Réparties et leur Programmation

Les Systèmes et Applications Réparties et leur Programmation Les Systèmes et Applications Réparties et leur Programmation Samia Bouzefrane Maître de Conférences Laboratoire CEDRIC Conservatoire National des Arts et Métiers 292 rue Saint Martin 75141 Paris Cédex

Plus en détail

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012 Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Correction de l examen écrit de

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

PARADIGME ORIENTÉ-OBJET

PARADIGME ORIENTÉ-OBJET PARADIGME ORIENTÉ-OBJET A programming paradigm that uses objects to design systems. Sébastien Adam Une introduction des concepts de base 2 Principes fondamentaux Modularité : vise à répartir les opérations

Plus en détail

Master Miage 2010-2011 Réseau. La couche Application II. Les sockets : l API de la couche transport

Master Miage 2010-2011 Réseau. La couche Application II. Les sockets : l API de la couche transport Master Miage Réseau La couche Application II Les sockets : l API de la couche transport 2 Protocoles de couche application API: Application Programming Interface Définit l interface entre l application

Plus en détail

RMI : Remote Method Invocation Appel de méthodes à distance TD/TP

RMI : Remote Method Invocation Appel de méthodes à distance TD/TP RMI : Remote Method Invocation Appel de méthodes à distance TD/TP Patrice Torguet torguet@irit.fr Université Paul Sabatier But l But du TD/TP : application répartie permettant de gérer des comptes bancaires.

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

Cours. Majeure Informatique Ecole Polytechnique. Applications client/serveur

Cours. Majeure Informatique Ecole Polytechnique. Applications client/serveur Cours Système et Réseaux Majeure Informatique Ecole Polytechnique 7 Applications client/serveur François Bourdoncle Francois.Bourdoncle@ensmp.fr http://www.ensmp.fr/ bourdonc/ 1 Plan Les sockets d Unix

Plus en détail

Cours 8 : Exceptions, un peu de graphique

Cours 8 : Exceptions, un peu de graphique 1 Cours 8 : Exceptions, un peu de graphique 1. Traiter les exceptions usuelles 2. Créer ses propres exceptions 3. Exemples: les files. 4. Quelques éléments sur les graphiques 2 Exceptions Une exception

Plus en détail

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan Corrigé et Barème Contrôle de connaissances 2011/2012 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 1 Date : jeudi 26 janvier 2012 Durée : 1H30 Coordonnateurs : Christian Bac et Denis

Plus en détail

Année 2011-2012 Master 2 T.P. 1. Sockets

Année 2011-2012 Master 2 T.P. 1. Sockets Institut Galilée E-services Année 2011-2012 Master 2 T.P. 1 Sockets L objectif de ce TP est de compléter vos connaissances sur la manipulation de sockets en reprenant certains des exercices expliqués en

Plus en détail

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

Plus en détail

Corba avec Java et C++ 2004 Jean Marc Vanel Transiciel Sogeti

Corba avec Java et C++ 2004 Jean Marc Vanel Transiciel Sogeti Corba avec Java et C++ 2004 Jean Marc Vanel Transiciel Sogeti 1 1 Contenu et déroulement 2 Plan Partie 1: survol vision Corba mise en oeuvre de Corba liaison et transport dans Corba services «communs»

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

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

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle 1 Principes 2 Architecture 3 4 Aperçu d utilisation

Plus en détail

Les exceptions en Java

Les exceptions en Java Chapitre 6 Les exceptions en Java Lorsqu on conçoit un programme, on essaie évidemment qu il soit correct, c est-à-dire qu il fonctionne parfaitement dans les conditions prévues de son utilisation. L utilisateur

Plus en détail

En général, les données qui circulent sur un réseau peuvent être envoyées en deux modes:

En général, les données qui circulent sur un réseau peuvent être envoyées en deux modes: Chapitre 6 Ce chapitre est le premier des chapitres consacrés à la programmation réseau en langage Java. Une étude efficace de ces chapitres nécessite quelques connaissances concernant les réseaux informatiques

Plus en détail

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header

Servlets (fin) Accès aux paramètres. GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Servlets (fin) Accès aux paramètres GET différend de POST GET : Paramètres dans l'url POST : Paramètres dans l'header Masqué par l'api Méthode getparameter(), getparametervalues() [page de forumulaire]

Plus en détail

Implementing a simple RMI Application over the. Internet. (using. and

Implementing a simple RMI Application over the. Internet. (using. and Implementing a simple RMI Application over the (using and Internet and comparing HTTP tunneling,, RMI Proxy) Plan de l exposé Introduction Problématique HTTP tunneling Comment RMI «tunnelle» des messages

Plus en détail

Université Paris Diderot ISIFAR Année 2008-2009. Exceptions et Classes Abstraites

Université Paris Diderot ISIFAR Année 2008-2009. Exceptions et Classes Abstraites Université Paris Diderot JAVA ISIFAR Année 2008-2009 TP n 7 - Correction Exceptions et Classes Abstraites Exercice 1 [Utilisation des Exceptions] La méthode parseint est spécifiée ainsi : public static

Plus en détail

1 Le Parking revisité

1 Le Parking revisité Module I6 - Manipulation de threads II 13 décembre 2012 1 Le Parking revisité Une société de gestion de parkings de voitures souhaite mettre en place un système automatique d affichage en temps réel de

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation Java - Historique Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

PROGRAMMATION DISTRIBUÉE TUTORIEL RMI

PROGRAMMATION DISTRIBUÉE TUTORIEL RMI PROGRAMMATION DISTRIBUÉE TUTORIEL RMI PUBLIC CONCERNÉ : formation initiale, 2 e année. NOM DE L AUTEUR : V. Thomas DATE 2012/2013 UNIVERSITÉ DE LORRAINE IUT NANCY CHARLEMAGNE 2 ter boulevard Charlemagne

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2. POO 1/3 - Introduction à la Programmation Orientée Objet Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.fr Sommaire Les Langages de Programmation Premier Programme Les Objets Objets

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

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

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 +Cours 2 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction

Plus en détail

Notes de cours. Introduction

Notes de cours. Introduction Notes de cours GEI 44 : STRUCTURES DE DONNÉES ET ALGORITHMES Chapitre 5 Application des piles Introduction Piles très utilisées dans les compilateurs Voici deux exemples de composants d un compilateur

Plus en détail

Objectifs. Comprendre l architecture typique d une application web Exemple: Expérimenter avec:

Objectifs. Comprendre l architecture typique d une application web Exemple: Expérimenter avec: Cedric Dumoulin Objectifs Comprendre l architecture typique d une application web Exemple: Application permettant de lister un catalogue d articles, et de créer des articles Expérimenter avec: EJB, JPA

Plus en détail

RMI : Remote Method Invocation Appel de méthodes à distance

RMI : Remote Method Invocation Appel de méthodes à distance RMI : Remote Method Invocation Appel de méthodes à distance Patrice Torguet torguet@irit.fr Université Paul Sabatier Plan du cours l Les RPC l Architecture et fonctionnement de RMI l Etapes de développement

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

Systèmes répartis : les Remote Procedure Calls p.1/25

Systèmes répartis : les Remote Procedure Calls p.1/25 Systèmes répartis : les Remote Procedure Calls Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis : les Remote Procedure Calls p.1/25 Les Remote Procedure Calls

Plus en détail

Polymorphisme. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1

Polymorphisme. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1 Polymorphisme Programmation Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille 1 Université Lille 1 - Licence Informatique Programmation Orientée Objet 1 des méthodes

Plus en détail

Modélisation Objet. Introduction à JAVA. Georges Linares IUP GMI Université d Avignon et des Pays de Vaucluse

Modélisation Objet. Introduction à JAVA. Georges Linares IUP GMI Université d Avignon et des Pays de Vaucluse Modélisation Objet Introduction à JAVA Historique Les langages objets Simula 67 (trop tôt) Smalltalk 80 : purement objet Objective C : extension du C, esprit Smalltalk C++ : extension du c; le plus utilisé

Plus en détail

Java - TP3. Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet. Année 2008-2009

Java - TP3. Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet. Année 2008-2009 Java - TP3 Nicolas Baudru, Carine Guivier-Curien, Laurent Vallet Année 2008-2009 Le but de ce TD est d'écrire une application client/serveur de type msn : 1. Des clients se connectent à un serveur 2. Un

Plus en détail

Sérialisation sur le système de fichiers. Gestion des exceptions en Java.

Sérialisation sur le système de fichiers. Gestion des exceptions en Java. Sérialisation sur le système de fichiers. Gestion des exceptions en Java. Christophe Gravier, Frédérique Laforest, Julien Subercaze Télécom Saint-Étienne Université Jean Monnet {pnom.nom}@univ-st-etienne.fr

Plus en détail

Chapitre 5 CORBA (Common Object Request Broker Architecture)

Chapitre 5 CORBA (Common Object Request Broker Architecture) DÉVELOPPEMENT D APPLICATIONS RÉPARTIES CORBA (Common Object Request Broker Architecture) Amen Ben Hadj Ali amenbha@hotmail.com ISI-L3SIL 2011-2012 Plan 2 Architecture CORBA Le langage IDL CORBA en Java

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

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15

édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe 15 Table des matières Au sujet de l auteur 1 Introduction 3 édition revue et corrigée avec Java SE 7 7 1 Les bases 11 Compiler un programme Java 13 Exécuter un programme Java 14 Définir le chemin de classe

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

Plus en détail

Mémento Design Patterns

Mémento Design Patterns Quelques Design Patterns Mémento Design Patterns Frédéric MOAL Université d Orléans Scope Purpose Creational Structural Behavioral Factory Method Abstract Factory Builder Prototype Singleton Adapter Proxy

Plus en détail

Programmation Orientée Objet Java

Programmation Orientée Objet Java Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 29 octobre 2015 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 29 octobre

Plus en détail

Algorithmique Programmation

Algorithmique Programmation Algorithmique Programmation 2ème partie DUT en alternance CNAM 2007-2008 2 Table des matières 1 Premiers Pas en Programmation Objet : les Classes et les Objets 7 1.1 Définir une Classe........................................

Plus en détail

420KEL Petite révision v. 1,65. Petite révision

420KEL Petite révision v. 1,65. Petite révision Petite révision Quelques petits exercices pour vous rafraîchir la mémoire et vous remettre en forme. Dans les exercices pour lesquels on vous demande de programmer, cherchez à produire un résultat à la

Plus en détail

Projet. Coloration lexicale et indentation de code Java

Projet. Coloration lexicale et indentation de code Java Université Paris Diderot Programmation Orientée Objet L3 Année 2011-2012 Projet Coloration lexicale et indentation de code Java Le but de ce projet est de développer un programme qui prend en entrée un

Plus en détail

Projet M1 : Application P2P Hybride avec RMI

Projet M1 : Application P2P Hybride avec RMI Projet M1 : Application P2P Hybride avec RMI Applications Réparties 2008-2009 Université Paris VIII / Parcours SRM / M1 Sujet : Le but de ce projet est d'implémenter une application de partage de fichiers

Plus en détail