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

  FORUM HardWare.fr
  Programmation
  Java

  [Servlet] Un timer partagé entre différent servlets...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Servlet] Un timer partagé entre différent servlets...

n°308364
Predicator
Posté le 13-02-2003 à 13:46:20  profilanswer
 

salut !
 
j'ai besoin d'un timer du côté servlet pour couper des connexions, mais voilà, j'ai plusieurs servlet qui doivent avoir le même timer. y'a-t-il un moyen de faire ça ?
 
si je stocke un javax.swing.Timer et son listener dans la session HTTP, est-ce que ça va marcher ?
 
par exemple le code suivant
il se trouve dans le constructeur d'un servlet, et la méthode disconnect() est une méthode qui coupe juste les connexions qu'il faut...
 

Code :
  1. ActionListener actionListener = new ActionListener(){
  2.    public void actionPerformed(ActionEvent e){
  3.       Servlet.this.disconnect();
  4.    }
  5. };
  6. javax.swing.Timer timer = new Timer(getSession().getMaxInactiveInterval()*0.9,actionListener);
  7. timer.start
  8. getSession.setAttribute("timer",timer);


 
en faisant comme ça, est-ce que l'évènement sera récupéré et traité par le servlet ?
 
merci
 
### EDIT ###
 
ce problème vient du fait que postgresql ne coupe pas de lui-même des connexions à une base de donnée, et une fois la session tomcat perdue, il n'y a plus aucun moyen de les couper.
il existe plusieurs servlet qui accèdent à cette base à travers la même connexion, c'est pour ça que j'ai besoin d'un seul timer, qu'il doit générer un évènement récupérable par au moins une servlet qui coupera la connexion, et ce timer doit être accessible par tous les servlets pour le réinitialiser à chaque accès à la base...
 
remerci :D


Message édité par Predicator le 13-02-2003 à 13:52:26
mood
Publicité
Posté le 13-02-2003 à 13:46:20  profilanswer
 

n°308401
benou
Posté le 13-02-2003 à 14:29:34  profilanswer
 

ActionListener dans des servlet ??   :heink:

n°308402
--greg--
Posté le 13-02-2003 à 14:30:47  profilanswer
 

euh les connections sql tu DOIS les fermer toi meme hein :heink:
et si t'as envie de les garder ouvertes t'utilises un pool entre les deux


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°308403
Predicator
Posté le 13-02-2003 à 14:31:02  profilanswer
 

benou a écrit :

ActionListener dans des servlet ??   :heink:  


 
je sais bien, mais je m'y connais absolument pas en servlet... je dois modifier celles qui existent parce que ce £$@# de programmeur à mal fait son boulot :pfff:  
 
je suis ouvert à toute solution, vue que j'en ai pas :D

n°308418
Predicator
Posté le 13-02-2003 à 14:48:17  profilanswer
 

--greg-- a écrit :

euh les connections sql tu DOIS les fermer toi meme hein :heink:
et si t'as envie de les garder ouvertes t'utilises un pool entre les deux


 
je sais bien, c'est bien ça le problème...
bon j'explique un peu mieux...
 
j'ai un client applet qui se sert de plusieurs servlet.
ces servlet ouvrent 2 connexions vers pgSQL, et les stocke dans la session HTTP pour ne pas avoir à la fermer et les rouvrir à chaque fois...
 
tomcat à un session timeout de 30 minutes
 
si au bout de ces 30 minutes il n'y a aucun transfert entre l'applet et un des servlet, bah la session se ferme
 
du coup, les références des 2 connexions sont perdues, et je peux plus les fermer.
 
voilà le problème de départ...
à partir de là je me suis dit qu'un timer du côté server, qui déclenche un évènement au bout du temps de session timeout x 90% (ça laisse une marge de 10%) pourrait fermer ces connections (un autre timer du coté client est initialisé à 85% et permet de fermer l'applet).
 
le problème est :
 
comment utiliser du côté server un timer accessible par tous les servlets
et comment lancer une action unique (disconnect qui ferme les 2 connexions SQL) quand le timer arrive à 0. ce timer doit pouvori accéder à la session pour récupérer les connexions à SQL...
 
voilà, j'espère que c'est aps trop confu :)

n°308454
--greg--
Posté le 13-02-2003 à 15:10:27  profilanswer
 

ben.. tu ajoutes des connection.close() là ou il faut dans tes servlets, stout  :heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°308476
Predicator
Posté le 13-02-2003 à 15:32:38  profilanswer
 

--greg-- a écrit :

ben.. tu ajoutes des connection.close() là ou il faut dans tes servlets, stout  :heink:  


 
bon apparemment c'est pas clair...


Message édité par Predicator le 13-02-2003 à 15:34:32
n°308478
--greg--
Posté le 13-02-2003 à 15:34:29  profilanswer
 

Predicator a écrit :


 
bah...
comment tu sais que l'applet ne se servira plus des connexions ?
l'utilisateur peut très bien décrocher de devant son ordi pendant 20 minutes...
et puis on peut pas mettre la déconnexion dans le finalize() car les servlets ne sont détruits qu'à la fermeture du serveur...
 
en gros, tu as la solution....
il faut mettre ce qu'il faut faire là où il faut...
c'est bien, mais ça je peux le deviner :)
mais je peux pas couper et rouvrir la connexion à la base à chaque accès, c'est pour ça que ces connexions sont stockées dans la session...

mais si tu peux
tu vires les cnx de la session (quelle idée aussi  :sarcastic: ) et tu utilises un pool de connections


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°308479
Predicator
Posté le 13-02-2003 à 15:36:46  profilanswer
 

--greg-- a écrit :

mais si tu peux
tu vires les cnx de la session (quelle idée aussi  :sarcastic: ) et tu utilises un pool de connections


 
certes...
mais là tu parles à quelqu'un qui s'y connait pas en servlet. qui reprend un code tout pourrave d'un développeur qui en avait rien à battre, et qui s'est barré à la fin du projet. ce projet a deux mois de retard que je dois combler, et j'ai pas le temps d'apprendre à me servir de tomcat... je sais ce qu'est un pool, je devine ce qu'est un pool de connexion, mais de là à savoir m'en servir...
bref, je cherche une solution rapide qui m'oblige pas à reprendre à zéro le code d'un baka yaro qui devrait être dénoncé à l'ordre des développeur :)


Message édité par Predicator le 13-02-2003 à 15:37:22
n°308494
--greg--
Posté le 13-02-2003 à 15:53:52  profilanswer
 

Predicator a écrit :


 
certes...
mais là tu parles à quelqu'un qui s'y connait pas en servlet. qui reprend un code tout pourrave d'un développeur qui en avait rien à battre, et qui s'est barré à la fin du projet. ce projet a deux mois de retard que je dois combler, et j'ai pas le temps d'apprendre à me servir de tomcat... je sais ce qu'est un pool, je devine ce qu'est un pool de connexion, mais de là à savoir m'en servir...
bref, je cherche une solution rapide qui m'oblige pas à reprendre à zéro le code d'un baka yaro qui devrait être dénoncé à l'ordre des développeur :)

ben fermer des connexions sql ça n'a rien à voir avec des servlets ;)
tu reperes les endroits ou les cnx sont foutues dans la sessions
( session.setAttribute("cnxname", cnx) ), tu jettes ça.
apres, j'espere pour toi que l'ouverture des cnx est centralisée dans une methode ou une class utilitaire; tu changes le driver utilisé par celui d'un pool manager (cherche sur le forum pour ça, on en a deja parlé plusieurs fois), et voila, c tout. si le pool est bien fait, il s'utilise exactement comme un driver jdbc ordinaire, donc tu ne devrais rien avoir a changer, juste à configurer le pool pour lui dire quelle base utiliser)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
mood
Publicité
Posté le 13-02-2003 à 15:53:52  profilanswer
 

n°308499
Predicator
Posté le 13-02-2003 à 15:57:15  profilanswer
 

--greg-- a écrit :

ben fermer des connexions sql ça n'a rien à voir avec des servlets ;)


 
bah tel que c'est fait actuellement, c'est le seul moyen que j'ai de le faire (l'accession à pgSQL se fait avec JDBC au niveau des servlets)
 

Citation :

tu reperes les endroits ou les cnx sont foutues dans la sessions
( session.setAttribute("cnxname", cnx) ), tu jettes ça.
apres, j'espere pour toi que l'ouverture des cnx est centralisée dans une methode ou une class utilitaire;


 
 :cry:  
boulet powaaaaa.... :pfff:  
 

Citation :

tu changes le driver utilisé par celui d'un pool manager (cherche sur le forum pour ça, on en a deja parlé plusieurs fois), et voila, c tout. si le pool est bien fait, il s'utilise exactement comme un driver jdbc ordinaire, donc tu ne devrais rien avoir a changer, juste à configurer le pool pour lui dire quelle base utiliser)


 
oki, merchi beaucoup, je pars en quête :D
 
EDIT : et je tombe sur le post où c'est toi qui pose la question :lol:


Message édité par Predicator le 13-02-2003 à 15:59:23
n°308504
--greg--
Posté le 13-02-2003 à 16:02:45  profilanswer
 

Predicator a écrit :


 
bah tel que c'est fait actuellement, c'est le seul moyen que j'ai de le faire (l'accession à pgSQL se fait avec JDBC au niveau des servlets)


 
je voulais dire que c'est pas parce que tu connais pas les servlets que tu connais jdbc, vu que ça n'a rien a voir. mtnt que le jdbc soit geré directement dans les servlets, soit...
 

Predicator a écrit :


 
 :cry:  
boulet powaaaaa.... :pfff:  
 


 
me dit pas qu'il fait un Class.forname et tout le tralala a chaque fois qu'il a besoin d'une connection, et que le nom du driver est hardcodé? [:mlc]
fin bon, si c'est ça il a sans doute fait du copié/collé, donc tu peux la jouer au search&replace :D
 

Predicator a écrit :


oki, merchi beaucoup, je pars en quête :D
 
EDIT : et je tombe sur le post où c'est toi qui pose la question :lol:

ha??? ou ça?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°308510
Predicator
Posté le 13-02-2003 à 16:08:17  profilanswer
 

--greg-- a écrit :


ha??? ou ça?


 
http://forum.hardware.fr/forum2.ph [...] subcat=390 :D
 
le problème est le même, le code de départ est... :sweat:  
j'ai rien dit :D
je continue ma quête... :)
je vais essayer ce protomatter...
 
EDIT : contre le fleur ICQ aussi :lol:


Message édité par Predicator le 13-02-2003 à 16:16:01
n°308544
--greg--
Posté le 13-02-2003 à 16:57:26  profilanswer
 

excellent ce topic  [:--greg--]


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
n°308647
Predicator
Posté le 13-02-2003 à 18:24:09  profilanswer
 

:pfff:  
y'en a qui voient la lumière, moi je viens de voir les ténèbres... ça existe une bible de ce qu'il ne faut pas faire ? si non, je dépose le brevet tout de suite :D  
dire qu'il va continuer à sévir ailleurs... :sweat:


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

  [Servlet] Un timer partagé entre différent servlets...

 

Sujets relatifs
Pb de suppression de répertoire à partir d'une servlet[HTML] Légende d'un menu qui apparait dans un cadre différent
Communication d'une exception entre une servlet et une appletpartage de la memoire entre processus
[Servlet] download de fichierDebutant Servlet : gros pb!!!
[JSP-Servlet] Répartition de charge d'une web-app[servlet/jsp] récuérer le chemin réel de la racine d'une web-app
Servlet : Transmettre les paramètres d'une requète lors d'un "forward"Probleme de retour d'un servlet vers un jsp
Plus de sujets relatifs à : [Servlet] Un timer partagé entre différent servlets...


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