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

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();
        }
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...

Que me faudrait-il faire pour gérer le timeout sous hibernate ?

Merci d'avance