Planificar tareas en JBoss

En este tutorial os enseñaremos a planificar tareas periódicas con JBoss

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

Comentarios

Un comentario

  1. Hola, gracias por la info, muy buena expicación. En lo único que me confundo es en la parte de generar el .sar, dentro de la carpeta deploy del jboss lo que veo son folders .sar que dentro tienen un folder META-INF y otro folder que es como una copia de la ruta donde está la clase, pero eso de un fichero comprimido no lo entiendo.

    Agradeceria una explicación.

Deja una respuesta

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

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.  Ingeniero Técnico en Telecomunicaciones. Puedes encontrarme en Autentia by Izertis

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

22/06/2026

Juan Antonio Jiménez Torres

Vamos a instrumentalizar un SDD para un microservicio bancario. En este artículo sobre SDD - Spec Driven Development, instrumentalizado sobre OpenSpec vamos a construir una PoC de algo más serio que una tabla periódica. Un microservicio bancario muy simplificado que gestione cuentas y permita hacer transferencias

16/06/2026

Juan Antonio Jiménez Torres

Este es el segundo artículo sobre SDD, Spec Driven Development, instrumentalizado sobre OpenSpec. Pero esta vez nos acercaremos usando softwere gratuito. Por un lado OpenCode en lugar de ClaudeCode y usando el modelo gratuito Gemma4 de Google en lugar de otros de pago.

08/06/2026

Juan Antonio Jiménez Torres

Aprenderemos sobre SDD – Spec Driven Development instrumentalizado sobre OpenSpec. Haremos un primer acercamiento usando ClaudeCode con Sonnet, para luego, en un artículo posterior pasarnos a la versión gratuita de OpenCode con Gemma4