可以修改類不用重啟Tomcat載入整個項目(手工啟動) 配置reloadable=true(自動重載) 使用Debug模式,前提是僅限於局部修改。(修改類不用重啟--熱載入) Tomcat輕小,而WebLogic、WebSphere對硬體要求比較高,吃記憶體、耗CUP。JBoss類更改不會重啟(傳說, ...
可以修改類不用重啟Tomcat載入整個項目(手工啟動)
配置reloadable=true(自動重載)
使用Debug模式,前提是僅限於局部修改。(修改類不用重啟--熱載入)
Tomcat輕小,而WebLogic、WebSphere對硬體要求比較高,吃記憶體、耗CUP。JBoss類更改不會重啟(傳說,我沒用過,不知道!)。
在使用Eclipse+Tomcat開發Java項目的時候常常會碰到這樣的情況,已修改Java文件Tomcat就會自動重啟,接下來就是漫長的等待服務重啟完畢。那其實大多數的Java文件修改是沒有必要重啟服務的,只有一些特定的Java文件,比如說只有重啟服務的時候才會調用的Java代碼才需要重啟服務。
一修改java代碼就重新部署(console有明顯提示),且會話失效,設置伺服器為debug模式(debug on server),否則修改不起作用.
什麼時候應該redeploy,什麼時候應該重啟tomcat。如果項目大,redeploy和重啟tomcat的系統開銷是很大的,經常要等很長時間。
Tomcat運行時動態重載類, 實現重載功能的測試jsp。當系統中有很多類時,如果開啟了Tomcat的reloadable=true,那麼每當相關文件改變時,Tomcat會停止 web app並釋放記憶體,然後重新載入web app.這實在是個耗時的工程. 如果能有隻重載某幾個類的功能,將極大的滿足我這個即時調試狂。
1.修改類不重啟Tomcat(不用手動重啟)
首先需要設置server.xml中的Context reloadable="true", true自動重載(不是重啟!), false手動重載。(如果項目在Tomcat中,應該去Tomcat目錄設置。)
Eclipse EE 設置方式,文件設置:server.xml > reloadable="false" 界面設置:Server > Modules > Edit > webapp > Auto reloading enabled > false
開發階段通常都設為true,方便開發,在發佈階段應該設置為false,提高應用程式的訪問速度。可以選擇把其他不相關的項目先從webapps移出,這樣tomcat載入的項目就少了,相應也就快了。
這裡是重點:修改tomcat conf目錄下的server.xml,添加:
Xml代碼- <Context path="/struts2" docBase="D:\workspace\lee_struts2\WebRoot" reloadable="true"/>
註:docBase="",中的內容為項目的WebRoot目錄
然後在把MyEclipse server中 tomcat 的開發模式設置debug模式,ok確定。
然後啟動tomcat,隨意修改項目中的一個文件,就會看到Console視窗重新載入項目,ok,搞定...
(問題:設置debug模式修改代碼後會出現“hot code replace failed”錯誤,不用管,繼續就ok,如果不想看見,讓錯誤不提示就ok,原因是debug模式代碼正在用,所以replase失敗,但其實是成功的!而設置run模式就不報錯,同時在修改代碼後也是熱部署的,刷新頁面即可!)
2.修改類不重啟Tomcat有兩種方式:熱部署、熱載入
熱部署:容器狀態在運行時重新部署整個項目。這種情況下一般整個記憶體會清空,重新載入,這種方式可能會造成sessin丟失等情況。tomcat 6確實可以熱部署了,而且會話也沒丟.
熱載入:最好是在調試過程中使用,免得整個項目載入,Debug模式支持熱載入。容器狀態在運行時重新載入改變編譯後的類。在這種情況下記憶體不會清空,sessin不會丟失,但容易造成記憶體溢出,或者找不到方法。
一般改變類的結構和模型就會有異常,在已經有的變數和方法中改變是不會出問題的(Eclipse、MyEclipse8、JBuilder、 IntelliJ IDEA…)。
3.自動編譯JSP
build Automatically
修改Tomcat源代碼實現realoadable!不推薦~