新四季網

Spring應用服務的升級方法和存儲介質與流程

2023-11-10 16:45:18


本發明涉及數據處理領域,更為具體而言,涉及一種spring應用服務的升級方法和計算機可讀存儲介質。



背景技術:

在相關技術中,常用的升級spring應用服務的做法是重啟伺服器。具體而言,重啟伺服器的升級方法可包括:停用java應用伺服器,部署升級的spring應用伺服器,啟動java伺服器,讓新部署的javabean生效。

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



技術實現要素:

為解決上述技術問題,本公開提供了一種spring應用服務的升級方法和計算機可讀存儲介質,能夠在不需要停止spring應用伺服器的情況下,升級spring應用服務,從而能夠讓不屬於本次升級範圍內正在運行的spring應用服務不受影響,顯著改善了升級效率。

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

在一些實施方式中,所述方法還包括:通過應用上下文管理器為所述jar文件創建上下文,以便將所創建的上下文與當前在用的上下文的類加載器綁定父子關係。

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

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

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

在一些實施方式中,所述方法還包括:當有應用需要更新時,調用更新jar文件服務接收上傳的更新的jar文件,jar文件服務接收完jar文件後,通知所述應用上下文管理器所述jar文件的更新請求。

根據本發明實施方式的第二方面,提供了一種計算機可讀存儲介質,其上存儲有電腦程式,所述程序被處理器執行時實現:通過應用上下文管理器接收jar文件的更新請求,判斷所述更新請求對應的jar文件的上下文是否存在,若所述jar文件的上下文不存在,則通知類加載器管理器所述更新請求,由所述類加載器管理器判斷所述更新請求對應的jar文件的類加載器是否存在,若所述jar文件的類加載器不存在,則由類加載器管理器為所述jar文件創建對應的自定義類加載器,並通知所述自定義類加載器加載所述jar文件中的類對象,所述自定義類加載器加載所述jar文件中的類對象,並與當前在用的上下文的類加載器綁定父子關係。

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

附圖說明

圖1是根據本發明一種實施方式的spring應用服務的升級方法的流程示意圖。

圖2是根據本發明一種實施方式的spring應用服務的升級方法的流程圖。

具體實施方式

以下結合附圖和具體實施方式對本發明的各個方面進行詳細闡述。其中,眾所周知的模塊、單元及其相互之間的連接、連結、通信或操作沒有示出或未作詳細說明。並且,所描述的特徵、架構或功能可在一個或一個以上實施方式中以任何方式組合。本領域技術人員應當理解,下述的各種實施方式只用於舉例說明,而非用於限制本發明的保護範圍。還可以容易理解,本文所述和附圖所示的各實施方式中的模塊或單元或處理方式可以按各種不同配置進行組合和設計。

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

java:java是由sunmicrosystems公司於1995年5月推出的java面向對象程序設計語言(以下簡稱java語言)和java平臺的總稱。用於開發internet應用程式。java由四方面組成:java程式語言、java文件格式、java虛擬機(jvm)、java應用程式接口(javaapi)。

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

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

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

jvm:jvm是javavirtualmachine(java虛擬機)的縮寫,jvm是一種用於計算設備的規範,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。jvm執行程序的過程:i.加載.class文件。ii.管理並分配內存。iii.執行垃圾收集。

classloader:classloader(類加載器)用來加載java類到jvm中。與普通程序不同的是java程序並不是本地的可執行程序。當運行java程序時,首先運行jvm,然後再把class類加載到jvm裡頭運行,負責加載javaclass的這部分就叫做classloader。

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

j2ee中間件:中間件是一類軟體名,屬基礎軟體和可復用軟體。總的作用是為處於自己上層的應用軟體提供運行與開發的環境幫助用戶開發和集成應用軟體。j2ee中間件特指java應用伺服器軟體,常見的產品化的java應用伺服器軟體有tomcat、weblogic、websphere等。

java應用伺服器:應用伺服器主要為應用程式提供運行環境,為組件提供服務。

java應用服務:部署在java應用伺服器中,並提供某種服務的java程序。

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

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

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

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

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

spring應用服務:部署在spring容器中,並提供某種服務的javabean程序

spring應用伺服器:指使用了spring框架的java應用伺服器。

本發明實施方式中描述的spring應用服務由一組javabean組成,這些javabean能夠實現特定的業務或技術規則,從而實現特定的業務服務。javabean需要部署在spring應用伺服器中。

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

參見圖1,圖1是根據本發明一種實施方式的spring應用服務的升級方法的流程示意圖,該升級方法可包括:

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

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

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

s104,由類加載器管理器為所述jar文件創建對應的自定義類加載器,並通知所述自定義類加載器加載所述jar文件中的類對象,

s105,通知該已存在的類加載器關閉,並釋放該存在的類加載器,

s106,自定義類加載器加載所述jar文件中的類對象,並與當前在用的上下文的類加載器綁定父子關係。

在本發明的實施方式中,步驟s101中由應用上下文管理器接收jar文件的更新請求,其中,該jar文件可以是通過更新jar文件伺服器上傳得到的需要更新的jar文件。當有spring應用需要更新時,調用jar文件伺服器接收技術人員上傳的更新的jar文件,更新jar文件服務接收完技術人員上傳的jar文件的更新文件之後,會通知應用上下文管理器有jar文件的更新。

步驟s101中,應用上下文管理器會接收更新jar文件服務發送的更新請求,判斷更新請求中對應的jar文件的上下文是否存在,如果存在,那麼說明本次更新的jar文件是對原有的jar文件的更新,那麼執行步驟s103,將該jar文件對應的上下文卸載;若不存在,那麼說明本次更新的jar文件是全新的jar文件的更新,那麼執行步驟s102,通知類加載器管理器jar文件的更新請求,由類加載器管理器判斷該更新請求對應的jar文件的類加載器是否存在,若jar文件的類加載器不存在,那麼說明,該jar文件是原來沒有對應的類加載器,則執行步驟s104,由類加載器管理器為該jar文件創建對應的自定義類加載器,並通知該自定義類加載器加載該jar文件中的類對象,若jar文件的類加載器存在,由於存在jar文件的類加載器,需要對其更新,則執行步驟s105,通知該已經存在的類加載器關閉,並釋放該已存在的類加載器。

在步驟s104中,類加載器管理器通知新創建的自定義類加載器加載更新的jar文件中的類對象,在步驟106中,自定義類加載器會根據類加載器管理器的通知加載jar文件中的類對象,並與當前在用的上下文的類加載器綁定父子關係。

在本發明的一些實施方式中,應用上下文管理器使用spring框架的filesystemxmlapplicationcontext類為jar文件創建一個對應的上下文為更新的jar文件創建一個對應的上下文,以便將jar文件新創建的上下文與系統當前在用的上下文的類加載器綁定父子關係。

在本發明的一些實施方式中,在將新創建的jar文件的上下文與系統當前在用的上下文的類加載器綁定父子關係之後,可以將系統的應用上下文的類加載器設置為步驟s104創建的自定義類加載器,並且可以通過刷新應用上下文,以便加載jar文件中的javabean。

在一些實施方式中,spring應用服務的升級方法可以如圖2所示。

(1)當操作員需要升級spring應用服務時,通過調用更新jar文件服務上傳jar文件。

(2)更新jar文件服務接收完更新的jar文件後,通知應用上下文管理器更新。

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

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

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

(6)自定義類加載器收到關閉請求後,卸載所對應的jar文件。

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

(8)自定義類加載器收到加載請求後,加載所指定的jar文件的類對象,並與當前在用的應用上下文的類加載器綁定父子關係。

(9)應用上下文管理器使用spring框架的filesystemxmlapplicationcontext類為jar文件創建一個對應的上下文,然後,與系統當前在用的應用上下文建立父子關係;設置應用上下文的類加載器為第(7)步所創建的類加載器;刷新應用上下文,用來加載jar文件中的javabean。

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

本發明實施方式提供的spring應用服務的升級方法,首先,能夠在多方協同開發的情形下,保證一方在升級自己開發的應用服務時,不影響其他各方所開發的spring應用服務,從而提高應用服務升級的效率,而且允許各方各自開發自己的javabean,並且能夠實時生效。其次,在升級spring應用服務的同時,不需要停止spring應用伺服器,能夠讓不屬於本次升級範圍內的、正在運行的spring應用服務不受影響,對於需要提供連續不間斷服務的情形而言,尤其適用。

本發明實施方式還提供了一種計算機可讀存儲介質,其上存儲有電腦程式,所述程序被處理器執行時可以實現:

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

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

若所述jar文件的類加載器不存在,則由類加載器管理器為所述jar文件創建對應的自定義類加載器,並通知所述自定義類加載器加載所述jar文件中的類對象,

所述自定義類加載器加載所述jar文件中的類對象,並與當前在用的上下文的類加載器綁定父子關係。

在一些實施方式中,所述程序被處理器執行時還實現:通過應用上下文管理器為所述jar文件創建上下文,以便將所創建的上下文與當前在用的上下文的類加載器綁定父子關係。

在一些實施方式中,所述程序被處理器執行時還實現:將所述自定義類加載器設置為應用上下文的類加載器,並刷新應用上下文,以便加載所述jar文件中的javabean。

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

在一些實施方式中,所述程序被處理器執行時還實現:在所述jar文件的類加載器存在的情況下,通知該已存在的類加載器關閉,並釋放該存在的類加載器。

在一些實施方式中,所述程序被處理器執行時還實現:當有應用需要更新時,接收上傳的更新的jar文件,並在jar文件服務接收完jar文件後,通知所述應用上下文管理器所述jar文件的更新請求。

通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發明可藉助軟體結合硬體平臺的方式來實現。基於這樣的理解,本發明的技術方案對背景技術做出貢獻的全部或者部分可以以軟體產品的形式體現出來,該計算機軟體產品可以存儲在存儲介質中,如rom/ram、磁碟、光碟等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,智慧型手機或者網絡設備等)執行本發明各個實施例或者實施例的某些部分所述的方法。

本發明說明書中使用的術語和措辭僅僅為了舉例說明,並不意味構成限定。本領域技術人員應當理解,在不脫離所公開的實施方式的基本原理的前提下,對上述實施方式中的各細節可進行各種變化。因此,本發明的範圍只由權利要求確定,在權利要求中,除非另有說明,所有的術語應按最寬泛合理的意思進行理解。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀