1:Servlet
2: Listener
Servlet:
package
![dot.gif](/Images/dot.gif)
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
如果采用Listener,则是:
![dot.gif](/Images/dot.gif)
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 >
< 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 >
< listener-class > sompackage.servlet.LuceneTimerServlet </ listener-class >
</ listener >