歡迎您光臨本站 註冊首頁

熱部署 java web應用程序

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
所謂熱部署,就是在應用正在運行的時候升級軟體,卻不需要重新啟動應用.
對於Java應用程序來說,熱部署就是在運行時更新Java類文件.在基於Java的應用伺服器實現熱部署的過程中,類裝入器扮演著重要的角色.大多數基於Java的應用伺服器,包括EJB伺服器和Servlet容器,都支持熱部署.類裝入器不能重新裝入一個已經裝入的類,但只要使用一個新的類裝入器實例,就可以將類再次裝入一個正在運行的應用程序.
一、熱部署介紹:
熱部署對於程序開發的好處就不用多說了,這裡記錄一下自己的使用過程:
1.myeclipse的年代,那時候通過myeclipse新建的web項目,通過debug方式啟動,可以獲得修改java類中的方法體和jsp頁面立即生效的功能;這是純eclipse所沒有的.
2.後來出了jrebel可以獲得新增java類和方法也無需重啟應用伺服器即可生效的功能,當然這個功能不完美,有缺陷.
3.隨著eclipse的升級,推出了Jee版本的eclipse,也就逐漸淘汰了myeclipse,但是JEE版本的eclipse和tomcat配合,即便使用debug模式啟動,修改java類還是會導致整個應用的重新載入,這是不能忍受的,這時候,發現了jetty配合JEE版本的eclipse可以完美的實現熱載入,即改即用,很方便.
二、熱部署過程
先做個說明,沒有熱部署和有熱部署的開發效率真是天差地別的.所以熱部署受很多第三方軟體包(Struts,Spring,Hibernate)的限制.本來可以熱部署的,加入了第三方的包就不可以了.所以,先說明詳細的軟體環境,和程序配置是非常必要的.
虛擬機:java Tomcat Eclipse Myeclipse
應用程序情況:純正的sertlet jsp javabean,資料庫連接使用JDBC-ODBC橋連接Access資料庫.沒有使用任何第三方軟體包,沒有使用Struts,Spring,Hibernate.WebRootWEB-INFlib下是空的.
配置方法:
ie登陸http://Tomcat所在的伺服器IP:8080/ →點超連接"Tomcat Administration"→ 輸入用戶名密碼登陸→在左側的功能樹中→Tomcat Server→Service(Catalina)→Host(localhost)→Context(/要修改的web項目)→右側新出現的頁面中→Reloadable設置為true→Save按鈕→Commit Changes.
開發時,修改.java文件后,調用這個類時日誌提示:
- Reloading this Context has started
這是正在重新載入修改後的.class文件.
j2ee開發插件(這裡使用Myeclipse),也可能導致熱部署失效.插件必須要把編譯好的.class文件從工作空間複製到Tomcatwebapps下的項目里.才能使Tomcat得到需要熱部署的文件.
說一下jreble,網上的資料比較複雜,下面介紹個最簡單的方法:
在resin的啟動文件,例如httpd.sh中增加:


Resin 3.1 版本:#div_code img{border:0px;} exec $JAVA_EXE -javaagent:/opt/apps/resin/jrebel4.0-crack.jar -jar ${RESIN_HOME}/lib/resin.jar $*
Resin 3.0-版本:#div_code img{border:0px;} args="-J-javaagent:/opt/apps/resin/jrebel4.0-crack.jar"
三、小 結
在進行java web程序開發過程中,經常遇到這種問題,修改一個java文件(*.java),需要重啟web伺服器(如tomcat,weblogic等),部署項目.而起/停伺服器浪費了大量的時間.在小項目中,也許我們感覺不到.但對於公司的大型項目:如數據中心,生產等系統開發而言,往往起/停需要等待幾分鐘時間.更浪費時間的是,對於一個類中的方法的調試過程,如果修改多次,需要反覆的啟停伺服器,那麼浪費的時間更多.從上可以看出,我們急需一個可快速起/停伺服器的工具,來提高我們的開發效率.


[火星人 ] 熱部署 java web應用程序已經有564次圍觀

http://coctec.com/docs/java/show-post-59949.html