Université Louis Pasteur
LICENCE 3ème année
Travaux
Pratiques
de
Programmation Distribuée
(sujet
n°3)
Remote
Method Invocation (RMI)
Télécharger ces
exemples.
La documentation Java est disponible à cette
adresse.
Pour tous les exercices
: pensez bien à tuer tous vos processus à chaque fois que
vous vous délogez d'une machine Linux. En ce qui concerne les
processus java
ou rmiregistry
, vous pouvez
utiliser les commandes suivantes : pkill java ; pkill rmiregistry
Exercice 1
Vous trouverez
votre premier code RMI dans le répertoire MessageExercice
.
Il s'agit d'un exemple simple d'appel java RMI. Vous devez le
compléter (en vous servant du cours !), puis le compiler et
l'exécuter. Dans un premier temps lancez toutes les commandes
sur votre propre ordinateur. Dans un second temps, (si vous disposez de
plusieurs machines) placez le serveur et le client sur deux machines
différentes.
1. Effectuez la compilation avec les commandes :
javac *.java
rmic MessageImpl
2. Lancez le serveur de noms sur une machine (ici
à l'écoute du port 2001) :
rmiregistry 2001 &
3. Lancez le serveur sur la même machine
java Serveur 2001 &
4. Lancer un client
java Client <machine
serveur>:2001
Exercice 2
Rendez-vous dans
le répertoire TelephoneExercice
. Voila un exemple
simple d'appel java RMI depuis une applet. Vous devez le compiler puis
le faire fonctionner.
1. Lancez le serveur de noms sur votre propre machine
rmiregistry 2002 &
puis lancez le serveur
java AnnuaireImpl 2002 &
2. Lancez le
client sur la même machine (votre machine). Remarquez les
paramètres passés dans le fichier AppletClient.html
.
appletviewer AppletClient.html
3. Ajoutez les
fonctionnalités d'ajout et d'effacement d'une entrée dans
l'annuaire téléphonique. Vous concevrez ensuite deux
petits clients distincts QUI NE SERONT PAS DES APPLETS (ils
ressembleront au client de l'exercice 1.).
Ils pourront être appelés de la maniere
suivante :
java Ajoute <nom d'une personne> <No Telephone>
java Supprime
<nom d'une personne>
Ils contacteront l'annuaire distant pour réaliser
les opérations d'ajout et de suppression demandées.
Remarque : voir la documentation Java, chercher la classe Hashtable
puis les méthodes put
et remove
.
4. Ecrire un nouveau client Lister
qui
affiche à l'écran la liste des entrées de
l'annuaire.
Remarque : vous pourrez utiliser dans la fonction que vous
écrirez dans AnnuaireImpl.java
, la ligne de code :
Iterator it = numeros.keySet().iterator();
. A l'aide de
cet itérateur, vous pourrez parcourir la liste et en afficher
chacun des elements.
5. Lancez le
serveur de noms et le serveur d'annuaire sur une autre machine que la
votre. Lancer l'applet depuis votre machine. Cela ne doit pas marcher !
une exception du type "access denied" est levée. Pour
résoudre le problème de droit que cela pose utiliser la
commande :
$ appletviewer
-J-Djava.security.policy=../TelephoneTelecharge/java.policy
AppletClient.html
Exercice
3
On désire
implanter un serveur de calcul sur des matrices n
x
n
à coefficients réels qui offre comme
service : - la multiplication de deux matrices. Vous utiliserez pour ce
service distant l'interface fournie dans le fichier OpMatrice.java
Remarque : la formule à utiliser pour C = A.B
est :
pour tout i
,j
,
on a c[i][j] =
(Somme sur k de) a[i][k]*b[k][j];
Mettre en place un
tel serveur. Il devra pouvoir être appelé par un client
depuis une autre machine. Vous appellerez à distance une
méthode qui effectuera la multiplication des matrices
(envoyées par le client) :
int[][] a = { {1, 0, 0}, {0, 2,
0}, {0, 0, 3} };
int[][] b = { {1, 2, 3}, {1, 2, 3}, {1, 2, 3} };
Vous afficherez le résultat (pour cela
vous
écrirez une méthode qui se chargera de l'affichage).
[Page réalisée à partir d'un document de Guillaume
Latu]