JAVA認證

當前位置 /首頁/IT認證/JAVA認證/列表

熱部署javaweb應用程式的方法

對於Java應用程式來說,熱部署就是在執行時更新Java類檔案。在基於Java的應用伺服器實現熱部署的過程中,類裝入器扮演著重要的角色。大多數基於Java的應用伺服器,包括EJB伺服器和Servlet容器,都支援熱部署。類裝入器不能重新裝入一個已經裝入的類,但只要使用一個新的類裝入器例項,就可以將類再次裝入一個正在執行的應用程式。

熱部署javaweb應用程式的方法

  一、熱部署介紹

熱部署對於程式開發的好處就不用多說了,這裡記錄一下自己的使用過程:

lipse的年代,那時候通過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的啟動檔案,例如中增加:

Resin 3.1+版本:#div_code img{border:0px;} exec $JAVA_EXE -javaagent:/opt/apps/resin/ -jar ${RESIN_HOME}/lib/ $*

Resin 3.0-版本:#div_code img{border:0px;} args=“-J-javaagent:/opt/apps/resin/”

  三、小結

在進行java web程式開發過程中,經常遇到這種問題,修改一個java檔案(*),需要重啟web伺服器(如tomcat,weblogic等),部署專案。而起/停伺服器浪費了大量的時間。在小專案中,也許我們感覺不到。但對於公司的大型專案:如資料中心,生產等系統開發而言,往往起/停需要等待幾分鐘時間。更浪費時間的是,對於一個類中的方法的除錯過程,如果修改多次,需要反覆的啟停伺服器,那麼浪費的時間更多。從上可以看出,我們急需一個可快速起/ 停伺服器的工具,來提高我們的開發效率。

TAG標籤:應用程式 JavaWeb 部署 #