(Remote Method Invocation)
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);
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. Connexion
7. Appel
10. Résultat
7. Appel
11. Résultat
8. Appel 9. Résultat
(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
• 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.
• Doivent hériter de la classe :
UnicastRemoteObject
extends 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.
• 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:109
9/NOBJ",noj);
• Créer le stub : Lire les référence de l’objet
distant dans l’annuaire :
<NomIntface> NomStub =
(<NomIntface>)
Naming.lookup("rmi://NomServeur:10
99/NOBJ");
• Appeler les méthodes de l’objet distant via le
stub :
NomStub.NomMethode()

Chap4 cliserrmi

  • 1.
  • 2.
    Invoquer une méthoded’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);
  • 4.
    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. Connexion 7. Appel 10. Résultat 7. Appel 11. Résultat 8. Appel 9. Résultat
  • 6.
    (1) Créer lesinterfaces 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
  • 7.
    • Doit Hériterde la classe Remote : extends Remote • Les méthodes doivent lever l’exception : RemoteException : throws RemoteException • Les Objets utilisés doivent être sérializable.
  • 8.
    • Doivent hériterde la classe : UnicastRemoteObject extends 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.
  • 9.
    • Démarrer leservice 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:109 9/NOBJ",noj);
  • 10.
    • Créer lestub : Lire les référence de l’objet distant dans l’annuaire : <NomIntface> NomStub = (<NomIntface>) Naming.lookup("rmi://NomServeur:10 99/NOBJ"); • Appeler les méthodes de l’objet distant via le stub : NomStub.NomMethode()