1. 程式人生 > >Eclipse實現熱部署和熱啟動

Eclipse實現熱部署和熱啟動

最近做專案的時候遇到修改程式碼之後,需要重新啟動專案才能使新增加的程式碼生效的問題,專案比較大,啟動過程比較慢,之前做專案用的jrebel的外掛,最近不能用了,不清楚為什麼,花了很長時間在網上找了搜了很多解決方案,今天告訴大家如何使用eclipse自身的功能實現熱載入,在此記載以下,方便遇到相同問題的朋友參考下:

1、 熱部署:就是容器狀態在執行的情況下重新部署整個專案.在這種情況下一般整個記憶體會清空,重新載入.簡單來說就是Tomcat或者其他的web伺服器會幫我們重新載入專案.這種方式可能會造成session丟失等情況。

2、熱載入:就是容器狀態在執行的情況下重新載入改變編譯後的類.在這種情況下記憶體不會清空,sessin不會丟失,但容易造成記憶體溢位,或者找不到方法。因為記憶體無法轉變成對像. 一般改變類的結構和模型就會有異常,在已經有的變數和方法中改變是不會出問題的。

        在基於Java的實現熱部署、熱載入的過程中,類裝入器扮演著重要的角色。類裝入器不能重新裝入一個已經裝入的類,否則會報java.lang.LinkageError,但只要使用一個新的類裝入器例項,就可以將類再次裝入一個正在執行的應用程式。一般debug模式都支援熱載入。

       但我在這裡遇到了eclipse使用debug啟動卻並沒有熱載入的狀況,這樣對於開發來說是非常耗時的,因為每更改一次class檔案都需要重新編譯。下面我就如何使用eclipse進行熱載入,做一個簡單介紹:

啟動eclicpse 找到下面這個目錄

開啟server.xml,找到

<Context docBase="
dreamlive" path="/ROOT" reloadable="true" crossContext="true" source="org.eclipse.jst.jee.server:dreamlive"/>

這行程式碼,在你部署新專案的時候,docBase和source會隨著改變,現在還是熱部署的狀態,這樣每次更改class檔案都會自動的去編譯,比較耗時,接下來我們更改一下配置:

 <Context docBase="dreamlive" path="/ROOT" reloadable="false" crossContext="true" source="org.eclipse.jst.jee.server:dreamlive

"/></Host>

 這裡將reloadable改為false,新增crossContext="true",這樣就能進行 熱啟動 了,注意:需要用debug啟動

不過我們需要在每次部署新專案的時候,重新去更改這個配置,我們可以觀察每次部署新專案的時候,server.xml這個檔案的動態變化,設定完成之後如果啟動專案熱載入並沒有生效,那麼勾選eclipse-->project-->Build Automatically,加上自動編譯。

下面附上每個屬性的含義
  1.   path 指出你的訪問路
  2.   docBase指出你的存放路徑
  3.   debug 為設定debug的等級0提供最少的資訊,9提供最多的資訊
  4.   reloadable=true時 當web.xml或者class有改動的時候都會自動重新載入不需要從新啟動服務
  5.   crosscontext="true"表示配置的不同context共享一個session(可以不配置)

相關推薦

Eclipse/tomcat 如何實現應用部署啟動

使用者希望應用程式能夠快速響應並載入。 一個啟動速度慢的應用程式不符合這個期望,可能會令使用者失望。 這種糟糕的體驗可能會導致使用者在應用商店中對您的應用進行糟糕的評價,甚至完全放棄您的應用。         如果是對原來的類方法修改,那麼熱啟動非常好

Eclipse實現部署啟動

最近做專案的時候遇到修改程式碼之後,需要重新啟動專案才能使新增加的程式碼生效的問題,專案比較大,啟動過程比較慢,之前做專案用的jrebel的外掛,最近不能用了,不清楚為什麼,花了很長時間在網上找了搜了很多解決方案,今天告訴大家如何使用eclipse自身的功能實現熱載入,在此記

Eclipse/ tomcat 實現部署啟動

1、 熱部署:就是容器狀態在執行的情況下重新部署整個專案.在這種情況下一般整個記憶體會清空,重新載入.簡單來說就是Tomcat或者其他的web伺服器會幫我們重新載入專案.這種方式可能會造成session丟失等情況。 2、熱載入:就是容器狀態在執行的情況下重新載入改變編譯後的

eclipse實現部署加載

eclips let tex ext 熱加載 servle 後臺 項目 就是 1.在context。xml裏面<Context >改為<Context reloadable="false">   意思就是:每次項目不用啟動,就可以加載後

SpringBoot 部署啟動

引入架包 pom.xml <!--部署熱啟動--> <dependency> <groupId>org.springframework.boot</groupId>

Tomcat部署載入的方法

想從新啟動伺服器(伺服器從新啟動花時間),想直接獲得(debug)結果.有兩種方式熱部署 和熱載入: 熱載入 在server.xml -> context 屬性中 設定 reloadable=“true” 熱部署 在server.xml -> context

java的部署載入

一、熱部署與熱載入 在應用執行的時升級軟體,無需重新啟動的方式有兩種,熱部署和熱載入。 對於Java應用程式來說,熱部署就是在伺服器執行時重新部署專案,熱載入即在在執行時重新載入class,從而升級應用。 二、實現原理 熱載入的實現原理主要依賴java的類載入機制,在實現方式可以概括為在容器啟動的時候起

Tomcat下實現部署自動解壓war包替換現有資料夾的操作

插播小廣告,本人的《大話Java效能優化》一書已經在亞馬遜、京東、噹噹、天貓出售,提前謝謝大家支援。 自動解壓war包替換現有資料夾的操作: 因為tomcat預設不會再次解壓已經存在的war包對應的目

SpringBoot部署linux下通過vim修改jar裡面的檔案

解決問題: 1、在專案測試或者部署後,經常會遇到需要更改一些配置檔案或者java類,這時使用SpringBoot熱部署可以快速的修改後重啟,方便開發測試; 2、在專案上線後,會遇到一些需要修改的地方,使用linux下的vim工具可以快速的修改已部署好的專案。 一、引入熱部署依賴 &l

SpringBoot 部署 yml型別配置檔案

spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp server: port: 90 可以定義多個application-xxx.yml,需要引用到該檔案就在application.yml中的profiles

maven-tomcat部署本地部署方式的區別

  以前在做專案的過程中沒有仔細考慮這兩種方式的區別,最近在做一個ERP專案時,我遇到了一個奇葩的問題:不使用maven管理的專案可以正常執行,使用maven管理後的專案總是報錯。   我後來仔細分析了一下,為什麼會出現這個問題?我反覆的重複安裝maven專案

在原生Java web上實現ClassLoader部署替換

開頭廢話 一直想實現一個原創的熱部署功能,其實Spring Loader,還有Tomcat都實現了相關的功能,而且實現的熱部署工非常強大,但是這個畢竟是別人的東西,即使再好用,如果不是自己實現一個,這份知識就永遠不屬於自己。 實現開頭 要實現熱替換,一般想到的是實現cl

Nginx 部署日誌切割,你學會了嗎?

上篇文章,我們已經安裝好 Nginx,並且配置好 Nginx 檔案後,這個時候我就需要操作 Nginx 的命令行了,這篇文章主要講解 Nginx 命令列相關知識,並通過日常遇到的熱部署、切割日誌檔案場景來熟悉 Nginx 命令列操作。 推薦閱讀:Nginx 瞭解一下? Nginx 命令列 格式:nginx

Installshield2010 實現web部署資料庫安裝示例

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Tomcat的部署載入

在應用執行時升級軟體,無需重新啟動的方式有兩種:熱部署與熱載入。 對Java程式來說,熱部署是在伺服器執行的時候重新部署專案,熱載入是在執行時重新載入class從而升級應用。 熱載入主要依賴Java的類載入機制,實現方式可概括為在容器啟動時起一條後臺程序,定時檢測類檔案的時間戳變化,若發現時間戳改變,則將

騰訊Bugly修復更新的渠道包加固問題

菜的坑 首先騰訊的熱修復是真的好用,釋出了補丁包之後真的可以實現使用者無感知更新APP新增內容或者修改bug,但是官方文件寫到最後加固和多渠道問題處理的並不清楚,並且上邊建議的方法很是麻煩,效果並不好,個人感覺是這樣,給點小建議,可以參考,這裡先給出官方

說說最近(iOS檢視動態化以及修復更新)

好久沒有更新文章了,下面說說最近在做的一些事情,以及後續的文章更新的一些思路。 最近主要從事電商的App研發相關的工作,其中做了兩個相關的工作 1 首先是Autumn。該技術提供一個區域性檢視的動態化的技術。    比如一個區域性的cell,或者一個區域性的一個檢視,可

部署載入的配置

在專案開發過程中,經常要改動Java/JSP 檔案,但是又不想從新啟動伺服器(伺服器從新啟動花時間),想直接獲得(debug)結果.有兩種方式熱部署 和熱載入: 1.熱載入:在server.xml -> context 屬性中 設定 reloadable="true"?

eclipse mavenWeb專案真正實現部署(修改java程式碼頁面檔案不用重啟tomcat)

        1.前言   先說熱部署的含義:   熱部署原來被定義為:tomcat啟動後,如果你往webapps目錄下,新增新的專案,tomcat會實現自動將其釋出的功能,這時,就叫做熱部署。   網上所實現的熱部署

如何免費使用jrebel eclipse 項目配合完成部署功能

.dll 五步 使用 完成 tom start 一個 facebook advance 感謝王同學分享了熱部署插件,jrebel,說修改後臺代碼可以不用重啟tomcat,於是立即下載使用。。。。本來很簡單的一個事情,因為參照了網上各種帖子,結果坑的不行。。。。所以把自己的經