Quartz con Spring

By | 14 febrero 2011

Voy a crear un ejemplo para ilustrar como utilizar este scheduler, el funcionamiento es bien simple, se crea una tarea programada que va aumentando un contador en “+5″ cada cierto tiempo y este muestra el nuevo valor al refrescarlo vía AJAX.

Lo primero, es crear un simple contador.


public class Contador {

 private int Contador = 0;

 public int getContador() {
 return Contador;
 }

 public void updateContador() {
 this.Contador = this.Contador + 5;
 }

 public void resetContador() {
 this.Contador = 0;
 }

}

Y se lo registramos a Spring.


<bean name="Contador" class="com.programacionj2ee.tareas.Contador" />

Creamos los Controllers  necesarios para manejar las vistas e interactuar con las llamadas AJAX (estos Controllers estan creados mediante Anotaciones).


@Controller
public class ControladorVIstas {

 @RequestMapping("/page")
 public ModelAndView pageHandler() {
 return new ModelAndView("page");
 }
}


@Controller
public class ControladorTareas {

 private Contador contador;

 @RequestMapping("/getContador")
 public void getContadorHandler(HttpServletRequest request, HttpServletResponse response) throws IOException {
 PrintWriter out = response.getWriter();
 out.println(this.contador.getContador());
 }

 @RequestMapping("/resetContador")
 public void resetContadorNombreHandler(HttpServletRequest request, HttpServletResponse response) throws IOException {
 this.contador.resetContador();

 PrintWriter out = response.getWriter();
 out.println(this.contador.getContador());
 }

 @Autowired(required = true)
 public void setContador(Contador contador) {
 this.contador = contador;
 }
}

Cargamos la libreria de quartz y creamos los beans necesarios en el contexto de Spring para que funcione el scheduler.

Este bean especifica el nombre de la tarea, en nuestro ejemplo “Tarea1″, se le especifica el bean (“Contador”), y el metodo (“updateContador”) que debe utilizar.


<bean id="Tarea1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
 <property name="targetObject" ref="Contador" />
 <property name="targetMethod" value="updateContador" />
 <property name="concurrent" value="false" />
 </bean>

En este otro se especifica el tipo de scheduler que se va a utilizar (ver documentación de Quartz para saber los que existen y sus propiedades), y le pasamos el nombre de la tarea creada anteriormente y el intervalo de tiempo que va a ser ejecutada, en nuestro caso siempre con un intervalo de 500 ml.

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
 <property name="jobDetail" ref="Tarea1" />
 <property name="repeatInterval" value="500" />
 </bean>

Por ultimo se registra cada scheduler utilizado en el  “schedulerFactoryBean”.

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 <property name="triggers">
 <list>
<ref bean="simpleTrigger" />
 </list>
 </property>
 </bean>

Ahora ya en nuestra vista creamos las diferentes funciones JavaScript para interactuar con el servidor.

Comparte esta entrada enShare on LinkedIn0Tweet about this on Twitter0Share on Facebook0Share on Google+0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *