刚做了一个定时器的程序,我做的是定时采集,下面就分享给大家。
其实有两种做法 我用的是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>
其实有两种做法 我用的是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>
转载于:https://blog.51cto.com/hzywy/764554