Question

Quel est le meilleur / le plus simple moyen d'exécuter des tâches périodiques (comme un thread de démon) sur un serveur tomcat / jetty? Comment puis-je commencer le fil? Existe-t-il un mécanisme simple ou s'agit-il d'une mauvaise idée?

Était-ce utile?

La solution

Il est correct et efficace de cacher une instance java.util.Timer (ou mieux encore ScheduledExecutor) dans votre ServeletContext. Créez-le dans l'appel init () d'un servlet et tous vos servlets peuvent y ajouter des TimerTasks.

Autres conseils

Si vous souhaitez que tout reste du côté java, consultez Quartz .
Il gère le basculement et la répartition fine des tâches, avec la même flexibilité que les tâches cron.

Un moyen générique de fonctionner sur de nombreux systèmes consiste simplement à avoir un travail cron qui effectue un wget périodique contre votre application.

Je ne peux pas répondre aux questions concernant tomcat / jetty, mais j'ai utilisé des méthodes similaires avec les applications Web basées sur Python.

Je lance normalement une application distincte qui effectue les tâches périodiques nécessaires. Si une interopérabilité est nécessaire entre le site Web et l'application, cette communication peut s'effectuer via une sorte d'API (en utilisant quelque chose comme XML-RPC / sockets unix / etc.) ou même simplement via la couche base de données, si cela convient.

L’espoir que cela aide.

Si vous souhaitez utiliser un travail cron mais que vous n'avez pas d'accès administratif au système de développement, vous pouvez créer une crontab utilisateur en exécutant la commande suivante:

crontab -e

Il utilise vi par défaut sur la plupart des systèmes, mais vous pouvez le changer pour l'éditeur de votre choix via:

export EDITOR=/usr/local/bin/my_editor

Ensuite, l'exécution de la commande crontab -e lancera votre fichier crontab dans votre éditeur. Lors de la sauvegarde, les modifications seront réintégrées dans le cron du système.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top