在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("定时任务启动,没有到运行时间!");

                               }

}

猜你喜欢

转载自liyonghui160com.iteye.com/blog/2094985