quartz有状态Job总是只执行一次

haixiang710 2011-08-30 04:19:16
因为系统要求某些job不能并发执行,所以用到quartz的有状态JOB StatefulJob.

但是很奇怪的是,每次该JOB只会执行一次就不再执行,而改成无状态JOB接口就没问题.

不知道什么原因?无论怎么弄,有状态JOB都只执行一次.


public class SimpleJob implements StatefulJob
{
public void execute(JobExecutionContext context) throws JobExecutionException
{
System.out.println("begin execute...");
System.out.println("end execute...");
}
}


public static void main(String [] args)
{
try{
Scheduler scher = StdSchedulerFactory.getDefaultScheduler();
Calendar cal = Calendar.getInstace();
cal.add(Calendar.SECOND,1);
Trigger trigger = new SimpleTrigger("JD","JD",cal.getTime (),null,5,3000L);
JobDetail jobDetail = new JobDetail("JD","JD",SimpleJob.class);
scher.scheduleJob(jobDetaill,trigger);
scher.start();
}catch(Exception ex){
ex.printStackTrade();
}
}

...全文
567 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
haixiang710 2011-08-30
  • 打赏
  • 举报
回复
自己发现执行一次后,trigger_state会变成error.
不知道为什么会这样
zhangqinhappy 2011-08-30
  • 打赏
  • 举报
回复
没明白啥是有状态的JOB,啥是无状态的JOB
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。 Quartz的优势: 1、Quartz是一个任务调度框架(库),它几乎可以集成到任何应用系统中。 2、Quartz是非常灵活的,它让您能够以最“自然”的方式来编写您的项目的代码,实现您所期望的行为 3、Quartz是非常轻量级的,只需要非常少的配置 —— 它实际上可以被跳出框架来使用,如果你的需求是一些相对基本的简单的需求的话。 4、Quartz具有容错机制,并且可以在重启服务的时候持久化(”记忆”)你的定时任务,你的任务也不会丢失。 5、可以通过Quartz,封装成自己的分布式任务调度,实现强大的功能,成为自己的产品。6、有很多的互联网公司也都在使用Quartz。比如美团 Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度。   课程说明:在我们的日常开发中,各种大型系统的开发少不了任务调度,简单的单机任务调度已经满足不了我们的系统需求,复杂的任务会让程序猿头疼, 所以急需一套专门的框架帮助我们去管理定时任务,并且可以在多台机器去执行我们的任务,还要可以管理我们的分布式定时任务。本课程从Quartz框架讲起,由浅到深,从使用到结构分析,再到源码分析,深入解析Quartz、Spring+Quartz,并且会讲解相关原理, 让大家充分的理解这个框架和框架的设计思想。由于互联网的复杂性,为了满足我们特定的需求,需要对Spring+Quartz进行二次开发,整个二次开发过程都会进行讲解。Spring被用在了越来越多的项目中, Quartz也被公认为是比较好用的定时器设置工具,学完这个课程后,不仅仅可以熟练掌握分布式定时任务,还可以深入理解大型框架的设计思想。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧