<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的漫漫程序之旅

    專注于JavaWeb開發
    隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
    數據加載中……

    Quartz實現自己的JobListener和TriggerListener

    我們是能對Job和Trigger創建自己的監聽器的.

    MyTriggerListener:
    package com;

    import org.quartz.JobExecutionContext;
    import org.quartz.Trigger;
    import org.quartz.TriggerListener;
    /**
     * 
     * 
    @author zdw
     *
     
    */

    public class MyTriggerListener implements TriggerListener
    {

        
    public String getName()
        
    {
            
    return "myTriggerListener";
        }


        
    public void triggerComplete(Trigger trigger, JobExecutionContext jeContext,
                
    int arg2)
        
    {
            System.out.println(
    "triggerName:" + trigger.getName());
            System.out.println(
    "complete");
        }


        
    public void triggerFired(Trigger arg0, JobExecutionContext arg1)
        
    {
            System.out.println(
    "fire");
            System.out.println(
    "trigger" + arg0.getGroup());
        }


        
    public void triggerMisfired(Trigger arg0)
        
    {
            System.out.println(
    "triggerMisfired");
        }


        
    public boolean vetoJobExecution(Trigger arg0, JobExecutionContext arg1)
        
    {
            System.out.println(
    "vetoJobException");
            
    return false;
        }


    }

    MyJobDetailListener:
    package com;

    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.quartz.JobListener;
    /**
     * 
     * 
    @author zdw
     *
     
    */

    public class MyJobDetailListener implements JobListener
    {
        
    /**
         * 注意name是必須的
         
    */

        
    public String getName()
        
    {
            
    return "myJobListener";
        }


        
    public void jobExecutionVetoed(JobExecutionContext arg0)
        
    {
            System.out.println(
    "jobExceution");
        }


        
    public void jobToBeExecuted(JobExecutionContext arg0)
        
    {
            System.out.println(
    "jobTobeExecuted");
        }


        
    public void jobWasExecuted(JobExecutionContext arg0,
                JobExecutionException arg1)
        
    {
            System.out.println(
    "job was executed");
        }


    }

    上面兩個類只要注意name是必須的就可以了.
    package com;

    import java.util.Date;

    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.TriggerUtils;
    import org.quartz.impl.StdSchedulerFactory;

    /**
     * 
     * 
    @author zdw
     * 
     
    */

    public class QuartzTest
    {

        
    public static void main(String args[])
        
    {
            
    // 得到可用客戶端處理調度程序的工廠
            SchedulerFactory schedFact = new StdSchedulerFactory();
            
    // 高度程序接口,控制JobDeail和Trigger
            try
            
    {
                Scheduler sched 
    = schedFact.getScheduler();
                
    // 表示給定工作類的詳細信息
                JobDetail jobDetail = new JobDetail("myJb"null, StringTest.class);
                
    // 也可以分別設置
                jobDetail.setName("angel");
                jobDetail.setGroup(
    "007");
                jobDetail.setJobClass(StringTest.
    class);
                jobDetail.getJobDataMap().put(
    "jobSays""I will be success!!");
                
    // 觸發器
                Trigger trigger = TriggerUtils.makeSecondlyTrigger();
                
    // 設置開始時間,這時設置的是每一秒執行一次
                trigger.setStartTime(TriggerUtils
                        .getEvenSecondDateBefore(
    new Date()));
                
    // 必須設置,不能為空
                trigger.setName("firstTrigger");
                
    // 使用自己的監聽器
                MyTriggerListener triggerListener = new MyTriggerListener();
                sched.addTriggerListener(triggerListener);
                sched.addJobListener(
    new MyJobDetailListener());
                
    // 匹配(必須操作)
                trigger.addTriggerListener("myTriggerListener");
                jobDetail.addJobListener(
    "myJobListener");
                
    // 為調度程序設置具體工作和觸發器
                sched.scheduleJob(jobDetail, trigger);
                
    // fire
                sched.start();
            }
     catch (SchedulerException e)
            
    {
                e.printStackTrace();
            }

        }

    }


    注意:
    // 匹配(必須操作)
                trigger.addTriggerListener("myTriggerListener");
                jobDetail.addJobListener(
    "myJobListener");
    這兩步是必須的,官方文檔沒有提及,而且必須在scheduler添加完相應的監聽器之后.
    這時我們看到輸出:
    vetoJobException
    jobTobeExecuted
    execute at Fri May 
    09 09:24:11 CST 2008
    instName:angel  instGroup:
    007 jobSays:I will be success!!
    job was executed
    triggerName:firstTrigger
    complete
    fire
    triggerDEFAULT
    vetoJobException
    jobTobeExecuted
    execute at Fri May 
    09 09:24:12 CST 2008
    instName:angel  instGroup:
    007 jobSays:I will be success!!
    job was executed
    triggerName:firstTrigger
    complete


    我們自己的監聽器已經被執行了.

    posted on 2008-05-09 09:25 々上善若水々 閱讀(10459) 評論(4)  編輯  收藏 所屬分類: opensource

    評論

    # re: Quartz實現自己的JobListener和TriggerListener  回復  更多評論   

    Unable to notify JobListener(s) of Job to be executed:

    這個錯誤怎么解決
    2008-12-23 13:55 | juzhiQQ80224632

    # re: Quartz實現自己的JobListener和TriggerListener  回復  更多評論   

    juzhi
    QQ80224632


    幫我解決一下
    2008-12-23 13:57 | juzhiQQ80224632

    # re: Quartz實現自己的JobListener和TriggerListener  回復  更多評論   

    ..如果我重啟web容器 監聽是不是都清空了哦?
    2008-12-23 15:02 | juzhiQQ80224632

    # re: Quartz實現自己的JobListener和TriggerListener  回復  更多評論   

    經過我的測試在JobDeatil中加入JobListener,服務重啟的時候也必須再Scheduler 中重新注冊你使用的監聽器,我就是直接修改了org.quartz.ee.servlet.QuartzInitializerServlet
    2010-01-07 15:03 | ww
    主站蜘蛛池模板: 一个人免费日韩不卡视频| yy一级毛片免费视频| 99久久国产免费中文无字幕| 亚洲乱码国产一区三区| 黄色免费在线网站| 婷婷亚洲综合五月天小说| 1000部啪啪未满十八勿入免费| 亚洲精品国产免费| 成全影视免费观看大全二| 亚洲高清一区二区三区电影| 国产麻豆免费观看91| 久久久精品免费国产四虎| 亚洲精品~无码抽插| 69影院毛片免费观看视频在线| 亚洲国产电影在线观看| 丁香花在线观看免费观看| 国产精品无码亚洲精品2021| 免费观看亚洲人成网站| 亚洲精品国产成人片| 午夜免费福利视频| 亚洲最大中文字幕无码网站| 毛片在线播放免费观看| 亚洲熟妇无码久久精品| 嫩草影院在线免费观看| 疯狂做受xxxx高潮视频免费| 国产精品亚洲成在人线| 黄色免费网站网址| 免费人成在线观看播放a| 在线精品免费视频| 一级毛片成人免费看a| 亚洲男人第一av网站| 丁香花在线观看免费观看| 国产大片免费天天看| 亚洲日韩在线观看免费视频| 久久99精品视免费看| 亚洲国产精华液2020| 婷婷亚洲久悠悠色悠在线播放| 欧洲精品免费一区二区三区| 男人j进入女人j内部免费网站| 亚洲色偷精品一区二区三区| 亚洲精品无码久久一线|