java - 如何在tomcat啟動(dòng)的時(shí)候,執(zhí)行項(xiàng)目的初始化程序
問(wèn)題描述
在tomcat啟動(dòng)的時(shí)候,控制臺(tái)輸出了很多信息,信息中顯示在tomcat啟動(dòng)的時(shí)候,加載了很多項(xiàng)目的配置文件,并且調(diào)用了項(xiàng)目初始化方法,但我不知道是怎么被調(diào)用的。在那里被調(diào)用的?是需要配置tomcat的一些什么東西嗎?
PS:javaweb項(xiàng)目
問(wèn)題解答
回答1:web.xml中做如下配置
<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>org.cai.MyServlet</servlet-class> <strong><load-on-startup>0</load-on-startup></strong> </servlet> 回答2:
web.xml中找找Listener
回答3:樓主需要的是系統(tǒng)了解一下 Servlet 的生命周期。當(dāng)你實(shí)現(xiàn)一個(gè) Servlet 的時(shí)候,它的哪些方法會(huì)在 Web 應(yīng)用啟動(dòng)的時(shí)候調(diào)用。這方面的文章太多了:
http://www.jianshu.com/p/1d50...http://www.runoob.com/servlet...
回答4:有三種辦法:
如 @treeandgrass 所說(shuō),對(duì)某個(gè)Servlet重寫(xiě)init(),但前提是在web.xml中給load-on-startup設(shè)上值(或者加@WebServlet注解);
對(duì)某個(gè)Filter實(shí)現(xiàn)init(),配在web.xml中(或者加@WebFilter注解);
實(shí)現(xiàn) ServletContextListener 接口,并實(shí)現(xiàn)contextInitialized(),配在web.xml中(或者加@WebListener注解)。
這三種方法中,我最常用最后一種(ServletContextListener)(在Web中使用Spring通常只用這種方法),因?yàn)樗偸莾?yōu)先于Filter和Servlet執(zhí)行的,而且不會(huì)跟實(shí)現(xiàn)具體功能的Servlet、Filter混在一起。
初始化的工作包括:
線程池、數(shù)據(jù)庫(kù)連接池、網(wǎng)絡(luò)連接池的初始化
IoC容器的加載
啟動(dòng)定時(shí)器
其他需要初始化的對(duì)象以上大多數(shù)初始化工作是需要在Web服務(wù)器停止時(shí)關(guān)閉的,這些工作應(yīng)寫(xiě)在contextDestroyed()中。
