quartz-scheduler阶段性总结 1



    在阐述quartz是个什么东西之前,我先说个事。很多时候,我们经常在台历上标注出,某一天是某人的生日,某一天有某个重要的事情,给自己一个提醒。一个台历加上所要做的事情的内容,就是一个scheduler。计算机系统,是帮助人们完成既定事务的。所以,我们希望,把“日程规划+具体事务”,交给系统,系统就能按照我们的要求自动去工作。
    好了,quartz就是这么一个东西。我们只需要定义好时间表,并对应指定的操作,它就能够按照我们的要求在指定时间驱动指定的工作,如此简单。不过中文网站能够找到的东西太有限了,推荐取opensymphony的官方网站,以及该网站的quartz论坛,地址是 ::URL:: http://forums.opensymphony.com/category.jspa?categoryID=8。另外推荐一个java的blog:http://www.blogjava.net/javaora/。惊奇的发现,这个人所研究的和我现在研究的一模一样。

    这个总结着重总结job的内容。
    quartz中,所有需要驱动的工作,都是实现job接口的类。job接口很简单,就只有一个excute()方法,只要把这个类交给quartz,它就会自动去执行这个方法。方法里面定义的就是我们真正需要进行的工作,恩,这都没有什么问题。
    现在的问题在于,很多时候我们需要执行的工作类,是外部类,并没有继承job接口。也就是说,我们希望quartz能够驱动任意的类的任意方法,这该怎么办?这也是我第一阶段的一个小目标。

    一开始我想改变quartz的驱动方式,也就是改变runshell里面的东西,后来发现,这太复杂了,这是quartz最核心的东西,动一发而牵全身。我只是想利用quartz的优势,并不想大规模的改动。
    走了不少弯路之后,想了一个不错的方案。就是,我们只需要定义好所需要的类名、方法名、方法需要的参数,然后利用reflect,来实例化类,然后invoke指定方法。而把这些工作放在一个通用的job模板中的excute方法,这样,我们只需要把指定参数传入这个通用job模板,然后直接驱动此job就能实现我们上面的目标。
    参数传递采用的方案是:
    1、数据源。把我们需要指定的信息以配置文件的方式给出,主要是,工作组、工作名、工作对应的类,指定的方法,所需的参数。
    2、数据传递。写一个metadata用来包装这些信息,这样做是为了将来管理的方便。然后用metadata来初始化jobdetail,重写工作组、工作名,将类信息保存在jobDataMap中,然后在执行excute的时候,再把这些信息取出来。
    3、工作执行。利用reflect技术,执行指定类的指定方式。
    4、数据返回。excute结束之前,把需要返回的数据放在jobDataMap中,scheduler结束之前,把这些数据从jobDataMap中取出来。
    完美的方案,开心一下!

    下一步研究quartz的另外一个大部分 时间表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值