bonjour

j'ai développé un programme en java utilisant javaexe, un programme annexe qui me permets de transformer mon programme java en service et d'avoir un icône dans la barre des tâches.
Mais ma question ne concerne pas cet aspect, ou peu : le problème est que lorsque je le "malmène" un peu (une ouverture, pas de confirmation que le service doit être lancé, et une deuxième ouverture suivie de la demande de fermeture de la première instance) ou peut-être même lorsque je l'utilise normalement (je dois réaliser des tests pour voir) après la fermeture j'ai un comportement bizarre : il ne se ferme pas (l'icône ne disparaît pas) et lorsque je lance le gestionnaire des tâches j'ai une dizaine, voire une vingtaine de processus ouverts en plus du service, et il s'en ouvre continuellement.

je crois que cela provient de la méthode appelée à la fermeture du service; la voici :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/**             * 1.fermetures
             */
            SwingUtilities.invokeLater(new Runnable() {
 
 
                @Override
                public void run() {
                    // app
                    app.flag_end = true;
 
                    try {
                        // oracle
                        oracle.getConnexion().close();
 
 
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                    try {
 
 
                        // smstrend
                        smstrend.cnx_close();
 
 
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    try {
 
 
                        // sqlite
                        sqlite.connexion.close();
 
 
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
 
 
                }
            });
 
 
            /**
             * 2;exit
             */
            SwingUtilities.invokeLater(new Runnable() {
 
 
                @Override
                public void run() {
                    Runtime runtime = Runtime.getRuntime();
                    try {
                        runtime.exec("SMS2.exe -deleteService");
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
ma question est : savez-vous pourquoi il y a cette erreur? comment la corriger?

merci

olivier