Salut,

j'ai un soucis de compréhension concernant le RMI et la possibilité de simuler plusieurs clients

Pour résumer j'ai un annuaire (objet distant) et je dois simuler plusieurs clients pouvant ajouter (put) ou retrouver (get) un numéro

je vous présente mon code

interface :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
public interface Directory extends Remote {
    void put(String nom, String num) throws RemoteException;
    String get(String nomCherche) throws RemoteException;
}
class implementant l'interface

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class DirectoryImpl extends UnicastRemoteObject implements Directory {
 
    HashMap<String, String> annuaire = new HashMap<String, String>();
 
    protected DirectoryImpl() throws RemoteException {
        super();
    }
 
    //ajout dans la map
    public void put(String nom, String num) throws RemoteException {
        annuaire.put(nom, num);
    }
 
    //methode renvoyant le resultat d'une recherche
    public String get(String nomCherche) throws RemoteException {
        String num = annuaire.get(nomCherche);
        return num;
    }
}
serveur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ServerImpl {
 
    public static void main(String[] args) {
        try {
            //creation registre
            Registry r = LocateRegistry.createRegistry(1099);
            //instance de la class
            DirectoryImpl dI = new DirectoryImpl();
            //instance enregistré dans le registre
            r.rebind("directory", dI);
 
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
    }
 
}
et enfin client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Client1 { 
    public static void main(String[] args) {
        try {
 
 
            Directory d = ((Directory)Naming.lookup("rmi://localhost/directory"));
            Directory d2 = ((Directory)Naming.lookup("rmi://localhost/directory"));
            d.put("Pierre", "0608");
            d2.put("Gerrard", "0609");
            System.out.println(d2.get("Pierre"));
 
        } catch (MalformedURLException | RemoteException | NotBoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
 
    }
 
}

Je suppose que ce code ne simule pas du tout plusieurs clients, je me demande comment faire, je suppose qu'il doit y avoir une histoire de thread mais je n'arrive pas à comprendre.
Pour commencer j'aimerai simuler plusieurs clients mais de manière séquentielle, sans concurrence voir déjà si j'arrive a comprendre

Si vous pouvez m'aider

ps : il n'y a pas d'erreur de fonctionnement, tout marche et Pierre est bien trouvé dans le hashMap