¿Cuál es una forma adecuada de iniciar una tarea programada en la plataforma Java EE 5 (JBoss)?
Frecuentes
Visto 1,395 veces
6
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.
1 Respuestas
4
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 java jboss java-ee-5 or haz tu propia pregunta.
¿Estás usando Spring por casualidad? - Eugene
No, es solo Java EE 5 + Seam (antiguo) - Piotr Gwiazda