1
2A-SI
3 – Prog. réseau et systèmes distribués
3.2 – Programmation par RPC et
JavaRMI
Stéphane Vialle
http://www.metz.supelec.fr/~vialle
Support de cours élaboré avec l’aide de l’équipe pédagogique du cours de SI
Programmation par RPC
et Java-RMI :
- Principes des RPC
- Utilisation d’un IDL
- Principes des Java-RMI
- Mode opératoire des Java-RMI
- Hiérarchie de classes Java
- Exemple de client-serveur en Java-RMI
- Limitations du déploiement
Programmation par RPC et Java-RMI
Principes des RPC
1ère version : Birrel & Nelson en 1984
L’utilisateur écrit toute l’application : le client, le serveur et
les mécanismes d’envoi et de réception de messages !!
Concepts simples, mais complexes à mettre en œuvre
Peu utilisé
SUN RPC en 1988
Plus simple,
Utilise « rpcgen » : génère une partie des fichiers de RPC
Utilise le DNS (localisation du serveur : adresse IP) +
Portmap (localisation du service : # port)
RPC = « Remote Procedure Call »
Objectif : appels locaux et distants avec la même syntaxe
2
Programmation par RPC et Java-RMI
Principes des RPC
Service RPC
(talon)
appel
Service RPC
(talon)
retour
Protocole de
communication
Protocole de
communication Appelé
retour
1
5
2
4
3
Réseau
Appel
Serveur (appelé)
Client (appelant)
Programmation par RPC et Java-RMI
Principes des RPC
Talon client : stub
C’est la procédure
d’interface du site client
qui reçoit l’appel en mode
local
le transforme en appel
distant en envoyant un
message
reçoit les résultats après
l'exécution
retourne les paramètres
résultats comme dans un
retour de procédure
Talon serveur : skeleton
C’est la procédure sur
le site serveur
qui reçoit l’appel sous
forme de message
fait réaliser l’exécution
sur le site serveur par la
procédure serveur (choix
de la procédure)
retransmet les résultats
par message
Programmation par RPC
et Java-RMI :
- Principes des RPC
- Utilisation d’un IDL
- Principes des Java-RMI
- Mode opératoire des Java-RMI
- Hiérarchie de classes Java
- Exemple de client-serveur en Java-RMI
- Limitations du déploiement
3
Un langage pour la spécification des interfaces entre
les clients et les serveurs :
Spécification commune au client et au serveur
Le « contrat » entre le client et le serveur
Définition des types et natures des paramètres
IN, OUT, IN-OUT, par valeur, par référence
Définition indépendante de la plate-forme
Indépendante du langage, de l’OS et de la machine
Utilisation de ces définitions pour générer
automatiquement :
Le talon client (ou proxy, ou stub)
Le talon serveur (ou squelette, ou skeleton)
« projection » dans un langage de programmation
Programmation par RPC et Java-RMI
Utilisation d’un IDL
Programmation par RPC et Java-RMI
Utilisation d’un IDL
Compilateur IDL
Interface
écrite en « IDL »
Talon coté client
(Stub)
Talon coté Serveur
(Skeleton)
Client Serveur
Protocole de
communication
Protocole de
communication
Réseau
Programmation par RPC
et Java-RMI :
- Principes des RPC
- Utilisation d’un IDL
- Principes des Java-RMI
- Mode opératoire des Java-RMI
- Hiérarchie de classes Java
- Exemple de client-serveur en Java-RMI
- Limitations du déploiement
4
Programmation par RPC et Java-RMI
Principes des Java-RMI
Un RPC objet intégré à Java
Interaction d'objets situés dans des espaces d'adressage
différents sur des machines distinctes
Simple à mettre en œuvre : un objet distribué se manipule
comme tout autre objet Java
Différences RPC/RMI :
Il existe un module de localisation sur le host-serveur distant
(la rmiregistry) : localisation de chaque objet-serveur.
Les RMI sont plus vulnérables aux pannes: impossible de
distinguer le cas de panne du serveur d’un problème réseau
(moins de détails dans les CR d’erreurs).
Les interfaces (contrats) sont des interfaces Java
L’IDL est Java lui-même
Programmation par RPC et Java-RMI
Principes des Java-RMI
méthode_1()
méthode_n()
état
objet serveurobjet client
appel
Système de communication
Talon
serveur
Talon
client
référence
Référence d'objet + méthode + arguments
Résultat ou exception
désignation
envoi de requêtes
exécution de requête
retour de résultat
Programmation par RPC
et Java-RMI :
- Principes des RPC
- Utilisation d’un IDL
- Principes des Java-RMI
- Mode opératoire des Java-RMI
- Hiérarchie de classes Java
- Exemple de client-serveur en Java-RMI
- Limitations du déploiement
5
0 - A la création de l’objet-serveur, un stub et un skeleton (avec un port de
communication) sont créés sur le host-serveur
1 - L'objet-serveur s'enregistre auprès du Naming de sa JVM (méthode
rebind)
2 - Le Naming enregistre le stub de l’objet (sérialisé) auprès du serveur de
noms (rmiregistry)
3 - Le serveur de noms est prêt à fournir des références sur l’objet-serveur
JVM Client JVM Serveur
Client
Skeleton
Serveur
Naming
stub
rmiregistry
stub
Programmation par RPC et Java-RMI
Mode opératoire des Java-RMI
4 - L'objet client fait appel à son Naming pour localiser l'objet-serveur sur
l’host-serveur (méthode lookup)
5 - Le Naming récupère le stub vers l'objet-serveur auprès de la rmiregistry
6 – Le naming installe l’objet Stub sur le poste client et retourne sa référence
au client
7 - Le client effectue l'appel à l’objet serveur par appel à l’objet local Stub
JVM Client JVM Serveur
Naming
Client
Stub Skeleton
Serveur
Naming
Programmation par RPC et Java-RMI
Mode opératoire des Java-RMI
rmiregistry
stub
Programmation par RPC et Java-RMI
Mode opératoire des Java-RMI
1. Codage
description de l’interface du service
écriture du code du serveur qui implante l’interface
écriture du client qui appelle le serveur
2. Compilation
compilation des sources serveurs (javac)
génération des stub et skeleton (rmic)
compilation des sources client (javac)
3. Activation
lancement du serveur de noms (rmiregistry)
lancement du serveur
lancement du client
Etapes du développement et déploiement :
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !