當(dāng)我們進(jìn)行 Web 應(yīng)用開(kāi)發(fā)時(shí),如果不進(jìn)行配置,每次修改 Java 類文件都需要重啟服務(wù)器。如何讓服務(wù)器識(shí)別到類的更新并自動(dòng)重新加載呢?其實(shí)很簡(jiǎn)單。
一、配置方法
對(duì)于較新版本(5.5 之后)的 tomcat 服務(wù)器來(lái)說(shuō),只需要修改 \conf\context.xml
文件,給 Context
標(biāo)簽加上 reloadable="true"
這個(gè)屬性即可。比如原來(lái) context.xml
是這個(gè)樣子的:
<Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> </Context>
修改之后
<Context reloadable="true"> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> </Context>
二、幾點(diǎn)問(wèn)題
1.配置 context.xml 后需要重啟服務(wù)器嗎?
tomcat 會(huì)定時(shí)掃描 context.xml 文件,按理說(shuō),一旦發(fā)現(xiàn)文件被修改,就會(huì)自動(dòng)重新加載這個(gè)文件,而不需要重啟服務(wù)器 。然而實(shí)際上增加 reloadable="true" 這個(gè)屬性后,類的自動(dòng)重載并沒(méi)有生效,需要重啟服務(wù)器。
1.什么情況適用自動(dòng)重新加載?
自動(dòng)重新加載只對(duì)修改現(xiàn)存的 Java 類文件(如 Servlet)有效,創(chuàng)建新的文件是不行的。
2.如何觸發(fā)自動(dòng)重新加載?
在修改了類的源代碼(.java)后,需要重新編譯得到類文件(.class),并且需要使用客戶端(瀏覽器)訪問(wèn)該 Web 頁(yè)面。對(duì)已打開(kāi)的 Web 頁(yè)面,隨意點(diǎn)擊一下即可