Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Réalisé par:
Ayoub NAINIA, Ayoub OUMALEK, Ali BAHHAR
Sommaire
Introduction à la méthode d’invocation distante.
• Applications distribuées.
• Le fonctionnement de RMI.
L’architecture RMI.
• Réalisation de l’application.
• Le serveur RMI.
• Le client RMI.
• Le processus RMI
• Lancement du serveur et exécution à distance de l’application.
Conclusion et perspective.
Introduction à la méthode d’invocation distante (RMI)
1. Applications distribuées
• RMI est une API qui fournit un mécanisme qui permet de créer des applications
distribuées en JAVA
Application distribuée
Machine 1 Machine 2
Transport
Application 1 Application 2
Technologies d’accès:
• Sockets
• RMI
• CORBA
•…
3
Introduction à la méthode d’invocation distante (RMI)
2. Le fonctionnement de RMI?
• Interface/implémentation.
• La définition du comportement et l’exécution de ce comportement sont des
concepts séparés.
5
L’architecture RMI
1. L’architecture RMI
6
L’architecture RMI
2. Le stub (souche)
7
L’architecture RMI
3. Le skeleton (squelette)
8
L’architecture RMI
4. Remote Reference Layer
RMI Registry
Client Serveur
9
L’architecture RMI
5. La couche du transport
Machine 1 Machine 2
TCP IP ou UDP
Application 1 Application 2
• Cette couche est basée sur les connexions TCP/IP entre les machines.
• Elle fournit la connectivité de base entre les 2 JVM.
• Elle suit les connexions en cours.
• Elle construit une table des objets distants disponibles.
• Elle utilise aussi un protocole propriétaire R.M.P. (Remote Method Protocol).
10
Démarche RMI (approche pratique)
1. Réalisation de l’application
• Notre application RMI sera répartie sur deux projets Java, le premier projet
représente le Serveur, le deuxième représente le Client.
• Le principe de cette application est d’appliquer la démarche générale de RMI, cela
veut dire que le Client doit implémenter les méthodes distantes, qu’on va les créer
dans le Serveur, comme s’ils étaient crées localement.
• Notre application va permettre au client de:
1. Consulter un compte.
2. Convertir un montant de l’euro en dirhame.
3. Consulter une liste de compte.
11
Démarche RMI (approche pratique)
2. Le Serveur RMI
2.1 Vue d’ensemble
rmi
La classe Compte.
La classe ServeurRMI.
12
• Démarche RMI (approche pratique)
rmi
2. Le Serveur RMI
2.2 L’interface Remote
IBanqueRemote.java
Java.rmi.Remote
RemoteException
13
• Démarche RMI (approche pratique)
rmi
2. Le Serveur RMI
2.3 L’implémentation
IBanqueRemote.java
Java.rmi.Server.UnicastRemoteObject IBanqueRemote Implémentation.java
(Skeleton) conversion(double mt): double
consulterCompte(int code): Compte
listeCompte(): Liste<Compte>
1. extends
ImpBanqueRMI
ImpBanqueRMI() 2. implements
@Override
3. Lever le RemoteException
RemoteException pour chaque méthode.
14
• Démarche RMI (approche pratique)
métiers
2. Le Serveur RMI
2.4 L’objet métier
Java.io.Serializable Compte.java
Implements
Compte
Compte(code, solde, date)
• La classe Compte doit être serialisable puisqu’on va créer le compte dans une machine et on va l’envoyer
vers une autre.
• Les objets qui sont déclarés dans l’interface Remote doivent être serialisable.
• Pour qu’un objet soit serialisable on doit implémenter l’interface Serializable.
15
• Démarche RMI (approche pratique)
default
2. Le Serveur RMI
2.5 Skeleton
ServeurRMI.java
ServeurRMI
1. Démarrage de l’annuaire RMIregistry
2. Création de l’objet distant
3. Publier la référence de l’objet distant dans
l’annuaire
Naming.rebind(‘’rmi://localhost:1099/Banque’’, od);
: SKELETON
Port = x
17
• Démarche RMI (approche pratique)
3. Le Client RMI
3.1 Vue d’ensemble
default
• Puisqu’on va utiliser le client.jar, ca sera plus pratique de créer un lanceur de notre application
qui contient le chemin vers notre client.jar et qui va s’exécuter dans la ligne de commande.
19
• Démarche RMI (approche pratique)
default
3. Le Client RMI
3.2 Stub
ClientRMI ClientRMI.java
1. Création du Stub.
2. Obtenir le référence d’un objet distant.
3. Implémenter les méthodes distante.
• Pour obtenir la référence de l’objet distant, on utilise la méthode lookup() de la classe Naming.
Num port
Naming.lookup(‘’rmi://localhost:1099/Banque’’);
• Le client devrait avoir l’interface Remote, et la classe Compte pour implémenter les méthodes de
l’objet métier. 20
• Démarche RMI (approche pratique)
3. Le Client RMI
Serveur
3.3 Vue d’ensemble
1. Créer l’objet distant
od: BanqueRmiService
4. Créer le STUB
Client conversion (double montant):double
consulterCompte (int code):Compte
6. Conversion(5)
8. Conversion(5) 9. Résultat
21
Exécution
22
• Démarche RMI (approche pratique)
4. Exécution avec deux machine distantes
• Pour permettre la communication avec un serveur distant en échangeant des lignes de texte et
en recevant des réponses également sous forme de texte, on active le protocole Telnet.
23
• Démarche RMI (approche pratique)
4. Exécution avec deux machine distantes
• Dans la ligne de commande, on utilise Telnet pour qu’on puisse communiquer a distance avec le
serveur, de la manière suivante:
L’utilisation du Telnet.
24
• Bonus (exercice interactif - JeuRMI)
1. Réalisation de l’application
25
• Bonus (exercice interactif - JeuRMI)
2. Le Serveur Jeu RMI
2.1 Overview
jeuRMI
1. String jouer(int nombre)
26
• Bonus (exercice interactif - JeuRMI)
jeuRMI
2. Le Serveur Jeu RMI
2.2 L’interface Remote
IJeuRemote.java
Java.rmi.Remote
2. Pour que cette méthode soit accessible
par le client, cette interface doit hériter de la
classe Remote.
RemoteException
27
• Bonus (exercice interactif - JeuRMI)
jeuRMI
2. Le Serveur Jeu RMI
2.3 L’implémentation
IJeuRemote.java
Java.rmi.Server.UnicastRemoteObject IJeuRemote.java JeuImplémentation.java
(Skeleton) jouer(int nombre): String
1. extends
JeuImplementation.java
JeuImplementation() 2. implements
void genererSecret()
@Override
3. Lever le RemoteException
RemoteException pour chaque méthode.
28
• Bonus (exercice interactif - JeuRMI)
jeuRMI
2. Le Serveur Jeu RMI
2.4 Skeleton
IJeuRemote.java
ServeurJeuRMI.java JeuImplémentation.java
Naming.rebind(‘’rmi://localhost:1099/JEU’’, jeu);
default
ClientJeuRMI (STUB).
30
• Bonus (exercice interactif - JeuRMI)
default
3. Le Client Jeu RMI
3.2 Stub
ClientJeuRMI.java
ClientJeuRMI.java
1. Création du Stub.
2. Obtenir le référence d’un objet distant.
3. Implémenter les méthodes distante.
• Pour obtenir la référence de l’objet distant, on utilise la méthode lookup() de la classe Naming.
Num port
Naming.lookup(‘’rmi://localhost:1099/JEU’’);
31
Exécution
32
Conclusion et perspective
33
Merci pour votre attention!
34