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

JDBC Java Discussion :

Lenteur à l'ouverture d'une connexion JDBC


Sujet :

JDBC Java

  1. #1
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut Lenteur à l'ouverture d'une connexion JDBC
    Bonjour,

    J'ai un problème assez pénible sur l'ouverture de connexion JDBC.

    Pour mon code, il n'y a rien de compliqué, il s'agit d'une ouverture basique de connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Class.forName("oracle.jdbc.driver.OracleDriver") ; 
    return DriverManager.getConnection( connectionString , "XXX" , "XXX" );
    Dans Eclipse, il faut compter environ 2s d'exécution par ligne (ce qui est pour moi acceptable). Par contre, je package mon application dans un Runnable Jar et à ce moment, le même code met 8s pour la première ligne et 5s pour la suivante... (Je transforme le tout en exécutable avec Launch4j ensuite mais il n'y a pas de différence avec le Jar).
    Au début, je rencontrais le problème sur une connexion à une base Access en utilisant UCanAccess. Je me disais que le problème venait de là alors j'ai tenté avec Oracle et je constate le même résultat.

    Quelqu'un a une idée sur ce qui peu causer cette lenteur et comment y remédier ?

    Merci d'avance
    Tout passe, tout casse
    Le joint le cul lassent...


    http://www.myspace.fr/geampa_raler

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Es-tu sûr que c'est bien la connexion qui est lente et non, par exemple, une requête juste derrière ?
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Le Class.forName, tu ne dois le faire qu'une fois pour charger le driver, pas à chaque demande de connexion.

  4. #4
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Bonjour,

    Oui je suis sûr pour les durées. Si j'indiquais 8s pour la première ligne et 5s pour la 2ème, c'était une mesure factuelle et non une supputation.

    Appeler une fois ou cinquante fois ce bout de code, ce n'est pas le problème (même si effectivement, la fois suivante on pourrait se passer du Class.forName). Il n'y a que la première fois (où il doit faire un chargement) que cela pose problème. Dans mes mesures, c'est uniquement la première ouverture de connexion qui est lente.

    Je viens de résoudre mon problème d'une manière qui me laisse assez perplexe. En fait, j'exportais un jar qui englobait tous les autres jars. J'ai fait la même chose en mettant les autres jars dans un sous répertoire et le problème ne se pose plus... Etrange .

    Merci quand même !
    Tout passe, tout casse
    Le joint le cul lassent...


    http://www.myspace.fr/geampa_raler

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Citation Envoyé par Vikisme Voir le message
    un jar qui englobait tous les autres jars
    Il est possible que deux Lib soient en conflit ou que le manifest ne soit pas adapté et que la JVM farfouille dans le jar avant de trouver son bonheur.

    Englober tous les .jar dans un seul est séduisant mais j'ai déjà eu des cas où, par exemple, mes impressions ne fonctionnaient plus ou d'autres problèmes encore.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/10/2009, 12h22
  2. [XL-2003] Ouverture d'une connexion DDE de VBA vers un logiciel tiers
    Par david_atx dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/07/2009, 11h59
  3. encapsulation d'une connexion JDBC
    Par lbailler dans le forum JDBC
    Réponses: 1
    Dernier message: 09/05/2007, 15h59
  4. [MySQL] temps d'ouverture d'une connexion VS temps d'exécution d'une requête
    Par epoz dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/04/2007, 18h06
  5. Ouverture d'une connexion RDP en mode "console" ?
    Par elitost dans le forum Windows XP
    Réponses: 2
    Dernier message: 31/08/2006, 10h37

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