É possível executar um trabalho cron em uma aplicação web?
-
19-09-2019 - |
Pergunta
Em uma aplicação web java (servlets / Spring MVC), usando tomcat, é possível executar um serviço de cron tipo de trabalho?
por exemplo. a cada 15 minutos, limpar o banco de dados de log.
Você pode fazer isso de uma forma que é recipiente independente, ou tem que ser executado usando tomcat ou algum outro recipiente?
Por favor, especifique se o método é garantido para ser executado em um momento específico ou um que passa a cada 15 minutos, mas pode ser redefinido etc. se os recicla aplicação (que é como é em .net se você usar temporizadores)
Solução
Tal como documentado no Capítulo 23. Programação e Passe Pooling , Primavera tem suporte a programação através de aulas de integração para o Timer
eo Scheduler Quartz ( http: //www.quartz- scheduler.org/ ). Para necessidades simples, eu recomendo ir com o Timer
JDK.
Note que programadores Java são normalmente utilizados para acionar Java tarefas de negócios orientados . Para tarefas de sysadmin (como o exemplo que você deu), você deve realmente preferem cron e ferramentas tradicionais de administração (bash, etc).
Outras dicas
Se você estiver usando Spring, você pode usar o built-in de quartzo ou temporizador ganchos. Consulte http://static.springsource.org/spring/docs /2.5.x/reference/scheduling.html
Será específicos do recipiente. Você pode fazê-lo em Java com Quartz ou simplesmente usando agendamento utils simultâneos de Java (< a href = "http://java.sun.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html" rel = "nofollow noreferrer"> ScheduledExecutorService
) ou como uma OS- trabalho de nível de cron.
A cada 15 minutos parece extremo. Geralmente eu também aconselhá-lo apenas para arquivos de log Truncate / DELETE que não estão mais sendo escritos (e eles são geralmente rolou durante a noite).
Os trabalhos são orientados lote. Quer por gatilho manual ou cron-estilo (como você parece querer).
Ainda eu não fizer a sua relação entre webapp e cron-estilo de trabalho? O caso de uso única webapp que eu poderia pensar é que você quer ter um ponto de extremidade HTTP para desencadear um trabalho (mas isso se opõe a sua declaração sobre ser 'cron-style').
Geralmente usar uma estrutura dedicada, que resolve o problema-área 'batch empregos'. Posso recomendar quartzo.