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 :

Tomcat7 ajax et connection pool : "connection closed" malgré le validationQuery et testOnBorrow


Sujet :

Tomcat et TomEE Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 32
    Points
    32
    Par défaut Tomcat7 ajax et connection pool : "connection closed" malgré le validationQuery et testOnBorrow
    Bonjour,

    j'utilise le connection pool de tomcat et les threadLocal de cette manière :
    1) début de traitement de la requête dans la servlet: récupération d'une connexion du pool pour la mettre dans un ThreadLocal utilisé par la DAO
    2) traitement de la requête
    3) fermeture de la requête dans la servlet par un finally encadrant le traitement de la requête : appel de "connection.close()" et vidage du threadLocal (pour éviter d'éventuels fuites de mémoires)

    Corriger moi si je me trompe :

    une requête traitée par tomcat correspond à un thread (autrement dit, 2 requêtes HTTP = 2 threads distincs) : le fait d'utiliser un threadLocal, me permet donc d'attribuer une connexion du pool par thread
    => lorsque je demande la fermeture de la connexion, qui est donc lié au thread par l'instance de ThreadLocal, celle-ci retourne au pool et le thread d'exécution de tomcat est détruit (ou peut être en mis en idle).

    Le problème est le suivant : lorsque deux requêtes AJAX successives font appels à ma servlet, il se trouve que aléatoirement, le traitement de l'une de ces requêtes échouent car la connexion à la base de données est perdue ("connection closed"), bien que la ressource jdbc soit bien configurée (validationOnQuery, testOnBorrow actifs).

    Il y a ce lien de la documentation de tomcat, qui parle d'un problème similaire :
    http://tomcat.apache.org/tomcat-7.0-...sed_Exceptions

    Je cite :
    "These can occur when one request gets a db connection from the connection pool and closes it twice. When using a connection pool, closing the connection just returns it to the pool for reuse by another request, it doesn't close the connection. And Tomcat uses multiple threads to handle concurrent requests"

    Donc mon code, je me suis assuré que je ferme une seule et une unique fois ma connexion (en l'occurence à la fin du traitement de la requête par la servlet, sachant que j'ai même déplacé le traitement sur l'événement de destruction de la requête Http par un listener).

    Mon hypothèse est donc la suivante : est-t'il possible que le pool de tomcat renvoie la même connexion lorsque 2 threads tomcat y font appel?

    Comment puis-je résoudre ou contourner ce problème ? (mise à part en désactivant la clôture de la connexion à la fin du traitement de la requête => dans ce cas, tomcat s'occupe lui même de les clôturer par la configuration "removeAbandonned", mais je ne pense pas que ce soit une bonne chose)

    Merci d'avance pour vos avis

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 32
    Points
    32
    Par défaut
    petit up
    une idée?

Discussions similaires

  1. [ tomcat ] [ mysql ] pool de connection
    Par miagomiago dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 14/01/2006, 08h37
  2. [connection pool]commons DBCP
    Par horalass dans le forum JDBC
    Réponses: 2
    Dernier message: 20/12/2005, 12h02
  3. Réponses: 2
    Dernier message: 27/04/2005, 18h56
  4. [débutant][tomcat][jdbc] pool de connection DBCP
    Par zozolh2 dans le forum JDBC
    Réponses: 6
    Dernier message: 19/05/2004, 18h41

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