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 :

[JDBC][SQL Server]Connection Pooling


Sujet :

JDBC Java

  1. #1
    WE
    WE est déconnecté
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [JDBC][SQL Server]Connection Pooling
    Bonjour!

    Je suis à la recherche d'un exemple pour établir un pool de connections vers SQL Server 2005. Je n'utilise pas de serveur d'applications connus. Seulement du code java. J'utilise aussi le driver de JDBC microsoft.

    Merci!

    WE

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    tu ne veux pas utiliser un pool de connection fournit par ton serveur d'application via une datasource ?

    Tu veux developper un pool de connexions toi même c'est ca ?

  3. #3
    WE
    WE est déconnecté
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Je veux effectivement le développer moi même. Je n'utilise pas de serveur d'application.

    Merci

  4. #4
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Avril 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Avril 2003
    Messages : 79
    Points : 107
    Points
    107
    Par défaut
    Voici une classe simple écrite pour gérer un pool de connections à une base Domino, ca devrait te donner des idées.

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.util.Vector;
     
    /**
     * @author 
     * 
     * Cette classe permet de gérer les connections au serveur Domino
     *  
     */
     
    public class DominoConnectionHandler
    {
       // Url d'accès au serveur Domino
       private static String connStr = ConfigHandler.getParameter("route_Domino");
     
       // Pool de connections. Il s'agit d'une liste de connections
       private static Vector pool;
     
       // Liste des etats des connections
       private static Vector state;
     
       // Taille du pool de connection
       private static final int POOL_SIZE = Integer.parseInt(ConfigHandler.getParameter("nb_connexions_domino"));
     
       /**
       * 
       * Renvoie une connection au serveur Domino. Cette connection provient du
       * pool s'il en reste des libres. Sinon elle est crée et ajoutée au pool.
       * 
       * @return une connection au serveur Domino.
       */
       public static synchronized Connection getConnection()
       {
           for (int i = 0; i < state.size(); i++)
           {
               if (state.get(i).equals("FREE"))
               {
                   state.set(i, "USED");
                   return (Connection) pool.get(i);
               }
           }
           // Aucune connection n'est libre ---> ajout d'une connexion
           // supplementaire au pool
           try
           {
              Class.forName("lotus.jdbc.domino.DominoDriver");
              Connection connection = DriverManager.getConnection(connStr, "", "");
              pool.add(connection);
              state.add("USED");
              return connection;
           }
           catch (ClassNotFoundException e)
           {
               Logger.traceDebug("ClassNotFoundExecption: " + e.getMessage());
           }
           catch (SQLException e)
           {
               Logger.traceDebug("SQLException: " + e.getMessage());
           }
           return null;
        }
     
    	/**
             * 
             * Libère une connection en la restituant au pool de connection et en la
             * marquant comme 'free'
             * 
             * @param connection
             *            connection à libérer
             * @throws Exception
             *             si une erreur intervient pendant la restitution de la
             *             connection
             */
    	public static void freeConnection(Connection connection) throws Exception
    	{
    		int index = pool.indexOf(connection);
    		Logger.traceDebug("Libération de la connection " + index);
    		state.set(index, "FREE");
    	}
     
    	/**
             * Initialise le pool de connections en créant le nombre de connections
             * indiqué dans la variable POOL_SIZE et en les stockant dans une liste.
             * Toutes ces connections sont alors marquées comme 'free'
             */
    	public static void init()
    	{
    		try
    		{
    			pool = new Vector();
    			state = new Vector();
     
    			// Le pool de connexion est créé uniquement si le paramètre POOL
    			// est à true dans le fichier de configuration.
    			if (ConfigHandler.getParameter("POOL").equals("true"))
    			{
    				Class.forName("lotus.jdbc.domino.DominoDriver");
    				Logger.traceDebug("Creation du Pool de connection");
    				Logger.traceDebug("Url de connexion : " + connStr);
    				for (int i = 0; i < POOL_SIZE; i++)
    				{
    					Connection connection = DriverManager.getConnection(connStr, "", "");
    					pool.add(connection);
    					state.add("FREE");
    				}
    				Logger.traceDebug("Pool de connections Domino créé (nombre de connexions : " + POOL_SIZE + ")");
    			}
    		}
    		catch (ClassNotFoundException e)
    		{
    			Logger.traceDebug("ClassNotFoundExecption: " + e.getMessage());
    		}
    		catch (SQLException e)
    		{
    			Logger.traceDebug("SQLException: " + e.getMessage());
    		}
    	}
    }

  5. #5
    WE
    WE est déconnecté
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci, je vais regarder ca

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/06/2008, 16h43
  2. Réponses: 0
    Dernier message: 31/07/2007, 09h43
  3. jdbc + sql server 2000 + type text
    Par qdqdfqfdqdxcwcrzsdfw dans le forum JDBC
    Réponses: 2
    Dernier message: 28/05/2007, 17h35
  4. jdbc+sql server 2000 devlopper edtion
    Par Bba_M dans le forum JDBC
    Réponses: 5
    Dernier message: 04/11/2006, 19h17
  5. [Info] Driver JDBC SQL Server
    Par slymira dans le forum JDBC
    Réponses: 6
    Dernier message: 16/06/2005, 13h26

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