在tomcat启动的时候执行一个方法呢
每个tomcat的应用有一个web.xml文件。在里面可以配置ContextLinstner。这个会随Tomcat的启动而启动。
tomcat重启以后它也重启。
不知道行不行?
具体的方法:
<web-app>
<listener>
<listener-class>my.TreeServerContextListener</listener-class>
</listener>
</web-app>
--------------------------------------------
然后你写一个TreeServerContextListener放在WEB-INF目录的classes目录下。
例子:
public class TreeServerContextListener implements ServletContextListener
{
private TreeServerDataManager dataManagerThread = null;
public TreeServerContextListener()
{
dataManagerThread = TreeServerDataManager.getInstance();
}
public void contextInitialized(ServletContextEvent sce)
{
System.out.println("-----------------Init-------------------");
dataManagerThread.start();
}
public void contextDestroyed(ServletContextEvent sce)
{
dataManagerThread.close();
System.out.println("-----------------Destroy-----------------");
}
}
----------------------------------------------------------------------------------
其中dataManagerThread 我的为一个线程。
你可以换成TimeTask,这样子就可以定时执行任务。
public class TimeListener implements ServletContextListener {
//拦截得到DataCheckTemplateService
private ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
private DataCheckTemplateService dataCheckService = (DataCheckTemplateService) applicationContext.getBean("dataCheckTemplateService");
private Timer timer=null;
//设置执行的时间为小时,每minute执行一次看是否到设置执行的时间
private static final long PERIOD_TIME = 60 * 1000;
private Log log = LogFactory.getLog(getClass());
@Override
public void contextInitialized(ServletContextEvent event) {
if(DataCheckConfigration.getIsRun().equals("true")) {
timer = new Timer(true);
timer.schedule(new DataCheckTask(dataCheckService), 0, PERIOD_TIME);
}
else
{
log.info("此机器不执行定时任务");
}
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
timer.cancel();
}
}
public class DataCheckTask extends TimerTask {
private DataCheckTemplateService dataCheckService;
public DataCheckTask(DataCheckTemplateService dataCheckService) {
this.dataCheckService = dataCheckService;
}
private Log log = LogFactory.getLog(getClass());
public void run() {
log.info("定时任务启动,没有到运行时间!");
}
}
页:
[1]