Bonjour,
J'ai une application RMI avec un serveur et deux clients qui se connectent à ce serveur grâce à RMI.

Le serveur est donc lancé, ensuite les clients sont lancés et connectés au serveur.

J'aimerais, que si le serveur est éteint (donc que l'application serveur est arrêtée) avant les clients, les clients détectent qu'ils ne sont plus connectés et affichent par exemple un message.

Le client détectera cela qu'à l'appel d'une méthode du serveur (une RemoteException) sera lancée. Donc si le client n'appelle pas de méthode pendant un long moment, le client ne détectera pas qu'il n'est plus connecté au serveur...

La seule façon que j'ai trouvé, est d'avoir un timer dans mon client qui toutes les secondes appelle une méthode du serveur pour voir s'il n'y a pas de RemoteException lancée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
        int delay = 1000;
        ActionListener taskPerformer = new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent evt) {
                try {
                     appelMethodeServeur();
                } catch (RemoteException ex) {
                   System.out.println("Le serveur n'est plus accessible");
                }
            }
        };
        timer = new Timer(delay, taskPerformer);
        timer.start();
Cela me semble assez lourd... Avez-vous une autre solution?

Merci d'avance et bonne journée !