necesitamos ejecutar una función periódicamente en la aplicación web Java. ¿Cómo llamar a la función de alguna clase periódicamente? ¿Hay alguna manera de invocar la función cuando se produce algún evento como una carga alta en el servidor y demás? ¿Qué es crontab? Es ese trabajo periodicamente?Llamar a la función periódicamente en Java
Respuesta
Para llamar a algo periódicamente, ver TimerTask
Si necesita algo más robusto puede utilizar Quartz
En cuanto a crontab
es la herramienta de programación en máquinas Unix.
Si desea ejecutar algo periódicamente, no lo haga en el servidor web. Ese sería un enfoque muy equivocado de la OMI. Es mejor usar cron
en su lugar, si está en un sistema operativo tipo Unix. Los servidores de Windows ofrecen una funcionalidad similar.
La aplicación web Java bien podría ejecutarse en un servidor de aplicaciones JEE. Si la acción periódica que desea realizar para invocar Business Logic implementada en JEE, el uso de las fallas de JEE Timer es totalmente razonable y totalmente compatible. – djna
¿Quizás podría explicar por qué es un mal enfoque colocarlo en el servidor web en lugar de usar algo como cron? – chrisbunney
djna: De acuerdo. Se necesita más información. –
Para los métodos de llamada cuando el servidor tiene una carga alta, tiene al menos dos enfoques posibles. Su Servidor de Aplicaciones podría tener ganchos de administración que le permitirían monitorear su comportamiento y tomar medidas progromáticas. Alternativamente, usted tiene alguna capacidad de monitoreo del sistema (por ejemplo, Tivoli u OpenView) y genera "eventos", no debería ser demasiado difícil entregar eventos tales como (por ejemplo) mensajes JMS y hacer que su servidor los recoja.
Sin embargo, es posible que desee explicar un poco más acerca de lo que quiere lograr. El comportamiento adaptativo de la aplicación puede ser bastante complicado para hacerlo bien.
¿Cómo llamar a la función de alguna clase periódicamente?
hay varias soluciones: una Timer, una aplicación Java como cron cron4j, Quartz, o incluso el EJB Timer API. Elegir uno u otro depende mucho del contexto: el tipo de aplicación, las tecnologías utilizadas, el número de trabajos, etc.
¿Hay alguna manera de invocar la función cuando se produce algún evento como carga alta en el servidor y así sucesivamente
Quizás pueda utilizar JMX en sus trabajos para acceder y monitorear información y desencadenar una acción bajo alguna condición específica. Pero esto es más un modo de extracción, no basado en eventos.
tenemos que 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.
¿Cómo llamar a la función de alguna clase periódicamente?
(2) Crear un Timer en el oyente.
¿Hay alguna manera de que llame a la función cuando algún suceso se produjo como alta carga en servidor y así sucesivamente
(3) y ejecutar algunos hilos para comprobar las condiciones del sistema que son accesible con Java , incluso ejecute programas del sistema (tiempo de actividad, etc.) y analice la salida.
crontab podría ser una manera, pero la ejecución de Java iniciará otra JVM y eso es realmente lo bueno en contenedores servlet: todas se ejecutan en la misma JVM.
No se olvide de java.util.concurrent: tiene muchas clases para la programación, p. ScheduledThreadPoolExecutor, si 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 usa Spring, puede echarle un vistazo al marco de ejecución de tareas de Spring - utilizando @Scheduled y @Async para anotar métodos como tareas e implementar la funcionalidad en un procesador que delega el trabajo real a un Worker, como se describe en:
http://blog.springsource.com/2010/01/05/task-scheduling-simplifications-in-spring-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 Las aplicaciones Java EE y deberían funcionar bien con los servidores web (que los hilos personalizados tienden a no hacer siempre).
- 1. para llamar periódicamente a una función de Javascript
- 2. ¿Hay alguna manera de llamar a una función periódicamente en JavaScript?
- 3. Llamar a la función javascript de la clase Java (Groovy)
- 4. Llamar a la función Java desde JavaScript sobre Android WebView
- 5. Rhino: Cómo llamar a la función JS desde Java
- 6. ¿Cómo llamar a la función Java de GWT desde Javascript?
- 7. Llamar a la función javascript en iframe
- 8. Necesito llamar a la función original desde la función desviada
- 9. La aplicación web Java en tomcat se congela periódicamente
- 10. Llamar a la función JQuery desde GWT
- 11. Llamar a la función php desde JavaScript
- 12. ¿Llamar a Python en Java?
- 13. ¿Llamar a la función PHP desde url?
- 14. ¿Cómo llamar a una función java de python/numpy?
- 15. Cómo llamar a una función variadica de Clojure desde Java
- 16. ¿Función para llamar a una función repetidamente?
- 17. Llamada a la función c desde Java
- 18. Llamar a función recursiva en JavaScript
- 19. jQuery - Llamar a una función en línea
- 20. Cómo llamar a la función con devoluciones de llamada en Java como lo hago en C#?
- 21. Ejecutando una función periódicamente en el protocolo twisted
- 22. ¿Llamar a una función ColdFusion en otro servidor?
- 23. función En tubería llamar a otra función pipeline
- 24. cómo llamar a la función en ejecutable desde mi biblioteca?
- 25. Cómo llamar a la función WinAPI SetDllDirectory() en Delphi?
- 26. Cómo llamar a la función C# en el procedimiento almacenado
- 27. Usar una cadena para llamar a la función en Python
- 28. haskell: error al intentar llamar a putStrLn en la función
- 29. Llamar a la función dinámica con parámetros dinámicos en Javascript
- 30. Cómo llamar a la función en el temporizador ASP.NET MVC
¿Más robusto que TimerTask? Es simplemente más flexible. – BalusC
@BalusC: Robusto sería, con Quartz, puede programar diferentes tipos de objetos, puede usar transacciones JTA, clustering y muchas otras características de Java EE. – OscarRyz
@Brian. Bueno, sí, depende de tu concepto de solidez entonces. Una de las características adicionales que tiene Quartz es la persistencia entre los reinicios del sistema. Ese es un futuro solo, sí, pero es un futuro que agrega robustez a la biblioteca de todos modos, al menos en mi punto de vista. – OscarRyz