Llamar a una clase o servlet con glassfish v3 cada cierto tiempo

Hola foro, aquí de nuevo con una pregunta, esta vez haré referencia a Glassfish!

Bien el problema está así, donde trabajo utilizamos WepSphere 6.1, con este servidor se puede crear lo que ellos llaman JOB que no es más que una clase en java que manda a ejecutar un Stored Prodecure cada cierto tiempo, osea que es programado para que a una hora en específico se ejecute, y esta clase es llamada por el Servidor de aplicaciones. En este caso el fin del SP es enviar un archivo por FTP pero ahora es necesario hacerlo con Glassfish.

Alguién a hecho algo parecido que pudiera orientarme, o al menos saber si es posible?

He estado buscando en internet y no hay mucha información, o quizá si la haya pero no sé buscarla.

Haciendo recuento, estoy utilizando Glassfish V3, y tengo una Java Aplication creada con netbeans 6.9, podría cambiar el tipo de proyecto a lo que se necesitara para hacer que funcione esto que escribo, en glassfish, cualquier sugerencia es bienvenida :D

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Quartz

Haciendo a un lado la discusión de si un stored procedure es la mejor manera de programar el envío de un archivo por FTP (yo digo que no y más bien deberías hacer el FTP directamente desde el código en Java o correr un bash script o algo que haga el FTP), puedes echarle un ojo a Quartz, que es una librería en Java para programar tareas usando notación similar a la del crontab de *NIX. Es independiente del contenedor de manera que no tienes que reprogramar nada. A mi no me gusta usar los servicios de jobs que ofrecen los contenedores porque tienes que extender una clase o implementar una interfaz que es propia del contenedor, de modo que si quieres pasar a un contenedor distinto, sufres estos problemas que estás teniendo ahora. Quartz te quita esa dependencia con un contenedor específico.

Imagen de Marce

De heccho

Bien Quartz es una muy buena solución que precisamente buscando en internet encontré, al igual que utilizar el Timer Service de los EJB.

Lo curioso es que para variar mi bOss quería que encontrara una solución sin utilizar ninguna de esas 2 herramientas... Cómo?? Quién sabe, lo más probable es que pensó que Glassfish ya trae una configuración para hacer eso que el quiere, o la neta no sé que pensó.

Sobre el Stored Procedure, creeme que para mi también es más fácil hacerlo desde Java, pero pues es la regla de siempre, aquí se hace así y pues no hay más que hacerle. Lo bueno es que yo no hice ese SP, ni la aplicación en Java que lo manda llamar, simplemente tengo que hacer que esa aplicación que hicieron la monte en glassfish y haga su chamba todos los días a cierta hora.

Al leer sobre las posibles soluciones (Quartz y Timer Service EJB) pues mi bOss cedió y EJB fué lo que eligió, ahora tengo que cambiar esa aplicación para usar EJB.

Ya estando aquí, me gustaría que si alguién a usado el Timer Service me pudiera aclarar una cosa: Entiendo lo que hace el Timer Service y con que tipo de Bean tengo que crearlo para las distintas versiones del EJB, lo que aún no me queda claro es en que parte del Glassfish tengo que montar esa aplicación? Queda como una Web Application ó debe estar en el contenedor de EJB, o que pasos deben seguirse una vez creado el Timer Service. He leído sobre hacer el timer y mediante un Servlet llamar a dicho timer, configurar mi web.xml apuntando al servlet que llama al timer, pero no se si exista una forma de no usar ese servlet :p

En fin, muchas gracias @ezamudio, me ayudó mucho lo de Quartz y pues ahora con los EJB :p