[Java] Gestion des connections à nue base de données

Gestion des connections à nue base de données [Java] - Java - Programmation

Marsh Posté le 24-06-2002 à 15:48:43    

La question est simple, la réponse, surement moins :
J'ai une servlet Java.
J'ai un pool de connection.
Ce pool de connection, je vais la mettre en place dans ma serlvet. D'après vous, est ce qu'il vaut mieux que j'attribue à chaque utilisateur de ma servlet, une connection, ou que, à chaque requête reçue par ma servlet, je récupère une connection ?
Bref: une Connection par utilisteur ou une Connection par requête ?


Message édité par El_gringo le 24-06-2002 à 16:12:54
Reply

Marsh Posté le 24-06-2002 à 15:48:43   

Reply

Marsh Posté le 24-06-2002 à 16:13:07    

Bah !? ça inspire personne ?

Reply

Marsh Posté le 24-06-2002 à 16:18:27    

bah moi je dirais 2e solution
c le principe du pool de cnx quoi
garder une cnx ouverte par user ça risque de t'en faire bcp d'ouvertes a la fois, et bcp qui meurent entre 2 utilisations aussi

Reply

Marsh Posté le 24-06-2002 à 16:21:27    

--greg-- a écrit a écrit :

bah moi je dirais 2e solution
c le principe du pool de cnx quoi
garder une cnx ouverte par user ça risque de t'en faire bcp d'ouvertes a la fois, et bcp qui meurent entre 2 utilisations aussi  




 
Ouais, moi aussi je pense que c mieux !
Et merde, ça remet en cause ce que j'avais commencé à faire.
Tant pis, allez, c reparti...

Reply

Marsh Posté le 24-06-2002 à 16:25:07    

el_gringo a écrit a écrit :

 
 
Ouais, moi aussi je pense que c mieux !
Et merde, ça remet en cause ce que j'avais commencé à faire.
Tant pis, allez, c reparti...




 
?? tu penses qu'un truc est mieux et tu fais le contraire?  
 :??:

Reply

Marsh Posté le 24-06-2002 à 16:37:49    

--greg-- a écrit a écrit :

 
 
?? tu penses qu'un truc est mieux et tu fais le contraire?  
 :??:  




 
Bah, au début j'avais pas pensé à attribuer une connection par requête.
On peut pas tout imaginer correctement direct !

Reply

Marsh Posté le 24-06-2002 à 17:08:36    

Mais en fait, je suis quand même pas bien sur. Ou alors je sais pas me servir de mon pool de connections.
A quel moment j'ouvre une connection ?
A quel moment je ferme une connection ?

Reply

Marsh Posté le 24-06-2002 à 17:39:48    

el_gringo a écrit a écrit :

Mais en fait, je suis quand même pas bien sur. Ou alors je sais pas me servir de mon pool de connections.
A quel moment j'ouvre une connection ?
A quel moment je ferme une connection ?




 
Tes connections sont initialisées au debut, tu crée ton pool, tu ouvres tes connections.
 
Quand quelqu'un veut faire une requete, il te demande une connection, tu lui files,il fait ce qu'il a a faire, et il te la rend.

Reply

Marsh Posté le 25-06-2002 à 09:19:14    

therier a écrit a écrit :

 
 
Tes connections sont initialisées au debut, tu crée ton pool, tu ouvres tes connections.
 
Quand quelqu'un veut faire une requete, il te demande une connection, tu lui files,il fait ce qu'il a a faire, et il te la rend.




 
Ouais, logique.
Ms en fait, le truc, c que j'm'y perd un peu avec le pool que g récupéré. ça s'appel Protomatter. En fait, c un driver. c à dire que pour l'utiliser, faut charger la classe du driver

Code :
  1. Class.forName("com.protomatter.jdbc.pool.JdbcConnectionPoolDriver" );


et faire un

Code :
  1. DriverManager.getConnection ("jdbc:protomatter:pool:nomDuPool" );


c bien, ms du coup, c un peu déstabilisant.
A mon avis, pour rendre une connection, je doit simplement la fermer (enfin, faire un Close dessus). tout m'est transparent j'pense.


Message édité par El_gringo le 25-06-2002 à 09:21:34
Reply

Marsh Posté le 25-06-2002 à 09:25:42    

Exact, pour rendre la connction, tu la fermes et c'est tout. En fait, elle n'est pas vraiment fermée, juste elle retourne dans le pool.
Et je confirme, une connection par requete c'est mieux : le traitement de la requete dure qqs 10iemes de secondes, et la connexion redevient libre aussitot pour les autres users. Si tu donnes une connexion par user, tu vas voir besoin de beaucoup plus de connexions dispo, sachant que chacune va etre prise pendant plsusieurs 10aines de secondes (voir minutes)...
 
P.S : quznd tu m'as conseille protomatter comme pool, je pensais que tu etait un peu plus à l'aise que ca ;)


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 25-06-2002 à 09:25:42   

Reply

Marsh Posté le 25-06-2002 à 09:44:23    

R3g a écrit a écrit :

Exact, pour rendre la connction, tu la fermes et c'est tout. En fait, elle n'est pas vraiment fermée, juste elle retourne dans le pool.
Et je confirme, une connection par requete c'est mieux : le traitement de la requete dure qqs 10iemes de secondes, et la connexion redevient libre aussitot pour les autres users. Si tu donnes une connexion par user, tu vas voir besoin de beaucoup plus de connexions dispo, sachant que chacune va etre prise pendant plsusieurs 10aines de secondes (voir minutes)...
 
P.S : quznd tu m'as conseille protomatter comme pool, je pensais que tu etait un peu plus à l'aise que ca ;)




 
Bah non, j't'ai dis, je connais pas bien Java, JSP, servlet, pool de connection, c nouveau pr moi tt ça.
Mais protomatter, avoue que c'était un bon conseil par contre !? :D

Reply

Marsh Posté le 25-06-2002 à 09:50:44    

el_gringo a écrit a écrit :

 
 
Bah non, j't'ai dis, je connais pas bien Java, JSP, servlet, pool de connection, c nouveau pr moi tt ça.
Mais protomatter, avoue que c'était un bon conseil par contre !? :D



J'ai surtout pas voulu dire le contraire ! Comme toi, j'ai ete (et je suis) un peu deroute par l'acces au pool par le DriverManager, mais c'est clair que c'est un TRES bon produit.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 25-06-2002 à 10:44:31    

R3g a écrit a écrit :

[...]j'ai ete (et je suis) un peu deroute par l'acces au pool par le DriverManager, []...



 
mais c'est justement l'interet du produit:) tu peux dev. ton appli sans t'en soucier. si t'en as marre apres de cte pool et que tu veux une cnx direct, ou que tu appli est deja dev, tu peux betement changer le driver de ta db en "driver-pool" (dans un fichier de config de ton appli, n'est-ce pas...) et pif paf voila.

Reply

Marsh Posté le 25-06-2002 à 11:05:06    

--greg-- a écrit a écrit :

 
 
mais c'est justement l'interet du produit:) tu peux dev. ton appli sans t'en soucier. si t'en as marre apres de cte pool et que tu veux une cnx direct, ou que tu appli est deja dev, tu peux betement changer le driver de ta db en "driver-pool" (dans un fichier de config de ton appli, n'est-ce pas...) et pif paf voila.
 



Oui, ca j'ai bien compris et j'apprecie. Ce qui m'a troublé, c'est que du coup je ne savais plus tres bien ou placer le code d'initialisation du pool, puisqu'ensuite il n'est pas necessaire d'avoir nue reference sur celui-ci pour s'en servir. Mais bon maintenant tout marche et je suis tres satisfait par ce produit :)


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 25-06-2002 à 11:22:43    

R3g a écrit a écrit :

Oui, ca j'ai bien compris et j'apprecie. Ce qui m'a troublé, c'est que du coup je ne savais plus tres bien ou placer le code d'initialisation du pool, puisqu'ensuite il n'est pas necessaire d'avoir nue reference sur celui-ci pour s'en servir. Mais bon maintenant tout marche et je suis tres satisfait par ce produit :)




 
ha, du coup tu garde pas de référence sur le pool toi !?
moi SI. le rafraichissement de toutes les connections, ça peut servir. Et puis je reconstitue l'url à chaque fois, en récupérant le nom du pool, comme ça, ils peut changer, c pas gênant. j'aime pas bien mettre des chaines de caractères en dur ds mon code.

Reply

Marsh Posté le 25-06-2002 à 11:31:09    

el_gringo a écrit a écrit :

 
 
ha, du coup tu garde pas de référence sur le pool toi !?
moi SI. le rafraichissement de toutes les connections, ça peut servir. Et puis je reconstitue l'url à chaque fois, en récupérant le nom du pool, comme ça, ils peut changer, c pas gênant. j'aime pas bien mettre des chaines de caractères en dur ds mon code.



J'a gardé la référence dans un bean au cas ou,mais je m'en sert pas (pour l'instant). Le rafraichissement, je l'ai mis automatique, quant au nom du pool, il est dans un fichier properties.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 25-06-2002 à 11:38:00    

R3g a écrit a écrit :

J'a gardé la référence dans un bean au cas ou,mais je m'en sert pas (pour l'instant). Le rafraichissement, je l'ai mis automatique, quant au nom du pool, il est dans un fichier properties.




 
...Tu fais comment pour paramètrer un rafraichissement automatique ?

Reply

Marsh Posté le 25-06-2002 à 11:41:36    

ha, g rien dit. je l'utilise même moi aussi ! :D
pool.refreshThreadCheckInterval

Reply

Marsh Posté le 25-06-2002 à 11:42:54    

el_gringo a écrit a écrit :

 
 
...Tu fais comment pour paramètrer un rafraichissement automatique ?




 

Citation :

pool.refreshThreadCheckInterval (Integer)
If present and > 0, this is the number of seconds for a low-priority thread to sleep between calls to refreshConnections() on this pool. If this option is used, you must specify the jdbc.validityCheckStatement option also.


Message édité par R3g le 25-06-2002 à 11:43:19

---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed