IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Utilisation du setLoginTimeout


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut Utilisation du setLoginTimeout
    Bonjour,

    J'ai un petit souci avec la méthode de DriverManager, setLoginTimeout(int).

    D'après ce que j'ai lu, l'int qu'on spécifie est le temps maximum qu'un driver peut être chargé pour pouvoir se connecter à un DB, en gros...

    Seulement voici dans quelle conditions je l'utilise:
    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
     
    public boolean connexionDB() 
        {
            boolean success = false;
            try
    	{
                Class.forName(driver);
                //on vient de charger le driver
     
                if(test4==0)
                {
                    ans.setTestTime(db_name,getStatusTime());
                    test4++;
                }
                int logtime = 300;
                DriverManager.setLoginTimeout(logtime); //temps d'attente maximum avant de faire une connexion, en seconde
     
                con =DriverManager.getConnection(suburl,sublogin, subpasswd);
     
                success = true;
                //on à créé la connexion
            }
    	catch(ClassNotFoundException ex)
    	{
                System.out.println("Driver JDBC Class Not Found: " + ex);
                System.out.println("");
            }
    	catch(Exception e)
            {
    	    String c = e.toString();
                int logtimeout = DriverManager.getLoginTimeout();
                if(logtimeout>=300)
                {
                    c="LOGIN TIMEOUT "+logtimeout;
                }    
                ans.setException(db_name,c);
                System.out.println("=============================================");
                System.out.println(">>>>>>>>>>>>>>>>>>>> Database: "+suburl);
                ans.setCantConnect(db_name);
                System.out.println("");
                System.out.println("Error: Unreachable Database: " + e);
                System.out.println("=============================================");
                System.out.println("");
    	}
            return success;
        }
    Dans le catch, j'écris donc une exception particulière lorsque le logintimeout est atteint. Seulement voilà, si je le fixe à 300, dés la première fois qu'une connexion merde, le message envoyé à l'exception est directement "Login Timeout", alors que l'appli devrait attendre 300 secondes avant d'envoyer ce message, non ?!

    Donc voilà, je dois certainement très mal utiliser cette méthode.

    Vous l'avez déjà utilisée ?

    Y'aurait éventuellement des test à faire dessus ou autre ?

    La question vous paraît peut-être bête, mais là sur le coup, avec la doc à côté je vois pas pourquoi mon code me génère direct l'exception avec la string "Login Timeout" (que j'ai écrite moi), alors que selon ce que je lis, il est censé attendre 300sec avant d'envoyer ce message...

    Et, après seulement 10 seconde que mon programme tourne, si je consulte l'objet "exceptions", il y est déjà écris "Login Timeout" pour certaines DB...

    D'avance merci.
    Bien à vous.
    Franck.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Le code de ton catch est fondamentalement faux car tu as spécifié une durée de timeout (en l'occurrence 300s).
    Or dans ton catch, tu lances une exception si la durée SPECIFIEE pour le timeout est celle que t'as spécié plus haut ;-).
    L'expiration du timeout est gérée toute seule, par le Driver et c'est lui qui se chargera de lever une exception si le délai est dépassé.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Mouais je m'disais aussi...

    Mais dans mon catch alors si dans le test, je spécifie 301 comme valeur au lieu de 300 ça doit marcher en fait... nan ?

    (la tête dans le fion moi aujourd'hui, c'est pas des erreurs qui me ressemblent ça )

    En fait non ça marche pas. Je vais faire autrement ^^

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par ouranos21 Voir le message
    Mais dans mon catch alors si dans le test, je spécifie 301 comme valeur au lieu de 300 ça doit marcher en fait... nan ?
    Non : getLoginTimeout() te renvoi la valeur que tu as défini via setLoginTimeout(), et donc cela te renverra toujours 300...


    Perso j'essayerais plutôt de voir si tu ne reçoit pas une exception spécifique...


    a++

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Mmmmh, je vois, merci.

    Je peux ptetre essayer aussi de créer un timer moi-même, enfin, de faire ce que je croyais que setLoginTimeout et getLoginTimeout feraient comme je le pensais...

    Oki.

    Je vous tiens au courant.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Par défaut
    Je double post, sorry...

    En fait c'est ptetre plus mieux si je vous dit à quoi j'aimerais arriver.

    Si une connexion merde pendant 5 min, j'aimerais qu'a la fin de ces 5 minutes, une exception soit déclenchée, comme ça je l'ajoute à mon objet "exceptions" et j'aimerais qu'avec cette exception levée après 5 minutes on comprennent que la connexion à échoué pendant x minutes et donc qu'on en déduit le timeout...

    Je ne sais pas si j'ai été clair, mais j'ai essayé.

    Vous auriez un bout de code qui fait ça ou pas loin ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo