Pregunta

necesitamos ejecutar una función periódica en aplicaciones Web Java. Cómo llamar a la función de alguna clase periódicamente? ¿Hay alguna manera de que llame a la función cuando algún suceso se produjo como alta carga en el servidor y así sucesivamente. lo que es crontab? Es que el trabajo periódicamente?

¿Fue útil?

Solución

Para llamar a algo periódicamente, consulte TimerTask

Otros consejos

Si necesita algo más robusto que puede utilizar cuarzo

En cuanto a crontab es la herramienta de programación en máquinas Unix.

Para las llamadas a métodos cuando el servidor tiene una alta carga, que tiene al menos dos enfoques posibles. Su servidor de aplicaciones podría tener ganchos de gestión que le permitan monitorear su comportamiento y tomar medidas progrommatic. Alterntaively usted tiene alguna capacidad de supervisión del sistema (Ej. De Tivoli o OpenView) y genera los "eventos", que no debe ser demasiado duro para ofrecer este tipo de eventos como (por ejemplo) los mensajes JMS y tienen su servidor recogerlos.

Sin embargo, es posible que desee explicar un poco más acerca de lo que quiere lograr. beahviour aplicación de adaptación podría ser bastante complicado para hacerlo bien.

Si desea ejecutar periódicamente algo, no lo haga en el servidor web. Eso sería un enfoque muy mal OMI. Es mejor utilizar cron lugar, si usted está en un sistema operativo tipo Unix. servidores de Windows ofrecen una funcionalidad similar.

  

necesitamos ejecutar una función periódica   en aplicaciones Web Java

(1) Así que busque en su descriptor de despliegue (web.xml) definir un oyente para que se inicie en tiempo de inicio.

  

Como función de alguna clase de llamar   periódicamente?

(2) Crear un temporizador en el oyente.

  

¿Hay alguna manera de que llame a la función   cuando algún suceso se produjo como alta carga   en el servidor y así sucesivamente

(3) y ejecutar algunos hilos para comprobar las condiciones del sistema que son accesible con Java, incluso progs sistema de ejecución (tiempo de actividad, etc.) y analizar la salida.

crontab podría ser un camino, pero la ejecución de Java se iniciará otra JVM y que es realmente la cosa caliente en contenedores de servlets:. Todas las carreras en la misma JVM

No se olvide de java.util.concurrent - tiene una gran cantidad de clases de programación, por ejemplo, ScheduledThreadPoolExecutor, si se necesita más que un simple temporizador.

http: / /java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html

También hay un backport de ella para Java 1.4: http://backport-jsr166.sourceforge.net .

Si ya utiliza la primavera, es posible que desee echar un vistazo a la ejecución de tareas marco de primavera - usando @Scheduled y @Async para anotar métodos como tareas e implementar la funcionalidad en un procesador que delega el trabajo real de un trabajador, como se describe en:

http: // Blog .springsource.com / 2010/01/05 / task-programación-simplificaciones dentro de muelle-3-0 /

La ventaja es que se puede definir temporizadores utilizando una sintaxis similar a cron en su contexto primavera y no necesita nada especial para establecer tareas, sino que también está bien integrado en aplicaciones Java EE y debe jugar bien con los servidores web (que se enrosca personalizados tienden a no hacer siempre).

  

Como función de alguna clase de llamar periódicamente?

Hay varias soluciones: una temporizador , una aplicación Java como cron cron4j , cuarzo , o incluso el EJB Timer API. La elección de uno u otro depende del contexto altamente: el tipo de aplicación, las tecnologías utilizadas, el número de puestos de trabajo, etc.

.
  

¿Hay alguna manera de que llame a la función cuando algún suceso se produjo como alta carga en el servidor y así sucesivamente

Se puede utilizar JMX tal vez en sus puestos de trabajo para acceder y controlar las informaciones y desencadenar una acción bajo alguna condición específica. Pero esto es más un modo de extracción, no evento basado.

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