una tiempo método metodo manejo horas hora fechas fecha especifica ejemplo ejecutar comparar como cierto cada java ejb schedule

tiempo - manejo de fechas en java



La anotación @ Programar se ejecuta cada pocos minutos(o segundos) (1)

Me gustaría intentar usar la anotación @Schedule de la siguiente manera:

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

Basado en el registro, CronService está activo y en buen estado, pero la tarea programada ''runsEveryMinute'' no funciona.

¿Cómo debería funcionar usando una tarea programada EJB?


Según el Javadoc para la anotación @Schedule , los valores predeterminados son:

  • * para todos los campos excepto hora, minuto y segundo; y
  • 0 por hora, minuto y segundo, por defecto.

Al especificar minute="*" y dejar la hora en su valor predeterminado de 0 , solicita que el temporizador se ejecute cada minuto después de la medianoche durante una hora (es decir, 00:00, 00:01, 00:02, ..., 00: 59) y luego no de nuevo hasta el día siguiente. En su lugar, utilice:

@Schedule(hour="*", minute="*")

Para ejecutar cada pocos segundos (por ejemplo, 10 segundos), puede usar una sintaxis similar a cron :

@Schedule(hour = "*", minute = "*", second = "*/10", persistent = false)

Por defecto, el programador persiste los eventos. Si se establece persistent = false , evitará que se acumulen con el tiempo, si así lo desea.