IV. Les objets répartis



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

Remote Method Invocation (RMI)

Remote Method Invocation en Java (RMI)

Conception de serveurs d'applications ouverts

Intergiciel - concepts de base

RMI le langage Java XII-1 JMF

NFP111 Systèmes et Applications Réparties

CORBA. (Common Request Broker Architecture)

Remote Method Invocation Les classes implémentant Serializable

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

Calcul Parallèle. Cours 5 - JAVA RMI

Programmation répartie RPC & RMI

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

Java - RMI Remote Method Invocation. Java - RMI

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

Initiation à JAVA et à la programmation objet.

Introduction aux intergiciels

Projet gestion d'objets dupliqués

2 Chapitre 1 Introduction

Software Engineering and Middleware A Roadmap

Etude critique de mécanismes de sécurité pour l architecture Jini

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

CORBA haute performance

Généralités sur le Langage Java et éléments syntaxiques.

TP1 : Initiation à Java et Eclipse

Chapitre 2. Classes et objets

Conception des systèmes répartis

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

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

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

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Java Naming and Directory Interface

Modèle client-serveur Plan. Modèle client-serveur. Modèle client-serveur définition. Modèle client-serveur communication par messages.

INITIATION AU LANGAGE JAVA

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

Le modèle client-serveur

Présentation de Java. Olivier de Pertat IT GROUP

Une introduction à Java

Synchro et Threads Java TM

Description de la formation

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

as Architecture des Systèmes d Information

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

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

Java c est quoi? Java pourquoi?

Mise en œuvre des serveurs d application

.NET remoting. Plan. Principes de.net Remoting

Patrons de Conception (Design Patterns)

Cours 1: Java et les objets

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)

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

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

Architectures n-tiers Intergiciels à objets et services web

WEA Un Gérant d'objets Persistants pour des environnements distribués

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

La carte à puce. Jean-Philippe Babau

La technologie Java Card TM

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

GEI 465 : Systèmes répartis

MEAD : temps réel et tolérance aux pannes pour CORBA

Systèmes d'informations historique et mutations

Premiers Pas en Programmation Objet : les Classes et les Objets

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

La JVM. La machine virtuelle Java. La JVM. La JVM

Meta Object Facility. Plan

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

Le cadre des Web Services Partie 1 : Introduction

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

Chapitre I Notions de base et outils de travail

JOnAS Day 5.1. Clustering

Programmer en JAVA. par Tama

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Contribution à l allocation dynamique de ressources pour les composants expressifs dans les systèmes répartis

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

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

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

Introduction à CORBA

Java 1.5 : principales nouveautés

Auto-évaluation Programmation en Java

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

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

PROGRAMMATION PAR OBJETS

Programmation répartie: Objet distribué. CORBA (Common Object Request Broker Architectur)

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Ubuntu Linux Création, configuration et gestion d'un réseau local d'entreprise (3ième édition)

Web Tier : déploiement de servlets

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Chapitre VI- La validation de la composition.

Intégration de systèmes client - serveur Des approches client-serveur à l urbanisation Quelques transparents introductifs

java : Langage et Environnement

Module BD et sites WEB

Java - la plateforme

Programmation réseau avec Java. 3/7 RMI, un peu de sécurité et CORBA

Groupe Eyrolles, 2004 ISBN :

CONCEPTION ET IMPLANTATION BASÉES SUR DES COMPOSANTS RÉPARTIS D'UNE STATION TERRESTRE

Transcription:

IV. Les objets répartis 1

Plan 1. Client/Server OO 2. Java RMI 2

1 Modèle de prog. Client/Serveur OO 1.1 Nommage 1.2 Sécurité d accès 1.3 Durée de vie 1.4 Objets concurrents 1.5 Synchronisation 3

1 Modèle de prog. Client/Serveur OO Applications souvent en mode client / serveur les clients font appel à des services offerts par des serveurs distants API sockets sont de trop bas niveau et nécessitent allocation manuelle des sockets / threads sérialisation manuelle des appels de services distants emballage / déballage des données des messages sérialisation manuelle des objets complexes pas d annuaire ni d autres services «middleware» 4

1 Modèle de prog. Client/Serveur OO Les applications sont de plus en plus conçues selon une approche orientée objet «bonnes» propriétés de l objet (encapsulation, modularité, réutilisation, polymorphisme, composition) Objet = unité de désignation et de distribution Permettre la communication directe et transparente entre objets répartis par ex. objetdistant.methode(parametres) transparence uniquement pour le 5 programmeur!

1 Modèle de prog. Client/Serveur OO Introduction de la notion d objet dans un environnement réparti - Mieux structurer les applications - Simplifier la conception, le développement, la maintenance -Uniformiser l accès au système au travers d un Langage concurrent et réparti Objet = données + méthodes + référence données : variables méthodes : traitements référence : moyen d accès à l objet Données d1 d2 M1 M2 M3 Méthodes 6

1 Modèle de prog. Client/Serveur OO Quelques notions Encapsulation : l objet protège les données en ne les rendant visibles qu au travers de méthodes Instanciation : les objets sont créés à partir de moules (les classes) Héritage : les classes peuvent être définies en dérivant des classes existantes Classification (P. Wegner) Langage basé objet : ayant un mécanisme d encapsulation (Ada) Langage basé classe : ayant en plus un mécanisme d instancitation (Simula) Langage orienté objet : ayant en plus un mécanisme d héritage (Smalltalk, C++, Java) 7

1 Modèle de prog. Client/Serveur OO Les besoins dans un environnement concurrent et réparti OO Exécution à distance des méthodes Nommage universel des objets Création d instances à distance Exécutions concurrentes Synchronisation des exécutions Migration des instances 8

1.1 Nommage Nommage : Objets à désigner Le site d exécution, le serveur, la procédure Désignation globale indépendante de la localisation reconfiguration possible des services (pannes, régulation de charge,...) Désignation Statique : la localisation du serveur est connue à la compilation Dynamique : la localisation n est pas connue à la compilation séparation des connaissances du nom de service et de son adresse grande indépendance au niveau de l implantation 9

1.1 Nommage Identifier les objets dans un environnement réparti Deux objets diff. sur le même site ou sur des sites diff. ne doivent pas avoir la même identité (on parle de référence d objet) La référence sert à «retrouver» l objet pour pouvoir invoquer ses méthodes Généralisation de la notion de pointeur à un environnement réparti Deux techniques principales un ID sans rapport avec la localisation généré par une fonction mathématique un ID en deux parties : son site de création + un numéro local unique Recherche d un objet à partir de sa référence annuaires de localisation centralisés ou répartis, ou diffusion interrogation du site contenu dans la référence + liens de poursuite 10

1.1 Nommage La localisation du serveur le client doit localiser et se "lier" (bind) avec le serveur La localisation se fait en trois étapes : enregistrer le serveur le client interroge le serveur de désignation le client accède au service sur le serveur serveur de désignation Plusieurs possibilités liaison statique (pas d appel à un serveur de nom) liaison au premier appel (appel du serveur de nom lors du premier appel liaison à chaque appel (appel du serveur de nom à chaque appel) 11

1.1 Nommage Les différentes étapes de la liaison Client Serveur 4 Talon client 7 8 1 Talon serveur 5 6 3 2 Serveur de Désignation 12

1.2 Sécurité Gérér le partage des objets dans un environnement réparti Pour des raisons de sécurité, l accès à certains objets peut être restreint - En fonction de l identité de l objet appelant Ex : seuls les accès en provenance de l intranet sont autorisés - À partir d une liste de contrôle d accès Ex : mot de passe, mécanisme de clés de session La restriction peut - Interdire complètement l accès à l objet - Fournir une vue dégradée Ex : autoriser les méthodes qui fournissent un service de consultation mais interdire celles qui modifient l état de l objet => Nombreuses informations à ajouter aux objets 13

1.3 Durée de vie Objets temporaires : leur durée de vie correspond à celle de leur créateur Objets persistants L objet persiste tant qu il n est pas détruit La persistance peut être limitée par la durée de vie du système ou s étendre au delà des redémarrages Problèmes à résoudre : - sauvegarde d informations multiples (type, classe, données) - gérer les lieux de stockage (mémoire, disque, réseau) - assurer que l objet reste accessible quelque soit son lieu de stockage Choix de conception : - tous les objets sont persistants? - un objet est crée persistant? - un objet temporaire peut devenir persistant? vice-versa? - un objet référencé par un objet persistant est persistant? 14

1.4 Degrés de concurrence Possibilité d exécuter simultanément plusieurs activités Rq: le terme parallélisme est lié aux machines multi-processeurs 4 degrés de concurrence (adapté de P. Wegner, J.P. Briot et al.) : séquentiel : une seule méthode est exécuté à la fois par l objet quasi-concurrent : plusieurs activations de méthodes coexistent, mais au plus une seule n est pas suspendue concurrent : plusieurs activités peuvent s exécuter, mais le programmeur peut restreindre le degré de concurrence (synchronisation) complètement-concurrent : concurrence sans aucune restriction (objet sans états) 15

1.4 Association objet/activité Deux façons d associer un objet et une activité (thread) Objet passif Objet actif L activité : manipulé de façon explicite orthogonal à l objet se «plaque» sur les méthodes appelant Une (+sieurs) activité dédiée à l objet exécutent les méthodes appelant 16

1.5 Synchronisation Restreindre la concurrence d accès à une ressource partagée afin d en maintenir la cohérence Ex : exclusion mutuelle, lecteurs/écrivain, transaction Synchro. Comportementale en fonction de l état des données de l objet ex : Pile avec empile et dépile vide : empile 1/2 : empile et dépile plein : dépile Synchro. Intra-objet en fonction de l état d exécution de l objet ex : Fichier avec lire et écrire soit + lire simultanément soit 1 seul écrire 17

1.5 Synchronisation objets sémaphores : méthodes P et V objets moniteurs : méthodes synchronized, wait et notify (ex Java) expressions de : avec les opérateurs, * // on spécifie les séquences valides chemin d exécutions de méthodes gardes : chaque méthode est associée à une condition booléenne remplacements de : chaque objet a +sieurs «comportements» comportement chacun correspond à l exécution d une méthode on spécifie avec la primitive become le cpment suivant approches à états : chaque objet est associé à un ensemble d états chaque état est associé à un sous-ensemble de méthodes pouvant être exécutées 18

1.5 Synchonisation inter-objets Dépendances entre objets -> mécanismes de synchronisation Exemple : un transfert entre deux objets comptes bancaires Assurer qu un ensemble de 2 ou +sieurs invocations de méthodes compte1.depot(50); compte2.retrait(50); s effectuent complètement avec les propriétés ACID ou pas du tout Problématique de la théorie de la sérialisatibilité et des moniteurs transactionnels -> intégration du moniteur dans le système réparti objet avec un - protocole de validation (2PC ou 3PC) - mécanisme de verrouillage des ressources - mécanisme de détection des conflits - mécanisme de traitement des conflits 19

Appel de méthode à distance (1/2) Interface état référence Méthode_i Talon client Talon serveur Référence d'objet + méthode + arguments Résultat ou exception 20 Objet désignation envoi de requêtes exécution de requêtes retour de résultat

Appel de méthode à distance (2/2) éléments d'une «invocation» référence d'objet («pointeur» universel) identification d'une méthode paramètres d'appel et de retour passage par valeur : types élémentaires et types construits passage par référence possibles exceptions en retour objets «langage» représentation propre au langage : instance d'une classe exemple : Java RMI objets «système» représentation «arbitraire» définie par l'environnement d'exécution exemple 21 : CORBA

Le principe des mandataires objets (ou proxy, talon, souche) objet serveur objet client état appel Talon client Talon serveur Methode_1. Methode_n. Système de communication 22

Le principe des mandataires objets (ou proxy, talon, souche) objet client appel (1) (2) (10) Talon client (9) (3) Talon serveur objet serveur état Methode_1. Methode_n. Système de communication 1 : Invocation d une méthode 6 : Retour de l invocation locale (4) (8) (7) (5) (6) 2 : Emballage des paramètres 7 : Emballage des résultats 3 : Transport de l invocation 8 : Transport des résultats 4 : Déballage des paramètres 9 : Déballage des résultats 5 : Invocation de l objet 10 : Retour de l invocation distante 23

Le rôle du talon client Représentant local de l objet distant => référence sur l objet distant Emballage des appels de méthodes locaux en messages à destination du talon serveur Déballage des résultats ou des exceptions contenus dans un message retourné par le talon serveur Contrôle de la bonne utilisation des signatures du talon à la compilation / l exécution => contrôle des messages du protocole 24

Le rôle du talon serveur Passerelle entre le réseau et l objet serveur rend l objet serveur accessible à distance Déballage des messages émis par les talons clients Appel local des méthodes de l objet serveur Emballage des résultats ou exceptions dans un message à destination du talon client 25

Le bus d objets répartis Client int solde() credit(int) debit(int) Talon client IDL int solde() credit(int) debit(int) Talon serveur Objet int solde() credit(int) debit(int) Bus d objets répartis Réseau Appliqué dans DCOM, Java RMI et CORBA Prise en charge de la fonction de 26 communication

La prise en charge de la fonction de communication Talon serveur if(op == «credit») { int m = receive(); objet.credit(m); return; }... Objet credit(int montant) {... code métier... balance_ += montant; } Le développeur ne code pas la communication gestion des sockets, du protocole applicatif, des threads déballage des arguments et emballage des résultats Indépendance vis-à-vis de la couche de transport TCP/IP, ATM,..., mémoire partagée,... 27 Amélioration de la qualité logiciel par génération

Le rôle du langage IDL Interface Definition Language = langage de définition des interfaces des objets répartis Permet de décrire la signature des méthodes publiques et accessibles à distance nom méthode type du résultat et des paramètres liste des exceptions Caractérisation des messages du protocole applicatif entre le client et le serveur Compilation pour production automatique des talons clients et serveurs 28

Le rôle du bus d objets répartis Implantation d un protocole de transport des appels de méthode à distance Bufférisation des messages Allocation des canaux de communications sockets mais aussi «pipes», mémoire partagée,... des adresses physiques, e.g. des ports gestion d un pool de sockets,... Gestion de pools de threads serveurs Autres services... 29

Middleware orienté objet Bus pour communication synchrone entre objets distants Mais peut aussi fournir d autres fonctions Annuaires de recherche stockage des références d objets distants Communication asynchrone diffusion d événements Activation à la volée des objets objets présents en mémoire seulement si invoqués => virtuellement des milliards d objets ;-) Sécurité Transactions réparties... 30

Les diverses solutions industrielles ProduitS de Microsoft Système d exploitation Windows partout! Java RMI pour Java Remote Method Invocation Produit de SUN Microsystems Langage Java partout! CORBA pour Common Object Request Broker Architecture Norme du consortium Object Management Group Interopérabilité! 31

Java RMI Principes Tout Java IDL = interfaces Java (extends java.rmi.remote) Transport = JRMP ou IIOP Avantages Intégré aux environnements JDK Simple à mettre en œuvre Inconvénients Un seul concepteur Mono langage 32

CORBA Principes Modèle d objets hétérogènes et interopérables IDL = OMG IDL Transport = GIOP - IIOP (Internet Inter Orb Protocol) Avantages Norme consensuelle OMG / ISO fournisseurs / utilisateurs / domaines Ouvert et évolutif Multiples fournisseurs d implantations Multi langages / OS / transports Middleware avec de nombreux services Inconvénients «Réputé» pour être complexe 33 à mettre en œuvre ;-)

Illustration avec Java RMI 34

Java Remote Method Invocation Solution simple et 100% Java pas de nouveau langage IDL Permet l'invocation de méthodes entre des objets Java qui s'exécutent dans des machines virtuelles distinctes et réparties Sérialisation automatique des paramètres et résultats des méthodes même pour des objets Java complexes chargement dynamique des classes si nécessaires Ramasse-miettes distribué Annuaire de références d objets RMI 35

L architecture Java RMI Transparence dans la communication entre client et serveur Bibliothèque RMI = couche de référence distante et couche de transport Souches et squelettes Java sont 36 générées par le compilateur rmic

Une mise en œuvre très simple Définir l'interface de l'objet distribué (OD) Implanter l OD Générer le talon client et serveur appelés stub et skeleton RMI via le compilateur rmic Côté serveur instancier l'od enregistrer l OD dans l annuaire RMI Côté client obtenir l OD via l annuaire RMI l OD se manipule comme tout autre objet Java 37

Rendre un objet Java accessible à distance Pour qu un objet Java soit accessible à distance via Java RMI, sa classe doit implanter au moins une interface Java RMI publique Une interface Java RMI est une interface Java «classique» héritant au moins de l interface java.rmi.remote Chaque méthode de l interface doit lever au moins l exception java.rmi.remoteexception Tout objet distant passé en paramètre doit être déclaré par son interface RMI 38

Un simple exemple d interface Java RMI public interface Hello extends java.rmi.remote { public void afficher(string chaine) throws java.rmi.remoteexception; } public Message getderniermessage() throws java.rmi.remoteexception; 39

L implantation de l interface Java RMI (1/2) public class HelloImpl extends java.rmi.server.unicastremoteobject implements Hello { protected Message lederniermessage; public HelloImpl() throws java.rmi.remoteexception { } // Appel du constructeur java.rmi.server.unicastremoteobject // soulevant l'exception java.rmi.remoteexception. super(); lederniermessage = new Message(""); 40

L implantation de l interface Java RMI (2/2) public void afficher(string chaine) throws java.rmi.remoteexception { System.out.println("chaine=" + chaine); lederniermessage = new Message(chaine); } } public Message getderniermessage() throws java.rmi.remoteexception { return lederniermessage; } 41

Rendre un objet Java sérialisable par RMI Pour qu un objet Java soit sérialisable, sa classe doit implanter au moins l interface java.io.serializable Sérialisation de tous les attributs sauf ceux marqués transient Prise en compte récursive des graphes d objets sérialisables ainsi que les cycles La plupart des classes Java de base sont sérialisables par ex. java.util.* Les objets associés à des ressources systèmes ne sont pas sérialisables 42 Thread, Process, File, AWT, etc.

Un simple exemple d objet sérialisable par Java RMI public class Message implements java.io.serializable { protected java.util.date date; protected String texte; // Le constructeur. public Message(String texte) { this.date = new java.util.date(); this.texte = texte; } // Pour afficher le message. public String tostring() { return "Message[... ]"; } } 43

L annuaire Java RMI Java RMI fournit un annuaire gérant des associations entre noms symboliques et références d objet RMI des serveurs contenant 1 objet RMI annuaire Côté serveur exporter la référence des objets RMI java.rmi.naming.rebind("nomsymbolique", référenceobjetrmi); Côté client importer des références d OD RMI référenceobjetrmi = java.rmi.naming.lookup( "//machineannuaire/nomsymbolique"); 44

Un simple serveur RMI public class Serveur { public static void main(string args[]) throws Exception { // Créer l'objet accessible par Java RMI. HelloImpl obj = new HelloImpl(); } // Enregistrer cet objet dans l annuaire RMI. java.rmi.naming.rebind("hello", obj); // Ici le programme ne se termine pas! // Car attente des invocations distantes sur l OD. } 45

Un simple client RMI public class Client { public static void main (String[] args) throws Exception { // Obtenir la souche sur l OD via l'annuaire RMI. Hello hellodistant = (Hello) java.rmi.naming.lookup("//localhost/hello"); // Invoquer des méthodes comme si l'objet était local. hellodistant.afficher("hello world!"); Message message = hellodistant.getderniermessage(); System.out.println("Le dernier message = " + message); } } 46

Compilation et exécution Compiler les sources > javac Hello.java Message.java HelloImpl.java Serveur.java Client.java Générer les stub et les skeletons RMI > rmic HelloImpl Produit HelloImpl_Stub.class et HelloImpl_Skel.class Lancer l annuaire RMI > rmiregistry & Lancer le serveur de l'od > java Serveur & Lancer le client de l'od > java Client 47

Une vision d ensemble de l application (5) hellodistant Client HelloImpl _Stub (7) (4a) HelloImpl _Skel Serveur (2) (3) HelloImpl (5) démarrage Client (6) recherche annuaire lookup (7) invocations (6) HelloImpl _Stub (4b) rmiregistry 48 (1) (4) (1) démarrage annuaire RMI (2) démarrage Serveur (3) création OD (4) exportation annuaire (bind - rebind)

Distributed Garbage Collector (DGC) Le DGC interagit avec les GC locaux et utilise un mécanisme de reference-counting Lorsqu'un OD est passé en paramètre à un autre OD ref_count+ + Lorsqu'un stub n'est plus référencé weak reference Lorsque le GC du client libère le stub, sa méthode finalize est appelée et informe le DGC ref_count-- Lorsque le nombre de références d'un OD = 0 weak reference Le GC du serveur peut alors libérer l'od Le client doit régulièrement renouveler son bail au près du DGC Si référence à un OD libéré RemoteException 49

Comparaison de Java RMI avec CORBA - RMI est propriétaire SUN / CORBA est une norme internationale - RMI moins ambitieux que CORBA - RMI n'offre pas interopérabilité avec des objets d'autres langages - RMI est beaucoup plus lent que les implantations de CORBA + RMI est une implantation standard et gratuite (incluse dans JDK) + RMI est object-oriented / CORBA est object-based + RMI est plus simple à mettre en œuvre que CORBA + Pas besoins d'idl : seulement l'interface de l'od et son URL + Les OD se manipulent comme les OL (grâce au DGC) + RMI supporte le passage d'objets locaux par copie + RMI permet une gestion de la sécurité (RMISecurityManager, ACL,...) 50

Bibliographie sur Java RMI Tutoriel Java RMI http://java.sun.com/products/jdk/1.2/docs/guide/rmi/ JAVA REMOTE METHOD INVOCATION - DISTRIBUTED COMPUTING FOR JAVA http://java.sun.com/marketing/collateral/javarmi.html Java Distributed Computing, J Farley, Ed. O Reilly... 51