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

  FORUM HardWare.fr
  Programmation
  Java

  [java / tomcat] Rechargement de contexte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java / tomcat] Rechargement de contexte

n°194498
R3g
fonctionnaire certifié ITIL
Posté le 13-08-2002 à 11:14:18  profilanswer
 

Bon, j'ai sous tomcat un objet qui implemente ServletContextListener pour initialiser mon appli. Cet objet, dans sa methode ContextInitialized, crée un pool de connexions vers une base de données, et detrui celui-ci dans sa methode ContextDestroyed.
Le probleme est que je viens de m'apercevoir que dans le cas d'un reload "à chaud" du contexte, ContextDestroyed n'est pas appelée, ce qui fait qu'au bout d'un certain nombre de rechargements, ce qui arrive en période de tests, et bien mon SGBD s'écroule sous les connexions restées ouvertes.
Ce n'est pas très génant, puisque le problème ne se pose que dans un environnement de développement, et que de toute façon j'ai qu'à faire des trucs propres, mais si il existait un moyen de détecter le rechargement du contexte, ca serait pratique.

mood
Publicité
Posté le 13-08-2002 à 11:14:18  profilanswer
 

n°194507
darklord
You're welcome
Posté le 13-08-2002 à 11:41:39  profilanswer
 

ServletContextListener?


---------------
Just because you feel good does not make you right
n°194514
--greg--
Posté le 13-08-2002 à 11:52:32  profilanswer
 

DarkLord a écrit a écrit :

ServletContextListener?



ben oui.
 
en réponse à la question: je pense que c un bug de tomcat.
(enfin, qu'entends tu par  " reload à chaud du contexte " ?)
vérifie dans la liste des bugs fixés sur les dernieres version.
y'avait un bug du meme genre dans resin, et il a été fixé (c moi qui l'avait signalé [:yaisse2])
 
sinon au pire tu appelles la methode contextDestroyed au debut de ta methode contextInitiliazed
ou bien en plus propre, tu verifie que la pool est vide, auquel cas tu la vide

n°194526
R3g
fonctionnaire certifié ITIL
Posté le 13-08-2002 à 12:08:54  profilanswer
 

quand je dis "reload à chaud", je veux dire que je mets reloadable=true dans mon web.xml, et que quand je change une classe dans mon appli, elle est rechargée sans que j'ai besoin de redemarrer le serveur.
 
une question alors : le ServletContextListener utilisé est-il toujours le même, ou un nouvel objet est-il créé à chaque fois ?
 
DarkLord >> hébékoi ?

n°194529
--greg--
Posté le 13-08-2002 à 12:11:16  profilanswer
 

R3g a écrit a écrit :

quand je dis "reload à chaud", je veux dire que je mets reloadable=true dans mon web.xml, et que quand je change une classe dans mon appli, elle est rechargée sans que j'ai besoin de redemarrer le serveur.



ha bon y'a ça dans tomcat, c nouveau?
t'as vérifié les bugs de tomcat?
 

R3g a écrit a écrit :

une question alors : le ServletContextListener utilisé est-il toujours le même, ou un nouvel objet est-il créé à chaque fois ?


logiquement ça devrait etre le meme, mais c pas gagné. tu devrais pas compter dessus à mon avis. pq?

n°194530
darklord
You're welcome
Posté le 13-08-2002 à 12:13:03  profilanswer
 

R3g a écrit a écrit :

DarkLord >> hébékoi ?




 
quoi quoi? Je te donnais une piste là non ? Qu'est ce que j'ai encore fait  :??:


---------------
Just because you feel good does not make you right
n°194532
--greg--
Posté le 13-08-2002 à 12:15:41  profilanswer
 

DarkLord a écrit a écrit :

 
 
quoi quoi? Je te donnais une piste là non ? Qu'est ce que j'ai encore fait  :??:  



relis son post alors....

n°194536
darklord
You're welcome
Posté le 13-08-2002 à 12:17:57  profilanswer
 

pff je suis à la masse moi.
 
désolé :(


---------------
Just because you feel good does not make you right
n°194539
--greg--
Posté le 13-08-2002 à 12:18:38  profilanswer
 

DarkLord a écrit a écrit :

pff je suis à la masse moi.
 
désolé :(



[:blandine]

n°194549
alien_nan
Posté le 13-08-2002 à 12:25:11  profilanswer
 

Dans ton web.xml de ton appli, tu as une balise qui doit s'appeler initFirst. Dedans, il suffit que tu places une servlet qui appelle ta methode detruisant ton ServletContextListener.
 
Je pense que ca devrait suffire...
 

mood
Publicité
Posté le 13-08-2002 à 12:25:11  profilanswer
 

n°194551
--greg--
Posté le 13-08-2002 à 12:27:44  profilanswer
 

alien_nan a écrit a écrit :

Dans ton web.xml de ton appli, tu as une balise qui doit s'appeler initFirst. Dedans, il suffit que tu places une servlet qui appelle ta methode detruisant ton ServletContextListener.
 
Je pense que ca devrait suffire...
 
 



si tu commences à faire des cochoneries comme ça, autant tout faire dans la servlet alors, le ServletContextListener n'a plus aucun interet...

n°194559
alien_nan
Posté le 13-08-2002 à 12:32:47  profilanswer
 

ce ne sont pas des cochonneries :)
moi, je m'en sers en general pour lire un fichier de proprietés  
 
ensuite, un bean dont le scope est application me permet de les retrouver sans avoir aucune adresse ni chemin en dur dans mon code.
 
ya certainement mieux comme methode, mais je ne la trouvais pas plus conne qu'une autre...
 
et puis, de cette facon, meme si ton appli tourne avec plusieurs servlets, elles se partageront le meme context qui contiendra les dites variables. Tu n'auras pas besoin de 'tout faire' dans toutes tes servlets.

n°194561
--greg--
Posté le 13-08-2002 à 12:34:40  profilanswer
 

alien_nan a écrit a écrit :

ce ne sont pas des cochonneries :)
moi, je m'en sers en general pour lire un fichier de proprietés  
 
ensuite, un bean dont le scope est application me permet de les retrouver sans avoir aucune adresse ni chemin en dur dans mon code.
 
ya certainement mieux comme methode, mais je ne la trouvais pas plus conne qu'une autre...
 
et puis, de cette facon, meme si ton appli tourne avec plusieurs servlets, elles se partageront le meme context qui contiendra les dites variables. Tu n'auras pas besoin de 'tout faire' dans toutes tes servlets.



oui oui mais le ServletContextListener fait exactement ça, plus proprement

n°194564
alien_nan
Posté le 13-08-2002 à 12:35:58  profilanswer
 

ok, desolé d'avoir repondu a coté alors ... :)

n°194581
benou
Posté le 13-08-2002 à 13:13:36  profilanswer
 

R3g a écrit a écrit :

quand je dis "reload à chaud", je veux dire que je mets reloadable=true dans mon web.xml, et que quand je change une classe dans mon appli, elle est rechargée sans que j'ai besoin de redemarrer le serveur.




le reloadable, c'est pas uniquement pour les JSP, hummm ?

n°194585
HappyHarry
Posté le 13-08-2002 à 13:33:27  profilanswer
 

benou a écrit a écrit :

 
le reloadable, c'est pas uniquement pour les JSP, hummm ?




 
nan

n°194652
R3g
fonctionnaire certifié ITIL
Posté le 13-08-2002 à 15:04:35  profilanswer
 

benou a écrit a écrit :

 
le reloadable, c'est pas uniquement pour les JSP, hummm ?




Nan, deja sorry c'est dans le server.xml bien sur. Ca fait que tomcat surveille les pages jsp ET les classes java, te qu'il recharge toute l'application dès que l'une d'elle est changée.

n°194656
R3g
fonctionnaire certifié ITIL
Posté le 13-08-2002 à 15:06:12  profilanswer
 

DarkLord a écrit a écrit :

pff je suis à la masse moi.
 
désolé :(




C'est rien, j'avais cru que tu voulais sous-entendre que j'avais fait une connerie.

n°194870
chapi456
Posté le 13-08-2002 à 22:16:45  profilanswer
 

Non, ca marche pas comme ca le reloadable=true.
Ca ne surveille que les classes java et encore, si on change certaines, parfois ca ne redémarre rien du tout et il est dans les choux !
Bref, juste pour dire que si tu changes un JSP, ca va pas recharger toute ton appli, le JSP est juste regénérer en tant que servlet puis ensuite exécuté ...

n°194963
benou
Posté le 14-08-2002 à 01:51:52  profilanswer
 

Chapi456 a écrit a écrit :

Non, ca marche pas comme ca le reloadable=true.
Ca ne surveille que les classes java et encore, si on change certaines, parfois ca ne redémarre rien du tout et il est dans les choux !
Bref, juste pour dire que si tu changes un JSP, ca va pas recharger toute ton appli, le JSP est juste regénérer en tant que servlet puis ensuite exécuté ...




mais bon il a raison le monsieurs, dans la doc, ca dit que si la class correspondant à une servlet change, ca recharge la webb_app. Mais bon, en pratique, j'ai bien l'impression que ca marche pô

n°195014
HappyHarry
Posté le 14-08-2002 à 07:35:19  profilanswer
 

benou a écrit a écrit :

 
mais bon il a raison le monsieurs, dans la doc, ca dit que si la class correspondant à une servlet change, ca recharge la webb_app. Mais bon, en pratique, j'ai bien l'impression que ca marche pô




 
sisi, mais pas tout le temps  :D

n°195016
benou
Posté le 14-08-2002 à 08:11:22  profilanswer
 

HappyHarry a écrit a écrit :

 
sisi, mais pas tout le temps  :D  




bha pour moi, c'est plu jamais que pas tout le temps ...

n°195026
Tamahome
⭐⭐⭐⭐⭐
Posté le 14-08-2002 à 09:02:31  profilanswer
 

benou a écrit a écrit :

 
bha pour moi, c'est plu jamais que pas tout le temps ...




 
ca marche qd ca veut ca (tomcat 4.0.3)


---------------
Hobby eien /人◕ ‿‿ ◕人\
n°195028
benou
Posté le 14-08-2002 à 09:06:06  profilanswer
 

Tamahome a écrit a écrit :

 
ca marche qd ca veut ca (tomcat 4.0.3)




bha mon tomcat 4.1 est pas très coopératif alors ...

n°195100
--greg--
Posté le 14-08-2002 à 11:04:03  profilanswer
 

resin rulez:D

n°195112
darklord
You're welcome
Posté le 14-08-2002 à 11:18:43  profilanswer
 

:jap:


---------------
Just because you feel good does not make you right
n°195114
R3g
fonctionnaire certifié ITIL
Posté le 14-08-2002 à 11:19:41  profilanswer
 

Je connais pas resin ; c'est gratuit aussi ? C'est beaucoup mieux que tomcat ?

n°195124
--greg--
Posté le 14-08-2002 à 11:33:47  profilanswer
 

R3g a écrit a écrit :

Je connais pas resin ; c'est gratuit aussi ? C'est beaucoup mieux que tomcat ?



c gratuit dans certaines limites
c pas BCP mieux, mais ça me parait plus simple a installer
bon en meme temps, j'ai jamais vraiment essayé tomcat:D
www.caucho.com

n°195126
R3g
fonctionnaire certifié ITIL
Posté le 14-08-2002 à 11:55:42  profilanswer
 

Citation :

Resin simplifies creating Java classes by automatically
recompiling and reloading the Java when the source changes.
Resin will automatically compile a Java class like WEB-INF/classes/TestBean.java to TestBean.class.  So
programming JSP beans just involves editing Java code and pressing the
browser's reload button.


 :love:  
en plus, vu que les webapps sont utilisées en interne uniquement, je de vrais pouvoir l'utiliser gratuitement, si j'ai bien compris ?
 
Faut que j'essaye !!!

n°195130
--greg--
Posté le 14-08-2002 à 11:58:37  profilanswer
 

ouaip
enfin rappelle toi que c qd meme un lent, surtout si tu fais des reload à chaque mini modif:)

n°195131
--greg--
Posté le 14-08-2002 à 12:00:00  profilanswer
 

pour info il recharge la web-app à chaud si tu modifies le web.xml aussi.
(pratique quand tu veux reloader une web app sur un hebergement, sans recompiler quoi que ce soit)

n°195164
R3g
fonctionnaire certifié ITIL
Posté le 14-08-2002 à 13:39:17  profilanswer
 

Ouai je savais. Le reload je l'utilise avec parcimonie, uniquement dans certains cas de debogage (les cas  :tiens, et si j'enlève cette ligne là, ca marche ?)

mood
Publicité
Posté le   profilanswer
 


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

  [java / tomcat] Rechargement de contexte

 

Sujets relatifs
[java] A propos des applets swingtransformer un fichier .java en graph UML ?
Forcer le chargement des classes JAVA d'une applet[java] RequestDispatcher et URL
[Java] Chainage de Servlets....[Java] Comment afficher un composant à deux endroits ?
[java] Est il possible avec JBuilder perso de se connecter à MySQL ?[Java] jsp:useBean
[JAVA] impression gif via internet sans telechargement[Java] Performance, remplacer des tokens
Plus de sujets relatifs à : [java / tomcat] Rechargement de contexte


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