Bonjour,
J'ai 200 bases Informix sur 200 serveurs.
J'ai un EJB3 qui doit etablire une connexion JDBC sur une des bases suivant un paramétre.

Les connexions fonctionnent bien en général. Mais je viens de me rendre compte d'un probleme.

Je fais une premiere demande sur une base1 non joignable (en erreur) et bien toutes les autres demandes de connexion se trouvent bloqués en attendant que ma premiere demande retourne une erreure.
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
 
private Statement getStatement(HotelsSystem hotelSystem) throws BusinessException{
            Logger.getLogger(HotelBean.class.getName()).finest("connect to -- :  " + hotelSystem.getHotelid());
            Connection connection;
            Statement hotelStatement    = null;
 
            try  {
                Class.forName("com.informix.jdbc.IfxDriver", true, Thread.currentThread().getContextClassLoader()).newInstance();
                Logger.getLogger(HotelBean.class.getName()).finest("------> loaded" );
                connection = DriverManager.getConnection("jdbc:informix-sqli://"+hotelSystem.getHotelid()+":port/bddname:INFORMIXSERVER="+hotelSystem.getIdBdd()+";user=user;password=pwd", "", "");
                Logger.getLogger(HotelBean.class.getName()).finest("REF CON ------>" + connection.toString());
 
...
                Logger.getLogger(HotelBean.class.getName()).exiting(this.getClass().getName(), "Private_getStatement");
            }
            catch (Exception e) {
                ...            }
        return hotelStatement;

Dans les logs je vais voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
connect to -- : hotel1
------> loaded
connect to -- : hotel2
------> loaded
........... (1 min)
Erreur de connexion sur hotel1
Exit
REF CON ------> gfkjqfhllal (hotel2)
Exit
C'est "DriverManager.getConnection" qui bloque. Comment faire en sorte que le DriverManger puisse marcher en multi thread (ou autre) qu'il ne bloque pas tous le monde ?