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

Tomcat et TomEE Java Discussion :

[BasicDataSource] Connection.close() ne fonctionne pas?


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut [BasicDataSource] Connection.close() ne fonctionne pas?
    Bonjour, je poste ça juste pour savoir si quelqu'un peut m'expliquer ce phénomène:
    j'ai un outil qui va faire une connection à une base de données.
    Suite à un algorithme tout droit issu d'un cerveau mal irrigué ou déficient (le mien en l'occurence), je faisais une nouvelle connection pour chaque requete.
    Tout fonctionnait bien jusqu'au jour où j'ai essayé de lancer une routine qui aurait pour effet de lancer un millier de requetes dans une boucle while (le tout est censé prendre une vingtaine de secondes)
    J'ai eu un classique gel sur le datasource.getConnection().
    Comment se fait-ce, alors que je n'ai qu'une seule connection, un seul statement et un seul resultSet, et qu'à la fin de ma boucle je les fermais tous les trois avec xxx.close()?
    J'ai essayé en ne faisant qu'une connection pour toute l'opération et ça marche mieux.
    De toute façon c'est mieux à tous points de vues mais juste pour mon information j'aimerai savoir comment je pouvais saturer mon pool de connection malgré mes close...

    Merci si vous avez une idée!

    PS: le DataSource que j'utilise est le BasicDataSource fournit avec Tomcat, le driver est le driver Oracle.jdbc.driver.OracleDriver

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Si tes requetes se font en // et que t'as besoin de 3 connections à ta datasource pour faire le boulot que ton tomcat est configuré pour accepter 150 requete http simultanées il te faudra au moins 150*2+1 connections dispos dans ton datapool pour éviter un situation potentielle de deadlock (150 threads on chacun 2 connections du datasource et attendent un 3ème, soit 300 connection occupées, il en faut un 301 pour débloquer tout).

    Ou alors, plus betement, t'as des exception et tes close() ne sont pas dans des blocs finally, garantis d'être exécutés.

  3. #3
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Ben tout est dans le même while donc à priori les requetes s'exécutent en série et pas en parallèle...

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Donc deuxième option, tu appelle pas correctement tes closes

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/02/2013, 15h03
  2. Connection String ne fonctionne pas !
    Par NTIC13 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 22/02/2011, 12h20
  3. UI Dialog. Close ne fonctionne pas
    Par jby43 dans le forum jQuery
    Réponses: 2
    Dernier message: 12/05/2010, 16h38
  4. Auto-connect ne fonctionne pas
    Par guyguy333 dans le forum Débuter
    Réponses: 17
    Dernier message: 06/09/2008, 21h41
  5. Réponses: 9
    Dernier message: 16/11/2007, 11h33

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