1. 程式人生 > >Tomcat熱部署和熱載入的方法

Tomcat熱部署和熱載入的方法

想從新啟動伺服器(伺服器從新啟動花時間),想直接獲得(debug)結果.有兩種方式熱部署 和熱載入:

熱載入

在server.xml -> context 屬性中 設定 reloadable=“true”

熱部署

在server.xml -> context 屬性中 設定 autoDeploy=“true”

同樣可以:
<Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="true" 
      xmlValidation="false" xmlNamespaceAware="false"> 
<Context docBase="xxx" path="/xxx"/>  
</Host> 

區別

啥玩意

  • 熱部署:伺服器會監聽 class 檔案改變,包括class,lib,web.xml等檔案,若發生更改,則區域性進行載入,不清空session ,不釋放記憶體。開發中用的多,但是要考慮記憶體溢位的情況。
  • 熱載入:整個專案從新部署,包括你從新打上.war 檔案。 會清空session ,釋放記憶體。

原理

  • 熱部署:直接重新載入整個應用,這種方式會釋放記憶體,比熱載入更加乾淨,但是它比熱載入更加的浪費時間。
  • 熱載入:在執行時重新載入class,主要使用的是類載入機制,在實現方式上就是在容器啟動的時候起一條後臺執行緒,定時的檢測類檔案的時間戳變化,如果類的時間戳發生變化,則將類重新載入。

使用場景

  • 熱部署:更多的是在生產環境中使用,就是適用於頻繁的部署並且啟動耗時長的應用、無法停止服務的應用等。
  • 熱載入:更多的是在開發環境中使用,用於開發,debug中,可以大大的提高開發效率。