躺在沙灘上的小豬

          快樂的每一天

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

          無非就是兩種方法
          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 閱讀(199) 評論(0)  編輯  收藏

          主站蜘蛛池模板: 玉林市| 洛隆县| 庆元县| 防城港市| 洞口县| 顺平县| 南靖县| 万州区| 九台市| 永康市| 峡江县| 枝江市| 昌宁县| 崇左市| 仪陇县| 加查县| 乐至县| 西峡县| 西华县| 汶上县| 平泉县| 乌拉特中旗| 乐平市| 新乐市| 双峰县| 聊城市| 乌什县| 灵丘县| 灵川县| 明溪县| 麦盖提县| 桑日县| 乐安县| 普兰县| 阿尔山市| 长沙县| 华亭县| 柳江县| 右玉县| 阳高县| 梅河口市|