在java web应用程序(servlets / spring mvc)中,使用tomcat,是否可以运行cron作业类型服务?
e.g。每15分钟清除一次日志数据库。
你能以独立于容器的方式执行此操作,还是必须使用tomcat或其他容器运行?
请指定方法是保证在特定时间运行还是每15分钟运行一次,但如果应用程序循环使用(如果您使用计时器,那么它是如何在.net中)可能会重置等等
答案 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'的声明)。
通常使用专用框架来解决问题区域“批处理作业”。我可以推荐石英。