Gestion des connections à nue base de données [Java] - Java - Programmation
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
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...
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?
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 !
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 ?
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.
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 :
|
et faire un
Code :
|
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.
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
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 !?
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 !? |
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.
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.
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
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.
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.
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 ?
Marsh Posté le 25-06-2002 à 11:41:36
ha, g rien dit. je l'utilise même moi aussi !
pool.refreshThreadCheckInterval
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) |
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