Download - Remote method invocation
![Page 1: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/1.jpg)
Remote Method Invocation(RMI)
Elaboré parMouelhi Maher
Kaabi AhmedMP1-DAM
2013-2014
ISET Radès :Master en développement d'applications mobiles
![Page 2: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/2.jpg)
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
![Page 3: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/3.jpg)
IntroductionInvocation 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
![Page 4: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/4.jpg)
Partie théorique
![Page 5: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/5.jpg)
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
![Page 6: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/6.jpg)
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
![Page 7: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/7.jpg)
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
![Page 8: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/8.jpg)
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
![Page 9: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/9.jpg)
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
![Page 10: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/10.jpg)
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
![Page 11: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/11.jpg)
Partie pratique
![Page 12: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/12.jpg)
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
![Page 13: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/13.jpg)
Démo
![Page 14: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/14.jpg)
Conclusion
• RMI est un puissant mécanisme de distribution d'objet.
• Implantations alternatives à Java RMI (open-source)
- NinjaRMI (Berkeley)
- Jeremie (ObjectWeb)
14
![Page 15: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/15.jpg)
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
![Page 16: Remote method invocation](https://reader033.vdocuments.net/reader033/viewer/2022052412/55966c441a28abde748b4591/html5/thumbnails/16.jpg)
Merci
16