Quartz是一个优秀的任务调度框架,完全基于Java实现,功能强大,易于集成,最近在写了一个小项目,算是对之前接触到的技术做一个总结吧,在这个项目中使用Quartz实现对任务的监控,最终实现的效果如图:
添加效果:
目前已经实现了对Quartz任务的动态添加、暂停、恢复、删除等功能,该项目中使用的是CronTrigger,CronTrigger可以配置灵活的时间规则,是和企业级的应用。
JobDetail界面效果图:
对quartz的研究还在继续,项目也做了不少了,暂时真正研究Quartz应该算刚刚开始,还属于新人阶段,还有一些问题需要解决,在此做一个总结,同时也希望志同道合之人指点一二,互相学习,互相进步吧。
项目简介:
项目名称:cube
项目使用的服务器:tomcat
项目框架:Struts+Spring+Hibernate
数据库:Mysql
开发工具:eclipse
前端:easyui
项目模块如图:
上班族一名,只能趁工作之余来写代码,目前只是实现了系统管理和作业监控部分,系统管理整体使用Shiro实现,目前可以控制到Button级别,作业监控使用Quartz实现
Quartz中 quartz-2.1.7\quartz-2.1.7\docs\dbTables 中有我们实现监控所需的表,依照数据库选择
Quartz数据库核心表如下:
Table Name | Description |
---|---|
QRTZ_CALENDARS | 存储Quartz的Calendar信息 |
QRTZ_CRON_TRIGGERS | 存储CronTrigger,包括Cron表达式和时区信息 |
QRTZ_FIRED_TRIGGERS | 存储与已触发的Trigger相关的状态信息,以及相联Job的执行信息 |
QRTZ_PAUSED_TRIGGER_GRPS | 存储已暂停的Trigger组的信息 |
QRTZ_SCHEDULER_STATE | 存储少量的有关Scheduler的状态信息,和别的Scheduler实例 |
QRTZ_LOCKS | 存储程序的悲观锁的信息 |
QRTZ_JOB_DETAILS | 存储每一个已配置的Job的详细信息 |
QRTZ_JOB_LISTENERS | 存储有关已配置的JobListener的信息 |
QRTZ_SIMPLE_TRIGGERS | 存储简单的Trigger,包括重复次数、间隔、以及已触的次数 |
QRTZ_BLOG_TRIGGERS | Trigger作为Blob类型存储 |
QRTZ_TRIGGER_LISTENERS | 存储已配置的TriggerListener的信息 |
QRTZ_TRIGGERS | 存储已配置的Trigger的信息 |
下面是Quartz任务监控的具体配置和实现:
Spring配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springfram