quartz使用的一点儿心得

来源:互联网 发布:大华软件测试面试 编辑:程序博客网 时间:2024/05/21 11:08

 最近在开发一套基于任务的协同系统,既然是基于任务的协同系统,就需要计算机自己在一定的时间去做某件事情,

这样就需要用到任务调度.

几个人经过讨论,最终决定使用quartz作为任务调度框架.因为quartz的持久化做的还是挺好的.万一服务器出问题,不用重新执行,也不用自己去写数据库操作.

开始研究quartz的时候,感觉用着不是很舒服,至少和TimerTask比起来,很不舒服.

因为用的是ssh框架,就想着把quartz也做到spring配置里去,

做着做着,发现用spring配置quartz.,出现了一个小问题(忘记了是什么问题了),google了很久,貌似spring配置的话那个功能确实用不了,不得已,只能脱离spring了.

在做quartz的时候,有几个问题:1.好像只能有一个quartz.properties 2.因为只能有一个quartz.properties,所以所有Scheduler也只能有一种保存方式,而当我想对有些Scheduler进行数据库存储,有些Scheduler直接扔内存的时候,就没有办法了.3.quartz自带的QuartzInitializerServlet并没有实现继续上次的执行.还有几个小问题!

于是,我便找到了QuartzInitializerServlet的源文件,对它进行重新编辑.

在web-inf的配置中,使用改后的QuartzInitializerServlet,这样,对于Scheduler的一些问题有了很好的解决.

 

还有就是job和trigger的问题,最开始一直认为job是肯定要通过xml进行配置的,这样的话,就不能动态的去创建job了.有了很大的局限性.然后有看了一遍quartz的文档,于是就试着自己创建job和trigger.

试了一下,果然可以,而且也确实做到了数据库里.

于是把quartz.properties里的fileName去掉.运行,报了一个找不到quartz_job.xml的异常.

然后打开JobInitializationPlugin文件,发现原来这里面的变量filname在实例化的时候,被赋予了一个值.然后对它进行了小小的改动.最终把xml也废掉了.如果不改JobInitializationPlugin的话,就需要在添加一个quartz_job.xml的文件,空着都可以.

 

这样一来job也做到了动态添加.现在感觉这东西还是挺好用的!

如果有人感兴趣.也可以试一试,

原创粉丝点击