Plusieurs threads peuvent-ils appeler en toute sécurité des méthodes sur une instance de Scheduler renvoyée par le StdSchedulerFactory simultanément?Les instances du planificateur Quartz sont-elles sécurisées?
Répondre
J'ai eu ce problème si j'ai pensé que je regarderais le code source. En supposant que vous utilisez une configuration standard de Quartz (en stockant les tâches et les déclencheurs dans la RAM au lieu d'un JobStore persistant), il apparaît que Quartz est thread-safe. En fouillant dans la source, vous arriverez finalement au RamJobStore, qui stocke tous les travaux et les déclencheurs en mémoire.
public void storeJobAndTrigger(SchedulingContext ctxt, JobDetail newJob,
Trigger newTrigger) throws JobPersistenceException {
storeJob(ctxt, newJob, false);
storeTrigger(ctxt, newTrigger, false);
}
Dans chacun des storeJob (..) et storeTrigger (..) méthodes, il y a des blocs séparés synchronisés avec leurs propres objets uniques pour le stockage des emplois et des déclencheurs dans un fil de manière sûre:
synchronized (jobLock) {
if (!repl) {
// get job group
...
}
}
Et la synchronisation d'un déclencheur:
synchronized (triggerLock) {
...
synchronized (pausedTriggerGroups) {
...
}
}
donc en bref, il semble que vous pouvez faire du fil des appels de sécurité à une instance de la classe Scheduler
This post sur le site Terracotta le confirme.
- 1. empêche l'exécution immédiate du travail du planificateur à quartz
- 2. Intégration de tomcat et du planificateur Quartz au démarrage
- 3. échantillon sur pool de threads du planificateur de quartz
- 4. Placement d'un planificateur Quartz en mode veille
- 5. Comment effacer les déclencheurs dans un planificateur à quartz
- 6. Un planificateur d'entreprise pour python (comme le quartz)
- 7. Bibliothèque de planificateur en C++ similaire à Java Quartz
- 8. Sort du planificateur
- 9. Comment puis-je obtenir les tâches du planificateur dans le serveur Java EE
- 10. comment changer l'apparence du contrôle du planificateur
- 11. Applications sécurisées
- 12. Je dois effectuer une tâche lorsque le planificateur Quartz est en cours d'arrêt
- 13. comment obtenir une liste des déclencheurs enregistrés sur un planificateur Quartz
- 14. Guice + quartz + iBatis
- 15. Quartz 2D Rotation du chemin
- 16. Séparation physique des requêtes Web sécurisées et non sécurisées
- 17. Les procédures stockées SQL sont-elles sécurisées?
- 18. questions d'applications Web sécurisées
- 19. Comment fonctionne un planificateur de travail comme le quartz lorsque vous avez plusieurs serveurs?
- 20. Évaluation des performances du planificateur Linux
- 21. problème dans le code du planificateur
- 22. Sessions PHP sécurisées
- 23. Comment le quartz suit-il l'heure
- 24. Quartz.NET, "Erreur de communication avec le planificateur distant".
- 25. applications asp.net sécurisées Rédaction
- 26. PHP REMOTE_ADDR et sessions sécurisées
- 27. Comment annuler un travail planifié dans Quartz
- 28. Impossible d'exécuter plusieurs tâches avec du quartz
- 29. Planificateur de processus Windows 7 et planificateur Windows Embedded
- 30. Implémentation d'interfaces Java non sécurisées