`
yimeng528
  • 浏览: 183860 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Quartz之JobExecutionException

阅读更多

问题1 如果你的任务执行发生错误了怎么办呀! 
Quartz提供了二种解决方法 
1 立即重新执行任务 
2 立即停止所有相关这个任务的触发器
 
问题2 怎么去执行呢 
Quartz的解决方式是 
在你的程序出错时,用Quartz提供的JobExecutionException类相关方法很好的解决 
1  立即重新执行任务 

Java代码   收藏代码
  1. try {  
  2.            int zero = 0;  
  3.            @SuppressWarnings("unused")  
  4.            int calculation = 4815 / zero;  
  5.        } catch (Exception e) {  
  6.            _log.error("执行任务出错了...");  
  7.            JobExecutionException e2 =   
  8.                new JobExecutionException(e);  
  9.            // this job will refire immediately  
  10.            e2.setRefireImmediately(true);  
  11.            throw e2;  
  12.        }  


请注意其中作者写的注释: 
// this job will refire immediately 
e2.setRefireImmediately(true);
 
2 立即停止所有相关这个任务的触发器 

Java代码   收藏代码
  1. try {  
  2.             int zero = 0;  
  3.             @SuppressWarnings("unused")  
  4.             int calculation = 4815 / zero;  
  5.         } catch (Exception e) {  
  6.             _log.info("--- Error in job!");  
  7.             JobExecutionException e2 =   
  8.                 new JobExecutionException(e);  
  9.             // Quartz will automatically unschedule  
  10.             // all triggers associated with this job  
  11.             // so that it does not run again  
  12.             e2.setUnscheduleAllTriggers(true);  
  13.             throw e2;  
  14.         }  


请注意其中作者写的注释: 
// Quartz will automatically unschedule 
// all triggers associated with this job 
// so that it does not run again 
e2.setUnscheduleAllTriggers(true);
 
具体代码如下: 
BadJob1.java 

Java代码   收藏代码
  1. package org.quartz.examples.example6;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.quartz.DisallowConcurrentExecution;  
  6. import org.quartz.Job;  
  7. import org.quartz.JobExecutionContext;  
  8. import org.quartz.JobExecutionException;  
  9. import org.quartz.JobKey;  
  10. import org.quartz.PersistJobDataAfterExecution;  
  11. import org.slf4j.Logger;  
  12. import org.slf4j.LoggerFactory;  
  13.   
  14. /** 
  15.  * <p> 
  16.  * A job dumb job that will throw a job execution exception 
  17.  * </p> 
  18.  *  
  19.  * @author Bill Kratzer 
  20.  */  
  21. @PersistJobDataAfterExecution  
  22. @DisallowConcurrentExecution  
  23. public class BadJob1 implements Job {  
  24.      
  25.     private static Logger _log = LoggerFactory.getLogger(BadJob1.class);  
  26.   
  27.      
  28.     public BadJob1() {  
  29.     }  
  30.   
  31.      
  32.     public void execute(JobExecutionContext context)  
  33.         throws JobExecutionException {  
  34.         JobKey jobKey = context.getJobDetail().getKey();  
  35.         _log.error("任务key: " + jobKey + " ,执行时间: " + new Date());  
  36.   
  37.         try {  
  38.             int zero = 0;  
  39.             @SuppressWarnings("unused")  
  40.             int calculation = 4815 / zero;  
  41.         } catch (Exception e) {  
  42.             _log.error("执行任务出错了...");  
  43.             JobExecutionException e2 =   
  44.                 new JobExecutionException(e);  
  45.             // this job will refire immediately  
  46.             e2.setRefireImmediately(true);  
  47.             throw e2;  
  48.         }  
  49.   
  50.         _log.error("---" + jobKey + " completed at " + new Date());  
  51.     }  
  52. }  


BadJob2 .java 

Java代码   收藏代码
  1. package org.quartz.examples.example6;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import org.quartz.DisallowConcurrentExecution;  
  6. import org.quartz.Job;  
  7. import org.quartz.JobExecutionContext;  
  8. import org.quartz.JobExecutionException;  
  9. import org.quartz.JobKey;  
  10. import org.quartz.PersistJobDataAfterExecution;  
  11. import org.slf4j.Logger;  
  12. import org.slf4j.LoggerFactory;  
  13.   
  14. /** 
  15.  * <p> 
  16.  * A job dumb job that will throw a job execution exception 
  17.  * </p> 
  18.  *  
  19.  * @author Bill Kratzer 
  20.  */  
  21. @PersistJobDataAfterExecution  
  22. @DisallowConcurrentExecution  
  23. public class BadJob2 implements Job {     
  24.   
  25.     private static Logger _log = LoggerFactory.getLogger(BadJob2.class);   
  26.   
  27.     public BadJob2() {  
  28.     }  
  29.     
  30.     public void execute(JobExecutionContext context)  
  31.         throws JobExecutionException {  
  32.         JobKey jobKey = context.getJobDetail().getKey();  
  33.         _log.info("---" + jobKey + " executing at " + new Date());  
  34.   
  35.         try {  
  36.             int zero = 0;  
  37.             @SuppressWarnings("unused")  
  38.             int calculation = 4815 / zero;  
  39.         } catch (Exception e) {  
  40.             _log.info("--- Error in job!");  
  41.             JobExecutionException e2 =   
  42.                 new JobExecutionException(e);  
  43.             // Quartz will automatically unschedule  
  44.             // all triggers associated with this job  
  45.             // so that it does not run again  
  46.             e2.setUnscheduleAllTriggers(true);  
  47.             throw e2;  
  48.         }  
  49.   
  50.         _log.info("---" + jobKey + " completed at " + new Date());  
  51.     }  
  52. }  


JobExceptionExample.java 

Java代码   收藏代码
  1. package org.quartz.examples.example6;  
  2.   
  3. import static org.quartz.JobBuilder.newJob;  
  4. import static org.quartz.SimpleScheduleBuilder.simpleSchedule;  
  5. import static org.quartz.TriggerBuilder.newTrigger;  
  6. import static org.quartz.DateBuilder.*;  
  7.   
  8. import java.util.Date;  
  9.   
  10. import org.quartz.JobDetail;  
  11. import org.quartz.Scheduler;  
  12. import org.quartz.SchedulerFactory;  
  13. import org.quartz.SchedulerMetaData;  
  14. import org.quartz.SimpleTrigger;  
  15. import org.quartz.impl.StdSchedulerFactory;  
  16. import org.slf4j.Logger;  
  17. import org.slf4j.LoggerFactory;  
  18.   
  19. /** 
  20.  *  
  21.  * This job demonstrates how Quartz can handle JobExecutionExceptions that are 
  22.  * thrown by jobs. *  
  23.  * @author Bill Kratzer 
  24.  */  
  25. public class JobExceptionExample {  
  26.   
  27.     public void run() throws Exception {  
  28.         Logger log = LoggerFactory.getLogger(JobExceptionExample.class);  
  29.   
  30.        
  31.         SchedulerFactory sf = new StdSchedulerFactory();  
  32.         Scheduler sched = sf.getScheduler();  
  33.        
  34.         Date startTime = nextGivenSecondDate(null15);  
  35.   
  36.         
  37.         JobDetail job = newJob(BadJob1.class)  
  38.             .withIdentity("badJob1""group1")  
  39.             .build();  
  40.           
  41.         SimpleTrigger trigger = newTrigger()   
  42.             .withIdentity("trigger1""group1")  
  43.             .startAt(startTime)  
  44.             .withSchedule(simpleSchedule())  
  45.             .build();  
  46.   
  47.         Date ft = sched.scheduleJob(job, trigger);  
  48.         log.error(job.getKey() + " will run at: " + ft + " and repeat: "  
  49.                 + trigger.getRepeatCount() + " times, every "  
  50.                 + trigger.getRepeatInterval() / 1000 + " seconds");  
  51.   
  52.         
  53.         job = newJob(BadJob2.class)  
  54.             .withIdentity("badJob2""group1")  
  55.             .build();  
  56.           
  57.         trigger = newTrigger()   
  58.             .withIdentity("trigger2""group1")  
  59.             .startAt(startTime)  
  60.             .withSchedule(simpleSchedule()  
  61.                     .withIntervalInSeconds(3)  
  62.                     .repeatForever())  
  63.             .build();  
  64.   
  65.         ft = sched.scheduleJob(job, trigger);  
  66.         log.error(job.getKey() + " will run at: " + ft + " and repeat: "  
  67.                 + trigger.getRepeatCount() + " times, every "  
  68.                 + trigger.getRepeatInterval() / 1000 + " seconds");      
  69.           
  70.         sched.start();  
  71.           
  72.         try {  
  73.             // sleep for 60 seconds  
  74.             Thread.sleep(60L * 1000L);  
  75.         } catch (Exception e) {  
  76.               
  77.         }  
  78.   
  79.         sched.shutdown(true);  
  80.   
  81.         SchedulerMetaData metaData = sched.getMetaData();  
  82.         log.error("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");  
  83.     }  
  84.   
  85.     public static void main(String[] args) throws Exception {  
  86.   
  87.         JobExceptionExample example = new JobExceptionExample();  
  88.         example.run();  
  89.     }  
  90. }  
分享到:
评论

相关推荐

    quartz-2.3.2-API文档-中文版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz指南,Quartz 工程

    文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...

    quartz-1.6.0.jar和quartz-all-1.6.0.jar

    该压缩包内包含两个quartz的jar包, 分别是quartz-1.6.0.jar和quartz-all-1.6.0.jar

    quartz-2.3.0-API文档-中文版.zip

    赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...

    quartz-2.2.3版本的quartz初始化sql语句

    quartz-2.2.3版本的quartz初始化sql语句

    quartz简单实例quartz简单实例

    quartz简单实例quartz简单实例quartz简单实例quartz简单实例

    Autofac.Extras.Quartz, Quartz.Net的Autofac集成.zip

    Autofac.Extras.Quartz, Quartz.Net的Autofac集成 Autofac.Extras.Quartz用于 Quartz.Net的Autofac集成包。Autofac.Extras.Quartz 为每个石英作业创建嵌套的litefime作用域。 完成作业执行后释放嵌套作用域。这允许...

    自开发实现Quartz Web管理工具

    网上能找到的Quartz Web管理的资料都是使用的一个国外人写的Quartz WebApp的东东,功能也很全面。但是作为自己的应用其实用不了那么多功能,一般我们只要可以定义一个job,指定一个Cron表达式完成工作即可,附带的...

    quartz quartz-1.8.6 dbTables 建表sql

    quartz quartz-1.8.6 dbTables quartz动态任务调度需要的数据库脚本。

    quartz内部表.sql

    quartz内部表.sql。

    quartz1.5,quartz1.6,quartz1.8

    Quartz1.5,Quartz1.6,Quartz1.8。Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个...

    postgres-quartz.sql

    postgres quatrz初始化sql脚本文件、pg、quartz、qrtz_开头的表 配置文件需求修改 #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore....

    Quartz.NET-2.0

    Quartz.NET框架的核心是调度器。调度器负责管理Quartz.NET应用运行时环境。Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz.NET采用了基于多线程的架构。启动时,框架初始化一套worker线程,这套线程被调度器...

    lucene与quartz例子

    lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子

    Quartz之CronExpression详解

    详细介绍CronExpression表达式设定定时任务的规则

    Quartz原理及实例

    Quartz原理及实例,spring4.x+Quartz.2.2.1结合的开发,静态和动态实例

    关于spring中quartz的配置

    关于spring中quartz的配置

    深入解读Quartz的原理

    深入解读Quartz的原理,定时任务框架是web开发过程中使用很多的框架之一

    Quartz-2.0.2 CSDN下载

    Quartz框架的核心是调度器。调度器负责管理Quartz应用运行时环境。调度器不是靠自己做所有的工作,而是依赖框架内一些非常重要的部件。 Quartz不仅仅是线程和线程管理。为确保可伸缩性,Quartz采用了基于多线程的...

    quartz3种调度形式+传参.zip

    quartz自动调度的3种调度形式+传参 1.单纯的quartz调度 2.spring+quartz调度

Global site tag (gtag.js) - Google Analytics