2. Plan
• Introduction
• Partie théorique :
- Origine et Objectifs
- Principes
- Architecture générale
- Architecture interne
- Services
- Echange Client Serveur
• Partie Pratique :
- RMI en pratique
- Démonstration (exemple)
• Conclusion
2
3. Introduction
Invocation de méthodes à distance:
• Mécanisme qui permet à des objets localisés sur des
machines distantes de s’échanger des messages
(invoquer des méthodes).
Semble simple en théorie...
Mais un peu plus complexe en réalité !!! 3
5. RMI : Origine et Objectifs
• Solution (SUN) pour adapter le principe des RPC à la
POO (à partir du JDK 1.1).
• Rendre transparent la manipulation d'objets situés
dans un autre espace d'adressage
• Les appels doivent être transparents que l'objet soit
local ou distant.
• Java RMI permet au programmeur d’exécuter une
méthode distante de la même façon (ou presque)
qu’une méthode locale.
5
6. RMI : principes
• Outils pour :
– la génération des stub/skeleton,
– l ’enregistrement par le nom,
– l ’activation
• Mono-langage et Multiplateforme: de JVM à JVM (les
données et objets ont la même représentation qqs la JVM)
• Orienté Objet : Les RMIs utilisent le mécanisme standard de
sérialisation de JAVA pour l ’envoi d ’objets.
• Dynamique : Les classes des Stubs et des paramètres peuvent
être chargées dynamiquement via HTTP (http://) ou NFS (file:/)
• Sécurité : un SecurityManager vérifie si certaines opérations
sont autorisés par le serveur
6
7. Architecture RMI générale
• Le serveur doit d’abord
enregistrer (bind) son nom dans
l’annuaire (Registry)
• Le client récupère les
références du serveur à partir
de son nom auprès de
l’annuaire (lookup).
• La souche (stub) sérialise les
paramètres, l’envoie au
squelette (skeleton) qui invoque
la méthode sur le serveur et
retourne les résultats auprès de
la souche.
7
8. Architecture interne de RMI (logique)
8
- Souche/squelette : encode/décode les paramètres des méthodes
- Gestionnaire de références : associe les mandataires (Remote) aux références
distantes + ramasse-miettes réparti
- Message : définit la structure des messages, leurs identifiants et l’interaction
requête/réponse
- Transport : transporte un message entre deux machines virtuelles Java
9. RMI: Services
• Service de résolution de noms (Nommage):
Permet d’enregistrer un Remote sous un nom symbolique
• Service d’activation d’objets:
Permet de n’activer des objets que quand ils sont utilisés
• Ramasse-miettes réparti :
récupération des ressources mémoires inutilisées
9
10. Echange Client Serveur
• Le client appelle une méthode sur
un OD
• Il appelle une méthode du stub
• Le stub construit un bloc de
données avec
– un identificateur de l’objet distant à
utilise
– une description de la méthode à
appeler
– les paramètres encodés qui doivent
être passés
• Le stub envoie ce bloc de données
au serveur...
• Lorsque un objet de réception
reçoit les données
• Le Squeleton effectue les actions
suivantes :
– décode les paramètres encodés
– situe l ’objet à appeler
– invoque la méthode spécifiée
– capture et encode la valeur de
retour ou l ’exception renvoyée par
l ’appel
– Puis le retourne au client
– ………
10
12. Etapes pour développer un système RMI
1. Définir l’interface distante
2. Implémenter l’interface distante
3. Implémenter le client
4. Compiler les fichiers Java
5. Générer le stub du client et le skeleton du serveur
6. Démarrer le serveur d’annuaire (RMI registry)
7. Démarrer le serveur
8. Démarrer le client
12
14. Conclusion
• RMI est un puissant mécanisme de
distribution d'objet.
• Implantations alternatives à Java RMI
(open-source)
- NinjaRMI (Berkeley)
- Jeremie (ObjectWeb)
14
15. Bibliographie
• Cours : Architecture client/serveur
Programmation middleware - Dr. Dimassi J. (ISI)
• Cours: Invocation de Méthode à des Objets
distants Exemple : Java RMI
• Cours: Architecture client-serveur Java RMI
• Cours: Java RMI - Gaël Thomas - Master
Informatique M1 – Spécialité SAR
15