Annotation @Schedule exécuter toutes les quelques minutes (ou secondes)
Je voudrais essayer d'utiliser l'annotation @Schedule de la manière suivante:
public class MyTestServlet extends HttpServlet {
private static JcanLogger LOG = JcanLoggerFactory.getLogger(ServiceTestServlet.class);
@EJB CronService cronService;
public void service(HttpServletRequest req, HttpServletResponse resp) throws .... {
....
cronService.iLive();
}
---
@Local //because the ejb is in a servlet (there is no other jvm)
public interface CronService {
public void iLive();
public void runsEveryMinute();
}
---
@Singleton
public class CronServiceBean implements CronService {
private static final JcanLogger LOG = JcanLoggerFactory.getLogger(CronServiceBean.class);
@Schedule(minute="*")
public void runsEveryMinute() {
LOG.info(" runs EveryMinute ");
}
public void iLive() {
LOG.info("iLive");
}
---
LOG
...
CronServiceBean:34 ] iLive
Basé sur le journal, le CronService vivre et bien, mais la tâche planifiée 'runsEveryMinute' ne fonctionne pas.
Comment devrait-il travailler à l'aide d'un EJB tâche planifiée?
OriginalL'auteur cscsaba | 2012-07-14
Vous devez vous connecter pour publier un commentaire.
Que par la Javadoc pour la
@Schedule
annotation, les valeurs par défaut sont:*
pour tous les champs à l'exception de l'heure, la minute et à la seconde; et0
pour l'heure, les minutes et les secondes, par défaut.En spécifiant
minute="*"
et en laissant de l'heure par défaut de0
, elle demande à ce que la minuterie d'exécuter toutes les minutes après minuit pour une heure (c'est à dire, 00:00, 00:01, 00:02, ..., 00:59) et puis pas avant le lendemain. Au lieu de cela, utiliser:Pour exécuter toutes les quelques secondes (par exemple,
10
secondes), vous pouvez utiliser un cronsyntaxe:Par défaut, le planificateur persiste événements. Réglage
persistent = false
de les empêcher de se développer au fil du temps, si vous le souhaitez.OriginalL'auteur Brett Kail