服务器启动ServletContextListener的contextInitialized方法被执行三次,天拉,怎么会这样.
用ServletContextListener和Timer,TimerTask做了个定时发送邮件的功能.
在本地(windows)测试运行正常,但是移到服务器上(linux)就出现问题.
问题是:
容器自动重启以下,ServletContextListener的contextInitialized方法会被执行三次,也就是说时间会被出发三次.然而任务类TimerTask的子类就也同样被执行三次.
怎么会这样了?
请各位朋友们帮兄弟一把.找原因找了两天了.
在本地(windows)测试运行正常,但是移到服务器上(linux)就出现问题.
问题是:
容器自动重启以下,ServletContextListener的contextInitialized方法会被执行三次,也就是说时间会被出发三次.然而任务类TimerTask的子类就也同样被执行三次.
怎么会这样了?
请各位朋友们帮兄弟一把.找原因找了两天了.
public class ContextListner implements ServletContextListener {
private Timer timer=null;
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
System.out.println(("初始化......"));
timer.schedule(new RemindEmailTimerTask(),60*1000,7*24*60*60*1000);//1000*60*60*24 一天 可以设置一个月执行一次
}
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
System.out.println("结束。");
}
}
<listener>
<listener-class>mypage.com.ContextListner</listener-class>
</listener>
...全文
相关推荐
java如何实现项目启动时执行指定方法
主要为大家详细介绍了java项目如何启动时执行指定方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Tomcat启动两次的问题 - ServletContextListener的contextInitialized方法
在这个过程中,Tomcat会扫描Web应用程序中的所有ServletContextListener实现类,并在适当的时机调用它们的contextInitialized方法。在ServletContextListener的contextInitialized方法中,可以通过获取ServletContext的初始化参数来控制逻辑的执行。可以定义一个特殊的初始化参数,例如"initialized",并在contextInitialized方法中检查该参数的值。确保Web应用程序的目录结构正确,没有重复的部署。
ServletContextListener使用详解
ServletContextListener使用详解
ServletContextListener的应用
ServletContextListener的应用案例 项目启动:创建新的空表, 项目关闭:删除表 百度六祎,期...
Spring Boot的listener(监听器)简单使用实例详解
监听器(Listener)的注册方法和 Servlet 一样,有两种方式:代码注册或者注解注册。接下来通过本文给大家介绍Spring Boot的listener(监听器)简单使用,需要的朋友可以参考下


