采用Spring来实现定时器

主要是用Sping来配置定时触发任务函数,本质也是Java的TimerTask:

首先定义一个计时器配置文件:

### schedulingContext-timer.xml











	
		
			
				
			
		
	

	
	

	
		
			
		
		
			10000
		
		
			60000
		
	

然后再web.xml中配置,读取该文件


	
		contextConfigLocation
		
			/WEB-INF/applicationContext-*.xml,
			/WEB-INF/schedulingContext-timer.xml,
			/WEB-INF/schedule-context.xml,
			classpath*:com/syni/im800/kb/auto/dao/applicationContext-hibernate.xml,
			classpath*:com/syni/im800/kb/auto/service/applicationContext-service.xml,
			classpath*:com/syni/im800/kb/auto/service/applicationContext-mail.xml,
			/WEB-INF/security/security.xml
		
	


因为已经配置了加载文件内容的servlet,所以上面的/WEB-INF/schedulingContext-timer.xml,就可以直接添加进去,如果你的web.xml还没配置,那么可以用

org.springframework.web.context.ContextLoaderServlet,

3.0中把这个删掉了,你也可以用

Spring3.0下可以采用另外两种启动方式:ContextLoaderListener和ContextLoaderPlugIn。建议使用ContextLoaderListener,具体实现就是在web.xml中添加:


 contextConfigLocation
 /WEB-INF/applicationContext.xml
  
  
    
          org.springframework.web.context.ContextLoaderListener
    
  
最后是我的任务类:

/**
 * 清除显示条目相关事件(编辑中,被退回,审核中等等)的缓存
 * @author linshutao
 * 2011年8月11日 14:43:33
 * */

package com.syni.im800.kb.auto.service;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.syni.im800.kb.attendant.webapp.action.AttendantLoginAction;
import com.syni.im800.kb.common.CacheManager;

public class KbsCleanEntryEventCache extends java.util.TimerTask{
	private static final Log log = LogFactory.getLog(KbsCleanEntryEventCache.class);
	public void run() {
		log.debug("#############清除显示条目相关事件的缓存...");
		CacheManager cacheManager = CacheManager.getInstance();
		cacheManager.clearAll();
	}
}







你可能感兴趣的:(Java,Spring)