bonsoir
je développe en ce moment un programme d'envois de sms qui stocke des informations sur une base oracle.
le programme utilise JAVAEXE qui le transforme en service et lui ajoute un icône dans la barre des tâches widowsienne.
le problème est que au démarrage, une tentative de connexion à oracle est effectuée, et si la base est inaccessible (elle est sur un ordinateur distant, accédé via un VPN pour les tests) il est impossible de fermer le programme : un appel à "SMS2 -deleteService" à partir du gestionnaire de l' icône n'a aucun effet, le programme ne plante pas mais ne s' arrête pas.
Pour bien comprendre le passage au dessus il est préférable de connaître javaexe, je sais...
à tout hasard, voici le code de création de la connexion.
Y-a-t'il un moyen de mieux faire les choses?
(taskinit est appelée automatiquement lors de la création de l'icône au démarrage du programme)
, où getConnexionOracle() renvoie la chaîne de caractères chargée depuis le fichier de configuration.
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 public static void taskInit() { SwingUtilities.invokeLater(new Runnable() { public void run() { try { launcher.setSmstrend(new Gestion_Smstrend()); launcher.setOracle(new Gestion_oracle()); launcher.setSqlite(new Gestion_sqlite()); launcher.setProprietes(new Gestion_proprietes()); launcher.getProprietes().charge(); if (launcher.getOracle().cnx_create(launcher.getProprietes().getConnexion_oracle())) { flag_changement_connexion = true; flag_connexion = true; } } catch (Exception ex) { } } }); }
le code précédent appelle celui-ci:
merci, vous pouvez éventuellement me dire si il n'est pas possible d'accélérer le traitement, ça m'évitera de chercher pour rien!
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 public boolean cnx_create(String chaine) { boolean correct = true; try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e1) { System.out.println("Erreur dans la methode : actionPerformed (btn test)"); e1.printStackTrace(); correct = false; } try { System.out.println("chaîne de connexion : " + chaine); connexion = DriverManager.getConnection(chaine); } catch (SQLException ex) { System.out.println("Erreur dans Gestion_oracle.cnx_create "); // ex.printStackTrace(); correct = false; } return correct; }
merci
olivier
Partager