J'utilise Timertask
dans mon application Web pour lancer un fil d'arrière-plan toutes les 24 heures tous les jours à minuit. J'ai donc un ServletContextListener et dans contextInitialized, je crée un objet Timertask (say) et un objet Timer disons t.La tâche de minuterie ne s'exécute pas
J'appelle
t.schedule(timertask, firstTime.getTime(), rescheduleMiliSec);
où firstTime.getTime() = midnight
et rescheduleMiliSec = 24 hr
. Le thread se lance bien et fait ce qu'il est censé faire en DIT. Chaque 24 heures, il lance la tâche d'arrière-plan. Lorsqu'il passe à PROD, le thread s'exécute une seule fois lorsque le contexte est initialisé mais pas après.
Y a-t-il un paramètre spécifique qui pourrait en être la cause?
Lorsque le contexte est d'abord initialisés, le TimerTask fonctionne correctement et il n'y a exception. Plus tard aussi, il n'y a pas d'exception. Cela ne fonctionne tout simplement pas. – Victor
Étant donné que cette question est urgente pour moi de résoudre, si une solution réelle est difficile à trouver, une solution de contournement comme ci-dessous fonctionnera également. J'aurais quand même besoin d'aide pour l'implémenter: Puisque la logique réside dans contextinitialised(), chaque fois que l'application est redéployée, le contexte s'initialise et la logique s'exécute. Existe-t-il un moyen de redéployer automatiquement l'application chaque jour à minuit? peut-être un script? C'est un peu désordonné, mais ça va faire pour l'instant ... – Victor
@ user454671, mis à jour ma réponse. En ce qui concerne le redéploiement de l'application, vous pourriez probablement vous pencher sur un travail chronologique ... mais cela ne semble pas être une solution raisonnable. –