專利名稱:一種動(dòng)態(tài)加載系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種動(dòng)態(tài)加載系統(tǒng)和方法,尤其是涉及一種用于實(shí)現(xiàn)在線系統(tǒng)的程序 動(dòng)態(tài)加載的系統(tǒng)和方法。
背景技術(shù):
在生產(chǎn)系統(tǒng)上線后,經(jīng)常出現(xiàn)部分功能模塊進(jìn)行變更調(diào)整。當(dāng)前主要采用Mruts 2這種文件上傳技術(shù)來解決如何升級(jí)相應(yīng)程序的問題。Struts 2 ^ Commons FileUpload f 牛±#。 Commons FileUpload
HTTP的數(shù)據(jù)保存到臨時(shí)文件夾,然后Mruts使用fiIeUpload攔截器將文件綁定到Action 的實(shí)例中。從而我們就能夠以本地文件方式的操作瀏覽器上傳的文件。當(dāng)時(shí)當(dāng)前這種升級(jí)時(shí)主要采用暫停在線系統(tǒng)服務(wù),待升級(jí)成功后,再啟動(dòng)系統(tǒng)服 務(wù),此種方式的缺點(diǎn)是在升級(jí)的過程中,會(huì)對(duì)現(xiàn)有業(yè)務(wù)造成一定的影響。
發(fā)明內(nèi)容
本發(fā)明是鑒于上述技術(shù)問題而產(chǎn)生的。本發(fā)明的一個(gè)目的是提出一種動(dòng)態(tài)加載系 統(tǒng)和方法。在一個(gè)方面中,根據(jù)本發(fā)明的動(dòng)態(tài)加載系統(tǒng)包括包生成模塊,用于將要加載的程 序進(jìn)行打包;文件上傳模塊,用于將已打包的文件上傳至虛擬機(jī)的緩存;動(dòng)態(tài)加載模塊,用 于在虛擬機(jī)需要調(diào)用該接口程序時(shí)將已打包的文件從虛擬機(jī)的緩存加載到內(nèi)存以運(yùn)行。在這個(gè)方面中,其中動(dòng)態(tài)加載模塊采用雙親委托模型。在這個(gè)方面中,其中動(dòng)態(tài)加載模塊進(jìn)一步包括系統(tǒng)類加載器、2類加載器、以及1 類加載器,其中2類加載器的parent為1類加載器,而1類加載器的parent為系統(tǒng)類加載
ο在這個(gè)方面中,其中當(dāng)虛擬機(jī)需要將打包文件從虛擬機(jī)的緩存加載到內(nèi)存時(shí),則 首先要求2類加載器加載,2類加載器則請(qǐng)求1類加載器代為加載,而1類加載器再請(qǐng)求系 統(tǒng)類加載器去加載打包文件。在這個(gè)方面中,其中若系統(tǒng)類加載器沒有成功加載打包文件,則1類加載器會(huì)嘗 試加載該打包文件,若1類加載器也不能成功加載,則2類加載器嘗試裝載。在另一個(gè)方面中,根據(jù)本發(fā)明的動(dòng)態(tài)加載方法包括步驟:A、包生成模塊將要加載 的程序進(jìn)行打包;B、文件上傳模塊將已打包的文件上傳至虛擬機(jī)的緩存;以及C、動(dòng)態(tài)加載 模塊在虛擬機(jī)需要調(diào)用該接口程序時(shí)將已打包的文件從虛擬機(jī)的緩存加載到內(nèi)存以運(yùn)行。在這個(gè)方面中,其中步驟C進(jìn)一步包括首先要求2類加載器加載,2類加載器則 請(qǐng)求1類加載器代為加載,而1類加載器再請(qǐng)求系統(tǒng)類加載器去加載打包文件。在這個(gè)方面中,其中步驟C進(jìn)一步包括若系統(tǒng)類加載器沒有成功加載打包文件, 則1類加載器會(huì)嘗試加載該打包文件,若1類加載器也不能成功加載,則2類加載器嘗試裝 載。
通過本發(fā)明,在不停止現(xiàn)有生產(chǎn)系統(tǒng)的情況下,實(shí)現(xiàn)對(duì)部分功能模塊等的動(dòng)態(tài)部
1W ο
結(jié)合隨后的附圖,從下面的詳細(xì)說明中可顯而易見的得出本發(fā)明的上述及其他目 的、特征及優(yōu)點(diǎn)。在附圖中圖1示出了根據(jù)本發(fā)明的動(dòng)態(tài)加載系統(tǒng)的方框圖;圖2示出了根據(jù)本發(fā)明的動(dòng)態(tài)加載模塊的方框圖;圖3示出了根據(jù)本發(fā)明的動(dòng)態(tài)加載方法的流程圖;圖4示出了根據(jù)本發(fā)明的動(dòng)態(tài)加載方法的子流程具體實(shí)施例方式為了更全面地理解本發(fā)明及其優(yōu)點(diǎn),下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明做進(jìn)一 步詳細(xì)地說明。首先,參考圖1,對(duì)根據(jù)本發(fā)明的動(dòng)態(tài)加載系統(tǒng)進(jìn)行詳細(xì)地描述。當(dāng)虛擬機(jī)根據(jù)需要而增加新的功能時(shí),通過本發(fā)明,將開發(fā)完成的接口功能程序 加載到該虛擬機(jī)。如圖1所示,根據(jù)本發(fā)明的動(dòng)態(tài)加載系統(tǒng)包括包生成模塊、文件上傳模塊、以及 動(dòng)態(tài)加載模塊。包生成模塊用于將要加載的程序(接口和/或應(yīng)用程序)進(jìn)行打包。例如,將用 戶java語言編寫完成的接口程序,通過已知的Eclipse的導(dǎo)出工具或ant生成工具將接口 程序?qū)?yīng)的.class文件打成一個(gè)jar包文件,其中.class文件包括Class對(duì)象,而Class 對(duì)象具有字段reference。這對(duì)于本領(lǐng)域普通技術(shù)人員來說是公知技術(shù)。另外,應(yīng)該注意的 是可將一個(gè)或多個(gè)程序打成一個(gè)jar包文件。文件上傳模塊用于將已打包的文件上傳至虛擬機(jī)的緩存。動(dòng)態(tài)加載模塊用于在虛擬機(jī)需要調(diào)用該接口程序時(shí)將已打包的文件從虛擬機(jī)的 緩存加載到內(nèi)存以運(yùn)行。動(dòng)態(tài)加載模塊采用雙親委托(patent delegation)模型。具體地說,圖2示出了 根據(jù)本發(fā)明的動(dòng)態(tài)加載模塊的方框圖。如圖2所示,根據(jù)本發(fā)明的動(dòng)態(tài)加載模塊包括系統(tǒng)類加載器、2類加載器、以及1 類加載器。2類加載器的parent為1類加載器,而1類加載器的parent為系統(tǒng)類加載器。當(dāng)虛擬機(jī)需要將打包文件從虛擬機(jī)的緩存加載到內(nèi)存時(shí),則首先要求2類加載器 加載。在雙親委托模型下,2類加載器首先請(qǐng)求1類加載器代為加載,而1類加載器再請(qǐng)求 系統(tǒng)類加載器去加載打包文件。優(yōu)選地,若系統(tǒng)類加載器成功加載,則將該打包文件所對(duì)應(yīng) 的class對(duì)象的reference返回給1類加載器。此時(shí),1類加載器再將reference返回給2 類加載器,從而成功將打包文件加載到虛擬機(jī)。若系統(tǒng)類加載器沒有成功加載打包文件,則1類加載器會(huì)嘗試加載該打包文件, 若1類加載器也不能成功加載,則2類加載器嘗試裝載。
此外,優(yōu)選地,根據(jù)本發(fā)明的程序動(dòng)態(tài)加載系統(tǒng)還包括加載器實(shí)例創(chuàng)建單元和緩 沖存儲(chǔ)器單元。加載器實(shí)例創(chuàng)建單元用于為第一次上傳的每個(gè)打包文件創(chuàng)建加載器實(shí)例。緩沖存儲(chǔ)器單元用于存儲(chǔ)所創(chuàng)建的加載器實(shí)例,并且記錄該加載器實(shí)例與已加載 到虛擬機(jī)內(nèi)存中的打包文件的對(duì)應(yīng)關(guān)系。因此,在以后加載該打包文件時(shí),根據(jù)此對(duì)應(yīng)關(guān)系直接在虛擬機(jī)內(nèi)存中找到與該 加載器實(shí)例相對(duì)應(yīng)的打包文件即可,從而實(shí)現(xiàn)快速加載的過程。下面參考圖3,對(duì)根據(jù)本發(fā)明的動(dòng)態(tài)加載方法進(jìn)行詳細(xì)地說明。如圖3所示,根據(jù)本發(fā)明的動(dòng)態(tài)加載方法包括步驟301 包生成模塊將要加載的程序(接口和/或應(yīng)用程序)進(jìn)行打包。例如,將用戶java語言編寫完成的接口程序,通過已知的Eclipse的導(dǎo)出工具或 ant生成工具將接口程序?qū)?yīng)的.class文件打成一個(gè)jar包文件,其中.class文件包括 Class對(duì)象,而Class對(duì)象具有字段reference。這對(duì)于本領(lǐng)域普通技術(shù)人員來說是公知技 術(shù)。另外,應(yīng)該注意的是可將一個(gè)或多個(gè)程序打成一個(gè)jar包文件。步驟302 文件上傳模塊將已打包的文件上傳至虛擬機(jī)的緩存。步驟303 動(dòng)態(tài)加載模塊在虛擬機(jī)需要調(diào)用該接口程序時(shí)將已打包的文件從虛擬 機(jī)的緩存加載到內(nèi)存以運(yùn)行。具體地說,如圖4所示,該步驟進(jìn)一步包括首先要求2類加載器加載。在雙親委托模型下,2類加載器首先請(qǐng)求1類加載器代 為加載,而1類加載器再請(qǐng)求系統(tǒng)類加載器去加載打包文件。若系統(tǒng)類加載器沒有成功加載打包文件,則1類加載器會(huì)嘗試加載該打包文件, 若1類加載器也不能成功加載,則2類加載器嘗試裝載。此外,優(yōu)選地,該方法進(jìn)一步包括加載器實(shí)例創(chuàng)建單元為第一次上傳的每個(gè)打包 文件創(chuàng)建加載器實(shí)例,并且緩沖存儲(chǔ)器單元存儲(chǔ)所創(chuàng)建的加載器實(shí)例,并且記錄該加載器 實(shí)例與已加載到虛擬機(jī)內(nèi)存中的打包文件的對(duì)應(yīng)關(guān)系。通過本發(fā)明可知,本發(fā)明主要實(shí)現(xiàn)接口程序的動(dòng)態(tài)部署功能。將一個(gè)接口程序打 成一個(gè)jar包,通過網(wǎng)頁上傳至服務(wù)器目錄,再動(dòng)態(tài)加載至內(nèi)存及類路徑。不用重啟應(yīng)用程 序,即可以使用該接口程序,極大方便了接口的部署。此外,對(duì)于本領(lǐng)域的普通技術(shù)人員來說可顯而易見的得出其他優(yōu)點(diǎn)和修改。因此, 具有更廣方面的本發(fā)明并不局限于這里所示出的并且所描述的具體說明及示例性實(shí)施例。 因此,在不脫離由隨后權(quán)利要求及其等價(jià)體所定義的一般發(fā)明構(gòu)思的精神和范圍的情況 下,可對(duì)其做出各種修改。
權(quán)利要求
1.一種動(dòng)態(tài)加載系統(tǒng)包括包生成模塊,用于將要加載的程序進(jìn)行打包;文件上傳模塊,用于將已打包的文件上傳至虛擬機(jī)的緩存;動(dòng)態(tài)加載模塊,用于在虛擬機(jī)需要調(diào)用該接口程序時(shí)將已打包的文件從虛擬機(jī)的緩存 加載到內(nèi)存以運(yùn)行。
2.根據(jù)權(quán)利要求1的動(dòng)態(tài)加載系統(tǒng),其中動(dòng)態(tài)加載模塊采用雙親委托模型。
3.根據(jù)權(quán)利要求2的動(dòng)態(tài)加載系統(tǒng),其中動(dòng)態(tài)加載模塊進(jìn)一步包括系統(tǒng)類加載器、 2類加載器、以及1類加載器,其中2類加載器的parent為1類加載器,而1類加載器的 parent為系統(tǒng)類加載器。
4.根據(jù)權(quán)利要求3的動(dòng)態(tài)加載系統(tǒng),其中當(dāng)虛擬機(jī)需要將打包文件從虛擬機(jī)的緩存加 載到內(nèi)存時(shí),則首先要求2類加載器加載,2類加載器則請(qǐng)求1類加載器代為加載,而1類加 載器再請(qǐng)求系統(tǒng)類加載器去加載打包文件。
5.根據(jù)權(quán)利要求4的動(dòng)態(tài)加載系統(tǒng),其中若系統(tǒng)類加載器沒有成功加載打包文件,則1 類加載器會(huì)嘗試加載該打包文件,若1類加載器也不能成功加載,則2類加載器嘗試裝載。
6.一種動(dòng)態(tài)加載方法包括步驟A、包生成模塊將要加載的程序進(jìn)行打包;B、文件上傳模塊將已打包的文件上傳至虛擬機(jī)的緩存;以及C、動(dòng)態(tài)加載模塊在虛擬機(jī)需要調(diào)用該接口程序時(shí)將已打包的文件從虛擬機(jī)的緩存加 載到內(nèi)存以運(yùn)行。
7.根據(jù)權(quán)利要求6的方法,其中步驟C進(jìn)一步包括首先要求2類加載器加載,2類加 載器則請(qǐng)求1類加載器代為加載,而1類加載器再請(qǐng)求系統(tǒng)類加載器去加載打包文件。
8.根據(jù)權(quán)利要求7的方法,其中步驟C進(jìn)一步包括若系統(tǒng)類加載器沒有成功加載打 包文件,則1類加載器會(huì)嘗試加載該打包文件,若1類加載器也不能成功加載,則2類加載器嘗試裝載。
全文摘要
一種動(dòng)態(tài)加載系統(tǒng)和方法,其中該動(dòng)態(tài)加載系統(tǒng)包括包生成模塊,用于將要加載的程序進(jìn)行打包;文件上傳模塊,用于將已打包的文件上傳至虛擬機(jī)的緩存。動(dòng)態(tài)加載模塊,用于在虛擬機(jī)需要調(diào)用該接口程序時(shí)將已打包的文件從虛擬機(jī)的緩存加載到內(nèi)存以運(yùn)行,其中動(dòng)態(tài)加載模塊進(jìn)一步包括系統(tǒng)類加載器、2類加載器、以及1類加載器,其中2類加載器的parent為1類加載器,而1類加載器的parent為系統(tǒng)類加載器。通過本發(fā)明,實(shí)現(xiàn)了接口程序的動(dòng)態(tài)部署功能。
文檔編號(hào)H04L29/08GK102081523SQ20091015393
公開日2011年6月1日 申請(qǐng)日期2009年11月27日 優(yōu)先權(quán)日2009年11月27日
發(fā)明者胡小剛, 錢和良, 高鑫軍, 龔永興 申請(qǐng)人:浙江省公眾信息產(chǎn)業(yè)有限公司