¿Cuál es una forma adecuada de iniciar una tarea programada en la plataforma Java EE 5 (JBoss)?

Necesito ejecutar una tarea programada simple que se iniciará cada 200 ms y hará algo simple.

Is Executors.newSingleThreadScheduledExecutor() ¿Cuál es la forma correcta de obtener el servicio de ejecutor programado en JBoss?

Se dice que no se recomienda generar subprocesos no administrados en la plataforma Java EE. Parece que este hilo será uno no administrado.

Por otro lado, no quiero declarar MBeans, etc. por algo tan simple.

Editar

hay algo como org.jboss.resource.work.JBossWorkManager pero no puedo encontrar un ejemplo de trabajo programado.

preguntado el 24 de agosto de 12 a las 10:08

¿Estás usando Spring por casualidad? -

No, es solo Java EE 5 + Seam (antiguo) -

1 Respuestas

llamar Executors.newSingleThreadScheduledExecutor() no es terrible, pero mejor evitarlo en contenedores EE. En Java EE 5 utilizan el TimeoutService:

@Stateless
public class TimerSessionBean implements TimerSession {
    @Resource
    TimerService timerService;

    public void startTimer() {
        Timer timer = timerService.createTimer(200, "Created new timer");
    }

    @Timeout
    public void timeout(Timer timer) {
        logger.info("Timeout occurred");
    }
}

En Java EE 6 tienes a mano @Schedule anotación.

Respondido 24 ago 12, 10:08

¿No hay forma de hacerlo correctamente sin EJB? (Estoy en JBoss 4.x, largo camino a Java EE 6) - Piotr Gwiazda

@PiotrGwiazda: TimerService se introdujo en EJB 2.1, por lo que debería estar bien en JBoss 4.x. - Tomasz Nurkiewicz

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.