熱部署和熱加載的配置

在項目開發過程中,經常要改動Java/JSP 文件,但是又不想從新啓動服務器(服務器從新啓動花時間),想直接獲得(debug)結果.有兩種方式熱部署 和熱加載:

 1.熱加載:在server.xml -> context 屬性中 設置 reloadable="true"

?

1

<Context docBase="xxx" path="/xxx" reloadable="true"/>

2. 熱部署:在server.xml -> context 屬性中 設置  autoDeploy="true"

?

1

<Context docBase="xxx" path="/xxx" autoDeploy="true"/>

 同樣可以:

1代碼 複製代碼 收藏代碼

?

1

2

3

4

5

6

<Host name="localhost" appBase="webapps"

      unpackWARs="true" autoDeploy="true"

      xmlValidation="false" xmlNamespaceAware="false">

<Context docBase="xxx" path="/xxx"/> 

</Host>

3.區別:

      熱加載:服務器會監聽 class 文件改變,包括web-inf/class,wen-inf/lib,web-inf/web.xml等文件,若發生更改,則局部進行加載,不清空session ,不釋放內存。開發中用的多,但是要考慮內存溢出的情況。

      熱部署: 整個項目從新部署,包括你從新打上.war 文件。 會清空session ,釋放內存。項目打包的時候用的多。

 也可以通過Eclipse上設置實現上述配置文件的修改

Eclipse的工程名右鍵: properties->Tomcat->General->Make this context as reloadable(reloadable="true")不要選中 Eclipse的工程名右鍵:Tomcat project->Update Context Definition

 

 

***、Tomcat熱加載配置

Eclipse Package Explorer中找到Servers,點擊你所需要運行的tomcat的config配置文件,例如 demo-config,雙擊該文件夾下的server.xml,可以看到如下內容:

<Host appBase="webapps" autoDeploy="false" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

<Context docBase="demo" path="/demo"reloadable="false" crossContext="true" source="org.eclipse.jst.jee.server:tnt_front"/></Host>

 

確保Host標籤中的autoDeploy設置爲false,Context標籤中的reloadable設置爲false

 

熱加載的方式必須保證eclipse以debug模式啓動項目纔可以,切記!

 

二、修改文件即時發佈到tomcat中

如下圖所示,Publishing中選擇第二項,保證Eclipse中修改java類和jsp等文件會立即同步到Tomcat的webapps中對應項目中,使得jsp的修改可以立即呈現。

 

 

1.說一下自己的理解:

運行tomcat項目需要3步

1.打包並指定給tomcat

2.啓動tomcat

3.解壓war包並運行(第三步和第二步一起的)

2.熱部署

就是已經運行了項目,更改之後,不需要重新tomcat,但是會清空內存,重新打包,重新解壓war包運行

可能好處是一個tomcat多個項目,不必因爲tomcat停止而停止其他的項目

 3.熱加載

是基於字節碼進行更改的,不釋放內存,開發可用,上線不可用,比如修改類了,原先的類內存不會釋放,新的類還會增加內存.

更改字節碼的意思是應該更改exploded war包中的.class文件.

熱加載不重啓tomcat,不重新打包

4.更新靜態資源

更新靜態資源是更改exploded war的靜態資源,和熱加載歸到一起.

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