一、熱部署與熱加載java
在應用運行的時候升級軟件,無需從新啓動的方式有兩種,熱部署和熱加載。web
它們之間的區別是:tomcat
(1)、部署方式: 服務器
熱部署在服務器運行時從新部署項目。app
熱加載在運行時從新加載class。eclipse
(2)、實現原理webapp
熱部署直接從新加載整個應用,這種方式會釋放內存,比熱加載更加乾淨,可是它比熱加載更加的浪費時間。性能
熱加載在運行時從新加載class,主要使用的是類加載機制,在實現方式上就是在容器啓動的時候起一條後臺線程,定時的檢測類文件的時間戳變化,若是類的時間戳發生變化,則將類從新載入。spa
(3)、使用場景.net
熱部署更多的是在生產環境中使用,就是適用於頻繁的部署而且啓動耗時長的應用、沒法中止服務的應用等。
熱加載則更多的是在開發環境中使用,用於開發,debug中,能夠大大的提升開發效率。
二、熱加載的應用:
struts2中的熱加載應用:
在struts2中熱加載即開發者模式,在struts.xml配置
<constant name="struts.devMode" value="true" />
這是開啓開發者模式,每次更改代碼不須要重啓服務器就能夠進行調試。
三、配置tomcat實現熱部署與熱加載的方式
(1)、在tomcat的webapps中新建一個與項目名相同的文件,並把項目下WebContent文件夾下的內容剪切到剛剛新建的文件夾中。這是tomcat自帶的熱部署。
(2)、在tomcat\conf\server.xml中的Host標籤中加上一個配置。
<Context docBase="D:/test/web" path="/hot" privileged="true" reloadable="true"/>
path:指定訪問該web應用的URL進口
docBase:指定web應用的文件路徑,能夠給定絕對路徑,也能夠給定相對於<Host>的appBase屬性【默認指向tomcat的webapps】的相對路徑;要是Web應用是個war文件,則指定war文件的路徑。
reloadable:要是這個屬性設置爲true,Tomcat服務器在運行情況下會監視在WEB-INF/classess和WEB-INF/lib目次下的class文件的改動,以及監視web應用的WEB-INF/web.xml文件的改動。要是檢測到的class文件或者web.xml文件被更新,服務器會自動加載Web應用。該屬性的默認值爲false.在web應用的開發和調試階段,把reloadable設爲true,能夠方便對web應用的調試。在web應用正式發佈階段,把reloadable設爲false,能夠減低tomcat的運行負荷,提升Tomcat的運行性能。
(3)、在tomcat\conf\catalina\localhost中添加一個xml文件
hot.xml
<?xml version="1.0" encoding="UTF-8"?> <Context docbase="D:/test/web" reloadable="true"/>
服務器會使用xml文件的名字做爲URL路徑
雙擊tomcat,打開tomcat的配置界面,按以下幾個步驟配置eclipse熱部署:
單擊「Overview」選項卡
展開「Server Options」,勾選「Serve modules without publishing」選項
展開」publishing「,勾選」Automatically publish when resources change「選項。這個配置是用來熱部署資源,如:JSP,XML和properties文件等。(默認是勾選的)
單擊」Modules「選項卡,確保」Auto Reload「是被禁用的
<Context docBase="logistics-manage-web" path="/logistics-manage-web" reloadable="true" source="org.eclipse.jst.jee.server:logistics-manage-web"/>
以DEBUG模式啓動tomcat,熱部署在DEBUG模式下才可用
參考文章:https://blog.csdn.net/zhang854429783/article/details/50086923