Tomcat根目錄下work文件夾的作用


今天遇到了這樣的一個問題:就是我之前把項目部署到了tomcat下,運行沒有任何問題,后來我把我之前的改項目的原項目文件部署上去后,運行時總是出現之前的界面,而服務器又是啟動正常的;通過仔細的檢查后,發現我tomcat下有這樣的一個文件夾,里面記錄着我之前編譯過后的項目,后來在網上一查發現是原來是我tomcat一直沒有把我剛部署的文件加載過去,總是使用之前的,后來我就進入work文件夾中刪除了catalina,然后重新啟動服務器,就成功了:(我使用的tomcat版本是6.0的)

注意:tomcat7.0的根目錄下是沒有這個文件夾的;

work目錄只是tomcat的工作目錄,也就是tomcat把jsp轉換為class文件的工作目錄

jsp,tomcat的工作原理

        當瀏覽器訪問某個jsp頁面時,tomcat會在work目錄里把這個jsp頁面轉換成.java文件,比如將index.jsp轉換為index_jsp.java文件,而后編譯為index_jsp.class文件,最后tomcat容器通過ClassLoader類把這個index_jsp.class類裝載入內存,進行響應客戶端的工作。

        tomcat會定時掃描容器內的jsp文件,讀取每個文件的屬性,當發現某個jsp文件發生改變時(文件的最后修改時間與上次稍描時不相同時),tomcat會重新轉換、編譯這個jsp文件。但是tomcat的稍描是定時的不是實時的,這也正是為什么jsp文件修改后需要幾分鍾的時間來等修改過的jsp生效。

當然為了即刻生效,建議在修改jsp頁面后立即清除work目錄里的文件。

關閉Tomcat
打開tomcat/work目錄
刪除Catalina目錄
運行Tomcat

其實可以用RD命令刪除整個目錄,只需打開 tomcat/bin/startup.bat 文件,在開頭加入
rd/s/q "C:\Tomcat 6.0\work\Catalina"
路徑根據自己實際情況做修改,這樣每次啟動Tomcat的時候就會先刪除頁面緩存了,不用擔心頁面修改后沒被重新編譯。

        另外,tomcat容器中,對轉換后的java文件(比如:index_jsp.java)的編譯最大只支持64k,所以在其他容器中的jsp移植到tomcat容器中時會遇到大jsp文件會發生無法編譯的情況,所以建議把jsp中的業務邏輯寫入單獨的類,在jsp中通過調用這個類的靜態方法來執行,並將jsp頁面中的js提取出來放到單獨的js文件內。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM