久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

幫助中心 >  技術知識庫 >  云服務器 >  服務器教程 >  Eclipse/tomcat 如何實現熱部署和熱啟動

Eclipse/tomcat 如何實現熱部署和熱啟動

2019-10-11 13:53:00 9664

1、 熱部署:就是容器狀態在運行的情況下重新部署整個項目.在這種情況下一般整個內存會清空,重新加載.簡單來說就是Tomcat或者其他的web服務器會幫我們重新加載項目.這種方式可能會造成session丟失等情況。


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


eclipse配置熱啟動:


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


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


啟動eclicpse 找到下面這個目錄

1570776511600981.png

 打開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,加上自動編譯。


下面附上每個屬性的含義   


path 指出你的訪問路

docBase指出你的存放路徑

debug 為設定debug的等級0提供最少的信息,9提供最多的信息

reloadable=true時 當web.xml或者class有改動的時候都會自動重新加載不需要從新啟動服務

crosscontext="true"表示配置的不同context共享一個session(可以不配置)

Tomcat配置熱啟動


具體方法如下:

第一步: Tomcat安裝目錄下,修改 conf/server.xml 中的 Host 配置,設置其reloadable屬性為true,即在Host標簽中添加reloadable="true"這一句,重啟Tomcat使配置文件生效。

第二步:在conf文件夾中的web.xml文件中添加

<init-param>

 <param-name>development</param-name>

 <param-value>true</param-value>

</init-param>

第三步:重啟tomcat服務器,使修改生效。


提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: