论坛首页 Java企业应用论坛

Quartz停止正在运行的Job

浏览 9750 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-07  

Job的重复次数如果只有1次,那么就没有办法对其过程进行操作,如:不能暂停 停止等,或者说是没有意义。

job每重复一次是quartz的最小单元。 如果重复次数大于1,到点击停止时为止,后面的次数就不执行了。这样做对于那些只需要执行一次的Job就不太公平了。

只能采用这样方式来停止仅重复一次的Job了:

让你的job实现InterruptableJob类,在实现类里构造interrupt()方法,最简单的就是给此方法加一个标志,

java 代码
  1. public void execute(JobExecutionContext context)   
  2.         throws JobExecutionException {   
  3.   
  4.     List emailList = null;   
  5.     for (Iterator iter = emailList.iterator(); iter.hasNext();) {   
  6.         if (!interrupt) {   
  7.             String email = (String) iter.next();   
  8.                                                                                      log.debug(email +" is Running");  
  9.         }else{  
  10.             String email = (String) iter.next();  
  11.             log.debug(email+" : is Stopped!");   
  12.         }   
  13.     }   
  14. }   
  15.   
  16. /*  
  17.  * (non-Javadoc)  
  18.  *   
  19.  * @see org.quartz.InterruptableJob#interrupt()  
  20.  */  
  21. public void interrupt() throws UnableToInterruptJobException {   
  22.     interrupt = true;   
  23.   
  24. }  

 

这样在ProxyImpl类中调用
     scheduler.interrupt(....);
     scheduler.deleteJob(....);

就可以了,委婉的实现了一下这样的功能。

不知道还有别的方法没,期待中.......

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics