Bonjour,
J'ai une application client lourd en Java qui utilise Hibernate pour accéder à une base de données MySQL et je suis en train de faire des essais pour gérer le timeout (en cas d'interruption de la connexion à la base).
J'ai essayer de 2 façons différentes mais aucune de fonctionnes :
Première méthode : Dans le fichier de config hibernate, je définie le paramètre "hibernate.c3p0.timeout" en lui affectant la valeur 10.
Deuxième méthode : Pour chaque requetes, je définie une valeur de timeout pour la transaction de la façon suivante
Pour effectuer le test, j’éteins la base de données et je lance l'application. Mais à chaque fois, au lieu de lever une exception au terme des 10s du timeout, ça reste bloqué au niveau de "session.beginTransaction();" pour une durée indéfinie. Et si je remets en route la base de données, ça débloque le processus qui continue son exécution...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Session session = sessionFactory.openSession(); try { session.getTransaction().setTimeout(10); session.beginTransaction(); // REQUETE session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw new DataBaseException(e.getMessage()); } finally { session.close(); }
Que me faudrait-il faire pour gérer le timeout sous hibernate ?
Merci d'avance
Partager