两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運(yùn)行系統(tǒng)的制作方法

文檔序號(hào):10534516閱讀:393來源:國知局
一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運(yùn)行系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運(yùn)行系統(tǒng)。其中,該方法包括:解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息;基于所述組件信息在所述組件容器中注冊(cè)配置文件;其中,所述組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺(tái)上,業(yè)務(wù)基礎(chǔ)平臺(tái)與所述業(yè)務(wù)組件松耦合;在業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),根據(jù)所述配置文件升級(jí)對(duì)應(yīng)的業(yè)務(wù)組件。通過本發(fā)明的業(yè)務(wù)組件加載方法及業(yè)務(wù)組件運(yùn)行系統(tǒng),實(shí)現(xiàn)了業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)松耦合,業(yè)務(wù)基礎(chǔ)平臺(tái)的升級(jí)不再對(duì)業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級(jí)成本。業(yè)務(wù)組件通過組件容器的加載,有各自清晰的物理界限。每個(gè)業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理,降低了維護(hù)成本。
【專利說明】
一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運(yùn)行系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,尤其涉及一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù) 組件運(yùn)行系統(tǒng)。
【背景技術(shù)】
[0002] 軟件復(fù)用是一種計(jì)算機(jī)軟件工程理論,60年代的"軟件危機(jī)"使程序設(shè)計(jì)人員明白 軟件維護(hù)成本是極其高昂的,當(dāng)軟件的規(guī)模不斷擴(kuò)大時(shí),軟件的綜合成本非常高,并且即使 投入了高昂的資金也難以得到可靠的產(chǎn)品,而軟件重用是解決這一問題的根本方法。
[0003] 軟件復(fù)用就是基于已有的軟件成分構(gòu)造新的軟件系統(tǒng),可以被復(fù)用的軟件成分一 般稱作可復(fù)用組件,無論是原封不動(dòng)地使用可復(fù)用組件還是對(duì)可復(fù)用組件作適當(dāng)修改后再 使用,只要是用來構(gòu)造新的軟件系統(tǒng),則都可稱作"軟件復(fù)用"。
[0004] 在企業(yè)級(jí)應(yīng)用開發(fā)領(lǐng)域,如何將一些通用的業(yè)務(wù)組件(可復(fù)用軟件)進(jìn)行復(fù)用,是 軟件廠商思考的核心問題之一。目前,國內(nèi)廠商提出了業(yè)務(wù)基礎(chǔ)平臺(tái)的概念用以解決業(yè)務(wù) 組件復(fù)用的問題。
[0005] 國內(nèi)軟件廠商通過采用"Spring Framework"(Spring框架,Spring是J2EE應(yīng)用程 序框架,是輕量級(jí)的I〇C和A0P的容器框架,主要是針對(duì)javaBean的生命周期進(jìn)行管理的輕 量級(jí)容器)等開源軟件為基礎(chǔ)技術(shù)框架,業(yè)務(wù)基礎(chǔ)平臺(tái)基于技術(shù)框架將可復(fù)用組件進(jìn)行簡(jiǎn) 單的累加,業(yè)務(wù)系統(tǒng)基于解決方案平臺(tái)進(jìn)行二次開發(fā),這樣用以實(shí)現(xiàn)軟件復(fù)用。目前常用的 平臺(tái)主要包括:浪潮Loushang平臺(tái)、SAP(System Applications and Products,企業(yè)管理系 列軟件)的Net Weaver (集成化應(yīng)用平臺(tái))、金蝶Apusic(Apus Promote Internet Computing,企業(yè)基礎(chǔ)架構(gòu)軟件平臺(tái))、普元EOS等。
[0006]圖1是根據(jù)相關(guān)技術(shù)的傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺(tái)結(jié)構(gòu)圖,如圖1所示,業(yè)務(wù)基礎(chǔ)平臺(tái)和業(yè) 務(wù)組件沒有清晰的物理界限,業(yè)務(wù)組件只是一堆軟件代碼資源,沒有清晰的定義。業(yè)務(wù)基礎(chǔ) 平臺(tái)不具備組件加載能力,業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)的代碼混合在一起,一起加載到應(yīng)用 服務(wù)器(J2EE Server)上,并在硬件基礎(chǔ)平臺(tái)上運(yùn)行。
[0007]傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺(tái)的結(jié)構(gòu)具有如下缺點(diǎn):
[0008] 1、業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)緊耦合,一旦解決方案平臺(tái)升級(jí),業(yè)務(wù)組件也不得不 升級(jí),很多業(yè)務(wù)系統(tǒng)需要重寫;
[0009] 2、隨著業(yè)務(wù)的發(fā)展,系統(tǒng)共性部分不斷增加,業(yè)務(wù)基礎(chǔ)平臺(tái)越來越龐大,特別是隨 著業(yè)務(wù)基礎(chǔ)平臺(tái)代碼的不斷增加,性能越來越差;
[0010] 3、業(yè)務(wù)基礎(chǔ)平臺(tái)功能是一體化的,導(dǎo)致很小的功能改動(dòng)都會(huì)升級(jí)整個(gè)業(yè)務(wù)基礎(chǔ)平 臺(tái),各功能無法獨(dú)自升級(jí)。
[0011] 針對(duì)傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺(tái)的上述問題,目前尚未提出有效的解決方案。

【發(fā)明內(nèi)容】

[0012] 本發(fā)明提供了一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運(yùn)行系統(tǒng),以至少解決業(yè) 務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)緊耦合的問題。
[0013]根據(jù)本發(fā)明的一個(gè)方面,提供了一種業(yè)務(wù)組件加載方法,其中,該方法包括:解壓 發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息;基于所述組件信息 在所述組件容器中注冊(cè)配置文件;其中,所述組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺(tái)上,所述業(yè)務(wù)基 礎(chǔ)平臺(tái)與所述業(yè)務(wù)組件松耦合;在所述業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),根據(jù)所述配置文件升級(jí) 對(duì)應(yīng)的業(yè)務(wù)組件。
[0014] 優(yōu)選地,所述業(yè)務(wù)組件包括四個(gè)層次:菜單層、UI(User Interface,用戶界面)層、 服務(wù)層、持久層;所述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件 持久層信息。
[0015] 優(yōu)選地,基于所述組件信息在所述組件容器中注冊(cè)配置文件,包括:讀取所述信息 包中的所述組件菜單信息,根據(jù)所述組件菜單信息在所述組件容器中注冊(cè)組件菜單權(quán)限配 置文件;讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層信息在所述組件容器 中注冊(cè)組件UI層配置文件;讀取所述信息包中的所述組件服務(wù)層信息,根據(jù)所述組件服務(wù) 層信息在所述組件容器中注冊(cè)組件服務(wù)層配置文件;讀取所述信息包中的所述組件持久層 信息,根據(jù)所述組件持久層信息在所述組件容器中注冊(cè)組件持久層配置文件。
[0016] 優(yōu)選地,所述組件UI層配置文件至少包括:faces-conf ig ? xml文件、val idate-conf ig? xml文件、web ? xml文件;所述組件服務(wù)層配置文件至少包括:service ? xml文件;所 述組件持久層配置文件至少包括:sql-map-conf ig. xml文件。
[0017] 優(yōu)選地,基于所述組件信息在所述組件容器中注冊(cè)配置文件,采用以下技術(shù)實(shí)現(xiàn): dom4j解析技術(shù)。
[0018] 優(yōu)選地,讀取所述信息包中的組件信息之后,所述方法還包括:將所述組件信息對(duì) 應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位于與所述業(yè)務(wù)基礎(chǔ)平臺(tái)相連接的應(yīng)用服務(wù)器 中,用于對(duì)所述業(yè)務(wù)組件的組件信息進(jìn)行分類管理。
[0019] 優(yōu)選地,所述信息包是在所述業(yè)務(wù)組件的開發(fā)階段將業(yè)務(wù)組件的信息壓縮形成的 壓縮包。
[0020] 優(yōu)選地,所述組件信息至少包括以下之一:組件中文名稱、組件英文名稱、組件版 本號(hào)、組件的包路徑、組件依賴的jar包文名、待注冊(cè)的配置文件、菜單權(quán)限文件。
[0021 ]優(yōu)選地,所述組件容器定義如下目錄結(jié)構(gòu): |- [組件英文名.zip] I-[組件英文名]
[0022] 卜[Hb] i- [src]
[-[WebContent];
[0023]其中,lib用于存放業(yè)務(wù)組件依賴的第三方j(luò)ar包,src用于存放業(yè)務(wù)組件包含的 java源代碼以及相關(guān)配置文件,WebContent用于存放業(yè)務(wù)組件包含的web資源文件。
[0024]根據(jù)本發(fā)明的另一個(gè)方面,提供了一種業(yè)務(wù)組件加載裝置,其中,該裝置包括:信 息處理模塊,用于解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信 息;文件注冊(cè)模塊,用于基于所述組件信息在所述組件容器中注冊(cè)配置文件;其中,所述組 件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺(tái)上,所述業(yè)務(wù)基礎(chǔ)平臺(tái)與所述業(yè)務(wù)組件松耦合;組件升級(jí)模塊, 用于在所述業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),根據(jù)所述配置文件升級(jí)對(duì)應(yīng)的業(yè)務(wù)組件。
[0025] 優(yōu)選地,所述業(yè)務(wù)組件包括四個(gè)層次:菜單層、用戶界面UI層、服務(wù)層、持久層;所 述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件持久層信息。
[0026] 優(yōu)選地,所述文件注冊(cè)模塊包括:組件菜單權(quán)限加載單元,用于讀取所述信息包中 的所述組件菜單信息,根據(jù)所述組件菜單信息在所述組件容器中注冊(cè)組件菜單權(quán)限配置文 件;組件UI層加載單元,用于讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層信 息在所述組件容器中注冊(cè)組件UI層配置文件;組件服務(wù)層加載單元,用于讀取所述信息包 中的所述組件服務(wù)層信息,根據(jù)所述組件服務(wù)層信息在所述組件容器中注冊(cè)組件服務(wù)層配 置文件;組件持久層加載單元,用于讀取所述信息包中的所述組件持久層信息,根據(jù)所述組 件持久層信息在所述組件容器中注冊(cè)組件持久層配置文件。
[0027] 優(yōu)選地,所述裝置還包括:資源拷貝模塊,用于將所述組件信息對(duì)應(yīng)拷貝到系統(tǒng)目 錄中;其中,所述系統(tǒng)目錄位于與所述業(yè)務(wù)基礎(chǔ)平臺(tái)相連接的應(yīng)用服務(wù)器中,用于對(duì)所述業(yè) 務(wù)組件的組件信息進(jìn)行分類管理。
[0028] 根據(jù)本發(fā)明的另一個(gè)方面,提供了一種業(yè)務(wù)組件運(yùn)行系統(tǒng),其中,該系統(tǒng)自下而上 包括:應(yīng)用服務(wù)器、業(yè)務(wù)基礎(chǔ)平臺(tái)、由多個(gè)業(yè)務(wù)組件構(gòu)成的組件系統(tǒng);其中,所述業(yè)務(wù)基礎(chǔ)平 臺(tái)包括組件容器;所述組件容器,用于解壓所述各個(gè)業(yè)務(wù)組件的信息包,讀取所述信息包中 的組件信息,基于所述組件信息注冊(cè)配置文件;其中,所述配置文件用于對(duì)所述業(yè)務(wù)組件進(jìn) 行升級(jí);所述業(yè)務(wù)基礎(chǔ)平臺(tái),與所述組件系統(tǒng)松耦合,用于升級(jí)所述業(yè)務(wù)組件以實(shí)現(xiàn)軟件復(fù) 用。
[0029] 優(yōu)選地,所述組件容器,還用于將所述組件信息對(duì)應(yīng)拷貝到系統(tǒng)目錄中;其中,所 述系統(tǒng)目錄位于所述應(yīng)用服務(wù)器中,用于對(duì)所述業(yè)務(wù)組件的組件信息進(jìn)行分類管理。
[0030] 通過本發(fā)明的業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運(yùn)行系統(tǒng),實(shí)現(xiàn)了業(yè)務(wù)組件和 業(yè)務(wù)基礎(chǔ)平臺(tái)松耦合,業(yè)務(wù)基礎(chǔ)平臺(tái)的升級(jí)不再對(duì)業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升 級(jí)成本。業(yè)務(wù)組件通過組件容器的加載,有各自清晰的物理界限。每個(gè)業(yè)務(wù)組件有各自的版 本,便于業(yè)務(wù)組件的管理,降低了維護(hù)成本。
【附圖說明】
[0031] 此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限定。在附圖中:
[0032] 圖1是根據(jù)相關(guān)技術(shù)的傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺(tái)結(jié)構(gòu)圖;
[0033] 圖2是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件加載方法的流程圖;
[0034] 圖3是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件加載裝置的結(jié)構(gòu)示意圖;
[0035] 圖4是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件加載裝置的第一優(yōu)選結(jié)構(gòu)示意圖;
[0036] 圖5是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件加載裝置的第二優(yōu)選結(jié)構(gòu)示意圖;
[0037] 圖6是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件運(yùn)行系統(tǒng)的結(jié)構(gòu)示意圖;
[0038] 圖7是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件運(yùn)行系統(tǒng)的優(yōu)選結(jié)構(gòu)示意圖;
[0039] 圖8是根據(jù)本發(fā)明實(shí)施例的組件加載流程圖。
【具體實(shí)施方式】
[0040] 下面結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整 地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒?發(fā)明的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施 例,都屬于本發(fā)明的保護(hù)范圍。
[0041] 本發(fā)明實(shí)施例提供了一種業(yè)務(wù)組件加載方法,圖2是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組 件加載方法的流程圖,如圖2所示,該方法包括以下步驟(步驟S202-步驟S206):
[0042]步驟S202,解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取信息包中的組件信息; 其中,該信息包是在業(yè)務(wù)組件的開發(fā)階段將業(yè)務(wù)組件的信息壓縮形成的壓縮包。
[0043]步驟S204,基于組件信息在組件容器中注冊(cè)配置文件;其中,組件容器設(shè)置于業(yè)務(wù) 基礎(chǔ)平臺(tái)上,業(yè)務(wù)基礎(chǔ)平臺(tái)與業(yè)務(wù)組件松耦合。
[0044] 步驟S206,在業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),根據(jù)上述配置文件升級(jí)對(duì)應(yīng)的業(yè)務(wù)組件。
[0045] 通過上述方法,能夠?qū)崿F(xiàn)業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)的松耦合,業(yè)務(wù)基礎(chǔ)平臺(tái)的升 級(jí)不再對(duì)業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級(jí)成本。業(yè)務(wù)組件通過組件容器的加載,有 各自清晰的物理界限。每個(gè)業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理,降低了維護(hù)成 本。
[0046] 在讀取信息包中的組件信息之后,還可以將組件信息對(duì)應(yīng)拷貝到系統(tǒng)目錄中,系 統(tǒng)目錄位于與業(yè)務(wù)基礎(chǔ)平臺(tái)相連接的應(yīng)用服務(wù)器中,用于對(duì)業(yè)務(wù)組件的組件信息進(jìn)行分類 管理。基于此,在組件容器中注冊(cè)配置文件時(shí),可以方便查詢調(diào)取對(duì)應(yīng)的組件信息。
[0047] 在本實(shí)施例中,業(yè)務(wù)組件主要包括以下四個(gè)層次:菜單層、UI層、服務(wù)層、持久層。 相應(yīng)地,業(yè)務(wù)組件的組件信息主要包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組 件持久層信息。
[0048]結(jié)合上述四種組件信息,步驟S204中基于組件信息在組件容器中注冊(cè)配置文件, 主要通過以下方式實(shí)現(xiàn):讀取信息包中的組件菜單信息,根據(jù)組件菜單信息在組件容器中 注冊(cè)組件菜單權(quán)限配置文件;讀取信息包中的組件UI層信息,根據(jù)組件UI層信息在組件容 器中注冊(cè)組件UI層配置文件;讀取信息包中的組件服務(wù)層信息,根據(jù)組件服務(wù)層信息在組 件容器中注冊(cè)組件服務(wù)層配置文件;讀取信息包中的組件持久層信息,根據(jù)組件持久層信 息在組件容器中注冊(cè)組件持久層配置文件?;诖?,組件容器中加載了與各個(gè)業(yè)務(wù)組件相 關(guān)的配置文件,這樣,在業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),可以根據(jù)配置文件升級(jí)對(duì)應(yīng)的業(yè)務(wù)組 件,不再對(duì)業(yè)務(wù)系統(tǒng)造成影響,實(shí)現(xiàn)了業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)的松耦合。
[0049] -實(shí)施例中,基于組件信息在組件容器中注冊(cè)配置文件,一般可采用以下技術(shù)實(shí) 現(xiàn):dom4 j解析技術(shù)。組件UI層配置文件至少包括:faces-conf ig. xml文件、val idate-conf ig ? xml文件、web ? xml文件;組件服務(wù)層配置文件至少包括:service ? xml文件;組件持 久層配置文件至少包括:sql-map-conf ig ? xml文件。
[0050] -實(shí)施例中,組件容器可采用技術(shù)框架JSF+Spring+Mybatis實(shí)現(xiàn),可定義如下目 錄結(jié)構(gòu): I-[組件英文名.zip] I-[組件英文名]
[0051] 卜[lib] 卜[src] |- [WcbContcnt];
[0052]其中,lib用于存放業(yè)務(wù)組件依賴的第三方j(luò)ar包。src用于存放業(yè)務(wù)組件包含的 java源代碼以及相關(guān)配置文件,WebContent用于存放業(yè)務(wù)組件包含的web資源文件。
[0053] 基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種業(yè)務(wù)組件加載裝置,可以用于 實(shí)現(xiàn)上述實(shí)施例所描述的方法,如下面的實(shí)施例所述。由于業(yè)務(wù)組件加載裝置解決問題的 原理與業(yè)務(wù)組件加載方法相似,因此業(yè)務(wù)組件加載裝置的實(shí)施可以參見業(yè)務(wù)組件加載方法 的實(shí)施,重復(fù)之處不再贅述。以下所使用的,術(shù)語"單元"或者"模塊"可以實(shí)現(xiàn)預(yù)定功能的軟 件和/或硬件的組合。盡管以下實(shí)施例所描述的系統(tǒng)較佳地以軟件來實(shí)現(xiàn),但是硬件,或者 軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。
[0054] 圖3是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件加載裝置的結(jié)構(gòu)示意圖,如圖3所示,該裝置 包括:信息處理模塊10、文件注冊(cè)模塊20、組件升級(jí)模塊30,下面對(duì)該結(jié)構(gòu)進(jìn)行具體說明。
[0055] 信息處理模塊10,用于解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取信息包中 的組件信息;
[0056]文件注冊(cè)模塊20,連接至信息處理模塊10,用于基于組件信息在組件容器中注冊(cè) 配置文件;其中,組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺(tái)上,業(yè)務(wù)基礎(chǔ)平臺(tái)與業(yè)務(wù)組件松耦合;
[0057]組件升級(jí)模塊30,連接至文件注冊(cè)模塊20,用于在業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),根據(jù) 配置文件升級(jí)對(duì)應(yīng)的業(yè)務(wù)組件。
[0058] 通過上述裝置,能夠?qū)崿F(xiàn)業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)的松耦合,業(yè)務(wù)基礎(chǔ)平臺(tái)的升 級(jí)不再對(duì)業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級(jí)成本。業(yè)務(wù)組件通過組件容器的加載,有 各自清晰的物理界限。每個(gè)業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理,降低了維護(hù)成 本。
[0059] -實(shí)施例中,業(yè)務(wù)組件加載裝置還可以包括:資源拷貝模塊,用于將組件信息對(duì)應(yīng) 拷貝到系統(tǒng)目錄中;其中,系統(tǒng)目錄位于與業(yè)務(wù)基礎(chǔ)平臺(tái)相連接的應(yīng)用服務(wù)器中,用于對(duì)業(yè) 務(wù)組件的組件信息進(jìn)行分類管理?;诖?,在組件容器中注冊(cè)配置文件時(shí),可以方便查詢調(diào) 取對(duì)應(yīng)的組件信息。
[0060] 一本實(shí)施例中,業(yè)務(wù)組件主要包括以下四個(gè)層次:菜單層、UI層、服務(wù)層、持久層。 相應(yīng)地,業(yè)務(wù)組件的組件信息主要包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組 件持久層信息。
[0061] 圖4是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件加載裝置的第一優(yōu)選結(jié)構(gòu)示意圖,如圖4所 示,文件注冊(cè)模塊20可以包括:
[0062] 組件菜單權(quán)限加載單元22,用于讀取信息包中的組件菜單信息,根據(jù)組件菜單信 息在組件容器中注冊(cè)組件菜單權(quán)限配置文件;
[0063]組件UI層加載單元24,用于讀取信息包中的組件UI層信息,根據(jù)組件UI層信息在 組件容器中注冊(cè)組件UI層配置文件;
[0064]組件服務(wù)層加載單元26,用于讀取信息包中的組件服務(wù)層信息,根據(jù)組件服務(wù)層 信息在組件容器中注冊(cè)組件服務(wù)層配置文件;
[0065]組件持久層加載單元28,用于讀取信息包中的組件持久層信息,根據(jù)組件持久層 信息在組件容器中注冊(cè)組件持久層配置文件。
[0066]基于此,組件容器中加載了與各個(gè)業(yè)務(wù)組件相關(guān)的配置文件,這樣,在業(yè)務(wù)基礎(chǔ)平 臺(tái)需要升級(jí)時(shí),可以根據(jù)配置文件升級(jí)對(duì)應(yīng)的業(yè)務(wù)組件,不再對(duì)業(yè)務(wù)系統(tǒng)造成影響,實(shí)現(xiàn)了 業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)的松耦合。
[0067]當(dāng)然,上述模塊劃分只是一種示意劃分,本發(fā)明并不局限于此。上述信息處理模塊 10還可以包括:解壓?jiǎn)卧?2和組件信息讀取單元14,如圖5所示的業(yè)務(wù)組件加載裝置的第二 優(yōu)選結(jié)構(gòu)示意圖,解壓?jiǎn)卧?2采用Java技術(shù)提供的zip解壓技術(shù)實(shí)現(xiàn),用于對(duì)業(yè)務(wù)組件的信 息包(zip包)進(jìn)行解壓。組件信息讀取單元14采用dom4j技術(shù)讀取組件描述信息xml文件,用 于讀取信息包中的組件信息,解析組件信息,組件信息主要包括:組件的中文名、組件的英 文名、組件版本號(hào)、組件的包路徑、組件依賴的jar包文名、組件配置文件等。需要讀取的詳 細(xì)信息如表1所示。
[0068]表 1
[0070]組件菜單權(quán)限加載單元22用于加載組件的權(quán)限菜單xml文件,組件權(quán)限菜單xml文 件記錄組件的菜單和對(duì)應(yīng)的功能權(quán)限。加載和解析技術(shù)采用dom4j。組件菜單權(quán)限加載單元 22讀取解壓內(nèi)容(即組件信息),將其中的組件菜單信息加載到組件容器的主配置文件中。
[0071]組件UI層加載單元24用于加載組件對(duì)應(yīng)的UI配置文件,UI層采用JSF技術(shù)框架實(shí) 現(xiàn),需加載的配置文件包括 faces-conf ig ? xml、validate-conf ig ? xml、web ? xml文件。加載 和解析技術(shù)采用dom4j。組件UI層加載單元24讀取解壓內(nèi)容,將組件UI層信息加載到組件容 器的主配置文件中。
[0072]組件服務(wù)層加載單元26用于加載組件對(duì)應(yīng)的服務(wù)層配置文件,服務(wù)層采用Spring 技術(shù)框架實(shí)現(xiàn),需加載的配置文件service. xml文件。加載和解析技術(shù)采用dom4j。組件服務(wù) 層加載單元26讀取解壓內(nèi)容,將組件服務(wù)層信息加載到組件容器的主配置文件中。
[0073]組件持久層加載單元28用于加載組件對(duì)應(yīng)的持久層配置文件,持久層采用 Mybatis技術(shù)框架實(shí)現(xiàn),需加載的配置文件sql-map-conf ig. xml文件。加載和解析技術(shù)采用 dom4j。組件持久層加載單元28讀取解壓內(nèi)容,將組件持久層信息加載到組件容器的主配置 文件中。
[0074]資源拷貝模塊40用于將解壓的組件信息拷貝到符合J2EE server服務(wù)器規(guī)范的操 作系統(tǒng)目錄上,需拷貝的資源至少包括UI層java文件、服務(wù)層java文件、持久層java文件、 UI層jsp、css等web資源文件、組件需要的jar包等。
[0075]每個(gè)業(yè)務(wù)組件都有一個(gè)唯一的英文名,并以[英文名.zip]形式,將所有的組件資 源壓縮在信息包(zip包)中,例如:業(yè)務(wù)組件的英文名為component,對(duì)應(yīng)的zip包為 component?zip〇
[0076] 基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種業(yè)務(wù)組件運(yùn)行系統(tǒng),可以用于 實(shí)現(xiàn)上述實(shí)施例所描述的方法,如下面的實(shí)施例所述。由于業(yè)務(wù)組件運(yùn)行系統(tǒng)解決問題的 原理與業(yè)務(wù)組件加載方法相似,因此業(yè)務(wù)組件運(yùn)行系統(tǒng)的實(shí)施可以參見業(yè)務(wù)組件加載方法 的實(shí)施,重復(fù)之處不再贅述。
[0077] 圖6是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件運(yùn)行系統(tǒng)的結(jié)構(gòu)示意圖,如圖6所示,業(yè)務(wù)組 件運(yùn)行系統(tǒng)自下而上包括:應(yīng)用服務(wù)器、業(yè)務(wù)基礎(chǔ)平臺(tái)、由多個(gè)業(yè)務(wù)組件構(gòu)成的組件系統(tǒng), 其中,組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺(tái)上,業(yè)務(wù)基礎(chǔ)平臺(tái)與業(yè)務(wù)組件松耦合。
[0078] 組件容器,用于解壓各個(gè)業(yè)務(wù)組件的信息包,讀取信息包中的組件信息,基于組件 信息注冊(cè)配置文件;其中,配置文件用于對(duì)業(yè)務(wù)組件進(jìn)行升級(jí);還用于將組件信息對(duì)應(yīng)拷貝 到系統(tǒng)目錄中;其中,系統(tǒng)目錄位于應(yīng)用服務(wù)器中,用于對(duì)業(yè)務(wù)組件的組件信息進(jìn)行分類管 理。
[0079] 業(yè)務(wù)基礎(chǔ)平臺(tái),與組件系統(tǒng)松耦合,用于升級(jí)業(yè)務(wù)組件以實(shí)現(xiàn)軟件復(fù)用。
[0080] 通過上述業(yè)務(wù)組件運(yùn)行系統(tǒng),能夠?qū)崿F(xiàn)業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)的松耦合,業(yè)務(wù) 基礎(chǔ)平臺(tái)的升級(jí)不再對(duì)業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級(jí)成本。業(yè)務(wù)組件通過組件 容器的加載,有各自清晰的物理界限。每個(gè)業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理, 降低了維護(hù)成本。
[0081] 圖7是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)組件運(yùn)行系統(tǒng)的優(yōu)選結(jié)構(gòu)示意圖,如圖7所示,應(yīng) 用服務(wù)器可以包括:基礎(chǔ)軟件環(huán)境和基礎(chǔ)硬件平臺(tái)。其中,基礎(chǔ)軟件環(huán)境可以是J2EE Server,基礎(chǔ)硬件平臺(tái)可以實(shí)現(xiàn)網(wǎng)絡(luò)交互功能、計(jì)算機(jī)功能、存儲(chǔ)功能等。
[0082]為了對(duì)本發(fā)明的技術(shù)方案進(jìn)行更為清楚的解釋,下面結(jié)合具體的實(shí)施例來進(jìn)行說 明,然而值得注意的是該實(shí)施例僅是為了更好地說明本發(fā)明,并不構(gòu)成對(duì)本發(fā)明不當(dāng)?shù)南?定。
[0083]圖8是根據(jù)本發(fā)明實(shí)施例的組件加載流程圖,如圖8所示,該流程包括以下步驟(步 驟 S801-步驟 S807):
[0084]步驟S801,將業(yè)務(wù)組件發(fā)布到組件容器。業(yè)務(wù)組件主要是指基于J2EE規(guī)范的業(yè)務(wù) 代碼的集合,這些代碼分為四個(gè)層次,包括:組件菜單信息、組件UI層代碼資源、組件服務(wù)層 代碼資源、組件持久層代碼資源。
[0085]步驟S802,解壓業(yè)務(wù)組件的信息包,讀取并記錄信息包中的組件信息。
[0086]步驟S803,讀取組件菜單信息,將組組件菜單信息注冊(cè)到組件容器的主菜單權(quán)限 配置文件中。
[0087] 步驟S804,讀取組件UI層代碼資源,將代碼資源拷貝到符合J2EE server服務(wù)器規(guī) 范的操作系統(tǒng)目錄上,將組件UI層配置文件注冊(cè)到組件容器的主UI層配置文件中。
[0088]步驟S805,讀取組件服務(wù)層代碼資源,將代碼資源拷貝到符合J2EE server服務(wù)器 規(guī)范的操作系統(tǒng)目錄上,將組件服務(wù)層配置文件注冊(cè)到組件容器的主服務(wù)層配置文件中。 [0089] 步驟S806,讀取組件持久層代碼資源,將代碼資源拷貝到符合J2EE server服務(wù)器 規(guī)范的操作系統(tǒng)目錄上,將組件持久層配置文件注冊(cè)到組件容器的主持久層配置文件中。
[0090] 步驟S807,該流程結(jié)束。
[0091] 本發(fā)明在原有的業(yè)務(wù)基礎(chǔ)平臺(tái)的基礎(chǔ)上,增加了組件容器,通過組件容器加載技 術(shù),有效的解決了傳統(tǒng)平臺(tái)遇到的業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)緊耦合問題。主要達(dá)到了以下 效果:
[0092] 1、業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺(tái)松耦合,業(yè)務(wù)基礎(chǔ)平臺(tái)的升級(jí)不影響業(yè)務(wù)系統(tǒng),降低 了業(yè)務(wù)系統(tǒng)升級(jí)成本;
[0093] 2、隨著業(yè)務(wù)的發(fā)展,系統(tǒng)共性部分不斷增加,雖然業(yè)務(wù)基礎(chǔ)平臺(tái)變的龐大,但業(yè)務(wù) 系統(tǒng)可裁剪不必要的組件,有效的控制了代碼量,提高了業(yè)務(wù)系統(tǒng)性能;
[0094] 3、業(yè)務(wù)組件通過業(yè)務(wù)組件容器的加載,有各自清晰的物理界限。每個(gè)業(yè)務(wù)組件有 各自的版本,便于管理,降低了維護(hù)成本。
[0095] 流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括 一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部 分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順 序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明 的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
[0096] 應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述 實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件 或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下 列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對(duì)數(shù)據(jù)信號(hào)實(shí)現(xiàn)邏輯功能的邏輯門電路 的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場(chǎng) 可編程門陣列(FPGA)等。
[0097]本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步 驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介 質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
[0098] 此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以 是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模 塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如 果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī) 可讀取存儲(chǔ)介質(zhì)中。
[0099] 在本說明書的描述中,參考術(shù)語"一個(gè)實(shí)施例"、"一些實(shí)施例"、"示例"、"具體示 例"、或"一些示例"等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特 點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語的示意性表述不 一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何 的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
[0100]以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳 細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限定本發(fā)明的保 護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本 發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1. 一種業(yè)務(wù)組件加載方法,其特征在于,包括: 解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息; 基于所述組件信息在所述組件容器中注冊(cè)配置文件;其中,所述組件容器設(shè)置于業(yè)務(wù) 基礎(chǔ)平臺(tái)上,所述業(yè)務(wù)基礎(chǔ)平臺(tái)與所述業(yè)務(wù)組件松耦合; 在所述業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),根據(jù)所述配置文件升級(jí)對(duì)應(yīng)的業(yè)務(wù)組件。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述業(yè)務(wù)組件包括四個(gè)層次:菜單層、用戶界面UI層、服務(wù)層、持久層; 所述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件持久層信息。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,基于所述組件信息在所述組件容器中注冊(cè) 配置文件,包括: 讀取所述信息包中的所述組件菜單信息,根據(jù)所述組件菜單信息在所述組件容器中注 冊(cè)組件菜單權(quán)限配置文件; 讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層信息在所述組件容器中注 冊(cè)組件UI層配置文件; 讀取所述信息包中的所述組件服務(wù)層信息,根據(jù)所述組件服務(wù)層信息在所述組件容器 中注冊(cè)組件服務(wù)層配置文件; 讀取所述信息包中的所述組件持久層信息,根據(jù)所述組件持久層信息在所述組件容器 中注冊(cè)組件持久層配置文件。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于, 所述組件UI層配置文件至少包括:faces-conf ig · xml文件、val idate-conf ig · xml文 件、web. xml文件; 所述組件服務(wù)層配置文件至少包括:service. xml文件; 所述組件持久層配置文件至少包括:sql-map-conf ig · xml文件。5. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 基于所述組件信息在所述組件容器中注冊(cè)配置文件,采用以下技術(shù)實(shí)現(xiàn):dom4j解析技 術(shù)。6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,讀取所述信息包中的組件信息之后,所述 方法還包括: 將所述組件信息對(duì)應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位于與所述業(yè)務(wù)基礎(chǔ)平 臺(tái)相連接的應(yīng)用服務(wù)器中,用于對(duì)所述業(yè)務(wù)組件的組件信息進(jìn)行分類管理。7. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述信息包是在所述業(yè)務(wù)組件的開發(fā)階段 將業(yè)務(wù)組件的信息壓縮形成的壓縮包。8. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述組件信息至少包括以下之一:組件中 文名稱、組件英文名稱、組件版本號(hào)、組件的包路徑、組件依賴的jar包文名、待注冊(cè)的配置 文件、菜單權(quán)限文件。9. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述組件容器定義如下目錄結(jié)構(gòu): I-[組件英文名.zip] -[組件英文名] -[lib] -[src] -[WebContent]; 其中,lib用于存放業(yè)務(wù)組件依賴的第三方j(luò)ar包,src用于存放業(yè)務(wù)組件包含的java源 代碼以及相關(guān)配置文件,WebContent用于存放業(yè)務(wù)組件包含的web資源文件。10. -種業(yè)務(wù)組件加載裝置,其特征在于,包括: 信息處理模塊,用于解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的 組件信息; 文件注冊(cè)模塊,用于基于所述組件信息在所述組件容器中注冊(cè)配置文件;其中,所述組 件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺(tái)上,所述業(yè)務(wù)基礎(chǔ)平臺(tái)與所述業(yè)務(wù)組件松耦合; 組件升級(jí)模塊,用于在所述業(yè)務(wù)基礎(chǔ)平臺(tái)需要升級(jí)時(shí),根據(jù)所述配置文件升級(jí)對(duì)應(yīng)的 業(yè)務(wù)組件。11. 根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述業(yè)務(wù)組件包括四個(gè)層次:菜單層、用戶界面UI層、服務(wù)層、持久層; 所述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件持久層信息。12. 根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述文件注冊(cè)模塊包括: 組件菜單權(quán)限加載單元,用于讀取所述信息包中的所述組件菜單信息,根據(jù)所述組件 菜單信息在所述組件容器中注冊(cè)組件菜單權(quán)限配置文件; 組件UI層加載單元,用于讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層 信息在所述組件容器中注冊(cè)組件UI層配置文件; 組件服務(wù)層加載單元,用于讀取所述信息包中的所述組件服務(wù)層信息,根據(jù)所述組件 服務(wù)層信息在所述組件容器中注冊(cè)組件服務(wù)層配置文件; 組件持久層加載單元,用于讀取所述信息包中的所述組件持久層信息,根據(jù)所述組件 持久層信息在所述組件容器中注冊(cè)組件持久層配置文件。13. 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括: 資源拷貝模塊,用于將所述組件信息對(duì)應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位于 與所述業(yè)務(wù)基礎(chǔ)平臺(tái)相連接的應(yīng)用服務(wù)器中,用于對(duì)所述業(yè)務(wù)組件的組件信息進(jìn)行分類管 理。14. 一種業(yè)務(wù)組件運(yùn)行系統(tǒng),其特征在于,所述系統(tǒng)自下而上包括:應(yīng)用服務(wù)器、業(yè)務(wù)基 礎(chǔ)平臺(tái)、由多個(gè)業(yè)務(wù)組件構(gòu)成的組件系統(tǒng);其中,所述業(yè)務(wù)基礎(chǔ)平臺(tái)包括組件容器; 所述組件容器,用于解壓所述各個(gè)業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息, 基于所述組件信息注冊(cè)配置文件;其中,所述配置文件用于對(duì)所述業(yè)務(wù)組件進(jìn)行升級(jí); 所述業(yè)務(wù)基礎(chǔ)平臺(tái),與所述組件系統(tǒng)松耦合,用于升級(jí)所述業(yè)務(wù)組件以實(shí)現(xiàn)軟件復(fù)用。15. 根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于, 所述組件容器,還用于將所述組件信息對(duì)應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位 于所述應(yīng)用服務(wù)器中,用于對(duì)所述業(yè)務(wù)組件的組件信息進(jìn)行分類管理。
【文檔編號(hào)】G06F9/44GK105893045SQ201610197297
【公開日】2016年8月24日
【申請(qǐng)日】2016年3月31日
【發(fā)明人】張永福, 潘潤紅, 付朋輝, 呂鋒, 馮慶
【申請(qǐng)人】金電技術(shù)開發(fā)中心
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
泽普县| 博爱县| 松溪县| 天柱县| 界首市| 和政县| 乌兰察布市| 黄平县| 东源县| 吉林省| 洮南市| 南汇区| 济宁市| 霍州市| 苏尼特右旗| 西藏| 甘谷县| 大厂| 扶风县| 乐亭县| 和平区| 凤庆县| 元江| 定南县| 池州市| 赣州市| 准格尔旗| 大港区| 昂仁县| 尼木县| 庄浪县| 五原县| 景谷| 海南省| 永川市| 玉山县| 滦平县| 新津县| 荥阳市| 遂昌县| 桑日县|