刚做了一个定时器的程序,我做的是定时采集,下面就分享给大家。
其实有两种做法 我用的是web.xml配置文件,还有一种是用spring配置,这里就不详解spring了
  首先写定时器的监听器  粗体的就是要加载的类
package com.chinaGPS.song.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;
import com.chinaGPS.song.util.Mp3TimerTask;
public class Mp3TimerTaskListener extends HttpServlet implements
        ServletContextListener {

    private static final long serialVersionUID = 1L;
    private java.util.Timer timer = null;

    public Mp3TimerTaskListener() {
    }
    public void contextInitialized(ServletContextEvent event) {
        timer = new java.util.Timer(true);
        event.getServletContext().log("定时器已启动...");
        timer.schedule(new Mp3TimerTask(event.getServletContext()), 0, 60 * 1000L);
        event.getServletContext().log("已经添加任务调度表...");
    }
    public void contextDestroyed(ServletContextEvent event) {
        timer.cancel();
        event.getServletContext().log("定时器销毁");
    }

}
然后就加载类
package com.chinaGPS.song.util;

import java.util.Calendar;
import java.util.List;
import java.util.TimerTask;

import javax.servlet.ServletContext;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.chinaGPS.song.pojo.Song_musiclist;
import com.chinaGPS.song.service.MusicListService;
import com.chinaGPS.song.service.SingerService;
import com.chinaGPS.song.service.SongService;
import com.chinaGPS.song.util.constant.SystemParams;


public class Mp3TimerTask extends TimerTask {
    private List<Song_musiclist> musicList;
    private String TIME = SystemParams.C_SCHEDULE_HOUR;
    private static boolean isRunning = false;
    private ServletContext context = null;
    private SingerService singerService;
    private SongService songService;
   
    public SongService getSongService() {
        return songService;
    }
    public void setSongService(SongService songService) {
        this.songService = songService;
    }
    public SingerService getSingerService() {
        return singerService;
    }
    public void setSingerService(SingerService singerService) {
        this.singerService = singerService;
    }
    public String getMusicListId() {
        return musicListId;
    }
    public void setMusicListId(String musicListId) {
        this.musicListId = musicListId;
    }
    private String musicListId;
   
    String basePath  =  SystemParams.FILESERVERPATHVALUE+ "/" ;
    private MusicListService musicListService;
   

   
    public MusicListService getMusicListService() {
        return musicListService;
    }
    public void setMusicListService(MusicListService musicListService) {
        this.musicListService = musicListService;
    }
    public List<Song_musiclist> getMusicList() {
        return musicList;
    }
    public void setMusicList(List<Song_musiclist> musicList) {
        this.musicList = musicList;
    }
    public Mp3TimerTask(ServletContext context) {
        this.context = context;
   //得到spring的上下文 这个很重要
        WebApplicationContext context1 = WebApplicationContextUtils.getRequiredWebApplicationContext(context);
        musicListService = (MusicListService) context1.getBean("musicListService");
        songService = (SongService) context1.getBean("songService");
        singerService = (SingerService) context1.getBean("singerService");
    }
   
    @Override
    public void run() {
        Calendar cal = Calendar.getInstance();
        if (!isRunning) {
            String s = cal.get(Calendar.HOUR_OF_DAY)+":"+
                         (cal.get(Calendar.MINUTE)<10?"0"+
                                 cal.get(Calendar.MINUTE):cal.get(Calendar.MINUTE));
            System.out.println(s+"" +"abc");
            System.out.println(TIME);
            if (TIME.equals(s)) {
                isRunning = true;
                context.log("开始执行指定任务");
                //自动采集歌曲
                 AutoCollectionSongs();
                 System.out.println("已经配置成功!!!");
                isRunning = false;
                context.log("指定任务执行结束");
            }
        } else {
            context.log("上一次任务执行还未结束");
        }
       
    }
    public void AutoCollectionSongs() {
//        MusicListDao mudao= new MusicListDao();
//        musicList=mudao.getAllMusicList();
        //MusicListService musicListService= new MusicListServiceImpl();
        musicList = musicListService.getAllMusicList();
        if(musicList==null) {
            System.out.println("查询音乐榜单列表为空");
        }
        System.out.println(musicList);
        for(int i=0; i<musicList.size();i++) {
            String url = musicList.get(i).getMusiclistUrl();
            if(url != null && !"".equals(url)){
                 CollectThread collectThread =     new  CollectThread(SystemParams.PATH+SystemParams.FILE_UPLOAD_DIR);
                 collectThread.setUrl(url);
                 collectThread.setBasePath(basePath);
                 collectThread.setMusicListId(musicListId);
                 collectThread.setSingerService(singerService);
                 collectThread.setSongService(songService);
                 Thread thread = new Thread(collectThread);
                 thread.start();
            }
        }
   
    }
    }
最后就是web.xml配置文件了 添加监听器

 <listener>
      <listener-class>com.chinaGPS.song.listener.Mp3TimerTaskListener</listener-class>
  </listener>