<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
    主站蜘蛛池模板: 黄网站色在线视频免费观看| 人妻免费久久久久久久了| 无码人妻精品中文字幕免费 | 91成人在线免费观看| 国产亚洲3p无码一区二区| 最新久久免费视频| 亚洲大尺度无码无码专区| 永久免费AV无码网站国产| 亚洲成a人片77777老司机| 久久国产色AV免费观看| 亚洲免费视频播放| 在线观看无码的免费网站| 亚洲欧洲免费无码| 婷婷亚洲天堂影院| 天黑黑影院在线观看视频高清免费| 亚洲乱亚洲乱妇无码麻豆| 日韩人妻无码精品久久免费一| 91亚洲精品第一综合不卡播放| 99久久精品日本一区二区免费| 精品国产成人亚洲午夜福利| 国产91在线免费| 中国内地毛片免费高清| 久久综合亚洲色HEZYO社区| 成年女性特黄午夜视频免费看| 国产成人+综合亚洲+天堂| 亚洲中文字幕无码爆乳AV| 7x7x7x免费在线观看| 亚洲日韩国产AV无码无码精品| 亚洲?v无码国产在丝袜线观看| 两个人日本WWW免费版| 亚洲国产精品成人精品小说| 暖暖免费高清日本中文| 中国极品美軳免费观看| 亚洲剧情在线观看| 亚洲第一区精品观看| 香港a毛片免费观看| 亚洲国产一区二区三区在线观看| 久久亚洲精品无码播放| aⅴ免费在线观看| 九九免费精品视频在这里| 久久久无码精品亚洲日韩蜜臀浪潮|