Vous êtes sur la page 1sur 6

ISTIC TP

Systèmes Répartis

TP 3: RMI

Application 1: Conversion cm-Inch


Ecrire une application Client/Serveur RMI permettant l’invocation de deux méthodes de
conversion de cm en pouce et vice versa.
1 inch= 2.54 cm

package interfaceC;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface interfaceConversion


extends Remote{
public float cm2inch(float v) throws RemoteException;
public float inch2cm(float v) throws RemoteException;
}

package serveurC;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

import interfaceC.interfaceConversion;

public class classConversion extends UnicastRemoteObject implements


interfaceConversion{
public classConversion( )throws RemoteException{super();}
public float cm2inch(float v) throws RemoteException
{return (float) (v/2.54);}
public float inch2cm(float v) throws RemoteException
{return (float) (v*2.54);}
}

package serveurC;

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

public class serveurConversion {


public static void main(String[] args)
{
try {
LocateRegistry.createRegistry(1099);
classConversion c=new classConversion();

Page 1
ISTIC TP
Systèmes Répartis

Naming.rebind("MonObjet", c);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

package clientC;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Scanner;

import interfaceC.interfaceConversion;

public class clientConversion {

public static void main(String[] args)


{
interfaceConversion ic;
try {
ic = ( interfaceConversion) Naming.lookup ("MonObjet");
System.out.println(" donner une valeur en cm ") ;
Scanner sc= new Scanner(System.in);
float f= sc.nextFloat();
System.out.println( f+ " cm ="+ic.cm2inch(f)+ " inch ") ;
System.out.println(" donner une valeur en inch ") ;
float f1= sc.nextFloat();
System.out.println( f1+ " inch ="+ic.inch2cm(f1)+ " cm ") ;

} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NotBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}

Application 2: Gestion Etudiants


Ecrire une application RMI permettant de manipuler une classe Etudiant (ayant comme
attributs : int id, String nom, String prenom, float note1, float note2) et d’invoquer les trois
méthodes suivantes :

Page 2
ISTIC TP
Systèmes Répartis

-Une méthode AjouterEtudiant permettant d’ajouter l’instance d’Etudiant passée en


paramètre dans une liste d’étudiants nommée Classe. Cette fonction renvoie un message
indiquant le nombre d’éléments de la liste sous la forme : « Vous avez ajouté 3 étudiants ».

-La deuxième méthode RenvoyerMoyenne permet de renvoyer la moyenne de l’étudiant


ayant comme id la valeur passée en paramètre.

-La troisième fonction RechercherMeilleur a pour objectif de retourner l’étudiant ayant la


moyenne la plus élevée.

import java.io.Serializable;

public class Etudiant implements Serializable{


int id;
String nom, prenom;
float note1 , note2;
public Etudiant(int id, String nom, String prenom, float note1, float note2)
{

this.id = id;
this.nom = nom;
this.prenom = prenom;
this.note1 = note1;
this.note2 = note2;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public float getNote1() {
return note1;
}
public void setNote1(float note1) {
this.note1 = note1;
}
public float getNote2() {
return note2;
}
public void setNote2(float note2) {
this.note2 = note2;

Page 3
ISTIC TP
Systèmes Répartis

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface interfaceEtudiant extends Remote{


public String AjouterEtudiant (Etudiant e)throws RemoteException;
public float RenvoyerMoyenne (int id)throws RemoteException;
public Etudiant RechercherMeilleur()throws RemoteException;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;

public class ServeurEtudiant extends UnicastRemoteObject implements


interfaceEtudiant{
List <Etudiant>Classe;
protected ServeurEtudiant() throws RemoteException {
super();
}

@Override
public String AjouterEtudiant(Etudiant e) throws RemoteException {
if (Classe==null)
Classe=new ArrayList<Etudiant>();
Classe.add(e);
return("Vous avez ajouté "+ Classe.size()+" étudiants" );

@Override
public float RenvoyerMoyenne(int id) throws RemoteException {
for (int i=0; i<Classe.size(); i++)
{
if(Classe.get(i).getId()==id)
{
return (Classe.get(i).getNote1()+Classe.get(i).getNote2())/2;
}}
return 0;
}

@Override
public Etudiant RechercherMeilleur() throws RemoteException {
float moy=0;
int idm=0;
for (int i=0; i<Classe.size(); i++)
{
if((Classe.get(i).getNote1()+Classe.get(i).getNote2())/2>moy)
{
moy=(Classe.get(i).getNote1()+Classe.get(i).getNote2())/2;
idm=i;
}}

Page 4
ISTIC TP
Systèmes Répartis

return Classe.get(idm);
}

import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;

public class ServeurMain {


public static void main(String []args)
{
try {
LocateRegistry.createRegistry(1099);

ServeurEtudiant e=new ServeurEtudiant();


Naming.rebind("MyObject", e);
} catch (Exception e) {
e.printStackTrace();
}}

import java.rmi.Naming;
import java.util.Scanner;

public class Client {


public static void main (String [] args) {
try{
interfaceEtudiant ei = (interfaceEtudiant) Naming.lookup
("rmi://localhost:1099/MyObject");
Scanner sc=new Scanner(System.in);
System.out.println("donner nom");
String nom=sc.nextLine();
System.out.println("donner prenom");
String prenom=sc.nextLine();

Scanner sc1=new Scanner(System.in);


System.out.println("donner id");
int id=sc1.nextInt();
System.out.println("donner note1");
float note1=sc.nextFloat();
System.out.println("donner note2");
float note2=sc.nextFloat();
Etudiant e=new Etudiant(id,nom,prenom,note1, note2);
String result = ei.AjouterEtudiant(e);
System.out.println (result);

Etudiant e1=new Etudiant(2,"ali","mohamed",15,17);


String result1 = ei.AjouterEtudiant(e1);
System.out.println (result1);

float moyenne=ei.RenvoyerMoyenne(2);
System.out.println (moyenne );

Etudiant e2=ei.RechercherMeilleur();
System.out.println (e2.getNom()+" "+e2.getPrenom());
}
catch (Exception e) {

Page 5
ISTIC TP
Systèmes Répartis

System.out.println ("Erreur d’accès à l’objet distant.");


System.out.println (e.toString());
}}}

Page 6

Vous aimerez peut-être aussi