1. 程式人生 > >使用ServletContextListener完成定時任務(固定頻率執行)

使用ServletContextListener完成定時任務(固定頻率執行)

ServletContextListener在伺服器啟動的時候就會執行,這時候可以在裡面寫一些定時執行任務

這裡進行模擬銀行計息

首先建立一個類實現ServletContextListener介面,在contextInitialized()方法中寫入想要執行的程式碼

第二進行web.xml配置監聽器


  <listener>
    <listener-class>com.raylu.listener.MyContextListener</listener-class>
  </listener>

這裡模擬定時執行計息的:

package com.raylu.listener;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * 使用ServletContextListener完成定時任務
 * 這裡模擬銀行定時計息任務
 * @author RayLu
 *
 */
public class MyContextListener implements ServletContextListener{

	@Override
	public void contextInitialized(ServletContextEvent sce) {
		//設定一個計時器模擬銀行計息工作
		Timer timer = new Timer();
		String date="2017-06-05 21:39:00";
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date1 = null;
		try {
			date1 = format.parse(date);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		timer.scheduleAtFixedRate(new TimerTask(){

			@Override
			public void run() {
			//	System.out.println("開始算利息!!"+format.format(new Date()).toString());
				
			}
			
		}, date1, 3000);
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		
	}

}