一个简单的调度任务监控工具,主要是在开发、测试过程中,出现问题时老是去看数据库一来麻烦,二来不够直观。故写了此工具。
-
可切换中/英文
-
可仅查看绑定有触发器的任务
-
可点击“附件”查看JobDataMap
-
触发器目前只支持SimpleTrigger和CronTrigger
-
在applicationContext.xml中修改成你的数据库即可用
-
随便写的,没有用Maven,差包的就抱歉啦。有空我会更新成Maven版本
github: https://github.com/wwuddan123/QuartzWatcher
其实代码很简单,就贴一下主要代码吧。
@Repository
public class JobDao {
@Autowired
private IJobMapper jobMapper;
public List<JobEntity> getJobList() {
List<JobEntity> jobs = jobMapper.getJobList();
for (JobEntity job : jobs) {
// 解析数据库的BLOB
String blob_string = null;
blob_string = JsonUtil.objToJSONString(getObjectFromBlob(job.getJOB_DATA()));
job.setJOB_DATA_STRING(blob_string);
// 获得触发器
List<BaseTriggerEntity> triggers = jobMapper.getBaseTriggersByJob(job);
// 遍历triggers,判断trigger类型
for (BaseTriggerEntity baseTrigger : triggers) {
if ("SIMPLE".equals(baseTrigger.getTRIGGER_TYPE())) {
baseTrigger.setRealTrigger(jobMapper.getSimpleTrigger(baseTrigger));
} else if ("CRON".equals(baseTrigger.getTRIGGER_TYPE())) {
baseTrigger.setRealTrigger(jobMapper.getCronTrigger(baseTrigger));
}
}
job.setTriggers(triggers);
}
return jobs;
}
//Blob转Object
private Object getObjectFromBlob(Object JOB_DATA) {
byte[] job_data = (byte[]) JOB_DATA;
InputStream is;
try {
is = new BufferedInputStream(new ByteArrayInputStream(job_data));
ObjectInputStream in = new ObjectInputStream(is);
try {
return in.readObject();
} finally {
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}