是否可以在Web应用程序中运行cron作业?

时间:2010-01-11 00:58:27

标签: java tomcat cron scheduled-tasks scheduler

在java web应用程序(servlets / spring mvc)中,使用tomcat,是否可以运行cron作业类型服务?

e.g。每15分钟清除一次日志数据库。

你能以独立于容器的方式执行此操作,还是必须使用tomcat或其他容器运行?

请指定方法是保证在特定时间运行还是每15分钟运行一次,但如果应用程序循环使用(如果您使用计时器,那么它是如何在.net中)可能会重置等等

4 个答案:

答案 0 :(得分:11)

Chapter 23. Scheduling and Thread Pooling中所述,Spring通过Timer和Quartz Scheduler(http://www.quartz-scheduler.org/)的集成类来提供调度支持。对于简单的需求,我建议使用JDK Timer

请注意,Java调度程序通常用于触发Java 面向业务的作业。对于sysadmin任务(比如你给出的例子),你应该更喜欢cron和传统的管理工具(bash等)。

答案 1 :(得分:2)

如果您使用的是Spring,则可以使用内置的Quartz或Timer挂钩。见http://static.springsource.org/spring/docs/2.5.x/reference/scheduling.html

答案 2 :(得分:0)

它将是特定于容器的。您可以使用Quartz在Java中执行此操作,或者仅使用Java的调度并发工具(ScheduledExecutorService)或作为操作系统级别的cron作业。

每15分钟似乎极端。一般来说,我还建议您只截断/删除不再写入的日志文件(并且它们通常会在一夜之间滚动)。

答案 3 :(得分:0)

工作是面向批处理的。通过手动触发或cron风格(如您所愿)。

我仍然没有得到你在webapp和cron风格的工作之间的关系?我能想到的唯一一个webapp用例是,你希望有一个HTTP端点来触发一个工作(但是这反对你关于'cron-style'的声明)。

通常使用专用框架来解决问题区域“批处理作业”。我可以推荐石英。