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

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

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

    隨筆-86  評論-33  文章-0  trackbacks-0
    Java定時器(java.util.Timer)有定時觸發計劃任務的功能,通過配置定時器的間隔時間,在某一間隔時間段之后會自動有規律的調用預先所安排的計劃任務(java.util.TimerTask)。另外,由于我們希望當Web工程啟動時,定時器能自動開始計時,在整個Web工程的生命期里,定時器能在每晚深夜觸發一次報表計算引擎。因此定時器的存放位置也值得考查,不能簡單的存在于單個Servlet或JavaBean中,必須能讓定時器宿主的存活期為整個Web工程生命期,在工程啟動時能自動加載運行。結合這兩點,跟Servlet上下文有關的偵聽器就最合適不過了,通過在工程的配置文件中加以合理配置,會在工程啟動時自動運行,并在整個工程生命期中處于監聽狀態。

    ......下面就Servlet偵聽器結合Java定時器來講述整個實現過程。要運用Servlet偵聽器需要實現javax.servlet.ServletContextListener接口,同時實現它的contextInitialized(ServletContextEvent    event)和contextDestroyed(ServletContextEvent    event)兩個接口函數。考慮定時器有個建立和銷毀的過程,看了前面兩個接口函數,就不容置疑的把建立的過程置入contextInitialized,把銷毀的過程置入contextDestroyed了。
    package com.derek.servlet;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import com.derek.pub.TimerManager;
    /**
     * 啟動定時器的監聽器
     * 
    @author derek
     * 
    @version 1.0
     
    */
    public class TimerListener extends HttpServlet implements
            ServletContextListener {
        
    private TimerManager tm = null;
        
    //Notification that the web module is ready to process requests
        public void contextInitialized(ServletContextEvent sce) {
          
    int day,hour,min,sec;      
          day 
    = 26; hour = 16; min = 42; sec = 0;     
          tm 
    = new TimerManager(day,hour,min,sec);
        }

        
    //Notification that the servlet context is about to be shut down
        public void contextDestroyed(ServletContextEvent sce) {
           tm.destoryTimer();
        }
    }
    package com.derek.pub;

    import java.util.Timer;
    import java.util.Date;
    import java.util.Calendar;

    /**
     * 定時器
     * 
    @author derek
     * 
    @version 1.0
     
    */
    public class TimerManager {
        Timer t 
    = null;
        
    public TimerManager(int day,int hour,int min,int sec) {
            time(day,hour,min,sec);
        }
     
        
    public void time(int day,int hour,int min,int sec){    
        Calendar c 
    = Calendar.getInstance();
        c.set(Calendar.DAY_OF_MONTH,day);
        c.set(Calendar.HOUR_OF_DAY,hour);
        c.set(Calendar.MINUTE,min);
        c.set(Calendar.SECOND,sec);
        Date date 
    = c.getTime();
        System.out.println(c.getTime());
        t
    = new Timer();
        MyTask mt 
    = new MyTask();
        t.schedule(mt,date);
        }
        
    public void destoryTimer(){
        t.cancel();
        }
    }
    package com.derek.pub;
    import java.util.TimerTask;
    /**
     * 計劃任務代碼
     * 
    @author derek
     * 
    @version 1.0
     
    */
    public class MyTask extends TimerTask{
        
    public MyTask() {
        }
        
    /**
         * 任務塊
         
    */
        
    public void run() {
            System.out.println(
    "定時器RUN");
        }
    }
    posted on 2006-04-26 16:52 Derek.Guo 閱讀(2922) 評論(0)  編輯  收藏 所屬分類: Java
    MSN:envoydada@hotmail.com QQ:34935442
    主站蜘蛛池模板: 久久久久av无码免费网| a级毛片视频免费观看| 国产一级淫片视频免费看| 国产亚洲精品线观看动态图| 久久精品国产免费一区| 亚洲中文字幕无码av在线| 免费人妻av无码专区| 久久国产乱子伦精品免费一 | 亚洲精品NV久久久久久久久久| AAAAA级少妇高潮大片免费看| 久久亚洲熟女cc98cm| 免费无遮挡无码视频网站| 97在线视频免费公开视频| 亚洲jjzzjjzz在线观看| 国产L精品国产亚洲区久久| 思思re热免费精品视频66| 一级毛片在线免费播放| 亚洲欧洲春色校园另类小说| 亚洲av日韩片在线观看| 3344免费播放观看视频| xxxxx做受大片视频免费| 亚洲性线免费观看视频成熟| 亚洲精品色午夜无码专区日韩| 毛片免费观看网站| 伊人久久免费视频| 国产黄色片免费看| 亚洲综合无码无在线观看| 成年免费大片黄在线观看岛国| 中文字幕乱码系列免费| 亚洲大码熟女在线观看| 久久久久亚洲AV成人片| 综合亚洲伊人午夜网 | 亚洲人成色777777精品| 亚洲福利视频一区| 亚洲av中文无码乱人伦在线观看 | 最近在线2018视频免费观看| 亚洲乱码在线卡一卡二卡新区 | 99久久国产亚洲综合精品| 一本久久a久久精品亚洲| 免费看小12萝裸体视频国产| 最近免费中文字幕大全视频 |