myeclipse+tomcat-熱部署

最近,公司要做一個新項目。我要先把環境確定好。正常使用Myeclipse就可以了。但上Myeclispe的官網上不去了。一開始我以爲是GFW乾的,後來網上說因爲中國盜版太多了。Myelipse官方把所有中國的IP都被封了。
哎~~~。也是給人家的印象太不好了。不愛讓我們用,我就不用了。
上eclipse.org下了一個Eclipse IDE for Java EE Developers,基於WTP的。一開始的使用還湊合。但到熱部署的時候,用Tomcat自帶的熱部署會引起隨TOMCAT自動啓動的Servlet再次運行,實際相當於重啓了tomcat。這是個大問題啊。
想當年在做客服V3的時候,每次修改一個類,都要重啓應用服務器,當時是weblogic+Struts1+sping+hibernate。機器還慢,是一個痛苦的過程。及其影響效率。
後來我在Myeclipse上解決了這個問題,客服V4的開發就沒有這個問題。但怎麼解決的忘了。在硬盤中一頓翻找,最後終於找到了:
Myeclipse配置Tomcat4時,其中Run mode 和Debug mode決定了修改.java文件後,能否自動發佈既實現熱部署.txt
Myeclipse配置Tomcat4時,其中Run mode 和Debug mode決定了修改.java文件後,能否自動發佈。
Run mode 需要重啓Tomcat 4才能讓修改後的.java文件生效
Debug mode 修改.java文件後,馬上生效

當初被鬱悶了那麼長時間的問題,和這麼重要的解決方法,我咋能忘呢?
感嘆一下時間的威力和自己的記性。

然後上網搜索了一下,對這個問題又有了一個全新的、全面的、深刻的認識。
先說一下我對熱部署的需求:就是我改了一個.java文件,這個修改可以在運行中的web服務器中馬上生效。而不用重啓web服務器。
以下爲引文:
This new feature encapsulates the ability to substitute modified code in a running application through the debugger APIs.
——'HotSwapping' using JVM:http://www.jug.mk/blogs/ipenov/entry/hotswapping_using_jvm

網上很多人誤解熱部署和熱加載的概念,所以造成亂配置的行爲,這裏提示一下.
熱部署:就是容器狀態在運行的情況下部署或者重新部署整個項目.在這種情況下一般整個內存會清空,重新加載.簡單來說就是Tomcat或者其他的web服務器會幫我們重新加載項目.這種方式可能會造成sessin丟失等情況.
熱加載:就是容器狀態在運行的情況下重新加載改變編譯後的類.在這種情況下內存不會清空,sessin不會丟失,但容易造成內存溢出,或者找不到方法。因爲內存無法轉變成對像. 一般改變類的結構和模型就會有異常,在已經有的變量和方法中改變是不會出問題的。在中模式最好是在調試過程中使用,免得整個項目加載.
debug模式都支持熱加載.很方便使用.
——IDEA TOMCAT WEB開發 SSH開發 修改類不重啓 熱部署 熱加載 IDEA8:
http://3000pzj.javaeye.com/blog/503222

部署在項目開發過程中是常有的事,特別是debug的時候。但是如果每次fix一個bug都要把整個項目重新部署一遍以便測試fix的效果或者繼續debug其他bug,那對開發人員來說無疑是一大噩夢。不過誰都不想噩夢連連,有了JVM的hotSwap以及Intellij Idea對debug,hotSwap的支持,從此美夢相伴(誇張了點:))。今天通過這篇文章介紹一下通過對Intellij Idea熱部署的設置達到最方便的最高效的debug效果。
我想在介紹具體設置之前,不妨瞭解一些背景知識和概念。
HotSwap:“HotSwap”是JPDA(Java Platform Debugger Architecture)中的一個特性,JPDA增強是自Java 2 SDK1.4新增的功能。HotSwap允許將JVM中的類定義替換爲新的類定義,這就允許開發人員在debug時,將修改過的class替換JVM中舊有的class,無需重新啓動服務器。不過,目前HotSwap只支持對方法body的修改,不支持對類和方法簽名的修改(比如修改類名,方法名,方法參數等)。考慮這些限制,也是有理由的,替換類定義,就需要新類和舊類之間有一個關聯,這裏關聯就是類的全名(或許還有其他信息),類名都改了,就不知道替換哪個類了。至於方法簽名的修改,應該是考慮到運行時方法的調用,通過方法簽名替換已有的方法調用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章