第一步:配置web.xml文件
添加如下代码
<servlet> <servlet-name>Timer</servlet-name> <servlet-class>com.ccpit.p4.dispatch.web.Timer</servlet-class> <load-on-startup>1</load-on-startup> </servlet>
第二步:创建一个类,名称为Timer(与web.xml文件的servlet-class内的Timer匹配)
package com.ccpit.p4.dispatch.web; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.servlet.Servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @SuppressWarnings("serial") public class Timer extends HttpServlet{ //Start tomcat automatically to perform listening services //Override一定要写哦,不然启动tomcat后不会自动执行init()方法 @Override public void init() throws ServletException{ ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); executor.scheduleWithFixedDelay(new EchoServer(), 0, 1000, TimeUnit.MILLISECONDS); } }
第三步:大家是不是把第二步的代码放入工程后new EchoServer()会报错,没错这里就是真正要执行我们写的服务代码,将在下面贴出,我再描述一下scheduleWithFixedDelay这个函数各个参数的含义:参数一:待执行的任务,参数二:执行任务前的延时,参数三:每次执行任务的间隔时间单位ms,参数四:设定以ms为记时单位。
服务方法代码
package com.ccpit.p4.dispatch.web; class EchoServer implements Runnable { @Override public void run() { try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } //下面写我们要执行的代码 System.out.println("This is a echo server. The current time is " + System.currentTimeMillis() + "."); } }
至此,启动服务器将会自动执行我们特指的一个方法,我是在需要自动发送邮件的时候用到了此功能,因为在服务启动或重启之后自动监控是否有需要发送的邮箱,所用使用了启动tomcat将自动执行自己设定的方法,如有疑问欢迎留言