Bonsoir,

Je débute en Hibernate mais je pensais quand même être capable de catcher l'exception que peut déclencher Hibernate lorsqu'il n'arrive pas à établir une connection. Bien évidemment, ça n'est pas le cas ...
Je veux volontairement tester ce cas, pouvoir déclencher l'erreur. Je la vois bien affichée dans la stack mais sans pouvoir l'attraper au vol. Et bien évidemment, ça coince un peu plus loin ...

Je vous envoie ci-dessous le code qui me permet d'ouvrir la connection et la stack que cela génère.
Si quelqu'un avait la gentillesse de prendre quelques minutes pour m'aiguiller ...

Merci d'avance et bonne soiré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
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
61
62
63
64
65
66
public class HibernateUtils {
 
    private static final SessionFactory sessionFactory;
    private static boolean sessionValide = false;
 
 
    static {
        try {
            //Récupération des paramètres de la connexion à la base de données
 
            String databaseUserName = System.getProperty("databaseUserName");
            String databaseUrl = System.getProperty("databaseUrl");
            String databaseClass = System.getProperty("databaseClass");
            String databaseDialect = System.getProperty("databaseDialect");
 
            Configuration cfg = new Configuration();
            if ((databaseUserName != null) && (databaseUrl != null) && (databaseClass != null) && (databaseDialect != null)) {
                System.out.println("Chargement des paramètres de connexion à la base de la servlet");       
                cfg.setProperty("hibernate.dialect", databaseDialect);
                cfg.setProperty("hibernate.connection.driver_class", databaseClass);
                cfg.setProperty("hibernate.connection.url", databaseUrl);
                cfg.setProperty("hibernate.connection.username", databaseUserName);
                cfg.setProperty("hibernate.connection.password", System.getProperty("databasePassword"));
                cfg.addResource("com/pba/mes/reprise/bo/XwfSaisieReprises.hbm.xml");
                cfg.addResource("com/pba/mes/reprise/bo/XwfInterfaceMes.hbm.xml");
            } else {
                System.out.println("Chargement des paramètres de connexion à la base du fichier hbm.xml");
                cfg.configure("hibernate.cfg.xml");
            }
            sessionFactory = cfg.buildSessionFactory();
            sessionValide = true;
        } catch (Exception ex) {
            System.out.println(" erreur session Factory : " + ex.getMessage());
            sessionValide = false;
            throw new RuntimeException("Configuration problem: " + ex.getMessage(), ex);
        } 
    }
    public static final ThreadLocal session = new ThreadLocal();
 
    public static boolean isSessionValide() {
        return sessionValide;
    }
 
    public static Session currentSession() throws HibernateException, Exception {
        if (sessionValide) {
            Session s = (Session) session.get();
            // Open a new Session, if this Thread has none yet
            if (s == null) {
                s = sessionFactory.openSession();
                session.set(s);
            }
            return s;
        } else {
 
            throw new Exception("La session n'est pas valide");
        }
    }
 
    public static void closeSession() throws HibernateException {
        Session s = (Session) session.get();
        session.set(null);
        if (s != null) {
            s.close();
        }
    }
}
22 avr. 2009 18:55:55 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.0.5
22 avr. 2009 18:55:55 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
22 avr. 2009 18:55:55 org.hibernate.cfg.Environment <clinit>
INFO: using CGLIB reflection optimizer
22 avr. 2009 18:55:55 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
Chargement des paramètres de connexion à la base du fichier hbm.xml
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration configure
INFO: configuring from resource: hibernate.cfg.xml
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: hibernate.cfg.xml
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration addResource
INFO: Mapping resource: com/pba/mes/reprise/bo/XwfSaisieReprises.hbm.xml
22 avr. 2009 18:55:55 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
INFO: Mapping class: com.pba.mes.reprise.bo.XwfSaisieReprises -> XWF_SAISIE_REPRISES
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration addResource
INFO: Mapping resource: com/pba/mes/reprise/bo/XwfInterfaceMes.hbm.xml
22 avr. 2009 18:55:55 org.hibernate.cfg.HbmBinder bindRootPersistentClassCommonValues
INFO: Mapping class: com.pba.mes.reprise.bo.XwfInterfaceMes -> XWF_FICHIERS_MES
22 avr. 2009 18:55:55 org.hibernate.cfg.HbmBinder bindCompositeId
ATTENTION: Could not perform validation checks for component as the class com.pba.mes.reprise.bo.PkXwfInterfaceMes was not found
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration secondPassCompile
INFO: processing extends queue
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration secondPassCompile
INFO: processing collection mappings
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration secondPassCompile
INFO: processing association property references
22 avr. 2009 18:55:55 org.hibernate.cfg.Configuration secondPassCompile
INFO: processing foreign key constraints
22 avr. 2009 18:55:55 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Using Hibernate built-in connection pool (not for production use!)
22 avr. 2009 18:55:55 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: Hibernate connection pool size: 20
22 avr. 2009 18:55:55 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: autocommit mode: false
22 avr. 2009 18:55:55 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: using driver: oracle.jdbc.driver.OracleDriver at URL: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = lyossunoraa-dev-toto)(PORT = 1523)))(CONNECT_DATA =(SERVICE_NAME = lyoorab3.asterion.fr)))
22 avr. 2009 18:55:55 org.hibernate.connection.DriverManagerConnectionProvider configure
INFO: connection properties: {user=XWF, password=****}
22 avr. 2009 18:55:55 org.hibernate.cfg.SettingsFactory buildSettings
ATTENTION: Could not obtain connection metadata
java.sql.SQLException: Exception d'E/S: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:161)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:273)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:321)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:346)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:149)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:31)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:543)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:154)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:72)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1463)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1004)
at com.pba.utils.HibernateUtils.<clinit>(HibernateUtils.java:42)