躺在沙灘上的小豬

          快樂的每一天

          應需求添加每天定時生成索引

          無非就是兩種方法
          1:Servlet
          2: Listener
           
          Servlet:
          package 

          import org.apache.log4j.Logger;
          import javax.servlet.http.HttpServlet;
          import java.util.Calendar;
          import java.util.Date;
          import java.util.Timer;
          import java.util.TimerTask;

          /**
           * 
          @author martin
           
          */
          public class LuceneTimerServlet extends HttpServlet {
              
          private static Logger logger = Logger.getLogger(LuceneTimerServlet.class);
              
          private static Timer timer;

              
          static {
                  timer 
          = new Timer(true);
                  timer.schedule(
          new TimerTask() {
                      
          public void run() {
                          System.out.println(
          "開始創建索引@" + getTime(Calendar.getInstance()));
                          TaxDocIndexer indexer 
          = new TaxDocIndexer();
                          indexer.setFirstRun(Boolean.TRUE);
                          indexer.fetch();
                          System.out.println(
          "索引創建成功@" + getTime(Calendar.getInstance()));
                      }
                  },
                          getFirstTime(),
                          getPeriod()
                  );
              }


              
          public void destroy() {
                  logger.debug(
          "LuceneTimerServlet.destroy() begin");
                  timer.cancel();
              }

              
          /**
               * 從服務啟動起算,第二天零時開始執行
               *
               * 
          @return Timer第一次執行時間
               
          */
              
          private static Date getFirstTime() {
                  Calendar calendar 
          = Calendar.getInstance();
                  calendar.add(Calendar.DAY_OF_YEAR, 
          1);
                  calendar.set(Calendar.HOUR_OF_DAY, 
          0);
                  calendar.set(Calendar.MINUTE, 
          0);
                  calendar.set(Calendar.SECOND, 
          0);
                  logger.debug(
          "開始執行時間:" + getTime(calendar));
                  
          return calendar.getTime();
              }

              
          /**
               * 
          @param calendar
               * 
          @return formated time string
               
          */
              
          private static String getTime(Calendar calendar) {
                  
          return new StringBuffer()
                          .append(calendar.get(Calendar.YEAR)).append(
          "")
                          .append(calendar.get(Calendar.MONTH) 
          + 1).append("")
                          .append(calendar.get(Calendar.DAY_OF_MONTH)).append(
          "日  ")
                          .append(calendar.get(Calendar.HOUR_OF_DAY)).append(
          "")
                          .append(calendar.get(Calendar.MINUTE)).append(
          "")
                          .append(calendar.get(Calendar.SECOND)).append(
          "")
                          .toString();
              }

              
          /**
               * 計算一天的時間間隔
               * 一天24小時×每小時60分×每分60秒×1000
               *
               * 
          @return 一天時間
               
          */
              
          private static long getPeriod() {
                  
          return 86400000;
              }
          }

          配置web.xml
              <servlet>
                  
          <servlet-name>luceneTimerServlet</servlet-name>
                  
          <servlet-class>sompackage.servlet.LuceneTimerServlet</servlet-class>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>


          如果采用Listener,則是:
              <listener>    
                  <listener-class>sompackage.servlet.LuceneTimerServlet</listener-class>
              
          </listener>

          posted on 2006-03-08 12:42 martin xus 閱讀(197) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 改则县| 应城市| 华容县| 二连浩特市| 城市| 杭锦后旗| 句容市| 成武县| 永城市| 枣庄市| 龙井市| 吴江市| 察哈| 镇雄县| 东山县| 民勤县| 南城县| 蒲城县| 监利县| 日喀则市| 义乌市| 德保县| 宾川县| 清河县| 西乌珠穆沁旗| 木兰县| 淳安县| 华亭县| 农安县| 莱阳市| 德安县| 驻马店市| 永春县| 六安市| 兰西县| 牡丹江市| 卓资县| 和政县| 崇阳县| 临安市| 岗巴县|