Exécuter une action toutes les x minutes ? [[Résolu]Java] - Java - Programmation
Marsh Posté le 16-01-2005 à 16:41:39
Y avait deja eu une question similaire sur ce forum :
http://forum.hardware.fr/forum2.ph [...] subcat=390
J'espere qu'il y a eu des réponses qui pourront t'aider
Marsh Posté le 16-01-2005 à 16:46:51
Ben je pense que le plus simple c est d utiliser des timers (éventuellement ceux de swing) L utilisation n est vraiment pas compilquée... (cf javadoc)
Sinon si tu n aime pas les timer de swing tu peux le faire avec les timerTask...
PS: n oublie pas que l unitée de temps est la miliseconde
Marsh Posté le 16-01-2005 à 16:52:20
patachou a écrit : Y avait deja eu une question similaire sur ce forum : |
super merci je vais lire ça, apparament le fait d'être dans un contexte j2ee pose problème
J'éspère que y a une solution simple en fin de topic
Marsh Posté le 16-01-2005 à 17:40:55
the big ben a écrit : Ben je pense que le plus simple c est d utiliser des timers (éventuellement ceux de swing) L utilisation n est vraiment pas compilquée... (cf javadoc) |
En même temps, utiliser un composant Swing dans une webapp, c'est un peu tordu quand même.
Sinon, mieux que la servlet load on startup pour effectuer des opérations d'initialisation au démarrage de la webapp, il y a ServletContextListener.
Marsh Posté le 17-01-2005 à 11:49:35
Glod 2 a écrit : super merci je vais lire ça, apparament le fait d'être dans un contexte j2ee pose problème |
dans un contexte j2ee tu devrais utiliser les timer EJB
Marsh Posté le 18-01-2005 à 10:31:43
java.util.Timer et java.util.TimerTask répondent parfaitement à ton besoin
Marsh Posté le 18-01-2005 à 10:36:39
patachou a écrit : Y avait deja eu une question similaire sur ce forum : |
+1 à ce qui est dit dans ce fil de discussion à propos du fait qu'il est plus propre d'externaliser ces traitement en dehors de ton serveur d'appli J2EE
Marsh Posté le 18-01-2005 à 18:16:35
alors qu'il y a de quoi le faire dedans? je vois pas ou tu veux en venir là...
autant dans certains ça peut etre tout à fait justifié de les externaliser, autant dans d'autres tu aurais des tas d'avantages à faire ça dans le serveur, donc en faire une regle generale sans connaitre le besoin, je trouve ça un peu douteux non
Marsh Posté le 20-01-2005 à 21:56:36
Finalement j'ai utilisé Quartz qui marche nickel, et mon idée 1ère était bonne pour la servlet load on statup, c'est bien comme ça qu'il faut faire a priori (ils filent une servlet de ce type dans le package Quartz comme exemple)
Merci à tous
Marsh Posté le 20-01-2005 à 22:19:12
euh, y'a les ServletContextListener, c'est qd mme plus propre qu'une servlet/load-on-startup.
Marsh Posté le 20-01-2005 à 22:19:55
sinon, si t'as qqchose à dire (positif, negatif, ...) à propos de quartz, ça m'interesse.
Marsh Posté le 20-01-2005 à 22:29:30
Jvais regarder pour les Listener mais j'ai jamais fait encore
Pour Quartz, à par un essai avec Timer et TimerTask j'ai pas assez d'experience et de recul pour en parler, je dirai juste que ça à l'air vraiment bien foutu, puissant et en même temps on peu faire des trucs simples rapidement sans lire des tonnes de doc, rien qu'avec le mini tuto fourni avec.
Enfin y mass possibilités, comme les threads persistants dans une BDD (où Quartz gère tout, on lui file juste une chaîne de connexion et roule), ça je sens que ça va me servir.
Et en survolant comme ça par rapport aux Timers de java, y a déja la possibilité de donner un comportement dans le cas où un Job à échoué qui permet de faire quand même des trucs qui tiennent plus la route que les Timers. Pour le reste, j'ai vraiment fait qu'éfleurer aussi bien les Timers de java que les Jobs de Quartz donc jpeux pas trop comparer.
Marsh Posté le 21-01-2005 à 22:37:33
Pour le ServletContextListener, si jfais ça ça marche ? (première fois que jlutilise pataper )
Code :
|
Les ServletContextEvent jmen occupe pas il les lance "tout seul" ? (désolé hein )
Marsh Posté le 21-01-2005 à 22:40:58
Ah pis jrajoute ça dans mon web.xml
<listener>
<listener-class>
package.ContextListener
</listener-class>
</listener>
Marsh Posté le 21-01-2005 à 23:19:38
oui c'est ça, mais dans la methode contextDestroyed, tu remets ta variable context à null, au moins à la fin de la methode.
Marsh Posté le 21-01-2005 à 23:20:57
merci
En passant, pourquoi c'est plus propre comme méthode qu'une load on startup ?
Marsh Posté le 21-01-2005 à 23:22:47
ben ça te saute pas aux yeux? j'ai meme pas d'explication, c'est juste un objet qui te permet de faire des "trucs" au demarrage et a l'extinction de ton appli; alors que ta serlvet à la base c'est pour repondre à des requetes.
ds certains cas une servlet-load-on-startup peut etre justifiée, mais pas pour faire ça, à priori
Marsh Posté le 03-02-2005 à 17:58:22
the real moins moins a écrit : ben ça te saute pas aux yeux? j'ai meme pas d'explication, c'est juste un objet qui te permet de faire des "trucs" au demarrage et a l'extinction de ton appli; alors que ta serlvet à la base c'est pour repondre à des requetes. |
A part si ultérieurement tu veux authoriser certaine personne à forcer les taches à la main...
Et dans ce cas, tu n'as qu'à implémenter une méthode doGet() et hop le tour est jouer...
Comment ca je chipotes
Marsh Posté le 16-01-2005 à 16:28:07
Dans le cadre une appli web sur un serveur tomcat, je vais devoir éxécuter periodiquement une tâche (vérifier une date et une heure de fin d'enchère dans une base de donnée pour mettre fin aux enchères arrivées à échéance)
Je n'ai jamais fait ce genre de chose, quelle serait la meilleure façon de procéder ? J'ai pensé à un thread (j'en ai jamais fait mais je pense que ça doit faire ske je veux) dans une servlet de type load on startup ? Ca tient la route ce genre de truc ou y a un meilleur moyen ?
Merci
Message édité par glod 2 le 20-01-2005 à 21:56:52