2011-11-17 4 views
3

Nous utilisons l'annotation EJB @Schedule pour démarrer un travail planifié et effectuer une importation SOLR delta toutes les x secondes. Bien sûr, nous voulons avoir moins de temps pour l'indexation que possible. Actuellement, j'essaie de faire le delta toutes les 5 secondes.Comment faire pour que la méthode @Schedule soit appelée une seule fois à la fois

Donc, ma question est: Puis-je m'assurer que le travail n'est appelé qu'une seule fois? Donc, disons que l'indexation dure plus de 5 secondes, est-ce que les prochains appels programmés attendront que le précédent revienne?

Répondre

3

Oui. Vous pouvez créer un @Singleton et utiliser @Lock(LockType.Write) pour vous assurer que les temporisateurs ne fonctionnent pas en parallèle. Notez que LockType.Write est la valeur par défaut dans un singleton. Donc, même la mention explicite avec l'annotation ne serait pas nécessaire.

Questions connexes