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

Struts 1 Java Discussion :

[Datasource] application bloquée sur : Connection connect = dataSource.getConnexion()


Sujet :

Struts 1 Java

  1. #1
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut [Datasource] application bloquée sur : Connection connect = dataSource.getConnexion()
    Bonjour,

    J'utilise un dataSource Struts pour gérer la connexion à ma base de données.

    Les méthodes qui utilisent ce dataSource se présentent ainsi :

    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
     
           ResultSet rs = null;
           Connection conn = null;
           PreparedStatement prep1 = null;
           try {
                conn = ds.getConnection();
                prep1 = conn.prepareStatement("SELECT CHAMP1, CHAMP2 FROM TABLE");
                rs = prep1.executeQuery();
                while (rs.next()) {
                   //...
                }
            } catch (SQLException e) {
                e.printStackStrace();
            } finally {
                rs.close();
                prep1.close();
                conn.close();
            }

    Le problème est que lorsque je "surcharge" mon appli en effectuant un nombre de requêtes démesuré, mon application reste bloquée sur la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection conn = ds.getConnection();
    Je sais que c'est normal que l'application soit bloquée sur cette ligne un laps de temps étant donné que lorsque le nombre maximale de connexions occupées est atteinte, le dataSource se met en attente qu'une connexion soit libérée (principe du pool de connexions) mais là, je reste bloquée sur cette ligne inféfiniment, je ne récupère jamais la main.

    Code de mon dataSource (struts-config.xml) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <data-source key="monDataSource" type="org.apache.commons.dbcp.BasicDataSource">
         <set-property property="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
         <set-property property="password" value="manager" />
         <set-property property="url" value="jdbc:jtds:sqlserver://localhost:1433/QP_TEST" />
         <set-property property="username" value="sa" />
         <set-property property="defaultAutoCommit" value="true" />
         <set-property property="defaultReadOnly" value="false" />
    </data-source>
    Y a -t-il une erreur dans mon code ? Ou un principe fondamental que j'aurais oublié ?

    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Devops
    Inscrit en
    Août 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Devops

    Informations forums :
    Inscription : Août 2006
    Messages : 107
    Par défaut
    Citation Envoyé par danyboy85 Voir le message
    Y a -t-il une erreur dans mon code ? Ou un principe fondamental que j'aurais oublié ?Merci d'avance.
    Si tu fait des boulots qui ont besoin de temps, utilise des threads. Si tu fais beaucoup de connexions renseigne-toi sur la notion de pool de connexions (j'ai pas de lien sous la main, ça dépend beaucoup du contexte de développement).

  3. #3
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Citation Envoyé par Iyoiyo Voir le message
    Si tu fais beaucoup de connexions renseigne-toi sur la notion de pool de connexions (j'ai pas de lien sous la main, ça dépend beaucoup du contexte de développement).
    C'est justement ce que j'utilise ! Le fait d'utiliser un dataSource fait que l'on utilise un pool de connexion de manière transparente.

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/01/2010, 11h27
  2. ne pas rester bloqué sur un connect
    Par gigiskhan dans le forum Réseau
    Réponses: 12
    Dernier message: 16/11/2009, 22h58
  3. Problème de connection par dataSource et JBOSS
    Par amine1980 dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 10/02/2009, 17h15
  4. problème de connection à une datasource.
    Par jobelix dans le forum Coldfusion
    Réponses: 3
    Dernier message: 12/10/2006, 13h49

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