當(dāng)我們進(jìn)行 Web 應(yīng)用開(kāi)發(fā)時(shí),如果不進(jìn)行配置,每次修改 Java 類(lèi)文件都需要重啟服務(wù)器。如何讓服務(wù)器識(shí)別到類(lèi)的更新并自動(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è)屬性后,類(lèi)的自動(dòng)重載并沒(méi)有生效,需要重啟服務(wù)器。
1.什么情況適用自動(dòng)重新加載?
自動(dòng)重新加載只對(duì)修改現(xiàn)存的 Java 類(lèi)文件(如 Servlet)有效,創(chuàng)建新的文件是不行的。
2.如何觸發(fā)自動(dòng)重新加載?
在修改了類(lèi)的源代碼(.java)后,需要重新編譯得到類(lèi)文件(.class),并且需要使用客戶(hù)端(瀏覽器)訪(fǎng)問(wèn)該 Web 頁(yè)面。對(duì)已打開(kāi)的 Web 頁(yè)面,隨意點(diǎn)擊一下即可
