Pregunta

Mi empleador me acaba de pedir que ejecute un proceso por lotes cronometrado en una aplicación Java EE WebSphere que están ejecutando.Se supone que debe impartir una determinada clase a las 11:30 p. m. todos los días.

No estoy muy familiarizado con Java EE ni con el servidor WebSphere (o Tomcat, en el entorno de desarrollo), y he estado investigando, pero todo lo que encontré es sobre la clase de temporizador de Java, pero no cómo configurarla o invocarla. .

Parece que también es necesario editar el archivo web.xml.

¡Cualquier ayuda será apreciada!

¿Fue útil?

Solución

Deberías mirar el código abierto. biblioteca de cuarzo de OpenSymphony.Muy fácil de usar y perfecto para este tipo de cosas.

TimerTasks son más adecuados para ejecutar algo en un corto período de tiempo en el futuro.Pero para una ejecución repetida en un período de tiempo tan largo como este, Quartz sobresale.Incluso puede mantener su lista de tareas futuras en un almacenamiento persistente, como un archivo o una base de datos, para que las próximas tareas programadas no se pierdan si se reinicia la aplicación.

Además, hay una abstracción fantástica para Quartz en el marco Spring.

Otros consejos

En WebSphere, puede utilizar el servicio Programador para desencadenar la ejecución de un método en una clase Java.El programador proporciona un calendario para programar la ejecución de trabajos (similar a cron) o usted puede desarrollar el suyo propio.

Aquí hay un enlace a la página que describe el programador en la documentación de WAS 6.1:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp

EJB 3.1 tendrá servicios de temporizador mejorados, así como enlaces de ciclo de vida de aplicaciones que eliminan la necesidad de utilizar servlets para iniciar tareas sin interacción del usuario.

Esto puede responder al título de la pregunta, pero para la pregunta "real" sobre una aplicación heredada (escrita hace más de 6 meses;)) que se ejecuta en websphere, recomendaría utilizar el servlet de inicio y el servicio de temporizador EJB.

Servicio de temporizador en J2EE 1.4 (EJB 2.1)

Para EJB 3.0 (y 3.1 tan pronto como esté disponible), hay algunas anotaciones interesantes;)

No presentaría otro biblioteca a menos que REALMENTE lo necesites.El servicio de temporizador debería ser suficiente para realizar un trabajo arbitrario a diario.

HTH,
Martín

En su web.xml puede configurar un servlet para que se cargue al inicio.
Sintaxis:

u003Cservlet servlet-name='hello'n servlet-class='test.HelloWorld'>
<cargar-al-inicio/>
</servlet>

Haga esto, luego en el método init en el servlet puede configurar un Timer/TimerTask para hacer lo que sea que necesite hacer.Las TimerTasks son como Threads, excepto que puedes programar su ejecución.

Quartz es parte de la distribución estándar JBoss 4.2.x.

Y es una biblioteca realmente buena, que sin mucho trabajo también puedes definir flujos de trabajo simples.

No hay soporte para la programación en WebSphere.

Si tiene Unix, puede usar crontab para programar una solicitud a una página de su aplicación websphere.Supongo que en Windows también existe la posibilidad de programar una solicitud a una página.En mi crontab programo una solicitud a una página web todos los días a las 8:45

45 8 * * * OBTENER http://www.dominio.com/myBatch?securitykey=muysecreto

Ahora todas las mañanas se llama al servlet myBatch y allí puedo hacer lo que sea necesario en ese momento.Para evitar que otros llamen a esta página e inicien el lote, agregué el parámetro clave de seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top