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

  FORUM HardWare.fr
  Programmation
  Java

  [[Résolu]Java] Exécuter une action toutes les x minutes ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[[Résolu]Java] Exécuter une action toutes les x minutes ?

n°953933
glod 2
Votre trajet, notre projet.
Posté le 16-01-2005 à 16:28:07  profilanswer
 

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
mood
Publicité
Posté le 16-01-2005 à 16:28:07  profilanswer
 

n°953943
patachou
Posté le 16-01-2005 à 16:41:39  profilanswer
 

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 ;)

n°953949
the big be​n
Posté le 16-01-2005 à 16:46:51  profilanswer
 

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  ;)


Message édité par the big ben le 16-01-2005 à 16:47:47
n°953955
glod 2
Votre trajet, notre projet.
Posté le 16-01-2005 à 16:52:20  profilanswer
 

patachou a écrit :

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 ;)


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 :D

n°953960
Huitre
Posté le 16-01-2005 à 17:07:44  profilanswer
 

quartz.

n°953961
Huitre
Posté le 16-01-2005 à 17:07:57  profilanswer
 

(et google)

n°953971
R3g
fonctionnaire certifié ITIL
Posté le 16-01-2005 à 17:40:55  profilanswer
 

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)  
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  ;)


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.

n°954441
julienv
Posté le 17-01-2005 à 11:49:35  profilanswer
 

Glod 2 a écrit :

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 :D


 
dans un contexte j2ee tu devrais utiliser les timer EJB

n°955294
Bidem
Posté le 18-01-2005 à 10:31:43  profilanswer
 

java.util.Timer et java.util.TimerTask répondent parfaitement à ton besoin

n°955297
Bidem
Posté le 18-01-2005 à 10:36:39  profilanswer
 

patachou a écrit :

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 ;)


 
+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

mood
Publicité
Posté le 18-01-2005 à 10:36:39  profilanswer
 

n°955739
the real m​oins moins
Posté le 18-01-2005 à 18:16:35  profilanswer
 

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 :??:

n°957929
glod 2
Votre trajet, notre projet.
Posté le 20-01-2005 à 21:56:36  profilanswer
 

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 :jap:

n°957962
the real m​oins moins
Posté le 20-01-2005 à 22:19:12  profilanswer
 

euh, y'a les ServletContextListener, c'est qd mme plus propre qu'une servlet/load-on-startup.

n°957965
the real m​oins moins
Posté le 20-01-2005 à 22:19:55  profilanswer
 

sinon, si t'as qqchose à dire (positif, negatif, ...) à propos de quartz, ça m'interesse.

n°957979
glod 2
Votre trajet, notre projet.
Posté le 20-01-2005 à 22:29:30  profilanswer
 

Jvais regarder pour les Listener mais j'ai jamais fait encore :sweat:
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.

n°957994
the real m​oins moins
Posté le 20-01-2005 à 22:48:09  profilanswer
 

:jap:

n°959036
glod 2
Votre trajet, notre projet.
Posté le 21-01-2005 à 22:37:33  profilanswer
 

Pour le ServletContextListener, si jfais ça ça marche ? (première fois que jlutilise pataper :o)
 

Code :
  1. import javax.servlet.*;
  2. import Quartz.Job.*;
  3. public final class ContextListener
  4. implements ServletContextListener {
  5. private ServletContext context = null;
  6. public void contextInitialized(ServletContextEvent event) {
  7.  context = event.getServletContext();
  8.  //Je lance mon Job Quartz
  9. }
  10. public void contextDestroyed(ServletContextEvent event) {
  11.  context = event.getServletContext();
  12.                 //j'arrette mon Job Quartz
  13. }
  14. }

Les ServletContextEvent jmen occupe pas il les lance "tout seul" ? (désolé hein :D)

n°959040
glod 2
Votre trajet, notre projet.
Posté le 21-01-2005 à 22:40:58  profilanswer
 

Ah pis jrajoute ça dans mon web.xml
 
<listener>
   <listener-class>
      package.ContextListener
  </listener-class>
</listener>

n°959056
the real m​oins moins
Posté le 21-01-2005 à 23:19:38  profilanswer
 

oui c'est ça, mais dans la methode contextDestroyed, tu remets ta variable context à null, au moins à la fin de la methode.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°959057
glod 2
Votre trajet, notre projet.
Posté le 21-01-2005 à 23:20:57  profilanswer
 

merci :jap:
En passant, pourquoi c'est plus propre comme méthode qu'une load on startup ?

n°959059
the real m​oins moins
Posté le 21-01-2005 à 23:22:47  profilanswer
 

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


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°959069
glod 2
Votre trajet, notre projet.
Posté le 21-01-2005 à 23:34:49  profilanswer
 

oki :)

n°970930
yolepro
Etre c'est être relatif
Posté le 03-02-2005 à 17:58:22  profilanswer
 

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.
ds certains cas une servlet-load-on-startup peut etre justifiée, mais pas pour faire ça, à priori


 
 
A part si ultérieurement tu veux authoriser certaine personne à forcer les taches à la main...  :D  
 
Et dans ce cas, tu n'as qu'à implémenter une méthode doGet() et hop le tour est jouer...
 
Comment ca je chipotes :P

mood
Publicité
Posté le   profilanswer
 


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

  [[Résolu]Java] Exécuter une action toutes les x minutes ?

 

Sujets relatifs
[JAVA] envoyer un message simultanement aux clients[RESOLU] class php5 - Pb fin de script
zone de texte limite a 2 characteres [Resolu][JAVA] Comment faire un wait ?
[Java/SNMP] Convertion MIB/XML[Resolu] [xml] pb encodage
[Resolu] JDBC => Requete SQL (Delete)[Java]Projet Débutant / faisabilité
recuperer un numero de session [resolu][Java][JMF]Modification d'une vidéo
Plus de sujets relatifs à : [[Résolu]Java] Exécuter une action toutes les x minutes ?


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