所謂熱部署,就是在應用正在運行的時候升級軟件,卻不需要重新啟動應用。
成都創(chuàng)新互聯(lián)公司網(wǎng)站建設提供從項目策劃、軟件開發(fā),軟件安全維護、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評估等整套的建站服務,主營業(yè)務為成都網(wǎng)站制作、成都網(wǎng)站建設,app軟件定制開發(fā)以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。成都創(chuàng)新互聯(lián)公司深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
1.1對于Java應用程序來說,熱部署就是在運行時更新Java類文件。
1.2在基于Java的應用服務器實現(xiàn)熱部署的過程中,類裝入器扮演著重要的角色。
1.3大多數(shù)基于Java的應用服務器,包括EJB服務器和Servlet容器,都支持熱部署。
1.4類裝入器不能重新裝入一個已經(jīng)裝入的類,但只要使用一個新的類裝入器實例,就可以將類再次裝入一個正在運行的應用程序
類加載機制
2.1Java 中的.Java類文件都是經(jīng)過編譯器然后把代碼編譯為存儲字節(jié)碼的 .Class 文件
2.2這個編譯后的.Class文件就包含了各種信息,之后便是要加載到JVM虛擬機中運行使用。
自定義加載器的實現(xiàn)
在Java中,要實現(xiàn)熱部署,首先,你得明白,Java中類的加載方式。每一個應用程序的類都會被ClassLoader加載,所以,要實現(xiàn)一個支持熱部署的應用,我們可以對每一個用戶自定義的應用程序使用一個單獨的ClassLoader進行加載。然后,當某個用戶自定義的應用程序發(fā)生變化的時候,我們首先銷毀原來的應用,然后使用一個新的ClassLoader來加載改變之后的應用。而所有其他的應用程序不會受到一點干擾。
熱更新的思路:
定義一個用戶自定義應用程序的接口,這是因為,我們需要在容器應用中去加載用戶自定義的應用程序。
我們還需要一個配置文件,讓用戶去配置他們的應用程序。
應用啟動的時候,加載所有已有的用戶自定義應用程序。
為了支持熱部署,我們需要一個監(jiān)聽器,來監(jiān)聽應用發(fā)布目錄中每個文件的變動。這樣,當某個應用重新部署之后,我們就可以得到通知,進而進行熱部署處理。
景安河南最大的多線服務器托管商,提供專業(yè)的雙機熱備、負載均衡等高可用/高并發(fā)服務!
代碼修改了不是要解析(或者編譯)嗎,生成.class文件啊,然后不是要拷貝到容器目錄下嗎(所謂發(fā)布程序),
很久很久以前,程序員修改了代碼,發(fā)布class文件之后,服務器是要重新啟動的(相當費時間,于是喝杯咖啡啥的,java圖標...)。
現(xiàn)在很多服務器容器,不許要重啟了,修改的class文件直接可以生效。所謂"熱加載"。
有了總體實現(xiàn)思路之后,我們可以想到如下幾個需要完成的目標:
1、定義一個用戶自定義應用程序的接口,這是因為,我們需要在容器應用中去加載用戶自定義的應用程序。
2、我們還需要一個配置文件,讓用戶去配置他們的應用程序。
3、應用啟動的時候,加載所有已有的用戶自定義應用程序。
4、為了支持熱部署,我們需要一個監(jiān)聽器,來監(jiān)聽應用發(fā)布目錄中每個文件的變動。這樣,當某個應用重新部署之后,我們就可以得到通知,進而進行熱部署處理。