«

»

feb
14

Quartz con Spring

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.

Deja un comentario

Tu email nunca se publicará.

Puedes utilizar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>