Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2376 connectés 

  FORUM HardWare.fr
  Programmation

  [Java/jdbc] Vous utilisez quoi comme pool de connexions ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java/jdbc] Vous utilisez quoi comme pool de connexions ?

n°162297
R3g
fonctionnaire certifié ITIL
Posté le 19-06-2002 à 10:10:08  profilanswer
 

Je me lance dans une appli serveur qui fonctionne avec une base de données, et je voudrais passer par un pool de connexions. Dans le bouquin que j'ai, ils parlent de PoolMan, qui apparemment a été abandonné. Sur le site du defunt, ils parlent de Tomcat, mais j'ai pas trouvé comment utiliser cette fonctionnalité.
Je sais qu'un pool de connexions, c'est pas grand-chose et j'envisage sérieusement de me faire le mien (après tout, c'est pour un prototype et je suis en stage, donc j'apprends), mais avant je voudrais votre avis sur la question : qu'utilisez-vous, qu'est-ce qui est bien, est-ce que je prends des gros risques en faisant mon propre pool ??


---------------
Au royaume des sourds, les borgnes sont sourds.
mood
Publicité
Posté le 19-06-2002 à 10:10:08  profilanswer
 

n°162319
darklord
You're welcome
Posté le 19-06-2002 à 10:33:58  profilanswer
 

tu parles de ton "moteur de recherche" là ? Juste par curiosité ...


---------------
Just because you feel good does not make you right
n°162322
El_gringo
Posté le 19-06-2002 à 10:35:15  profilanswer
 

R3g a écrit a écrit :

Je me lance dans une appli serveur qui fonctionne avec une base de données, et je voudrais passer par un pool de connexions. Dans le bouquin que j'ai, ils parlent de PoolMan, qui apparemment a été abandonné. Sur le site du defunt, ils parlent de Tomcat, mais j'ai pas trouvé comment utiliser cette fonctionnalité.
Je sais qu'un pool de connexions, c'est pas grand-chose et j'envisage sérieusement de me faire le mien (après tout, c'est pour un prototype et je suis en stage, donc j'apprends), mais avant je voudrais votre avis sur la question : qu'utilisez-vous, qu'est-ce qui est bien, est-ce que je prends des gros risques en faisant mon propre pool ??  




 
Tu prends pas de gros risques. Tu prend juste le risque de perdre du temps à programmer un truc que d'autre ont déja fait mieux que tu n'pourras le faire (le prend pas mal, ms c sur. y a des purs expert qui ont fait ces trucs).
Perso, j'utilise le driver protomatter ( http://protomatter.sourceforge.net/ ) qui est open source, libre à la diffusion (commerciale ou non), et simple d'utilisation. Je te le conseille.

n°162345
R3g
fonctionnaire certifié ITIL
Posté le 19-06-2002 à 10:57:02  profilanswer
 

DarkLord a écrit a écrit :

tu parles de ton "moteur de recherche" là ? Juste par curiosité ...  



??? Soit tu confonds avec quelqu'un d'autre, soit j'ai pas compris la vanne, désolé.
El_gringo >> merci, je vais jeter un oeil sur ce truc


---------------
Au royaume des sourds, les borgnes sont sourds.
n°162347
darklord
You're welcome
Posté le 19-06-2002 à 10:59:08  profilanswer
 

indeed je me suis trompé de personne. Désolé :(
 
 :hello:


---------------
Just because you feel good does not make you right
n°162379
El_gringo
Posté le 19-06-2002 à 11:27:09  profilanswer
 

R3g a écrit a écrit :

??? Soit tu confonds avec quelqu'un d'autre, soit j'ai pas compris la vanne, désolé.
El_gringo >> merci, je vais jeter un oeil sur ce truc  




 
ça peut paraitre un petit peu complexe au début, ms tu verras, en fait c tout bête (t'auras besoin que du package com.protomatter.jdbc.pool).

n°162395
R3g
fonctionnaire certifié ITIL
Posté le 19-06-2002 à 11:41:11  profilanswer
 

el_gringo a écrit a écrit :

 
 
ça peut paraitre un petit peu complexe au début, ms tu verras, en fait c tout bête (t'auras besoin que du package com.protomatter.jdbc.pool).  



J'ai regardé, ca a l'air très bien. Je vais essayer ca cet apres-midi. Merci ;)


---------------
Au royaume des sourds, les borgnes sont sourds.
n°162508
El_gringo
Posté le 19-06-2002 à 14:39:54  profilanswer
 

R3g a écrit a écrit :

J'ai regardé, ca a l'air très bien. Je vais essayer ca cet apres-midi. Merci ;)  




 
...donne moi ds nouvelles

n°162725
R3g
fonctionnaire certifié ITIL
Posté le 19-06-2002 à 17:15:47  profilanswer
 

el_gringo a écrit a écrit :

 
 
...donne moi ds nouvelles  



Pfff... le boss a organisé une reunion-surprise cet apres-midi pour me donner plein de nouveau boulot. Mais des que j'aurais pu tester, je dis quoi (j'ai lu la doc, ca a l'air bien bon quand meme) ;)


---------------
Au royaume des sourds, les borgnes sont sourds.
n°163083
R3g
fonctionnaire certifié ITIL
Posté le 21-06-2002 à 09:04:53  profilanswer
 

Bon, ca y est, ce fut long, mais j'ai pu essayer une petite appli de test, et c'est tres satisfaisant. Il y a toutefois un petite question qui me titille : quelle serait le meilleur endroit pour placer le code d'initialisation du pool ? (je rappelle que je fait nue appli en jsp/servlets). Je pensait créer un bean encapsulant le  processus, et le lier au contexte de servlet. Mais le fait de pouvoir passer par le DriverManager pour obtenir une connexion devrait m'en dispenser, non ?
Question subsidiaire (je devrais trouver tout seul, mais bon...) : Est-ce que je suis obligé de garder une reference sur l'objet JdbcConnectionPool, ou est-ce qu'une fois celui-ci créé, il est maintenu par le Driver ?


---------------
Au royaume des sourds, les borgnes sont sourds.
mood
Publicité
Posté le 21-06-2002 à 09:04:53  profilanswer
 

n°163092
El_gringo
Posté le 21-06-2002 à 09:16:23  profilanswer
 

R3g a écrit a écrit :

Bon, ca y est, ce fut long, mais j'ai pu essayer une petite appli de test, et c'est tres satisfaisant. Il y a toutefois un petite question qui me titille : quelle serait le meilleur endroit pour placer le code d'initialisation du pool ? (je rappelle que je fait nue appli en jsp/servlets). Je pensait créer un bean encapsulant le  processus, et le lier au contexte de servlet. Mais le fait de pouvoir passer par le DriverManager pour obtenir une connexion devrait m'en dispenser, non ?
Question subsidiaire (je devrais trouver tout seul, mais bon...) : Est-ce que je suis obligé de garder une reference sur l'objet JdbcConnectionPool, ou est-ce qu'une fois celui-ci créé, il est maintenu par le Driver ?  




 
Je suis pas vraiement expérimenté en Java, ms c pour du jsp/servlet que j'utilise le pool protomatter moi aussi. Donc, je peux te dire ce que g fait (on verra bien si je me fais allumer par Darklord et compagnie... :D )
Moi je me suis fait une classe JConnectionPool qui encapsule mon JdbcConnectionPool.
voila la classe (je rajouterai des méthode si g besoin):

Code :
  1. package com.damaris.database;
  2. import javax.servlet.*;
  3. import com.protomatter.jdbc.pool.*;
  4. import java.util.*;
  5. import java.sql.*;
  6. import com.damaris.ldsweb.*;
  7. /** Classe d'encapsulation des drivers protomatter
  8. * @author mc
  9. */
  10. public class JConnectionPool {
  11.    
  12.     // Pool de connexions protomatter
  13.     private JdbcConnectionPool ldsConnectionPool;
  14.     private String             strPoolName;
  15.    
  16.     /** Creates a new instance of JConnectionPool */
  17.     public JConnectionPool (String strPoolName) {
  18.         this.strPoolName = strPoolName;
  19.     }
  20.    
  21.    
  22.     /** Créé un nouveau Pool de connexion avec les paramètres entrés dans le fichier JLdsWeb.properties
  23.      * @throws ServletException précise la nature de l'erreur
  24.      * @param servletProperties Propriétés de la servlet. Contient les propriétés du pool de connections
  25.      */
  26.     public void createConnectionPool(Properties servletProperties) throws JLdsServletException {
  27.        
  28.         // Tentative de chargement du Driver Protomatter
  29.         try {
  30.             Class.forName("com.protomatter.jdbc.pool.JdbcConnectionPoolDriver" );
  31.         }
  32.         catch (Exception e){
  33.             throw new JLdsServletException ("Erreur, impossible de charger le driver Protomatter", e);
  34.         }
  35.        
  36.         Hashtable args;
  37.         try {
  38.             // Création des paramètres d'initialisation (voir doc de protomatter pour renseignements)
  39.             args = new Hashtable();
  40.             args.put("jdbc.driver", servletProperties.getProperty("jdbc.driver", "" ));
  41.             args.put("jdbc.URL", servletProperties.getProperty("jdbc.URL", "" ));
  42.             Properties jdbcProperties = new Properties();
  43.             jdbcProperties.put("user", servletProperties.getProperty("jdbc.user", "" ));
  44.             jdbcProperties.put("password", servletProperties.getProperty("jdbc.password", "" ));
  45.             args.put("jdbc.properties", jdbcProperties);
  46.             args.put("jdbc.validityCheckStatement", servletProperties.getProperty("jdbc.validityCheckStatement", "" ));
  47.             args.put("pool.refreshThreadCheckInterval", new Integer(servletProperties.getProperty("pool.refreshThreadCheckInterval", "" )));
  48.             args.put("pool.initialSize", new Integer(servletProperties.getProperty("pool.initialSize", "0" )));
  49.             args.put("pool.maxSize", new Integer(servletProperties.getProperty("pool.maxSize", "-1" )));
  50.             args.put("pool.growBlock", new Integer(servletProperties.getProperty("pool.growBlock", "1" )));
  51.             args.put("pool.createWaitTime", new Integer(servletProperties.getProperty("pool.createWaitTime", "0" )));
  52.         }
  53.         catch (Exception e){
  54.             throw new JLdsServletException ("Erreur, impossible de créer les propriétés du driver Protomatter", e);
  55.         }
  56.         try {
  57.         // finallement, créé le pool, et c'est parti !
  58.         this.ldsConnectionPool = new JdbcConnectionPool(this.strPoolName, args);
  59.         }
  60.         catch (Exception e){
  61.             throw new JLdsServletException ("Erreur, impossible de créer l'objet JdbcConnectionPool", e);
  62.         }
  63.     } 
  64.    
  65.     /** Tests si la connection du pool est valide.
  66.      * @return <CODE>true</CODE> si la pool de connections à été connecté à la base de données.
  67.      * <CODE>false</CODE> sinon.
  68.      */   
  69.     public boolean isPoolConnected () {
  70.         if (this.ldsConnectionPool == null)
  71.             return false;
  72.         else
  73.             return true;       
  74.     }
  75.    
  76.     public Connection getConnection () throws JLdsServletException {
  77.         String url = "jdbc:protomatter:pool:" + this.strPoolName;
  78.         try {
  79.             return (DriverManager.getConnection(url));
  80.         }
  81.         catch (SQLException e) {
  82.             throw new JLdsServletException ("Erreur, impossible d'attacher une connexion au visiteur", e);
  83.         }
  84.     }   
  85. }


 
Je garde une référence de mon instance unique de cette classe dans ma classe ServletHttp (tient, y faudra que j'en fasse un singleton en fait !)

n°163103
R3g
fonctionnaire certifié ITIL
Posté le 21-06-2002 à 09:25:21  profilanswer
 

Ouais, c'est à peu près à ca que je pensais. Mais comme j'ai plusieurs servlets et que toutes devraient utiliser le meme pool, je pensais lier cet objet à mon contexte.
Ce que je me disais, c'est que comme le pool peut être atteint eu travers du DriverManager, avec un truc du genre
DriverManager.getConnection("jdbc:protomatter:poolname" ), on peut tres bien se passer de la methode getConnection que tu a fait, et donc on a plus besoin de cet objet une fois le pool créé.
M'enfin t'as raison, je cherche peut-être un peu la petite bête....
 
sinon une dernière question après promis je te lache ; est-ce que tu utilises aussi le logger de protomatter (syslog je crois), et est-ce que c'est bien (comprendre est-ce que ca vaut le coup que je  tape la doc) ? Merci pour tout.


---------------
Au royaume des sourds, les borgnes sont sourds.
n°163110
El_gringo
Posté le 21-06-2002 à 09:33:24  profilanswer
 

R3g a écrit a écrit :

Ouais, c'est à peu près à ca que je pensais. Mais comme j'ai plusieurs servlets et que toutes devraient utiliser le meme pool, je pensais lier cet objet à mon contexte.
Ce que je me disais, c'est que comme le pool peut être atteint eu travers du DriverManager, avec un truc du genre
DriverManager.getConnection("jdbc:protomatter:poolname" ), on peut tres bien se passer de la methode getConnection que tu a fait, et donc on a plus besoin de cet objet une fois le pool créé.
M'enfin t'as raison, je cherche peut-être un peu la petite bête....
 
sinon une dernière question après promis je te lache ; est-ce que tu utilises aussi le logger de protomatter (syslog je crois), et est-ce que c'est bien (comprendre est-ce que ca vaut le coup que je  tape la doc) ? Merci pour tout.  




 
ça me permet d'avoir une classe qui gère les connexions, j'aime mieux. Ms en fait, c vrai que c peut être un peu superflu. On pourrait surement se passer de ma classe, ms dans ce cas, j'pense qu'il faut qd même que tu garde une référence vers le JdbcConnectionPool. Pour rafraichir les connectionp par exemple, ou pr les fermer. Enfin, garder les fonctionnalités du pool, ça serai dommage de pas profiter de ça !
Le syslog, je t'avoue que je m'y suis pas tellement attardé, parce que, celui qui m'interresse (DataBaseLog, log ds une BD) ne me parait pas très souple, et nécessite une structure de table spécicifque, hors, g pas le choix sur la structure de ma table de log (ma boite me l'impose). Voila.

n°163112
R3g
fonctionnaire certifié ITIL
Posté le 21-06-2002 à 09:34:30  profilanswer
 

ok, merci  :hello:


---------------
Au royaume des sourds, les borgnes sont sourds.
n°379296
benou
Posté le 01-05-2003 à 12:47:45  profilanswer
 

je me permet de upper ce topic pour savoir si quelqu'un connaît ce pool de connexion là :  
http://sourceforge.net/projects/proxool
 
il m'a l'air d'être plutôt bien ... même si il est pas encore arrivé à sa version 1.0 :/


---------------
ma vie, mon oeuvre - HomePlayer
n°781432
El_gringo
Posté le 29-06-2004 à 13:57:32  profilanswer
 

benou a écrit :

je me permet de upper ce topic pour savoir si quelqu'un connaît ce pool de connexion là :  
http://sourceforge.net/projects/proxool
 
il m'a l'air d'être plutôt bien ... même si il est pas encore arrivé à sa version 1.0 :/


 
Ouais, il avait l'air bien parti. Le projet semble mort, dommage.

n°1003543
axk47
Java Man vs Boolet Man
Posté le 07-03-2005 à 13:33:02  profilanswer
 

bonjour,
Quelqu'un naurait une idée de comment configurer PoolMan avec tomcat 4.x sous ecplise pour unne application jsp/servlet
 
le bouquin que j'ai n'est pas clair la -dessus
 
Merci d'avance


---------------
"Rendez tout aussi simple que possible mais ne simplifierez rien" Albert Einstein

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Java/jdbc] Vous utilisez quoi comme pool de connexions ?

 

Sujets relatifs
[Java] pour les programmeurs confirmés...[ java ] forcer une validation avec une DTD bien précise.
[java] Sauvegarder un graphic en bmp ou gif ou jpg[ JAVA ] Comment effacer un espace vide dans une String ?
Java et XMLJava: Création d'une interface graphique
[JAVA] Avis et surtout critiques sur mon prog Java SVP[Java] Exception lancée alors que ça devrais passer !
(JAVA) Comment faire des cases en cascades en Java ?![java - applet] exécuter une commande sur le serveur web ? !
Plus de sujets relatifs à : [Java/jdbc] Vous utilisez quoi comme pool de connexions ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR