0% ont trouvé ce document utile (0 vote)
96 vues18 pages

RMI: Création Serveur et Client JEE

Ce document décrit les étapes pour mettre en place une application client-serveur utilisant RMI. Il présente la création des interfaces, classes, serveur et client RMI pour exposer des services à distance tels que la conversion de devises et la consultation de comptes bancaires.

Transféré par

Mehdi HALLEB
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
96 vues18 pages

RMI: Création Serveur et Client JEE

Ce document décrit les étapes pour mettre en place une application client-serveur utilisant RMI. Il présente la création des interfaces, classes, serveur et client RMI pour exposer des services à distance tels que la conversion de devises et la consultation de comptes bancaires.

Transféré par

Mehdi HALLEB
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Partie1: Technologies de distribution

Atelier 1: Remote Method Invocation

Dr. Hassen Lazrag


Démarche RMI

Cours JEE 2023 Hassen Lazrag


Démarche RMI

1. Créer les interfaces des objets distants


2. Créer les implémentation des objets distants
3. Générer les stubs et skeletons
4. Créer le serveur RMI
5. Créer le client RMI
6. Déploiement Lancement
 Lancer l’annuaire RMIREGISTRY
 Lancer le serveur
 Lancer le client

Cours WS 2023 Hassen Lazrag


Démarche RMI

Serveur
1. Créer l’objet distant

od: BanqueImpl
Client
4. Créer le stub Conversion(double mt):double
[Link](5) [Link]=50 [Link](5) [Link]=50
: STUB 5. Connexion : SKELETON
7. conversion(5) Port=x

[Link]=50
2. Publier
3. Récupérer
la référence de la référence de
l’objet distant Naming Service : IP et Port connus l’objet distant

Nom de l’objet distant Référence de l’objet distant


Banque Réf1 : IP /Port/ Ad mém
OD2 Réf2

Cours WS 2023 Hassen Lazrag


TP: Bank Project

Cours JEE 2023 Hassen Lazrag


Bank Project

 Supposant qu’on veut créer un serveur RMI qui crée un


objet qui offre les services distants suivant à un client
RMI:
 Convertir un montant de l’euro en DT
 Consulter un compte par son code
 Consulter la liste des comptes

Cours WS 2023 Hassen Lazrag


RMI Server Project

Cours MS 2023 Hassen Lazrag


Interface IBanqueRemote

 Créer est une interface : IBanqueRemote dans le package rmi


 L’interface RMI doit respecter deux exigences techniques :
o 1: cette interface doit hériter d’une interface qui s’appelle Remote formée par RMI
o 2: toutes les méthodes doivent lever l’exception « RemoteExeption ».

package rmi;
import [Link];
import [Link];
import [Link];
import [Link];
public interface IBanqueRemote extends Remote {
public double conversion(double mt) throws RemoteException;
public Compte consulterCompter(int code) throws RemoteException;
public List<Compte> listComptes() throws RemoteException;
}

Cours WS 2023 Hassen Lazrag


Classe Compte

 Créer les entités de métiers :


o Créer la classe métier Compte:

package metier;
import [Link];
import [Link];
public class Compte implements Serializable{
private int code;
private double solde;
private Date dateCreation;
public Compte() {
super();
}
public Compte(int code, double solde, Date dateCreation) {
super();
[Link] = code;
[Link] = solde;
[Link] = dateCreation;
}
// Getters et Setters

Cours WS 2023 Hassen Lazrag


Service : BanqueRemoteService

 Créer une classe qui s’appelle BanqueRmiService dans rmi.


 L’implémentation de la classe doit respecter un certain nombre de
règles :
 1ère règle : Cette classe doit hériter d’une classe Skeleton ,« un petit service
d’écoute », qui permet d’accéder à l’objet à distance : UnicastRemoteObject.

 2ème règle : Cette classe doit implémenter l’interface IBanqueRemote


 Implémenter toutes les méthodes

 Créer un constructeur sans paramètres : le numéro de port est choisi arbitrairement


(on peut choisir un constructeur avec paramètres, mais c’est déconseiller car il faut
à chaque fois fixer le port)

Cours WS 2023 Hassen Lazrag


Couche rmi : classe BanqueRmiService

package rmi;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class BanqueRmiService extends UnicastRemoteObject implements IBanqueRemote {
public BanqueRmiService() throws RemoteException {
super();
}
@Override
public double conversion(double mt) throws RemoteException {
[Link]("Conversion du montant "+mt);
return mt*3.32;
}

Cours WS 2023 Hassen Lazrag


Couche rmi : classe IBanqueRemote

@Override
public List<Compte> listComptes() throws RemoteException {

[Link]("Consultation des comptes");

List<Compte> cptes = new ArrayList<Compte>();


[Link](new Compte(1, [Link]()*9000, new Date()));
[Link](new Compte(2, [Link]()*9000, new Date()));
[Link](new Compte(3, [Link]()*9000, new Date()));
return cptes;
}}

Cours WS 2023 Hassen Lazrag


Serveur: ServeurRMI

 Créer une classe ServeurRMI


avec une méthode main.

 Ce serveur exécute les taches


suivantes:
1. démarrer le serveur annuaire

2. Instancier l’objet distante od


(créer l’objet)

3. Publier la référence de cette


objet dans un annuaire

Cours WS 2023 Hassen Lazrag


Classe ServeurRMI

import [Link];
import [Link];
import [Link];
import [Link];
public class ServeurRMI {
public static void main(String[] args) {

try {
//1. Demarrage par programmation de l'annuaire
[Link](1099);
//2. Creation de l'objet
BanqueRmiService od = new BanqueRmiService();
//4. Affichage de l'objet distant
[Link]([Link]());
//2. Publication la Ref de l'objet dans l'annuaire
[Link]("rmi://localhost:1099/BK", od);

} catch (Exception e) {
// TODO Auto-generated catch block
[Link]();
}
}
}

Cours WS 2023 Hassen Lazrag


RMI Client Project

Cours MS 2023 Hassen Lazrag


Projet RMIClient

 Le client a besoin seulement de l’interface IBanqueRemote :


 Copier le package rmi du serveur vers le client, sauf qu’on a pas besoin de la
classe d’implémentation.
 l’interface a besoin aussi de la classe Compte, on doit copier le package
metier aussi : généralement les entités manipuler doit se trouver dans les deux
côtés
 Créer le client : La classe ClientRMI avec main

Cours WS 2023 Hassen Lazrag


Client: classe ClientRMI
public class ClientRMI {
public static void main(String[] args) {
try {
IBanqueRemote stub = (IBanqueRemote)
[Link]("rmi://localhost:1099/BK");
[Link]([Link](1500));
[Link]("-------Consultation d'un compte à distance------");
Compte cp= [Link](2);
[Link]("Code= "+[Link]());
[Link]("Solde= "+[Link]());
[Link]("Date= "+[Link]());
[Link]("-------Consultation de la liste des comptes------");
List<Compte> cptes = [Link]();
for(Compte c:cptes) {
[Link]("----------------------------");
[Link]("Code= "+[Link]());
[Link]("Solde= "+[Link]());
[Link]("Date= "+[Link]());
}
} catch (Exception e) {
[Link]();
}
}
}

Cours WS 2023 Hassen Lazrag


Exécution:

 Dans l’IDE
Exécuter le serveur
Exécuter le client

Cours WS 2023 Hassen Lazrag

Vous aimerez peut-être aussi