本發(fā)明實施例涉及計算機組件開發(fā)技術領域,尤其涉及一種系統(tǒng)補丁的處理方法及裝置。
背景技術:
隨著計算機網(wǎng)絡的廣泛應用,各種應用系統(tǒng)被開發(fā)出來。對于已經(jīng)上線的系統(tǒng),經(jīng)常面臨著由于客戶提出的新需求或發(fā)現(xiàn)系統(tǒng)中的漏洞而導致系統(tǒng)需要升級的問題。
現(xiàn)有技術中,系統(tǒng)升級或修復問題組件時,需要停止系統(tǒng)的運行或者重新啟動系統(tǒng)才能完成對問題組件的修復或系統(tǒng)的升級,操作復雜。
技術實現(xiàn)要素:
本發(fā)明提供一種系統(tǒng)補丁的處理方法及裝置,以實現(xiàn)在不停止系統(tǒng)運行的情況下,將系統(tǒng)的補丁組件加載到系統(tǒng)里,達到更新問題組件或升級系統(tǒng)的目的。
第一方面,本發(fā)明實施例提供了一種系統(tǒng)補丁的處理方法,所述系統(tǒng)運行有預設類型組件,所述預設類型組件支持在系統(tǒng)運行時同步加載補丁組件,所述方法包括:
當觸發(fā)啟動目標補丁組件時,優(yōu)先加載所述目標補丁組件;
在加載所述目標補丁組件后,加載所述目標補丁組件的宿主組件。
進一步地,在所述優(yōu)先加載所述目標補丁組件之前,還包括:
根據(jù)所述宿主組件的名稱確定所述目標補丁組件的名稱;
相應的,所述優(yōu)先加載所述目標補丁組件,包括:
如果所述目標補丁組件的名稱和所述宿主組件的名稱滿足預設加載排序機制,則優(yōu)先加載所述目標補丁組件。
進一步地,所述根據(jù)所述宿主組件的名稱確定所述目標補丁組件的名稱,包括:
在所述目標補丁組件的宿主組件的名稱中添加預設字段,得到所述目標補丁組件的名稱。
進一步地,所述在所述目標補丁組件的宿主組件的名稱中添加預設字段,包括:
在宿主組件名稱的結尾處添加名稱修改日期;或者,
在宿主組件名稱的結尾處添加預設字符序列,使得所述目標補丁組件名稱的字母序大于所述宿主組件名稱的字母序。
進一步地,所述如果所述目標補丁組件的名稱和所述宿主組件的名稱滿足預設加載排序機制,則優(yōu)先加載所述目標補丁組件,包括:
對所述目標補丁組件的名稱和所述宿主組件的名稱進行排序,如果所述目標補丁組件名稱的字母序大于所述宿主組件名稱的字母序,則優(yōu)先加載所述目標補丁組件;或者,
如果所述目標補丁組件的名稱長度大于所述宿主組件的名稱長度,則優(yōu)先加載所述目標補丁組件。
第二方面,本發(fā)明實施例還提供了一種系統(tǒng)補丁的處理裝置,所述系統(tǒng)運行有預設類型組件,所述預設類型組件支持在系統(tǒng)運行時同步加載補丁組件,所述裝置包括:
目標補丁組件優(yōu)先加載模塊,用于當觸發(fā)啟動目標補丁組件時,優(yōu)先加載所述目標補丁組件;
宿主組件加載模塊,用于在加載所述目標補丁組件后,加載所述目標補丁組件的宿主組件。
進一步地,所述裝置,還包括:
名稱確定模塊,用于根據(jù)所述宿主組件的名稱確定所述目標補丁組件的名稱;
相應的,所述目標補丁組件優(yōu)先加載模塊,用于:
如果所述目標補丁組件的名稱和所述宿主組件的名稱滿足預設加載排序機制,則優(yōu)先加載所述目標補丁組件。
進一步地,所述名稱確定模塊,用于:
在所述目標補丁組件的宿主組件的名稱中添加預設字段,得到所述目標補丁組件的名稱。
進一步地,所述名稱確定模塊,用于:
在宿主組件名稱的結尾處添加名稱修改日期;或者,
在宿主組件名稱的結尾處添加預設字符序列,使得所述目標補丁組件名稱的字母序大于所述宿主組件名稱的字母序。
進一步地,所述目標補丁組件優(yōu)先加載模塊,用于:
對所述目標補丁組件的名稱和所述宿主組件的名稱進行排序,如果所述目標補丁組件名稱的字母序大于所述宿主組件名稱的字母序,則優(yōu)先加載所述目標補丁組件;或者,
如果所述目標補丁組件的名稱長度大于所述宿主組件的名稱長度,則優(yōu)先加載所述目標補丁組件。
本發(fā)明實施例提供一種系統(tǒng)補丁的處理方法及裝置,系統(tǒng)運行有預設類型組件,該預設類型組件支持在系統(tǒng)運行時同步加載補丁組件,當觸發(fā)啟動目標補丁組件時,優(yōu)先加載所述目標補丁組件,在加載所述目標補丁組件后,加載所述目標補丁組件的宿主組件?,F(xiàn)有技術需要停止系統(tǒng)后才能加載補丁,操作繁瑣。本發(fā)明實施例中由于系統(tǒng)運行有支持在系統(tǒng)運行時同步加載補丁組件的預設類型組件,因此可實現(xiàn)在不停止系統(tǒng)運行的情況下,加載補丁組件。通過有線加載目標補丁組件,實現(xiàn)在加載宿主組件之前加載目標補丁組件,進而避免系統(tǒng)有線加載宿主組件導致目標補丁組件加載失敗,達到更新問題組件或升級系統(tǒng)的目的。本發(fā)明實施例提供的技術方案能夠在系統(tǒng)運行的情況下優(yōu)先對目標補丁組件進行加載,簡化補丁操作。
附圖說明
圖1是本發(fā)明實施例一中的一種系統(tǒng)補丁的處理方法的流程圖;
圖2是本發(fā)明實施例二中的一種系統(tǒng)補丁的處理方法的流程圖;
圖3是本發(fā)明實施例三中的一種系統(tǒng)補丁的處理方法的結構示意圖。
具體實施方式
下面結合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關的部分而非全部結構。
實施例一
圖1為本發(fā)明實施例一提供的一種系統(tǒng)補丁的處理方法的流程圖,本實施例可適用于當在線系統(tǒng)出現(xiàn)漏洞或需要升級時,而需要打補丁的情況,該在線系統(tǒng)運行有預設類型組件,該預設類型組件支持在系統(tǒng)運行時同步加載補丁組件,預設類型組件可以是開放服務網(wǎng)關協(xié)議(Open Service Gateway Initiative,OSGi)組件,OSGi服務平臺提供在多種網(wǎng)絡設備上無需重啟的動態(tài)改變構造的功能。該方法可以由服務器來執(zhí)行,具體包括如下步驟:
步驟S110,當觸發(fā)啟動目標補丁組件時,優(yōu)先加載目標補丁組件。
其中,目標補丁組件可以用來應對系統(tǒng)中存在的漏洞或優(yōu)化系統(tǒng)的性能,組件內包含可修復系統(tǒng)漏洞或優(yōu)化系統(tǒng)的類和資源文件。補丁組件可以是高危漏洞的補丁組件,這些漏洞可能會被木馬、病毒利用,需立即修復;系統(tǒng)安全更新的補丁組件;功能性更新補丁組件,這類補丁用于更新系統(tǒng)或軟件的功能。
在本應用場景下,當觸發(fā)啟動目標補丁組件時,優(yōu)先加載目標補丁組件的過程可以是:系統(tǒng)在運行時,系統(tǒng)內的組件包括需要打補丁的宿主組件處于啟動運行狀態(tài)。當觸發(fā)啟動目標補丁組件時,運行宿主組件所需的資源空間將優(yōu)先分配給目標補丁組件,使得宿主組件的運行被中斷,實現(xiàn)優(yōu)先加載目標補丁組件,系統(tǒng)內除宿主組件外的其它組件不受任何影響繼續(xù)運行。
優(yōu)先加載目標補丁組件的條件可以是目標補丁組件名稱中含有補丁組件識別碼或者目標補丁組件的名稱和宿主組件的名稱滿足預設加載排序機制。
目標補丁組件名稱中可含有的補丁組件識別碼,例如可以是含有“BD”的符號等。當識別到組件名稱含有補丁組件識別碼時,優(yōu)先加載該組件。
預設加載排序機制可以是正排序機制或倒排序機制。其中,正排序機制的基本原理可以是當目標補丁組件名稱的字母序小于宿主組件名稱的字母序時,優(yōu)先加載目標補丁組件,倒排序機制的基本原理可以是當目標補丁組件名稱的字母序大于宿主組件名稱的字母序時,優(yōu)先加載目標補丁組件。
預設加載排序機制的實現(xiàn)過程可以是分別識別宿主組件和目標補丁組件的名稱,對宿主組件和目標補丁組件的名稱按照預設的規(guī)則如按長度或字母序進行排序,最后根據(jù)排序的結果按照加載排序機制選擇優(yōu)先加載的組件進行加載。
步驟S120,在加載目標補丁組件后,加載目標補丁組件的宿主組件。
其中,宿主組件可以是與目標補丁組件對應的組件,宿主組件也可以是目標補丁組件進行修復或升級的組件。宿主組件中包含能夠實現(xiàn)系統(tǒng)某些功能的類和資源。
在本應用場景下,在加載目標補丁組件后,加載目標補丁組件的宿主組件的實現(xiàn)過程可以是,在系統(tǒng)加載完目標補丁組件內的類和資源之后,目標補丁組件將占據(jù)的資源空間釋放,系統(tǒng)繼續(xù)加載之前中斷的宿主組件中的類和資源,宿主組件中沒有漏洞的類和資源繼續(xù)正常加載,有漏洞或需要升級的類和資源會被目標補丁組件中類和資源覆蓋,從而達到修復問題或升級系統(tǒng)的目的。
本實施例提供一種系統(tǒng)補丁的處理方法及裝置,系統(tǒng)運行有預設類型組件,該預設類型組件支持在系統(tǒng)運行時同步加載補丁組件,當觸發(fā)啟動目標補丁組件時,優(yōu)先加載所述目標補丁組件,在加載所述目標補丁組件后,加載所述目標補丁組件的宿主組件。現(xiàn)有技術需要停止系統(tǒng)后才能加載補丁,操作繁瑣。本實施例中由于系統(tǒng)運行有支持在系統(tǒng)運行時同步加載補丁組件的預設類型組件,因此可實現(xiàn)在不停止系統(tǒng)運行的情況下,加載補丁組件。通過有線加載目標補丁組件,實現(xiàn)在加載宿主組件之前加載目標補丁組件,進而避免系統(tǒng)有線加載宿主組件導致目標補丁組件加載失敗,達到更新問題組件或升級系統(tǒng)的目的。本發(fā)明實施例提供的技術方案能夠在系統(tǒng)運行的情況下優(yōu)先對目標補丁組件進行加載,簡化補丁操作。
實施例二
圖2為本發(fā)明實施例二提供的一種系統(tǒng)補丁的處理方法的流程圖,以上述實施例為基礎,如圖2所示,步驟S110之前還包括:
步驟S130,根據(jù)宿主組件的名稱確定目標補丁組件的名稱。
其中,組件的名稱一般有小寫單詞組成,包括前綴、后綴和文件類型標識,示例性的,一個組件的名稱可以是com.run.rap.demo.model_1.0.0.jar,com是文件名稱的前綴,jar表示該組件的文件類型。
在本應用場景下,根據(jù)宿主組件的名稱確定目標補丁組件的名稱的方法可以是,在目標補丁組件的宿主組件的名稱中添加預設字段,得到目標補丁組件的名稱。
在目標補丁組件的宿主組件的名稱中添加預設字段的方式可以是:在宿主組件名稱的結尾處添加名稱修改日期,或者在宿主組件名稱的結尾處添加預設字符序列,使得所述目標補丁組件名稱的字母序大于所述宿主組件名稱的字母序。其中,在宿主名稱的結尾處添加的名稱修改日期可以是補丁的發(fā)布日期或者補丁的制作完成日期。示例性的,假如宿主組件的名稱為com.run.rap.demo.model_1.0.0.jar,這個組件在20160926發(fā)布了該組件的一個補丁組件,那么補丁組件可以命名為com.run.rap.demo.model_1.0.0.20160926.jar。
在宿主組件名稱的結尾處添加的預設字符序列可以是一個小寫英文字母或者阿拉伯數(shù)字,示例性的,假如宿主組件的名稱為com.run.rap.demo.model_1.0.0.jar,那么該組件發(fā)布的第一個補丁可以命名為com.run.rap.demo.model_1.0.0.1.jar或者com.run.rap.demo.model_1.0.0.a.jar。由于補丁組件的名稱比宿主組件的名稱多了日期或者預設字符序列,補丁組件名稱的字母序大于宿主組件名稱的字母序。
本實施例提供的技術方案,在目標補丁組件的宿主組件的名稱中添加預設字段,該預設字符段是名稱修改日期或預設字符序列,使得補丁組件名稱的字母序是大于宿主組件名稱的字母序,使得在后期管理補丁組件的時候更方便,可迅速的識別出補丁組件發(fā)布的先后順序。
相應的,步驟S110包括:
步驟S111,如果目標補丁組件的名稱和宿主組件的名稱滿足預設加載排序機制,則優(yōu)先加載目標補丁組件。
在本應用場景下,預設加載排序機制優(yōu)選的選擇倒排序機制。其中,目標補丁組件的名稱和宿主組件的名稱滿足預設加載排序機制,則優(yōu)先加載目標補丁組件可以包括如下情況:對目標補丁組件的名稱和宿主組件的名稱進行排序,如果目標補丁組件名稱的字母序大于宿主組件名稱的字母序,則優(yōu)先加載所述目標補丁組件;或者,如果目標補丁組件的名稱長度大于宿主組件的名稱長度,則優(yōu)先加載所述目標補丁組件。
示例性的,假如宿主組件的名稱為com.run.rap.demo.model_1.0.0.jar,對應的補丁組件的名稱分別為com.run.rap.demo.model_1.0.0.20160926.jar,若比較兩者的字母序,顯然補丁組件名稱的字母序大于宿主組件名稱的字母序,則根據(jù)倒排序機制,優(yōu)先加載補丁組件,若比較兩者的名稱長度,顯然補丁組件的名稱長度大于宿主組件的名稱長度,同樣根據(jù)倒排序機制,優(yōu)先加載補丁組件。
假如宿主組件的名稱為com.run.rap.demo.model_1.0.0.jar,對應的補丁組件的名稱為com.run.rap.demo.model_1.0.0.a.jar,若比較兩者的字母序,顯然補丁組件名稱的字母序大于宿主組件名稱的字母序,則根據(jù)倒排序機制,優(yōu)先加載補丁組件,若比較兩者的名稱長度,顯然補丁組件的名稱長度大于宿主組件的名稱長度,同樣根據(jù)倒排序機制,優(yōu)先加載補丁組件。
本實施例提供的技術方案,對目標補丁組件的名稱和所述宿主組件的名稱進行排序,如果目標補丁組件名稱的字母序大于宿主組件名稱的字母序,則優(yōu)先加載所述目標補丁組件;或者,如果目標補丁組件的名稱長度大于宿主組件的名稱長度,則優(yōu)先加載目標補丁組件。使得系統(tǒng)在打補丁時優(yōu)先加載補丁組件中的類和資源,而不是按照Java本身的特性優(yōu)先加載宿主組件(需要打補丁的組件),其次才加載宿主的補丁組件,從而實現(xiàn)了更新組件的目的。
本實施例提供的技術方案,根據(jù)宿主組件的名稱確定目標補丁組件的名稱,如果目標補丁組件的名稱和宿主組件的名稱滿足預設加載排序機制,則優(yōu)先加載目標補丁組件,通過預設加載機制使得加載目標補丁組件優(yōu)先加載,達到了更新組件的目的。
實施例三
圖3為本發(fā)明實施例三提供的一種系統(tǒng)補丁的處理裝置的結構示意圖,如圖3所示,該系統(tǒng)補丁的處理裝置包括:名稱確定模塊310,目標補丁組件優(yōu)先加載模塊320和宿主組件加載模塊330.
目標補丁組件優(yōu)先加載模塊320,用于當觸發(fā)啟動目標補丁組件時,優(yōu)先加載所述目標補丁組件;
宿主組件加載模塊330,用于在加載所述目標補丁組件后,加載所述目標補丁組件的宿主組件。
優(yōu)選的,系統(tǒng)補丁的處理裝置,還包括:
名稱確定模塊310,用于根據(jù)宿主組件的名稱確定目標補丁組件的名稱;
相應的,目標補丁組件優(yōu)先加載模塊320,用于:
如果目標補丁組件的名稱和宿主組件的名稱滿足預設加載排序機制,則優(yōu)先加載目標補丁組件。
優(yōu)選的,名稱確定模塊310,用于:
在目標補丁組件的宿主組件的名稱中添加預設字段,得到目標補丁組件的名稱。
優(yōu)選的,名稱確定模塊310,用于:
在宿主組件名稱的結尾處添加名稱修改日期;或者,
在宿主組件名稱的結尾處添加預設字符序列,使得目標補丁組件名稱的字母序大于宿主組件名稱的字母序。
優(yōu)選的,目標補丁組件優(yōu)先加載模塊320,用于:
對目標補丁組件的名稱和所述宿主組件的名稱進行排序,如果目標補丁組件名稱的字母序大于宿主組件名稱的字母序,則優(yōu)先加載目標補丁組件;或者,
如果目標補丁組件的名稱長度大于宿主組件的名稱長度,則優(yōu)先加載目標補丁組件。
上述裝置可執(zhí)行本發(fā)明前述所有實施例所提供的方法,具備執(zhí)行上述方法相應的功能模塊和有益效果。未在本實施例中詳盡描述的技術細節(jié),可參見本發(fā)明前述所有實施例所提供的方法。
注意,上述僅為本發(fā)明的較佳實施例及所運用技術原理。本領域技術人員會理解,本發(fā)明不限于這里所述的特定實施例,對本領域技術人員來說能夠進行各種明顯的變化、重新調整和替代而不會脫離本發(fā)明的保護范圍。因此,雖然通過以上實施例對本發(fā)明進行了較為詳細的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權利要求范圍決定。