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

 


Dernière réponse
Sujet : [Java/jdbc] Vous utilisez quoi comme pool de connexions ?
axk47 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
axk47 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
El_gringo

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.

benou 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 :/
R3g ok, merci  :hello:
El_gringo

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.

R3g 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.
El_gringo

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 !)

R3g 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 ?
R3g

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) ;)

El_gringo

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

R3g

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 ;)

El_gringo

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).

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

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

El_gringo

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.

darklord tu parles de ton "moteur de recherche" là ? Juste par curiosité ...
R3g 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 ??

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)