是否可以在Web应用程序中运行cron作业?
在java web应用程序(servlets / spring mvc)中,使用tomcat,是否可以运行cron作业类型服务?
例如,每隔15分钟,清除日志数据库。
你能以独立于容器的方式执行此操作,还是必须使用tomcat或其他容器运行?
请指定方法是保证在特定时间运行还是每15分钟运行一次,但如果应用程序循环使用(如果您使用计时器,那么它是如何在.net中)可以重置等等。
如第23章“调度和线程池”中所述 ,Spring通过Timer
和Quartz Scheduler( http://www.quartz-scheduler.org/ )的集成类提供调度支持。 对于简单的需求,我建议使用JDK Timer
。
请注意,Java调度程序通常用于触发面向 Java 业务的作业 。 对于sysadmin任务(比如你给出的例子),你应该更喜欢cron和传统的管理工具(bash等)。
如果您使用的是Spring,则可以使用内置的Quartz或Timer挂钩。 请参见http://static.springsource.org/spring/docs/2.5.x/reference/scheduling.html
它将是特定于容器的。 您可以使用Quartz的 Java或仅使用Java的调度并发工具( ScheduledExecutorService
)或OS级别的cron作业来完成。
每15分钟似乎极端。 一般来说,我还建议您只截断/删除不再写入的日志文件(并且它们通常在一夜之间滚动)。
工作是面向批处理的。 通过手动触发器或cron风格(如您所愿)。
我仍然没有得到webapp和cron式工作之间的关系? 我能想到的唯一的webapp用例是,你想要一个HTTP端点来触发一个工作(但是这反对你关于’cron-style’的声明)。
通常使用专用框架,它解决了问题区域的“批处理作业”。 我可以推荐石英。
- 使用@Scheduled和@EnableScheduling但给出NoSuchBeanDefinitionException
- Quartz – 在一周和几天的某一天每两周安排一次工作
- 如何检查Quartz cron作业是否正在运行?
- 安排将来要执行的事件(Android方式的Cron Job)
- 在spring动态安排石英计算机工作?
- Quartz Scheduler – RAM和JDBC Job store之间的区别是什么
- 将cron表达式转换为漂亮的描述字符串? 是否有JAVA和Objective-C的库?
- Java程序的Cron工作
- 使用特定的开始,结束日期和时间限制运行Quartz Scheduler作业