10

Click here to load reader

Chap4 cliserrmi

Embed Size (px)

Citation preview

Page 1: Chap4 cliserrmi

Programmation répartie en JAVA

RMI (Remote Method Invocation)

Page 2: Chap4 cliserrmi

Invoquer une méthode d’un objet distant

• objetDistant.methode();

Passer un Objet Distant en paramètre à une méthode locale ou distante

• resultat=objetLocal.methode(objetDistant); • resultat=objetDistant.methode(autreobjetDistant);

Objectifs

Page 3: Chap4 cliserrmi

PRINCIPE DE FONCTIONNEMENT

Page 4: Chap4 cliserrmi

Client Serveur

Objet Distant

Attributs

Méthodes

Skeleton

Port = xxx

Naming Service : IP et Port

Stub

Port = xxx

Nom Objet Distant Ref Objet distant

Objet 1 Ref1 : IP/PORT/@m

Objet 2 Ref2 : IP/PORT/@m

1. Créer L’objet distant

2. Publier la référence de

l’objet

3. Récupérer la référence

de l’objet

4. Créer le stub

5. Connexion7. Appel

10. Résultat

7. Appel

11. Résultat

8. Appel 9. Résultat

Page 5: Chap4 cliserrmi

DÉMARCHE RMI

Page 6: Chap4 cliserrmi

Démarche RMI

(1) Créer les interfaces des objets distants

(2) Créer les implémentation des objets distants

(3) Créer le serveur RMI - générer le skeleton

(4) Créer le client RMI - générer le stub

(5) Déploiement Lancement• Lancer l’annuaire RMIREGISTRY• Lancer le serveur• Lancer le client

Page 7: Chap4 cliserrmi

(1) Créer les interfaces des objets distants

• Doit Hériter de la classe Remote :

extends Remote

• Les méthodes doivent lever l’exception : RemoteException :

throws RemoteException

• Les Objets utilisés doivent être sérializable.

Page 8: Chap4 cliserrmi

(2) Créer les implémentation des objets distants

• Doivent hériter de la classe : UnicastRemoteObjectextends UnicastRemoteObject

• Doivent implémenter l’interface définit précédement Redéfinir tous les méthodes

• Posséder un constructeur sans ou avec paramètres, permettant de lever l’exception : RemoteException.

Page 9: Chap4 cliserrmi

(3) Créer le serveur RMI

• Démarrer le service de nom (rmiregistry) :LocateRegistry.createRegistry(1099);

• Instancier l’objet distant :NomClasse noj = new NomClasse();

• Publier le référence de cette objet dans l’annuaire :Naming.rebind("rmi://NomServeur:1099/NOBJ",noj);

Page 10: Chap4 cliserrmi

(4) Créer le client RMI

• Créer le stub : Lire les référence de l’objet distant dans l’annuaire :<NomIntface> NomStub = (<NomIntface>) Naming.lookup("rmi://NomServeur:1099/NOBJ");

• Appeler les méthodes de l’objet distant via le stub :NomStub.NomMethode()