REPUBLIQUE TUNISIENNE
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR,DE LA RECHERCHE SCIENTIFIQUE
ET DE LA TECHNOLOGIE
UNIVERSITE 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;
public float racine(int nombre) throws RemoteException;
Publicité
}
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;
public class calculServeur {
Publicité
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);
} else if (args[1].equals("racine")) {
Publicité
float reponseServeur2 = T1.racine(Integer.parseInt(args[2]));
System.out.println("Reponse du serveur:" + reponseServeur2);
}
System.err.println("Votre requete est erronee.");
}
else {
}
}
}
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
-client RMI
-stub
-interface
Exercice 2
Question 1
Fichier : Nombre.java
JVM serveur
-serveur RMI
Publicité
-skeleton
-interface
-registry
Fichier : NombreImpl.java
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