1.情景展示
想要在tomcat发布运行javaWeb项目时,自动运行某个java类,如何实现?
2.解决方案
第一步:重写servlet的init()方法
/** * web项目启动后,调用该类 * @explain * @author Marydon * @creationTime 2019年4月3日下午2:21:51 * @version 1.0 * @since * @email marydon20170307@163.com */ public class TaskExecutor extends HttpServlet { private static final long serialVersionUID = 1L; /** * tomcat容器启动后,将会调用该方法 */ public void init() throws ServletException { super.init(); // 项目启动后,立即执行上传任务 UploadTask sb = new UploadTask(); // 数据上传 sb.dataUpload(); } }
第二步:在web.xml进行配置
<!-- 服务器一启动,就执行Java类 --> <!-- 将数据上传到国家数据中心 --> <servlet> <servlet-name>uploadServlet</servlet-name> <servlet-class>base.web.actions.upload.TaskExecutor</servlet-class> <!-- 被加载到servlet容器的优先级 --> <load-on-startup>1</load-on-startup> </servlet>
设置load-on-startup标签,tomcat在启动时会自动将对应的servlet类加载到servlet容器中,将该servlet实例化并调用初始化init()方法;
另外,它的值必须为0或者正整数,正数的值越小,该servlet的优先级越高,应用启动时就越先加载。