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 :

Pool de connexion


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Homme Profil pro
    ITESCIA
    Inscrit en
    Janvier 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : ITESCIA
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 101
    Points : 55
    Points
    55
    Par défaut Pool de connexion
    Bonjour,

    je viens vers vous aujourd'hui à cause d'un problème qui me turlupine!
    Je dois réaliser un projet web dynamique pour un projet de classe, et jusque à tout va bien!
    Mais malheureusement le cours sur les pools de connexion (que nous devons mettre en place) me manque.

    J'ai donc écumé le net à la recherche de cours sur le sujet et hormis ceci :http://christophej.developpez.com/tu...ee/pooltomcat/ je n'ai rien trouvé de détaillé.

    Auriez vous quelques conseil pour moi, sur comment fonctionne un pool de connexion ainsi que comment le mettre en place?

    J'utilise Eclipse comme IDE, Mysql comme BDD et Tomcat comme serveur.

    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 117
    Points : 74
    Points
    74
    Par défaut
    Bienvenue sur le Forum jeune Neophyte !

    Je pense que ceci pourra t'aider !



    Enjoy ! ;D

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Points : 386
    Points
    386
    Par défaut
    Bonjour

    Pour ma part j'ai opté pour un pool application développé autour de commons-dbcp-xxx.jar car ceci te permet d'être indépendant du serveur. Tu as aussi la solution d'un pool sur le serveur serveur voir la doc tomcat.
    Pour un pool autonome il te faut ajouter la librairie commons-dbcp à ton appli,
    initialiser le pool suite au déploiement lors du premier appel de ta servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void init(){
    Properties p = null;
    		thisServlet = this;
    	 	//“this” est l’instance de la Servlet, requise par la méthode « loadProperties »
    	 	try{p = index.GestMat.loadProperties(thisServlet,"dbcp.properties");}catch(final IOException e){}
    	 	poolDeConnexionInitialise = gestionBdd.PoolDeConnexion.initialise(p);}
    les données de connexion sont dans un fichier properties (p)
    pour le pool
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    package gestionBdd;
     
     
    import java.util.List;
    import java.util.Properties;
    import java.util.Vector;
     
    import org.apache.commons.dbcp.BasicDataSource;
    //import org.apache.log4j.Logger;
     
    import java.sql.*;
     
     
    //* importer les packages dans le rep lib:
    //* commons-pool-1.3.jar
    //* commons-dbcp-1.2.2.jar
    //* et le driver JDBC
     
    //* Appel connexion
    //* Connection con = null;
    //* con = Pool_de_connexion.getConnection();
    //* con.Close()
     
    //* le fichier dbcp.properties est à placer sur la racine de www
    //* c à d au même niveau que www
     
    //* contenu de dbcp.properties
    //* urlBdd=jdbc:mysql://127.0.0.1:3306/demo
    //* login=root
    //* password=
    //* driver=com.mysql.jdbc.Driver
    //* nb_connection=5
    //* tps_max=50
     
    public class PoolDeConnexion {
     
    	public static BasicDataSource bds;
     
    	public PoolDeConnexion(){}
     
    //	static Logger logger = Logger.getLogger(PoolDeConnexion.class);
    //initialisation du pool
     
    	public static Boolean initialise(final Properties p)
    		{
    		bds = new BasicDataSource();
    		bds.setDriverClassName(p.getProperty("driver"));
    		bds.setUrl(p.getProperty("urlBdd")+"?autoReconnect=true&jdbcCompliantTruncation=false");
    		bds.setUsername(p.getProperty("login"));
    		bds.setPassword(p.getProperty("password"));
    		bds.setInitialSize(Integer.parseInt(p.getProperty("nb_connection")));	//taille du pool
    		bds.setMaxWait(Integer.parseInt(p.getProperty("tps_max")));				//tps d'attente max
    		bds.setValidationQuery("SELECT 1");										//rqte de validation
    		bds.setTimeBetweenEvictionRunsMillis(200);
     
     
    		bds.setTestWhileIdle(true);
    		bds.setTestOnBorrow(true);
     
    		//à strapper une fois tout ok
    		index.GestMat.paramconnexion = p.getProperty("urlBdd")+"-"+p.getProperty("login")+"-"+p.getProperty("password");
     
            return(true);
        	}
     
    /**
     * Retourne une connexion<br />
     * @return
     */
        public static Connection getConnection(){
        	try{
        		//index.GestMat.tabConn.add(bds.getConnection());
        		//return index.GestMat.tabConn.lastElement();
    			return bds.getConnection();
    		}catch(final Exception e){index.GestMat.poolDeConnexionInitialise = false;
    								     e.printStackTrace();
    								     String[] msg = e.getMessage().split("\\n");
    								     if(msg.length>5)index.GestMat.trace = "--"+ msg[5];
    								     //index.GestMat.trace = "--"+e.getMessage().toString().replaceAll("\\n", "<br />");
    								     try{bds.close();}catch(final SQLException e1){}
    								     return null;}
    		}
    }
    puis à chaque requête ouvrir une ou x connexion suivant besoin et les refermer en fin de traitement sous peine de plantage (4096 connexions dispo pour mysql)

Discussions similaires

  1. Pool de connexion
    Par borgfabr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/10/2004, 14h20
  2. [TOMCAT] pool de connexion postgres
    Par kitov dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 04/06/2004, 16h13
  3. [WSAD] [POOL de CONNEXION]
    Par gandia dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/05/2004, 18h22
  4. [EJB]JBoss et Pool de connexion
    Par Kleb dans le forum Wildfly/JBoss
    Réponses: 4
    Dernier message: 20/04/2004, 12h12
  5. [tomcat 4.1] [oracle] Pool de connexion
    Par Franco dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 23/09/2003, 00h42

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