2017-05-15 1 views
0

J'utilise un planificateur pour déclencher un événement. Le travail planifié ne s'exécute pas si le serveur est arrêté pendant l'heure planifiée. J'ai donc besoin de déclencher un événement lors de chaque démarrage du serveur. Y a-t-il des moyens de le faire?Programmer un travail pendant le démarrage du serveur

+0

Utilisez-vous une sorte de bibliothèque pour cela? par exemple. Quartz Scheduler, ou utilise-t-il simplement les tâches planifiées de Java? – Petesh

+0

Non, je n'utilise pas de telles bibliothèques. C'est juste une tâche planifiée de Java. –

Répondre

0

Vous avez deux possibilités

  1. Si vous exécutez votre emploi prévue en français sous Windows, vous pouvez utiliser le planificateur des tâches
  2. Si vous utilisez Linux, vous devez exécuter votre travail dans un script bash et mettre un chemin d'accès à ce script bash dans le fichier /etc/rc.local ou ajouter un service. Une autre possibilité est d'utiliser Cron Job.
+0

Oui, nous pouvons utiliser le planificateur de tâches, mais ma question est ce qui arrive au planificateur si le serveur est arrêté pendant l'heure planifiée. À ce moment-là, le planificateur de tâches ne parvient pas à traiter l'enregistrement. –

+0

Windows Task Sheduler a la possibilité d'exécuter une tâche après le démarrage du serveur ou après la connexion. –

0

Nous pouvons exécuter une méthode au démarrage du contexte d'application printanière (ApplicationListener) à partir de laquelle nous pouvons appeler directement la méthode planifiée. Donc, chaque fois que le serveur démarre, cette méthode fonctionne à partir de laquelle je pourrais faire ce que j'avais réellement besoin. Merci pour la réponse fournie.

0

Si vous souhaitez démarrer votre travail au démarrage du serveur, utilisez <load-on-startup> any int value </load-on-startup> sur le fichier web.xml. il va déclencher le servlet. La valeur d'entrée que vous avez entrée est la priorité de la tâche à démarrer. Ainsi, dans la méthode init de servlet, vous pouvez appeler votre méthode.