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的優先級越高,應用啟動時就越先加載。