Estás en:

Consultor tecnológico de desarrollo de proyectos informáticos.

 Ingeniero Técnico en Telecomunicaciones

Puedes encontrarme en Autentia: Ofrecemos servicios de soporte a desarrollo, factoría y formación

Somos expertos en Java/J2EE

Fecha de publicación del tutorial: 2006-06-07
Tutorial visitado 8.983 veces8.983
Descargar el tutorial en PDF


Regístrate para votar
Share |

PLANIFICAR TAREAS EN JBOSS.

Muchas veces nos surge la necesidad de planificar tareas en nuestras aplicaciones y que se ejecuten de manera recursiva. Tenemos gran cantidad de posibilidades para realizar algo similar:

  • Utilizar alguna utilidad de sistema operativo que invoque algún script: (cron de unix, Tareas planificadas en windows)

  • Java nos provee también dos clases para realizar tareas de este tipo: Timer y TimerTask.

  • Etc...



Os voy a enseñar otra forma de planificar tareas en Jboss. Para ello haremos uso de la clase org.jboss.varia.scheduler.Scheduler.



Para el ejercicio estoy usando: Jboss 4.0.4





Lo primero que haremos es crearnos el fichero jboss-service.xml, porque vamos a desplegar la tarea como un servicio.



Planificaremos una tarea dentro de él:



<server>

<mbean code="org.jboss.varia.scheduler.Scheduler" name=":service=Scheduler">

<attribute name="StartAtStartup">true</attribute>

<attribute name="SchedulableClass">com.autentia.TareaPlanificada</attribute>

<attribute name="InitialStartDate">NOW</attribute>

<attribute name="SchedulePeriod">60000</attribute>

<attribute name="InitialRepetitions">5</attribute>

</mbean>

</server>



En el fichero hemos configurado una tarea con los siguientes parámetros:

  • StartAtStartup: true indica que queremos que sea inicializada por el servidor. False indica que debe ser forzado su inicio.

  • SchedulableClass: clase que realiza la funcionalidad periódicamente. Esta clase debe implementar el interfaz org.jboss.varia.scheduler.Schedulable que define el método:

    • public void perform(Date fecha, long arg1)

Éste será el método que se invocará recursivamente.

  • InitialStartDate: Fecha planificada para la primera invocación. NOW indica +1 segundo desde la fecha actual.

  • ScheduledPeriod: frecuencia con la que Scheduler invocará a la clase Schedulable en milisegundos. En nuestro caso, cada minuto.

  • InitialRepetitions. Número de repeticiones de la tarea. -1 indica que la tarea se ejecutará hasta que el servidor se pare.


Una vez configurado el fichero, simplemente, crearemos la clase Schedulable:


public class TareaPlanificada implements Schedulable {


public void perform(Date fecha, long veces) {

System.out.println("Me invocan a las:" + fecha);

System.out.println("Todavía me deben ejecutar :" + veces + " veces" );

}

}



Ahora simplemente, generamos el fichero planificador.sar que será un fichero comprimido con la siguiente estructura:

  • META-INF/jboss-service.xml

  • com/autentia/TareaPlanificada.class



Una vez generado el ficchero, lo desplegamos en la ruta de despliegue de nuestro Jboss (por defecto <RUTA_INSTALACION_JBOSS>/server/default/deploy)





El resultado, será el siguiente:



17:51:44,750 INFO [STDOUT] Me invocan a las:Tue Jun 06 17:51:44 CEST 2006

17:51:44,750 INFO [STDOUT] Todavía me deben ejecutar :4 veces

17:52:44,718 INFO [STDOUT] Me invocan a las:Tue Jun 06 17:52:44 CEST 2006

17:52:44,718 INFO [STDOUT] Todavía me deben ejecutar :3 veces

17:53:44,718 INFO [STDOUT] Me invocan a las:Tue Jun 06 17:53:44 CEST 2006

17:53:44,718 INFO [STDOUT] Todavía me deben ejecutar :2 veces

17:54:44,718 INFO [STDOUT] Me invocan a las:Tue Jun 06 17:54:44 CEST 2006

17:54:44,718 INFO [STDOUT] Todavía me deben ejecutar :1 veces

17:55:44,718 INFO [STDOUT] Me invocan a las:Tue Jun 06 17:55:44 CEST 2006

17:55:44,718 INFO [STDOUT] Todavía me deben ejecutar :0 veces



¿ Fácil verdad ?...pues ya está hecho, ahora a darle chicha al método perform de nuestra clase Schedulable. Si necesitas ayuda, ya sabes.... http://www.autentia.com





Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Comentarios