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

  FORUM HardWare.fr
  Programmation
  Java

  JDBC: conséquences d'une non-fermeture de connection et ou statement

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

JDBC: conséquences d'une non-fermeture de connection et ou statement

n°187607
--greg--
Posté le 31-07-2002 à 21:25:19  profilanswer
 

Hop,
 
Voudrais juste savoir quelles POURRAIENT etre les conséquences (tous points de vue) si on "oubliait" de fermer une Connection jdbc, ou (ça m'interesse plus dans ce cas-ci), un Statement.
 
 :jap:


Message édité par --greg-- le 31-07-2002 à 21:33:19
mood
Publicité
Posté le 31-07-2002 à 21:25:19  profilanswer
 

n°187653
--greg--
Posté le 31-07-2002 à 22:28:05  profilanswer
 

up, tudju

n°187654
darklord
You're welcome
Posté le 31-07-2002 à 22:29:01  profilanswer
 

à long terme et dans un environnemnt web, ton proc est occupé à 100%


---------------
Just because you feel good does not make you right
n°187657
--greg--
Posté le 31-07-2002 à 22:29:56  profilanswer
 

DarkLord a écrit a écrit :

à long terme et dans un environnemnt web, ton proc est occupé à 100%



elles vont pas se faire jeter toutes seules au bout d'un moment alors...

n°187664
darklord
You're welcome
Posté le 31-07-2002 à 22:31:52  profilanswer
 

non


---------------
Just because you feel good does not make you right
n°187666
--greg--
Posté le 31-07-2002 à 22:32:54  profilanswer
 

merde ça suxxe.
je sens qu'on va me faire chier dans pas lgtps.
putain de couille

n°187670
darklord
You're welcome
Posté le 31-07-2002 à 22:33:59  profilanswer
 

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

merde ça suxxe.
je sens qu'on va me faire chier dans pas lgtps.
putain de couille




 
t'as encore programmé comme un porc toi :)


---------------
Just because you feel good does not make you right
n°187671
benou
Posté le 31-07-2002 à 22:34:54  profilanswer
 

DarkLord a écrit a écrit :

à long terme et dans un environnemnt web, ton proc est occupé à 100%




 
sûr ??? dans les finally du Statement ou du Connecion ca doit les fermer nan ? donc au bout d'un moment ils vont se fermer ...

n°187672
darklord
You're welcome
Posté le 31-07-2002 à 22:35:20  profilanswer
 

en J2EE non.
 
Edit: ce que je veux dire c'est que j'ai déjà programmer une servlet simple qui faisait des requetes débiles et que j'oublias de fermer les connections. Au bout d'un certain temps (meme sans faire d'autre requete sur le serveur) ca boucle et mon serveur est occupé à 100%
 
un c.close() et tout rentre dans l'ordre ...
 
Maintenant c'est peut etre du à une config pourrie de la DB chez nous et ca ne m'étonnerait pas non plus


Message édité par darklord le 31-07-2002 à 22:36:40

---------------
Just because you feel good does not make you right
n°187679
benou
Posté le 31-07-2002 à 22:38:51  profilanswer
 

ben ... pkoi ils ont pas foutu un close dans le finalize ??? ca reglerait la plupart des problèmes ...

mood
Publicité
Posté le 31-07-2002 à 22:38:51  profilanswer
 

n°187681
darklord
You're welcome
Posté le 31-07-2002 à 22:39:33  profilanswer
 

benou a écrit a écrit :

ben ... pkoi ils ont pas foutu un close dans le finalize ??? ca reglerait la plupart des problèmes ...




 
parce que c'est pas propre.


---------------
Just because you feel good does not make you right
n°187682
--greg--
Posté le 31-07-2002 à 22:39:52  profilanswer
 

DarkLord a écrit a écrit :

 
 
t'as encore programmé comme un porc toi :)



c'était y'a LONGTEMPS.
(pour te dire, j'avais un truc fait en php que j'ai converti en jsp/servlet, tu vois le genre)
en fait les stmt je les fermais mais je retournais le resultset
(genre  
Resulset rs = truc;
stmt.close();
con.close();
 
return rs;
[:vomi]
et ça marchait, bizarrement
mais mtnt, paf changement de serveur (chgt de drivers mysql au passage aussi, sans doute), et ça marche pu. (mais bizarrement ça ne produit aucune exception, le rs est juste vide). si je ferme pas le stmt avec de retourner le rs, ça marche:) le hic c que jpeux pu fermer le stmt apres quoi, ou alors faut que je refasse toute cette merde, mais niet.)

n°187694
--greg--
Posté le 31-07-2002 à 22:52:39  profilanswer
 

euh en fait
dans ma methode de merde
si je fais  
 

try {
  blahblah
  rs = truc;
  return rs;
} finally {
  stmt.close();
  con.close();
}


, le finally il est executé quand exactement? avant que la methode ne retourne "pour du vrai", nan? ou pas du tout? bref, dans un cas comme dans l'autre, ça va pas m'aider...

n°187711
benou
Posté le 31-07-2002 à 23:32:56  profilanswer
 

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

euh en fait
dans ma methode de merde
si je fais  
 

try {
  blahblah
  rs = truc;
  return rs;
} finally {
  stmt.close();
  con.close();
}


, le finally il est executé quand exactement? avant que la methode ne retourne "pour du vrai", nan? ou pas du tout? bref, dans un cas comme dans l'autre, ça va pas m'aider...




 
le finally est toujours executé !!  
là il ser aexecuté juste avant le return

n°187713
--greg--
Posté le 31-07-2002 à 23:34:01  profilanswer
 

benou a écrit a écrit :

 
 
le finally est toujours executé !!  
là il ser aexecuté juste avant le return  



c bien ce qu'il me semblait.
bon ben
prout alors, je crois.

n°187714
benou
Posté le 31-07-2002 à 23:34:03  profilanswer
 

DarkLord a écrit a écrit :

 
parce que c'est pas propre.




je vos pas le problème que ca te pose ...
 

Code :
  1. protected void finalize() throws Throwable {
  2.    if (! isClosed())
  3.       close();
  4. }

n°187717
--greg--
Posté le 31-07-2002 à 23:43:00  profilanswer
 

en fait
si ça se trouve cette methode finalize est implementée dans les drivers. auquel cas, j'ai pas de soucis tant que ce sont les memes drivers qui sont utilisés..?
 
edit: ha ben tfaçons c pas le cas :/


Message édité par --greg-- le 01-08-2002 à 00:03:16
n°187728
benou
Posté le 01-08-2002 à 00:10:48  profilanswer
 

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

en fait
si ça se trouve cette methode finalize est implementée dans les drivers. auquel cas, j'ai pas de soucis tant que ce sont les memes drivers qui sont utilisés..?
 
edit: ha ben tfaçons c pas le cas :/




comment tu sais ? t'as les sources ?
 
et en principe oui, c'est là de dans que ca devrait être implémenté ...

n°187730
--greg--
Posté le 01-08-2002 à 00:21:34  profilanswer
 

benou a écrit a écrit :

 
comment tu sais ? t'as les sources ?
 
et en principe oui, c'est là de dans que ca devrait être implémenté ...



yep, j'ai les sources, et c'est pas implementé.

n°188667
chapi456
Posté le 02-08-2002 à 12:26:27  profilanswer
 

benou a écrit a écrit :

 
je vos pas le problème que ca te pose ...
 

Code :
  1. protected void finalize() throws Throwable {
  2.    if (! isClosed())
  3.       close();
  4. }






Le probleme c'est justement quand tu veux retourner un ResultSet, si tu fermes le Statement, le ResultSet est vidé alors ca devient un peu chiant ...
 
Et puis pour les connections, normalement, y'a un timer qui les tuent au bout d'un certain temps (20 minutes je crois).
D'autre part, si tu fermes pas tes connections, tu satures la base en ouvrant trop de curseurs et la tu te fais jeter (en tout cas sur Oracle) !

n°188770
benou
Posté le 02-08-2002 à 14:20:32  profilanswer
 

chapi456 a écrit a écrit :

 
Le probleme c'est justement quand tu veux retourner un ResultSet, si tu fermes le Statement, le ResultSet est vidé alors ca devient un peu chiant ...



ben nan : il doit y avoir une réf au statement dans le resultset => il sera pas garbagé !
 
bizarre, j'étais vraimentpersuadé que ca y était ...

n°188870
chapi456
Posté le 02-08-2002 à 17:02:33  profilanswer
 

ben c'est plutot le contraire, c'est le resultset qui est relié au statement ... donc il est vidé dès que tu close le statement ... c'est dans la doc, c'est pas une invention de ma part !

n°188876
benou
Posté le 02-08-2002 à 17:16:26  profilanswer
 

chapi456 a écrit a écrit :

ben c'est plutot le contraire, c'est le resultset qui est relié au statement ... donc il est vidé dès que tu close le statement ... c'est dans la doc, c'est pas une invention de ma part !




j'ai pas dit que c'était pas le cas, j'ai juste dit que si le resultset contenanit une ref vers le statement (ce qui de grandes chances d'être le cas vu que les 2 objets sont liés) on ne risquait pas de perdre le resultset à cause du garbage collectig du statement ...

n°188909
- Renaud -
Posté le 02-08-2002 à 18:22:05  profilanswer
 

Pour info, certaines BD (DB2 par ex) refusent de commiter si des rs ou des stmt sont ouverts.
 
Renaud

n°188915
--greg--
Posté le 02-08-2002 à 18:35:54  profilanswer
 

- Renaud - a écrit a écrit :

Pour info, certaines BD (DB2 par ex) refusent de commiter si des rs ou des stmt sont ouverts.
 
Renaud



euh ? et il faut commiter quand on récupéré un resultset?  :heink:  
(je doute pas de ta parole, mais je capte pas l'idée là)
 
edit: bon j'avais pas compris ce que tu disais, désolé :)


Message édité par --greg-- le 02-08-2002 à 18:36:54
n°188930
R3g
fonctionnaire certifié ITIL
Posté le 02-08-2002 à 19:10:58  profilanswer
 

un conseil : le mieux c'est de faire :

Code :
  1. finally {
  2. try{ stmt.close(); } catch(SQLException e) {}
  3. try{ con.close(); } catch(SQLException e) {}
  4. }


pour être sûr que la connection se ferme même dans les pires conditions de poisse

n°189115
--greg--
Posté le 02-08-2002 à 22:17:48  profilanswer
 

R3g a écrit a écrit :

un conseil : le mieux c'est de faire :

Code :
  1. finally {
  2. try{ stmt.close(); } catch(SQLException e) {}
  3. try{ con.close(); } catch(SQLException e) {}
  4. }


pour être sûr que la connection se ferme même dans les pires conditions de poisse




bon
he
je sais comment on gere une cnx merci :D
faut tout lire:)

n°189117
krosso
j'suis à la bourre
Posté le 02-08-2002 à 22:23:04  profilanswer
 

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

Hop,
Voudrais juste savoir quelles POURRAIENT etre les conséquences (tous points de vue) si on "oubliait" de fermer une Connection jdbc, ou (ça m'interesse plus dans ce cas-ci), un Statement.
 :jap:




Si tu dois changer ton code, penses à utiliser un pool de connexions plutôt que d'en ouvrir(-fermer) une à chaque fois que t'en as besoin.

n°189231
--greg--
Posté le 03-08-2002 à 03:11:28  profilanswer
 

krosso a écrit a écrit :

 
Si tu dois changer ton code, penses à utiliser un pool de connexions plutôt que d'en ouvrir(-fermer) une à chaque fois que t'en as besoin.



:heink:

n°190095
El_gringo
Posté le 05-08-2002 à 16:29:49  profilanswer
 

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

 :heink:  




 
T'as qu'a utiliser protomatter (fait un recherche sur google, tu tombera direct dessus), ça permet de fermer automatiquement les connections inactives au bout d'un certain temps que tu fixes toi même.
En fait, c un pool de connection, mais tu peux très bien l'utiliser pour une seule connection.
L'avantage, c que c'est l'implémentation d'un driver JDBC, du coup, t'auras pas grand chose à changer ds ton code si tu veux mettre ça em place.
Bon, normalement, cette option de pouvoir fermer les connections inactives, c pas fait pour être utilisé en production, bref, ça sera un peu crade, ms bon, apparement ton truc l'est déja pas mal, non !?:D


Message édité par El_gringo le 05-08-2002 à 16:30:16
n°190103
darklord
You're welcome
Posté le 05-08-2002 à 16:40:45  profilanswer
 

ouah comme il te cherche l'ot là :lol:
 


---------------
Just because you feel good does not make you right
n°190105
--greg--
Posté le 05-08-2002 à 16:41:29  profilanswer
 

el_gringo, j'ai failli t'engueuler  
mais j'ai lu la fin de ton message qui est plus interessante :D
 
je SAIS ce qu'est un pool de cnx, je SAIS comment on utilise des cns, slt à l'epoque ou j'ai écrit la merde en question, manifestement je savais pas :o
 
l'idée d'utiliser protomatter cela dit c pas trop con: j'imagine qu'il s'utilise de maniere transparente et que je pourrais donc simplement remplacer le nom de mon driver?

n°190141
El_gringo
Posté le 05-08-2002 à 17:44:14  profilanswer
 

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

el_gringo, j'ai failli t'engueuler  
mais j'ai lu la fin de ton message qui est plus interessante :D
 
je SAIS ce qu'est un pool de cnx, je SAIS comment on utilise des cns, slt à l'epoque ou j'ai écrit la merde en question, manifestement je savais pas :o
 
l'idée d'utiliser protomatter cela dit c pas trop con: j'imagine qu'il s'utilise de maniere transparente et que je pourrais donc simplement remplacer le nom de mon driver?




 
J'espère bien que tu sais ce qu'est un pool de connection. Bon, t pas encore un vieux sage du Java comme Darklord ou Benou, ms je t'attriburais qd même le status de grand garçon du Java, ce qui est déja pas mal, non !? :D)
Non, bon, je fais exprès pr t'emmerder parce que tu m'énerves, j'trouve que t'as un air supérieur quand tu t'adresses à moi (genre, mon idée est "pas trop conne". Ouah, ça c du remerciement comme je les aimes !)
 
Ouais, protomatter il s'utilise de manière transparente, c ce que j'essayais de te faire comprendre en te disant que un pool sous la forme d'un driver JDBC...:D


Message édité par El_gringo le 05-08-2002 à 17:45:07
n°190149
--greg--
Posté le 05-08-2002 à 17:48:00  profilanswer
 

el_gringo a écrit a écrit :

 
Non, bon, je fais exprès pr t'emmerder parce que tu m'énerves, j'trouve que t'as un air supérieur quand tu t'adresses à moi (genre, mon idée est "pas trop conne". Ouah, ça c du remerciement comme je les aimes !)



disons que tu ne m'as pas toujours fais la meilleure impression au niveau java, du moins ds tes 1er posts... :D
 

el_gringo a écrit a écrit :

 
Ouais, protomatter il s'utilise de manière transparente


:jap:
 

el_gringo a écrit a écrit :

 
, c ce que j'essayais de te faire comprendre en te disant que un pool sous la forme d'un driver JDBC...:D


comme il me provoque!!!  [:biscuiteur]


Message édité par --greg-- le 05-08-2002 à 17:48:47
n°190152
El_gringo
Posté le 05-08-2002 à 17:55:44  profilanswer
 

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

disons que tu ne m'as pas toujours fais la meilleure impression au niveau java, du moins ds tes 1er posts... :D
 
 :jap:
 comme il me provoque!!!  [:biscuiteur]




 
hé oui, g appris (et j'apprend encore) le Java sans cours, sans livre, juste avec le forum et en me balladant sur qqs sites.
Du coup ça a pu m'ariver (et ça peut encore m'arriver) de poser des questions dont la réponse te parait évidente.
Si c le cas, tant mieux, tu pourras m'aider rapidement.
 
Non, parce que, là par contre, franchement, t'as pas fait fort quand même ! l'idée du pool de connection, t'aurais pu la trouver tout seul ! (non mais franchement, bon Dieu, c vrai quoi ! :D)
 
 
 
...c chiant hein !?:D
 
Allez, j'arrête de te faire chier, ms essaye de penser à ça la prochaine fois que t'auras envie de m'incendier pr une question que g posée qui te plais pas ! :hello:


Message édité par El_gringo le 05-08-2002 à 17:56:02
n°190159
--greg--
Posté le 05-08-2002 à 18:16:33  profilanswer
 

:D
 
nan mais à la base, la question que je posais, ct de savoir quelles pourraient etre les consequences d'une non fermeture de statement et ou de connections alors  :fuck:  
 
 :lol:  
 
 
et au fait, euh franchement, lis des bouquins, t'apprend +vite et +mieux que sur le net (crois moi, pas eu de cours non plus)

n°190242
darklord
You're welcome
Posté le 05-08-2002 à 21:40:05  profilanswer
 

Ne te méprends pas sur --greg--
 
C'est un gars qui en a ds la tête. le truc c'est qu'il ne fait pas du Java depuis longtemps c'est tout. Ca vient avec le temps ce genre de choses


---------------
Just because you feel good does not make you right
n°190247
--greg--
Posté le 05-08-2002 à 21:40:43  profilanswer
 

DarkLord a écrit a écrit :

Ne te méprends pas sur --greg--
 
C'est un gars qui en a ds la tête. le truc c'est qu'il ne fait pas du Java depuis longtemps c'est tout. Ca vient avec le temps ce genre de choses



:heink:

n°190248
darklord
You're welcome
Posté le 05-08-2002 à 21:41:00  profilanswer
 

quoi t'es pas content ?


---------------
Just because you feel good does not make you right
n°190251
--greg--
Posté le 05-08-2002 à 21:41:25  profilanswer
 

DarkLord a écrit a écrit :

quoi t'es pas content ?



:kaola:

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

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

  JDBC: conséquences d'une non-fermeture de connection et ou statement

 

Sujets relatifs
[Java-Jdbc] requêtes SQL n'aboutissant pas ![JDBC] Driver Access
pb avec [ Multimania et php ] connection base de donnée .....mysql et jdbc
pb fermeture session.. help!!!!! moi pa comprendre....Warning (Connection FTP en PHP)
Vitesse de connection[EJB]Connexion JDBC
[C,C++] Connection à une base MYSQLFermeture d'une page sans confirmation
Plus de sujets relatifs à : JDBC: conséquences d'une non-fermeture de connection et ou statement


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