République Tunisienne
Ministère de l’Enseignement Supérieur,DE la recherche scientifique
et de la technologie
Université de la Manouba

Ecole Nationale des Sciences de l’Informatique
COMPTE RENDU DES TRAVAUX PRATIQUES
| |
| --- |
| Programmation avec java RMI |
Réalisé par :
Amani BEN DHIAB Mohamed Yassine CHAIEB
SLE G2
Enseigné par :
Mme. Nadia BEN AZZOUNA
Année universitaire : 2012-2013
Exercice 1
Question 1
Fichier : calcul.java
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface calcul extends Remote {
public int carre(int nombre) throws RemoteException;
Publicité
public float racine(int nombre) throws RemoteException;
}
Question 2
Fichier : calculImpl.java
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class calculImpl extends UnicastRemoteObject implements calcul {
private static final long serialVersionUID = 1L;
protected calculImpl() throws RemoteException{
super();
}
public int carre(int nombre) throws RemoteException {
System.out.println("operation de calcul du carre.\n");
return(nombre\*nombre);
}
public float racine(int nombre) throws RemoteException {
System.out.println("operation de calcul du racine.\n");
return (float) (Math.sqrt(nombre));
}
}
Question 3
Fichier : calculServeur.java
import java.rmi.Naming;
Publicité
public class calculServeur {
public static void main(String[] args) throws Exception{
calculImpl calculImplIsntance = new calculImpl();
Naming.rebind("DemoCalcul", calculImplIsntance);
System.out.println("Le serveur de Calcul est pret a etre utilise...");
}
}
Après la compilation de tous les fichiers, on génère le stub et le skeleton avec l’utilitaire rmic
$Rmic –v1.1 calculImpl
Puis on lance le rmiregistry
$ rmiregistry &
$java calculServer &
Question 4
Fichier : calculClient.java
import java.rmi.Naming;
public class calculClient {
public static void main(String[] args) throws Exception {
if(args.length == 3) {
String url = new String("rmi://"+args[0]+"/DemoCalcul");
calcul T1 = (calcul)Naming.lookup(url);
if(args[1].equals("carre")) {
int reponseServeur1 = T1.carre(Integer.parseInt(args[2]));
System.out.println("Reponse du serveur:" + reponseServeur1);
Publicité
} else if (args[1].equals("racine")) {
float reponseServeur2 = T1.racine(Integer.parseInt(args[2]));
System.out.println("Reponse du serveur:" + reponseServeur2);
}
}
else {
System.err.println("Votre requete est erronee.");
}
}
}
Question 5
Après la compilation de tous les fichiers , on déplace le fichier calculImpl\_Stub.class générée par le pré-compilateur rmic dans le répertoire client puis on lance le client.
$java CalculClient
Question 6
| | |
| --- | --- |
| JVM client | JVM serveur |
| -client RMI -stub -interface | -serveur RMI -skeleton -interface -registry |
Exercice 2
Question 1
Fichier : Nombre.java

Fichier : NombreImpl.java
Publicité

Question 2
Fichier FabriqueNombre.java

Fichier : FabriqueNombreImpl.java

Fichier : Calcul.java

Fichier : CalculImpl.java

Fichier : CalculServer.java

Après la compilation on génère le stub et on lance le serveur
$rmic calculImpl FabriqueNombreImpl
$rmiregistry &
$java –Djava.security.policy=all.policy calculServer
Question 3
Fichier : ClientNombre.java

Question 4
On teste le code en local
$java ClientNombre