Examen RMI (GMI FC)
Examen RMI (GMI FC)
Examen RMI (GMI FC)
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Examen</strong> du 27 Juin 2002<br />
Le principe de cet objet distant est de renvoyer une nouvelle valeur à chaque appel de next, sachant que<br />
la valeur initiale est zéro et qu’un appel de next ajoute un à cette valeur avant de renvoyer la nouvelle<br />
valeur. On doit donc obtenir 1 au premier appel, 2 au deuxième, etc. On propose la programmation<br />
suivante de cette interface :<br />
Compteur<br />
1 import java.rmi.Remote;<br />
2 import java.rmi.RemoteException;<br />
3 import java.rmi.server.UnicastRemoteObject;<br />
4 public class Compteur extends UnicastRemoteObject implements ICompteur {<br />
5 private int val;<br />
6 public Compteur() throws RemoteException {<br />
7 val=0;<br />
8 }<br />
9 public int next() throws RemoteException {<br />
10 int oldval=val;<br />
11 try {<br />
12 // pause de 1000 ms (i.e., 1 seconde)<br />
13 Thread.sleep(1000);<br />
14 } catch (InterruptedException e) {};<br />
15 oldval++;<br />
16 val=oldval;<br />
17 return val;<br />
18 }<br />
19 }<br />
Le scénario d’utilisation est le suivant : deux clients (correspondant à 2 JVM distinctes) appellent “simultanément”<br />
la méthode next du serveur (en fait, le client A se connecte, puis 100 ms plus tard, le client<br />
B se connecte).<br />
Questions :<br />
1. Combien de temps (approximativement) chaque client attend-il la réponse du serveur <br />
2. Quelle est la réponse renvoyée à chaque client <br />
3. Comment obtenir simplement une réponse plus cohérente (en modifiant l’implantation du serveur) <br />
Quelle est alors le temps d’attente de chaque client, toujours pour le même scénario, mais avec le<br />
nouveau serveur <br />
Exercice 5 :<br />
On propose l’interface et les classes suivantes :<br />
One<br />
1 import java.io.Serializable;<br />
2 public class One implements Serializable {<br />
3 public void one() {<br />
4 System.out.println("One.one()");<br />
5 }<br />
6 }<br />
1 import java.rmi.Remote;<br />
2 import java.rmi.RemoteException;<br />
3 public interface ITwo extends Remote {<br />
ITwo<br />
F. Rossi– 7 juillet 2002 IUP 3 (<strong>FC</strong>) p. 3 (1)