方式一:定时器方式(定时任务)
web.xml中加入监听器
<listener> <listener-class>com.qyj.autoback.AutoBackListener</listener-class> </listener>
AutoBackListener.java
package com.qyj.autoback;
import java.util.Timer;
import javax.servlet.ServletContextEvent;//这个是自启动要用到的类,服务器后台事件 import javax.servlet.ServletContextListener;//这个是自启动要用到的类,服务器后台监听
//声明一个autoRun类,使用服务器后台监听接口。固定用法,死记硬背 public class AutoBackListener implements ServletContextListener{ private Timer timer = null; // 当后台被初始化,即发生了tomcat启动了事件,固定用法 public void contextInitialized(ServletContextEvent event) { // 你要做的事儿,写在这里 System.out.println("AutoBack is running..."); // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能 timer = new Timer(true); System.out.println("定时器启动"); // 调用exportHistoryBean,0表示任务无延迟,24*60*60*1000表示一天执行一次。 timer.schedule(new TimerTaskRun(event.getServletContext()), 5 * 1000, //24 * 60 * 60 * 1000); 10 * 1000); }
// 当后台被销毁,即发生了tomcat关闭了事件,固定用法 public void contextDestroyed(ServletContextEvent event) { // 执行内容写在这里 timer.cancel(); } }
TimerTaskRun .java
package com.qyj.autoback;
import java.util.TimerTask;
import javax.servlet.ServletContext;
public class TimerTaskRun extends TimerTask { @SuppressWarnings("unused") private ServletContext context = null; public TimerTaskRun(ServletContext context) { this.context = context; }
public void run() { // 这里就是调用自己的方法了 System.out.println("定时任务执行(定时下载备份文件)..."); } }
方式二:(只能完成初始化工作 不能用while循环 tomcat会一直卡在启动状态)
web.xml中加入监听器
<listener> <listener-class>com.qyj.autoback.AutoBack</listener-class> </listener>
AutoBack.java
package com.qyj.autoback;
import javax.servlet.ServletContextEvent;//这个是自启动要用到的类,服务器后台事件 import javax.servlet.ServletContextListener;//这个是自启动要用到的类,服务器后台监听
//声明一个autoRun类,使用服务器后台监听接口。固定用法,死记硬背 public class AutoBack implements ServletContextListener{ // 当后台被初始化,即发生了tomcat启动了事件,固定用法 public void contextInitialized(ServletContextEvent arg0) { // 你要做的事儿,写在这里 System.out.println("AutoBack is running..."); }
// 当后台被销毁,即发生了tomcat关闭了事件,固定用法 public void contextDestroyed(ServletContextEvent arg0) { // 执行内容写在这里 } }