Beim Start von Tomcat gab die Konsole viele Informationen aus. Die Informationen zeigten, dass beim Start von Tomcat viele Projektkonfigurationsdateien geladen wurden und die Projektinitialisierungsmethode aufgerufen wurde, aber ich wei? nicht, wie sie aufgerufen wurde. Wo hie? es? Muss ich etwas mit Tomcat konfigurieren?
PS: Javaweb-Projekt
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>
樓主需要的是系統(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...
有三種辦法:
如 @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()
中。