Programar tareas con Java EE

En proyectos anteriores (ignorando completamente el hecho que Java EE trae un servicio de Timers) usaba la libreria Quartz para programar tareas en segundo plano en el servidor de Glassfish/Payara.

No es que Quartz sea malo, al contrario , es una libreria completisima para este tipo de requerimientos. Pero dado que Java EE ya trae implementado un servicio de Timer dentro del contenedor es mejor usar ese recurso en lugar de agregar uno más.

Para usar el servicio de Timer es necesario anotar nuestro bean como Singleton puesto que esta unica instancia vivirá mientras nuestro proyecto este desplegado y de otra forma no funcionará nuestro Timer.

Dentro del bean simplemente agregamos el metodo con la tarea que necesitamos que realice y agregamos la anotacion @Schedule

@Singleton
public class JobBean {
	@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
	public void scheduledTask(){
		System.out.println("This is a shceduled task!");
	}
}

En este simple ejemplo nuestro bean ejecutara el método “scheduledTask” cada 5 segundos. El ultimo parámetro de la anotación (persistent=false) permite que se lleve un registro de cuando fue la ultima vez que se ejecutó la tarea, a fin que si hubo un problema del servidor o la aplicación y no se ejecutaron las siguientes iteraciones las ejecutará una vez que se restablezca.

Existe también un mecanismo de Timeout que en este caso ejecutara una tarea después de un tiempo determinado.

La documentación completa y el detalle de como definir los tiempos están en la pagina de Oracle.

Anuncios

Cuentanos tu reaccion

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s