|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 15 ![]() |
Bonjour, J'utilise Quartz pour planifier des tâches. La doc explique comment passer des paramètres vers les jobs, mais je recherche le moyen de faire passer des infos en sens inverse.
Quel serait le moyen le plus simple de passer des paramètres d'un job vers l'objet qui a planifié les jobs SVP ? |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() |
Pas vraiment possible puisque l'objet qui a planifié le job n'existe plus depuis longtemps quand le job s'exécute
Si tu veux persiter ou interagir avec des données dans ton job, il faut le faire là où sont les données, en général dans une base de donnée.
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : mai 2011 Messages : 15 ![]() |
Merci pour ces infos.
En fait, je peux m'arranger pour que l'objet qui planifie vive le temps qu'il faut, disons pendant quelques jours. J'utilise une instruction du type Citation:
Puis-je utiliser un objet qui recueillerait les quelques infos dont j'aurais besoin ? je pense à l'interface JobListener : Citation:
|
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() |
Quartz ne gère pas la transmission de données. Toute ce qui va vers le job est stockée dans la DB comme propriété du job. Du fait de ce stockage, impossible de transmettre des objet complexes. Si tu veux que ton Job informe quoi que ce soit, c'est en dehors de l'api Quartz. Tu peux utiliser un JobListener, mais tu va être notifié de tous les jobs, pas seulement celui là.
Tu job peux stocker l'info sur son état d'avancement dans une base de données, ce serait plus sur. Un objet qui attends sur un Thread.sleep -> ca ne survis pas à un arrêt de l'application. Or quand on utilise quartz, c'est justement pour avoir la garantie que les job s'exécutent.
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 849 ![]() |
peut-être une question bête étant donné que je ne l'ai jamais fait avec Quartz, mais si ta classe "appelante" implémente "JobListener", alors il te suffit de l'ajouter à ton Job qui l'appelera à la fin de son travail.
C'est ni plus ni moins que le design pattern "Observer / Observable". C'est aussi comme cela que fonctionnent les SwingWorker en Swing ou encore les Callable / Future avec les Executor : http://blog.zenika.com/index.php?pos...nte-Java-1sur2 Ce n'est qu'une simple idée (à creuser) étant donnée que je ne l'ai jamais fait avec Quartz, comme indiqué au début de ma réponse. Peut-être un exemple ici : http://www.mkyong.com/java/quartz-joblistener-example/ |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() ![]() |
fxrobin: à quartz on ne passe pas des instances mais des noms de classes, c'est là toute la difficulté. En effet, un nom de classe ça peux se stoker dans une DB, une instance c'est plus difficile
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
00
|
|
|
#7 | |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 15 ![]() |
Merci à tous les deux,
Je vais voir cela : Citation:
Mais j'ai une inquiétude concernant la philosophie de Quartz Corrigez-moi si je me trompe ? |
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé Sénior
![]() ![]() |
Ben quand ton appli s'arrête quartz s'arrête, c'est normal.
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 849 ![]() |
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() |
Au temps pour moi, c'est le "passer au Job" qui m'a confus
Oui, les listeners, c'est des instances, mais du coup t'as le problème inverse, c'est que les listeners, eux, tu les perds à l'arrêt :/
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 849 ![]() |
Sauf si le Listener est aussi l'appelant ... non ?
Ou alors il y a un truc que tu voies et qui m'échappe, mais pour moi c'est exactement comme en Swing avec les SwingWorker (voire les ActionListener) : on ne perd aucune instance, on est juste dans un Thread différent (quand c'est bien fait). non ? |
|
|
00
|
|
|
#12 | |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 15 ![]() |
Merci à tous les deux.
J'ai modifié l'exemple fourni par http://www.mkyong.com/java/quartz-joblistener-example/. J'ajoute un getMessage à HelloJobListener. Ce getter est renseigné par ex. lors de la fin du job et il est lisible par l'objet qui lancé les jobs (soit ici CronTriggerExample Citation:
![]() Ce n'est pas un rapport complet, mais c'est déjà bien. Encore merci. |
|
|
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() ![]() |
Quartz est, normalement, utilisé pour scheduler des jobs de manière plus ou moins permanent. A chaue redémarrage de l'appli, quartz récupère les job en attente dans la BD, exécute ceux en retards, etc.
Par contre, il ne stocke pas les listener, à chaque démarrage de l'appli, il faut réenregistrer les listeners
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
10
|
|
|
#14 |
|
Membre Expert
![]() Formateur JAVA / XML Inscription : novembre 2007 Messages : 849 ![]() |
Okay.
Ca doit être comme les @Schedule sur les EJB alors.
__________________
Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ... |
|
|
00
|
|
|
#15 |
|
Invité régulier
![]() Inscription : mai 2011 Messages : 15 ![]() |
Bonjour,
Juste quelques impressions:
Si j'ai une autre idée, je vous en ferai part. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com