亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Spring應(yīng)用服務(wù)的升級方法和存儲介質(zhì)與流程

文檔序號:11216017閱讀:1106來源:國知局
Spring應(yīng)用服務(wù)的升級方法和存儲介質(zhì)與流程

本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更為具體而言,涉及一種spring應(yīng)用服務(wù)的升級方法和計算機可讀存儲介質(zhì)。



背景技術(shù):

在相關(guān)技術(shù)中,常用的升級spring應(yīng)用服務(wù)的做法是重啟服務(wù)器。具體而言,重啟服務(wù)器的升級方法可包括:停用java應(yīng)用服務(wù)器,部署升級的spring應(yīng)用服務(wù)器,啟動java服務(wù)器,讓新部署的javabean生效。

現(xiàn)有的升級重啟服務(wù)器的升級方法,存在不少缺點。例如,對于多家單位協(xié)同開發(fā)的情況,每家單位都有可能更換版本以解決測試問題。每天頻繁地重啟應(yīng)用服務(wù)器,會嚴重影響開發(fā)的測試進度和測試效果。而且,對于實時性要求較高的企業(yè)(例如,需要提供7*24小時不間斷服務(wù)的銀行)而言,更是會影響應(yīng)用服務(wù)器的時效性。而且,對于采用總分模式(例如,總行負責(zé)總體框架和公共業(yè)務(wù)模塊開發(fā),分行負責(zé)分行差異化模塊開發(fā))開發(fā)的企業(yè)而言,如果采用重啟服務(wù)器的方式部署新應(yīng)用,則需要等待統(tǒng)一的時間窗口進行版本上線,這種方式嚴重降低升級和開發(fā)效率。



技術(shù)實現(xiàn)要素:

為解決上述技術(shù)問題,本公開提供了一種spring應(yīng)用服務(wù)的升級方法和計算機可讀存儲介質(zhì),能夠在不需要停止spring應(yīng)用服務(wù)器的情況下,升級spring應(yīng)用服務(wù),從而能夠讓不屬于本次升級范圍內(nèi)正在運行的spring應(yīng)用服務(wù)不受影響,顯著改善了升級效率。

根據(jù)本發(fā)明實施方式的第一方面,提供了一種spring應(yīng)用服務(wù)的升級方法,該方法可包括:通過應(yīng)用上下文管理器接收jar文件的更新請求,判斷所述更新請求對應(yīng)的jar文件的上下文是否存在,若所述jar文件的上下文不存在,則通知類加載器管理器所述更新請求,由所述類加載器管理器判斷所述更新請求對應(yīng)的jar文件的類加載器是否存在,若所述jar文件的類加載器不存在,則由類加載器管理器為所述jar文件創(chuàng)建對應(yīng)的自定義類加載器,并通知所述自定義類加載器加載所述jar文件中的類對象,所述自定義類加載器加載所述jar文件中的類對象,并與當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

在一些實施方式中,所述方法還包括:通過應(yīng)用上下文管理器為所述jar文件創(chuàng)建上下文,以便將所創(chuàng)建的上下文與當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

在一些實施方式中,所述方法還包括:將所述自定義類加載器設(shè)置為應(yīng)用上下文的類加載器,并刷新應(yīng)用上下文,以便加載所述jar文件中的javabean。

在一些實施方式中,所述方法還包括:若所述jar文件的上下文存在,則卸載所述jar文件的上下文。

在一些實施方式中,所述方法還包括:若所述jar文件的類加載器存在,則通知該已存在的類加載器關(guān)閉,并釋放該存在的類加載器。

在一些實施方式中,所述方法還包括:當(dāng)有應(yīng)用需要更新時,調(diào)用更新jar文件服務(wù)接收上傳的更新的jar文件,jar文件服務(wù)接收完jar文件后,通知所述應(yīng)用上下文管理器所述jar文件的更新請求。

根據(jù)本發(fā)明實施方式的第二方面,提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述程序被處理器執(zhí)行時實現(xiàn):通過應(yīng)用上下文管理器接收jar文件的更新請求,判斷所述更新請求對應(yīng)的jar文件的上下文是否存在,若所述jar文件的上下文不存在,則通知類加載器管理器所述更新請求,由所述類加載器管理器判斷所述更新請求對應(yīng)的jar文件的類加載器是否存在,若所述jar文件的類加載器不存在,則由類加載器管理器為所述jar文件創(chuàng)建對應(yīng)的自定義類加載器,并通知所述自定義類加載器加載所述jar文件中的類對象,所述自定義類加載器加載所述jar文件中的類對象,并與當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

實施本發(fā)明實施方式提供的spring應(yīng)用服務(wù)的升級方法和計算機可讀存儲介質(zhì),能夠在不停用應(yīng)用服務(wù)器的情況下,保證spring應(yīng)用服務(wù)的更新升級,與現(xiàn)有的停用服務(wù)器升級的方式相比,能夠不影響不屬于本次升級范圍內(nèi)、正在運行的spring應(yīng)用服務(wù),顯著提高spring應(yīng)用服務(wù)升級的效率;而且,由于不影響不屬于本次升級范圍內(nèi)、正在運行的spring應(yīng)用服務(wù),也就是說,不會影響協(xié)同開發(fā)的其他開發(fā)方的測試操作,允許各方各自開發(fā)自己的javabean并實時生效,在多方協(xié)同開發(fā)的情形下,能夠從整體上會改善開發(fā)和測試的效率。

附圖說明

圖1是根據(jù)本發(fā)明一種實施方式的spring應(yīng)用服務(wù)的升級方法的流程示意圖。

圖2是根據(jù)本發(fā)明一種實施方式的spring應(yīng)用服務(wù)的升級方法的流程圖。

具體實施方式

以下結(jié)合附圖和具體實施方式對本發(fā)明的各個方面進行詳細闡述。其中,眾所周知的模塊、單元及其相互之間的連接、鏈接、通信或操作沒有示出或未作詳細說明。并且,所描述的特征、架構(gòu)或功能可在一個或一個以上實施方式中以任何方式組合。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,下述的各種實施方式只用于舉例說明,而非用于限制本發(fā)明的保護范圍。還可以容易理解,本文所述和附圖所示的各實施方式中的模塊或單元或處理方式可以按各種不同配置進行組合和設(shè)計。

下面對本發(fā)明實施方式描述中用到的術(shù)語進行簡要說明,需要說明的是,雖然此處對術(shù)語進行了解釋,但不應(yīng)理解為,這些解釋是對這些術(shù)語的限制。

java:java是由sunmicrosystems公司于1995年5月推出的java面向?qū)ο蟪绦蛟O(shè)計語言(以下簡稱java語言)和java平臺的總稱。用于開發(fā)internet應(yīng)用程序。java由四方面組成:java編程語言、java文件格式、java虛擬機(jvm)、java應(yīng)用程序接口(javaapi)。

java程序:由java源碼(后綴為.java的文件)編譯出來的java字節(jié)碼(后綴為.class的文件)。

class:中文名稱:類對象。在java中,每個class都有一個相應(yīng)的class對象。也就是說,當(dāng)我們編寫一個類(java源碼),編譯完成后,在生成的.class文件中,就會產(chǎn)生一個class對象,用于表示這個類的類型信息。

java歸檔文件:java歸檔文件有jar(javaarchive中文名稱為jar歸檔文件)、war(webapplicationarchive中文名稱為web應(yīng)用歸檔文件)、ear(enterprisearchive中文名稱為企業(yè)級歸檔文件)等幾種類型,java歸檔文件格式以流行的zip文件格式為基礎(chǔ),文件名后綴為.jar、.war或.ear。java歸檔文件不僅用于壓縮和發(fā)布,而且還用于部署和封裝庫、組件和插件程序。將一個或多個.class文件或其它類型文件(可包含目錄結(jié)構(gòu))可壓縮為一個java歸檔文件。

jvm:jvm是javavirtualmachine(java虛擬機)的縮寫,jvm是一種用于計算設(shè)備的規(guī)范,它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。jvm執(zhí)行程序的過程:i.加載.class文件。ii.管理并分配內(nèi)存。iii.執(zhí)行垃圾收集。

classloader:classloader(類加載器)用來加載java類到j(luò)vm中。與普通程序不同的是java程序并不是本地的可執(zhí)行程序。當(dāng)運行java程序時,首先運行jvm,然后再把class類加載到j(luò)vm里頭運行,負責(zé)加載javaclass的這部分就叫做classloader。

classpath:類路徑。是jvm所需的環(huán)境變量,用于告訴jvm從哪些目錄下或者從哪些jar文件中可以找到所要執(zhí)行的java程序。

j2ee中間件:中間件是一類軟件名,屬基礎(chǔ)軟件和可復(fù)用軟件。總的作用是為處于自己上層的應(yīng)用軟件提供運行與開發(fā)的環(huán)境幫助用戶開發(fā)和集成應(yīng)用軟件。j2ee中間件特指java應(yīng)用服務(wù)器軟件,常見的產(chǎn)品化的java應(yīng)用服務(wù)器軟件有tomcat、weblogic、websphere等。

java應(yīng)用服務(wù)器:應(yīng)用服務(wù)器主要為應(yīng)用程序提供運行環(huán)境,為組件提供服務(wù)。

java應(yīng)用服務(wù):部署在java應(yīng)用服務(wù)器中,并提供某種服務(wù)的java程序。

javabean:一種java語言寫成的可重用組件,本質(zhì)上是一個java類對象,滿足如下兩個條件:(1)具備無參數(shù)構(gòu)造函數(shù);(2)為成員編寫了set、get方法。

spring框架:spring是一個開源框架,它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。spring使用基本的javabean來完成以前只可能由ejb(enterprisejavabean)完成的事情。spring框架由七個定義明確的模塊組成,本文涉及的是spring-core與spring-context。

spring-core:spring核心容器是spring框架最基礎(chǔ)的部分,它提供了依賴注入(dependencyinjection)特征來實現(xiàn)容器對bean的管理。

beanfactory:bean工廠。beanfactory是spring應(yīng)用的核心,是工廠模式的一個實現(xiàn),它使用ioc將應(yīng)用配置和依賴說明從實際的應(yīng)用代碼中分離出來。

spring-context:應(yīng)用上下文模塊。核心模塊的beanfactory使spring成為一個容器,而應(yīng)用上下文模塊使它成為一個框架。這個模塊擴展了beanfactory的概念,增加了對國際化(i18n)消息、事件傳播以及驗證的支持。

spring應(yīng)用服務(wù):部署在spring容器中,并提供某種服務(wù)的javabean程序

spring應(yīng)用服務(wù)器:指使用了spring框架的java應(yīng)用服務(wù)器。

本發(fā)明實施方式中描述的spring應(yīng)用服務(wù)由一組javabean組成,這些javabean能夠?qū)崿F(xiàn)特定的業(yè)務(wù)或技術(shù)規(guī)則,從而實現(xiàn)特定的業(yè)務(wù)服務(wù)。javabean需要部署在spring應(yīng)用服務(wù)器中。

啟動spring應(yīng)用服務(wù)器時,由java虛擬機的java類加載器從類路徑中加載j2ee中間件軟件以及spring框架,再由spring框架中的應(yīng)用上下文既在用戶開發(fā)的javabean以及開發(fā)所引用的第三方(java程序)等。其中,第三方(java程序)一般為jar格式的java歸檔文件。用戶開發(fā)的javabean一般為壓縮為一個或多個java歸檔文件。升級spring應(yīng)用服務(wù),需要把用戶開發(fā)的javabean以及第三方(java程序)保存到j(luò)ava應(yīng)用服務(wù)器的java虛擬機能夠識別出的類路徑下。升級操作會修改類路徑下的java程序,需要重新啟動java虛擬機,以保證java類記載其能夠重新加載java程序,讓升級生效。

參見圖1,圖1是根據(jù)本發(fā)明一種實施方式的spring應(yīng)用服務(wù)的升級方法的流程示意圖,該升級方法可包括:

s101,通過應(yīng)用上下文管理器接收jar文件的更新請求,判斷所述更新請求對應(yīng)的jar文件的上下文是否存在,若jar文件的上下文不存在,則執(zhí)行步驟s102,若jar文件的上下文存在,則執(zhí)行步驟s103,

s102,通知類加載器管理器所述更新請求,由所述類加載器管理器判斷所述更新請求對應(yīng)的jar文件的類加載器是否存在,若jar文件的類加載器不存在,則執(zhí)行步驟s104,若jar文件的類加載器存在,則執(zhí)行步驟s105,

s103,卸載所述jar文件的上下文,

s104,由類加載器管理器為所述jar文件創(chuàng)建對應(yīng)的自定義類加載器,并通知所述自定義類加載器加載所述jar文件中的類對象,

s105,通知該已存在的類加載器關(guān)閉,并釋放該存在的類加載器,

s106,自定義類加載器加載所述jar文件中的類對象,并與當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

在本發(fā)明的實施方式中,步驟s101中由應(yīng)用上下文管理器接收jar文件的更新請求,其中,該jar文件可以是通過更新jar文件服務(wù)器上傳得到的需要更新的jar文件。當(dāng)有spring應(yīng)用需要更新時,調(diào)用jar文件服務(wù)器接收技術(shù)人員上傳的更新的jar文件,更新jar文件服務(wù)接收完技術(shù)人員上傳的jar文件的更新文件之后,會通知應(yīng)用上下文管理器有jar文件的更新。

步驟s101中,應(yīng)用上下文管理器會接收更新jar文件服務(wù)發(fā)送的更新請求,判斷更新請求中對應(yīng)的jar文件的上下文是否存在,如果存在,那么說明本次更新的jar文件是對原有的jar文件的更新,那么執(zhí)行步驟s103,將該jar文件對應(yīng)的上下文卸載;若不存在,那么說明本次更新的jar文件是全新的jar文件的更新,那么執(zhí)行步驟s102,通知類加載器管理器jar文件的更新請求,由類加載器管理器判斷該更新請求對應(yīng)的jar文件的類加載器是否存在,若jar文件的類加載器不存在,那么說明,該jar文件是原來沒有對應(yīng)的類加載器,則執(zhí)行步驟s104,由類加載器管理器為該jar文件創(chuàng)建對應(yīng)的自定義類加載器,并通知該自定義類加載器加載該jar文件中的類對象,若jar文件的類加載器存在,由于存在jar文件的類加載器,需要對其更新,則執(zhí)行步驟s105,通知該已經(jīng)存在的類加載器關(guān)閉,并釋放該已存在的類加載器。

在步驟s104中,類加載器管理器通知新創(chuàng)建的自定義類加載器加載更新的jar文件中的類對象,在步驟106中,自定義類加載器會根據(jù)類加載器管理器的通知加載jar文件中的類對象,并與當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

在本發(fā)明的一些實施方式中,應(yīng)用上下文管理器使用spring框架的filesystemxmlapplicationcontext類為jar文件創(chuàng)建一個對應(yīng)的上下文為更新的jar文件創(chuàng)建一個對應(yīng)的上下文,以便將jar文件新創(chuàng)建的上下文與系統(tǒng)當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

在本發(fā)明的一些實施方式中,在將新創(chuàng)建的jar文件的上下文與系統(tǒng)當(dāng)前在用的上下文的類加載器綁定父子關(guān)系之后,可以將系統(tǒng)的應(yīng)用上下文的類加載器設(shè)置為步驟s104創(chuàng)建的自定義類加載器,并且可以通過刷新應(yīng)用上下文,以便加載jar文件中的javabean。

在一些實施方式中,spring應(yīng)用服務(wù)的升級方法可以如圖2所示。

(1)當(dāng)操作員需要升級spring應(yīng)用服務(wù)時,通過調(diào)用更新jar文件服務(wù)上傳jar文件。

(2)更新jar文件服務(wù)接收完更新的jar文件后,通知應(yīng)用上下文管理器更新。

(3)應(yīng)用上下文管理器收到更新請求后,首先判斷jar文件對應(yīng)的上下文是否存在,如果存在,則卸載該jar文件對應(yīng)的上下文。

(4)如果不存在該jar文件的上下文,則應(yīng)用上下文管理器通知類加載器管理器更新。

(5)類加載器管理器收到更新請求后,首先判斷請求更新的jar文件所對應(yīng)的自定義類加載器是否存在,如果存在,則通知該類加載器關(guān)閉,然后釋放該類加載器。

(6)自定義類加載器收到關(guān)閉請求后,卸載所對應(yīng)的jar文件。

(7)如果不存在,則類加載器管理器為jar文件創(chuàng)建一個對應(yīng)的自定義類加載器,并通知該類加載器加載jar文件中的類對象。

(8)自定義類加載器收到加載請求后,加載所指定的jar文件的類對象,并與當(dāng)前在用的應(yīng)用上下文的類加載器綁定父子關(guān)系。

(9)應(yīng)用上下文管理器使用spring框架的filesystemxmlapplicationcontext類為jar文件創(chuàng)建一個對應(yīng)的上下文,然后,與系統(tǒng)當(dāng)前在用的應(yīng)用上下文建立父子關(guān)系;設(shè)置應(yīng)用上下文的類加載器為第(7)步所創(chuàng)建的類加載器;刷新應(yīng)用上下文,用來加載jar文件中的javabean。

當(dāng)java程序需升級jar歸檔文件中的某個javabean時,該java程序調(diào)用應(yīng)用上下文管理器的獲取javabean方法。應(yīng)用上下文管理器收到請求后,首先判斷jar文件對應(yīng)的上下文是否存在,如果不存在,則調(diào)用更新方法(上面描述的(3)-(9))為jar文件創(chuàng)建一個上下文。應(yīng)用上下文管理器找到對應(yīng)的上下文后,調(diào)用該上下文的getbean方法,并返回調(diào)用所得的javabean。

本發(fā)明實施方式提供的spring應(yīng)用服務(wù)的升級方法,首先,能夠在多方協(xié)同開發(fā)的情形下,保證一方在升級自己開發(fā)的應(yīng)用服務(wù)時,不影響其他各方所開發(fā)的spring應(yīng)用服務(wù),從而提高應(yīng)用服務(wù)升級的效率,而且允許各方各自開發(fā)自己的javabean,并且能夠?qū)崟r生效。其次,在升級spring應(yīng)用服務(wù)的同時,不需要停止spring應(yīng)用服務(wù)器,能夠讓不屬于本次升級范圍內(nèi)的、正在運行的spring應(yīng)用服務(wù)不受影響,對于需要提供連續(xù)不間斷服務(wù)的情形而言,尤其適用。

本發(fā)明實施方式還提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,所述程序被處理器執(zhí)行時可以實現(xiàn):

通過應(yīng)用上下文管理器接收jar文件的更新請求,判斷所述更新請求對應(yīng)的jar文件的上下文是否存在,

若所述jar文件的上下文不存在,則通知類加載器管理器所述更新請求,由所述類加載器管理器判斷所述更新請求對應(yīng)的jar文件的類加載器是否存在,

若所述jar文件的類加載器不存在,則由類加載器管理器為所述jar文件創(chuàng)建對應(yīng)的自定義類加載器,并通知所述自定義類加載器加載所述jar文件中的類對象,

所述自定義類加載器加載所述jar文件中的類對象,并與當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

在一些實施方式中,所述程序被處理器執(zhí)行時還實現(xiàn):通過應(yīng)用上下文管理器為所述jar文件創(chuàng)建上下文,以便將所創(chuàng)建的上下文與當(dāng)前在用的上下文的類加載器綁定父子關(guān)系。

在一些實施方式中,所述程序被處理器執(zhí)行時還實現(xiàn):將所述自定義類加載器設(shè)置為應(yīng)用上下文的類加載器,并刷新應(yīng)用上下文,以便加載所述jar文件中的javabean。

在一些實施方式中,所述程序被處理器執(zhí)行時還實現(xiàn):在所述jar文件的上下文存在的情況下,卸載所述jar文件的上下文。

在一些實施方式中,所述程序被處理器執(zhí)行時還實現(xiàn):在所述jar文件的類加載器存在的情況下,通知該已存在的類加載器關(guān)閉,并釋放該存在的類加載器。

在一些實施方式中,所述程序被處理器執(zhí)行時還實現(xiàn):當(dāng)有應(yīng)用需要更新時,接收上傳的更新的jar文件,并在jar文件服務(wù)接收完jar文件后,通知所述應(yīng)用上下文管理器所述jar文件的更新請求。

通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件結(jié)合硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案對背景技術(shù)做出貢獻的全部或者部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,智能手機或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。

本發(fā)明說明書中使用的術(shù)語和措辭僅僅為了舉例說明,并不意味構(gòu)成限定。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在不脫離所公開的實施方式的基本原理的前提下,對上述實施方式中的各細節(jié)可進行各種變化。因此,本發(fā)明的范圍只由權(quán)利要求確定,在權(quán)利要求中,除非另有說明,所有的術(shù)語應(yīng)按最寬泛合理的意思進行理解。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1