在我们的监听器实现类中,这个类中需实现的方法很多,不需要的可以给出空实现,下面是一些常用的用法:
方法
说明
jobscheduled()
scheduler 在有新的 jobdetail 部署时调用此方法。
jobunscheduled()
scheduler 在有新的 jobdetail卸载时调用此方法
triggerfinalized()
当一个 trigger 来到了再也不会触发的状态时调用这个方法。除非这个 job 已设置成了持久性,否则它就会从 scheduler 中移除。
triggerspaused()
scheduler 调用这个方法是发生在一个 trigger 或 trigger 组被暂停时。假如是 trigger 组的话,triggername 参数将为 null。
triggersresumed()
scheduler 调用这个方法是发生成一个 trigger 或 trigger 组从暂停中恢复时。假如是 trigger 组的话,triggername 参数将为 null。
jobspaused()
当一个或一组 jobdetail 暂停时调用这个方法。
jobsresumed()
当一个或一组 job 从暂停上恢复时调用这个方法。假如是一个 job 组,jobname 参数将为 null。
schedulererror()
scheduler 的正常运行期间产生一个严重错误时调用这个方法。错误的类型会各式的,但是下面列举了一些错误例子:初始化 job 类的问题,试图去找到下一 trigger 的问题,jobstore 中重复的问题,数据存储连接的问题。我们可以使用 schedulerexception 的 geterrorcode() 或者 getunderlyingexception() 方法或获取到特定错误的更详尽的信息。
schedulershutdown()
scheduler 调用这个方法用来通知 schedulerlistener scheduler 将要被关闭。
下面是一个1.+版本实例配置:
下面是我们的测试方法,关于方法中没提到的类的配置可参考我前面系列的文章。
运行方法,我们会看到:
一个新的任务被动态添加时执行————schedulerlistener中的方法被调用 任务被部署时被执行————schedulerlistener中的方法被调用 scheduler启动时被执行————schedulerlistener中的方法被调用 trigger 被触发了,此时job 上的 execute() 方法将要被执行 不否决job,正常执行 myjoblistener触发对class tool.job.picknewsjob的开始执行的监听工作,这里可以完成任务前的一些资源准备工作或日志记录 在13:53:18扒取新闻 在13:53:18根据文章的阅读量和评论量来生成我们的最热文章列表 myjoblistener触发对class tool.job.picknewsjob结束执行的监听工作,这里可以进行资源销毁工作或做一些新闻扒取结果的统计工作 trigger 被触发并且完成了 job 的执行,此方法被调用 在13:53:20扒取新闻 任务完成了它的使命,光荣退休时被执行————schedulerlistener中的方法被调用 在13:53:21根据文章的阅读量和评论量来生成我们的最热文章列表
2.+版本与1.+版本的主要区别是新添加了一些方法,并将jobname,groupname参数对换成了jobkey等。
下面是配置实例:
在2.+版本中,我们通过以下方式注册我们的监听器:
其它测试代码可参考我前面系列文章的,测试结果和之前1.+版本内容基本一致