日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

一種支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠的制作方法

文檔序號(hào):6365359閱讀:597來(lái)源:國(guó)知局
專利名稱:一種支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,特別是指一種支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠。
背景技術(shù)
隨著Internet成為主流的運(yùn)行平臺(tái),軟件呈現(xiàn)構(gòu)件化服務(wù)架構(gòu)的同時(shí),其運(yùn)行期內(nèi)上下文情境(計(jì)算上下文、環(huán)境上下文和用戶上下文)的動(dòng)態(tài)改變又使得軟件自身必須響應(yīng)這些變化而做出“演化性”調(diào)整??梢?jiàn),“演化”是軟件生命周期中最昂貴的活動(dòng),它是在軟件基礎(chǔ)框架的高效機(jī)制支持下,軟件系統(tǒng)以進(jìn)化方式動(dòng)態(tài)調(diào)整體系結(jié)構(gòu)的配置組成、 以確保其行為和結(jié)果滿足當(dāng)前運(yùn)行環(huán)境的適應(yīng)性過(guò)程。從內(nèi)在機(jī)理來(lái)看,基于體系結(jié)構(gòu)的動(dòng)態(tài)配置技術(shù)為系統(tǒng)的動(dòng)態(tài)演化提供了使能機(jī)制和有效途徑。對(duì)于運(yùn)行期的構(gòu)件化系統(tǒng)而言,系統(tǒng)的配置行為主要包括動(dòng)態(tài)添加構(gòu)件、刪除構(gòu)件、更新構(gòu)件,以及動(dòng)態(tài)建立連接、解除連接和重定向連接等。從當(dāng)前的業(yè)界實(shí)踐來(lái)看,隨著對(duì)構(gòu)件內(nèi)涵和外延認(rèn)知的不斷拓展,構(gòu)件也從具有相對(duì)獨(dú)立功能和可復(fù)用價(jià)值的小粒度單元,向著大粒度、松耦合的服務(wù)型構(gòu)件演進(jìn)。在產(chǎn)業(yè)界,以Web Service、CORBA, EJB和COM+為代表的服務(wù)端構(gòu)件模型,已成為企業(yè)部署分布應(yīng)用的主流規(guī)范。但是,這些構(gòu)件模型都缺乏在構(gòu)件層級(jí)對(duì)動(dòng)態(tài)配置提供顯式支持的能力。從技術(shù)角度來(lái)講,這些商用構(gòu)件大都作為向外界提供/請(qǐng)求服務(wù)的、可重用的黑盒單元,缺乏對(duì)構(gòu)件管理和控制的語(yǔ)義描述,構(gòu)件及其運(yùn)行容器在開(kāi)放性和擴(kuò)展性上僅提供了有限的支持。面對(duì)商業(yè)構(gòu)件及其分布應(yīng)用缺乏動(dòng)態(tài)配置與演化能力的現(xiàn)狀,業(yè)界和學(xué)術(shù)界展開(kāi)了廣泛研究,發(fā)布了一些有益的成果。例如,CCM(C0RBA Component Model)擴(kuò)展了傳統(tǒng)的 CORBA規(guī)范的內(nèi)容,通過(guò)顯式建立或撤銷對(duì)稱接口之間的松耦合連接依賴,不僅提高了服務(wù)構(gòu)件的復(fù)用能力,也清晰地刻畫了應(yīng)用的軟件體系結(jié)構(gòu)。借助于體系結(jié)構(gòu)高層視圖,可以支持動(dòng)態(tài)的CORBA應(yīng)用配置等高級(jí)管理任務(wù)。再比如,JMX(Java Management Extensions)為應(yīng)用程序和網(wǎng)絡(luò)管理監(jiān)控定義了體系結(jié)構(gòu)、設(shè)計(jì)模式、接口以及各種服務(wù)等。通過(guò)這套標(biāo)準(zhǔn)的代理和服務(wù),可以為基于EJB的分布式應(yīng)用植入資源管理功能框架。但是,嚴(yán)格來(lái)說(shuō),JMX 只是一個(gè)網(wǎng)絡(luò)應(yīng)用管理框架,尚不具備對(duì)構(gòu)件化軟件運(yùn)行時(shí)進(jìn)行動(dòng)態(tài)配置的支持。中國(guó)發(fā)明專利ZL200410000773. 6,公開(kāi)了一種構(gòu)件化軟件系統(tǒng)在線增加新功能的方法,屬于軟件技術(shù)領(lǐng)域。該方法包括以下步驟(I)開(kāi)發(fā)支持新功能的新構(gòu)件; (2)在線演化現(xiàn)有構(gòu)件的實(shí)現(xiàn)體,向軟件系統(tǒng)加載新構(gòu)件的實(shí)現(xiàn)體;然后在構(gòu)件容器中的消息與具體實(shí)現(xiàn)函數(shù)之間的映射表中增加代表新功能的消息與新構(gòu)件實(shí)現(xiàn)體中新具體方法之間的關(guān)聯(lián);(3)為新的構(gòu)件接口生成骨架程序并加載到系統(tǒng)中,替換老的骨架程序;(4)更新與運(yùn)行時(shí)刻軟件系統(tǒng)對(duì)應(yīng)的文件形態(tài)的軟件系統(tǒng),使軟件系統(tǒng)中包含新的構(gòu)件。
該中國(guó)發(fā)明專利申請(qǐng)的技術(shù)方案是面向EJB構(gòu)件,利用接口定義與接口實(shí)現(xiàn)相對(duì)分離的特點(diǎn),構(gòu)件的接口等在演化過(guò)程中是不變的,只有實(shí)現(xiàn)構(gòu)件功能的具體對(duì)象變化。文獻(xiàn)(《分布式系統(tǒng)動(dòng)態(tài)配置技術(shù)的研究與實(shí)現(xiàn)》,竇蕾,王樹(shù)鳳,徐田榮,計(jì)算機(jī)科學(xué),2005,32 (12))描述了由國(guó)防科學(xué)技術(shù)大學(xué)研制的、遵循CCM規(guī)范的分布式構(gòu)件平臺(tái)StarCCM0借助容器并間接利用底層CORBA平臺(tái),提供了動(dòng)態(tài)配置所需的大量結(jié)構(gòu)和語(yǔ)義元數(shù)據(jù),通過(guò)對(duì)構(gòu)件實(shí)施的強(qiáng)大調(diào)控能力來(lái)增強(qiáng)系統(tǒng)的動(dòng)態(tài)特性,提供5類動(dòng)態(tài)配置基本機(jī)制系統(tǒng)信息描述及計(jì)算機(jī)制、構(gòu)件狀態(tài)檢測(cè)機(jī)制、構(gòu)件行為控制機(jī)制、構(gòu)件狀態(tài)傳遞機(jī)制、動(dòng)態(tài)配置算法描述機(jī)制。文獻(xiàn)(《一種支持軟件可信演化的構(gòu)件模型》,丁博,王懷民,史殿習(xí)等,軟件學(xué)報(bào),2011,22(1))基于關(guān)注點(diǎn)分離原則和動(dòng)態(tài)軟件體系結(jié)構(gòu)技術(shù),提出了一種支持軟件環(huán)境適應(yīng)能力細(xì)粒度在線調(diào)整的構(gòu)件模型AC0E(Adaptive Component model for OpenEnvironment)。ACOE將軟件環(huán)境適應(yīng)能力中的感知、決策、執(zhí)行等關(guān)注點(diǎn)封裝為獨(dú)立的構(gòu)件和連接子,通過(guò)動(dòng)態(tài)軟件體系結(jié)構(gòu)技術(shù)來(lái)支持它們的在線重配置??v觀國(guó)內(nèi)外研究動(dòng)向可以看出,當(dāng)前演化研究的熱點(diǎn)集中于通過(guò)對(duì)現(xiàn)有構(gòu)件平臺(tái)的修改和擴(kuò)展來(lái)提高應(yīng)用的動(dòng)態(tài)配置能力。所采用的方法主要包括對(duì)原有的構(gòu)件計(jì)算平臺(tái)進(jìn)行較大擴(kuò)展,開(kāi)發(fā)人員在分布構(gòu)件管理框架下編寫大量處理系統(tǒng)動(dòng)態(tài)特性的代碼,負(fù)擔(dān)重、復(fù)雜度高;依靠平臺(tái)提供的動(dòng)態(tài)配置所需的大量結(jié)構(gòu)和語(yǔ)義元數(shù)據(jù)等反射要件實(shí)現(xiàn)應(yīng)用的動(dòng)態(tài)配置,但對(duì)構(gòu)件平臺(tái)的反射能力需求較高;依靠構(gòu)件容器對(duì)構(gòu)件的特殊調(diào)控來(lái)提高系統(tǒng)的在線演化能力,但也需對(duì)容器進(jìn)行擴(kuò)展。因此,現(xiàn)有的基于構(gòu)件建造的軟件系統(tǒng)為了實(shí)現(xiàn)動(dòng)態(tài)配置需要額外付出較大代價(jià)。

發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)服務(wù)構(gòu)件架構(gòu)下的應(yīng)用系統(tǒng)缺乏行為動(dòng)態(tài)性和結(jié)構(gòu)靈活性的現(xiàn)狀,在沿襲傳統(tǒng)構(gòu)件模型基本特征的基礎(chǔ)之上,提出一種具有良好的構(gòu)造性(體系結(jié)構(gòu)易于刻畫)和演化性(體系結(jié)構(gòu)易于動(dòng)態(tài)配置)的構(gòu)件模型及構(gòu)件工廠,以提高構(gòu)件化應(yīng)用在運(yùn)行階段的開(kāi)放性、適應(yīng)性和可擴(kuò)展性。達(dá)到上述目的,本發(fā)明的實(shí)施例提供了一種顯式支持體系結(jié)構(gòu)動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,構(gòu)件模型包括業(yè)務(wù)接口、構(gòu)件體和管理外殼;其中,所述業(yè)務(wù)接口模塊是構(gòu)件與外界的服務(wù)交互點(diǎn);所述構(gòu)件體模塊用于嵌套包含子構(gòu)件;所述管理外殼模塊提供支持動(dòng)態(tài)配置的元接口。所述構(gòu)件工廠用于在Java平臺(tái)下創(chuàng)建構(gòu)件實(shí)例,以實(shí)現(xiàn)構(gòu)件從靜態(tài)體系結(jié)構(gòu)描述到可運(yùn)行實(shí)例的無(wú)縫過(guò)渡。作為上述技術(shù)方案的優(yōu)選,所述管理外殼模塊提供支持動(dòng)態(tài)配置的元接口,包括生命周期協(xié)調(diào)元接口,用于提供對(duì)構(gòu)件的運(yùn)行狀態(tài)進(jìn)行動(dòng)態(tài)調(diào)控的接口 ;成員管理元接口,用于提供對(duì)構(gòu)件內(nèi)的子構(gòu)件成員進(jìn)行動(dòng)態(tài)配置的接口 ;
綁定連接元接口,用于提供對(duì)構(gòu)件之間的接口綁定進(jìn)行動(dòng)態(tài)配置的接口 ;進(jìn)一步的,本發(fā)明實(shí)施例還提出了前述的支持動(dòng)態(tài)配置的構(gòu)件模型的實(shí)例化工廠,以實(shí)現(xiàn)構(gòu)件從靜態(tài)體系結(jié)構(gòu)描述到可運(yùn)行實(shí)例的無(wú)縫過(guò)渡,所述構(gòu)件工廠包括元接口實(shí)現(xiàn)框架模塊,用于遵循構(gòu)件模型的元接口標(biāo)準(zhǔn)定義,在Java平臺(tái)下提供元接口的內(nèi)核編碼實(shí)現(xiàn),為動(dòng)態(tài)創(chuàng)建構(gòu)件實(shí)例提供基礎(chǔ)類庫(kù);
ADL解析器模塊,用于載入構(gòu)件的體系結(jié)構(gòu)描述,生成一棵可被字節(jié)碼動(dòng)態(tài)產(chǎn)生器執(zhí)行的實(shí)例化任務(wù)樹(shù);字節(jié)碼動(dòng)態(tài)產(chǎn)生器模塊,用于一邊遍歷所述實(shí)例化任務(wù)樹(shù),一邊基于ASM字節(jié)碼框架創(chuàng)建構(gòu)件實(shí)例對(duì)應(yīng)的各對(duì)象實(shí)體的字節(jié)數(shù)組;類動(dòng)態(tài)加載器模塊,用于把字節(jié)數(shù)組轉(zhuǎn)換為類的實(shí)例,采用雙親委托的加載鏈機(jī)制,將返回的Class對(duì)象載入JVM,以創(chuàng)建可運(yùn)行的構(gòu)件實(shí)例。作為上述技術(shù)方案的優(yōu)選,所述的構(gòu)件可運(yùn)行實(shí)例的特征在于基于對(duì)象范型創(chuàng)建與構(gòu)件實(shí)例相映射的一組對(duì)象集,具體包括業(yè)務(wù)接口對(duì)象,構(gòu)件的每個(gè)業(yè)務(wù)接口對(duì)應(yīng)一個(gè)業(yè)務(wù)接口對(duì)象,該對(duì)象擁有業(yè)務(wù)接口實(shí)現(xiàn)對(duì)象的強(qiáng)引用,用于將對(duì)接口的操作調(diào)用分派給對(duì)應(yīng)的實(shí)現(xiàn)對(duì)象來(lái)執(zhí)行;業(yè)務(wù)接口實(shí)現(xiàn)對(duì)象,與業(yè)務(wù)接口對(duì)象一一對(duì)應(yīng),該對(duì)象不僅提供了業(yè)務(wù)接口的具體功能實(shí)現(xiàn);元接口對(duì)象,由外殼元接口實(shí)例化得到,用于接收外界對(duì)構(gòu)件的動(dòng)態(tài)配置請(qǐng)求,并委派給相應(yīng)元接口實(shí)現(xiàn)對(duì)象處理;元接口實(shí)現(xiàn)對(duì)象,每一個(gè)元接口對(duì)象都將對(duì)應(yīng)一個(gè)實(shí)現(xiàn)對(duì)象,用于接受元接口對(duì)象的委托請(qǐng)求,是觀測(cè)、控制和調(diào)整構(gòu)件行為或結(jié)構(gòu)、實(shí)現(xiàn)動(dòng)態(tài)配置邏輯的核心實(shí)體;上下文對(duì)象,用于建立上述對(duì)象集與構(gòu)件之間的映射關(guān)聯(lián),由它來(lái)維護(hù)構(gòu)件自身運(yùn)行的上下文屬性,該對(duì)象將構(gòu)件的其它關(guān)聯(lián)對(duì)象的引用存儲(chǔ)在專用數(shù)據(jù)結(jié)構(gòu)中,以維持各對(duì)象之間的因果聯(lián)系。作為上述技術(shù)方案的優(yōu)選,所述元接口實(shí)現(xiàn)框架模塊的方法包括生命周期協(xié)調(diào)器,用于將目標(biāo)構(gòu)件及其子構(gòu)件由正常運(yùn)行狀態(tài)正確切換到相對(duì)靜止的安全配置狀態(tài),有效避免生命周期協(xié)調(diào)過(guò)程中因阻塞重入請(qǐng)求而引發(fā)的構(gòu)件異常死鎖;成員管理器,用于在構(gòu)件的構(gòu)件體內(nèi)部動(dòng)態(tài)添加、刪除或者更新子構(gòu)件;綁定連接器,用于在構(gòu)件的業(yè)務(wù)接口之間動(dòng)態(tài)建立/解除連接,或者對(duì)已經(jīng)存在的綁定進(jìn)行重定向。作為上述技術(shù)方案的優(yōu)選,所述ADL解析器模塊的實(shí)現(xiàn)裝置包括AST轉(zhuǎn)換器單元,用于一邊讀取載有體系結(jié)構(gòu)描述的XML文檔,一邊將其變換成一個(gè)特定的結(jié)構(gòu)化中間表達(dá)——抽象語(yǔ)法樹(shù);任務(wù)規(guī)劃器單元,用于一邊遍歷抽象語(yǔ)法樹(shù),一邊定義構(gòu)件實(shí)例化過(guò)程中的各種任務(wù),最終生成一棵可被字節(jié)碼動(dòng)態(tài)生成器執(zhí)行的實(shí)例化任務(wù)樹(shù)。作為上述技術(shù)方案的優(yōu)選,所述字節(jié)碼動(dòng)態(tài)產(chǎn)生器模塊的實(shí)現(xiàn)裝置主要包括業(yè)務(wù)接口實(shí)現(xiàn)類產(chǎn)生器單元,用于創(chuàng)建業(yè)務(wù)接口實(shí)現(xiàn)類,它基于AOP(Aspect Oriented Programming)動(dòng)態(tài)編織技術(shù),可將攔截型的多維控制代碼動(dòng)態(tài)添加到構(gòu)件的業(yè)務(wù)接口實(shí)現(xiàn)類中;元接口實(shí)現(xiàn)類產(chǎn)生器單元,用于創(chuàng)建元接口實(shí)現(xiàn)類,它基于線性混入技術(shù),將所述元接口實(shí)現(xiàn)框架單元內(nèi)的混入式多態(tài)類聚合在元接口實(shí)現(xiàn)類中;上下文類產(chǎn)生器單元,用于創(chuàng)建上下文類,它是與每一個(gè)構(gòu)件實(shí)例相對(duì)應(yīng)的背景環(huán)境對(duì)象,由該對(duì)象維護(hù)構(gòu)件自身運(yùn)行的上下文屬性,可將構(gòu)件的其他關(guān)聯(lián)類的引用存儲(chǔ)在專用數(shù)據(jù)結(jié)構(gòu)中,以維持各對(duì)象之間的因果聯(lián)系。作為上述技術(shù)方案的優(yōu)選,所述生命周期協(xié)調(diào)器用于將目標(biāo)構(gòu)件由正常運(yùn)行狀態(tài)切換到相對(duì)靜止的安全配置狀態(tài),具體包括向目標(biāo)構(gòu)件發(fā)送第一控制指令,以使目標(biāo)構(gòu)件從正常運(yùn)行狀態(tài)切換到準(zhǔn)停態(tài),在此期間,當(dāng)目標(biāo)構(gòu)件需要向外界發(fā)出新的服務(wù)請(qǐng)求時(shí),將會(huì)在請(qǐng)求中自動(dòng)追加一個(gè)預(yù)設(shè)特殊標(biāo)識(shí),且與該請(qǐng)求直接相關(guān)的中繼處理請(qǐng)求都會(huì)保留特殊標(biāo)識(shí);此狀態(tài)結(jié)束之前,目標(biāo)構(gòu)件向其子構(gòu)件發(fā)送第二控制指令,以驅(qū)動(dòng)子構(gòu)件切換到等停態(tài),它自身則轉(zhuǎn)入等停態(tài);其中所述第一、二控制指令中包括預(yù)設(shè)標(biāo)識(shí);在等停態(tài)階段,所述目標(biāo)構(gòu)件除了有選擇地響應(yīng)帶有預(yù)設(shè)特殊標(biāo)識(shí)的重入請(qǐng)求夕卜,將強(qiáng)制阻塞其他任何外來(lái)請(qǐng)求;而內(nèi)部子構(gòu)件的計(jì)算行為不受約束,當(dāng)任務(wù)處理完畢后變?yōu)榭臻e,該子構(gòu)件由等停態(tài)切換到允停態(tài),并由內(nèi)向外依次向目標(biāo)構(gòu)件發(fā)送第三控制指令;其中所述第三控制指令中包括預(yù)設(shè)標(biāo)識(shí);所述目標(biāo)構(gòu)件接收到子構(gòu)件的第三控制指令后,向全體子構(gòu)件發(fā)送第四控制指令,以使所有子構(gòu)件切換到安全配置狀態(tài);其中所述第四控制指令中包括預(yù)設(shè)標(biāo)識(shí);當(dāng)所有子構(gòu)件切換到安全配置狀態(tài)時(shí),目標(biāo)構(gòu)件也切換到安全配置狀態(tài)。作為上述技術(shù)方案的優(yōu)選,所述成員管理器用于在構(gòu)件體內(nèi)部動(dòng)態(tài)添加、刪除或者更新子構(gòu)件,具體包括成員配置合法性檢查單元,用于前攝式驗(yàn)證,采用謂詞型約束檢查以確保成員管理的合法有效;成員添加單元,用于在構(gòu)件內(nèi)部動(dòng)態(tài)添加指定的子構(gòu)件;成員刪除單元,用于動(dòng)態(tài)刪除指定的子構(gòu)件;成員更新單元,用于以新的子構(gòu)件替換指定的子構(gòu)件。作為上述技術(shù)方案的優(yōu)選,所述綁定連接器在構(gòu)件的業(yè)務(wù)接口之間動(dòng)態(tài)建立/解除連接,或者對(duì)已經(jīng)存在的綁定進(jìn)行重定向的方法及裝置包括綁定配置合法性檢查單元,用于前攝式驗(yàn)證,采用謂詞型約束檢查以確保綁定連接配置的合法有效;綁定建立單元,用于在構(gòu)件業(yè)務(wù)接口之間動(dòng)態(tài)建立連接;綁定解除單元,用于解除已經(jīng)建立的接口連接關(guān)系;綁定重定向單元,用于將已經(jīng)存在的接口綁定重新定向到新的接口上。本發(fā)明的有益效果是本發(fā)明給運(yùn)行階段的軟件系統(tǒng)和應(yīng)用帶來(lái)新的亮點(diǎn)。它使得第三方可以在必要時(shí)通過(guò)管理外殼上支持體系結(jié)構(gòu)動(dòng)態(tài)配置的元接口,對(duì)該構(gòu)件的運(yùn)行狀態(tài)、內(nèi)部實(shí)體組成及其互連關(guān)系等進(jìn)行局部地在線調(diào)整或重構(gòu),而不會(huì)影響系統(tǒng)整體的穩(wěn)定運(yùn)行,從而以很小的代價(jià)換來(lái)軟件系統(tǒng)良好的行為動(dòng)態(tài)性和結(jié)構(gòu)靈活性,可有效提升運(yùn)行期系統(tǒng)的擴(kuò)展性和動(dòng)態(tài)適應(yīng)能力。


為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為SMC構(gòu)件的抽象模型。圖2為基于SMC/ADL的構(gòu)件體系結(jié)構(gòu)描述。圖3為構(gòu)件工廠的總體架構(gòu)。圖4為構(gòu)件實(shí)例與其對(duì)象空間之間的映射。圖5為ADL解析器的構(gòu)造方法及裝置。圖6為字節(jié)碼產(chǎn)生器的構(gòu)造方法及裝置。圖7為上下文類的構(gòu)造方法。圖8為生命周期協(xié)調(diào)器驅(qū)動(dòng)下的構(gòu)件狀態(tài)切換步驟。
具體實(shí)施例方式下面將結(jié)合本發(fā)明的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例, 本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。以下通過(guò)一個(gè)具體的實(shí)例對(duì)本發(fā)明做進(jìn)一步說(shuō)明。本發(fā)明提供一種具有良好的構(gòu)造性(體系結(jié)構(gòu)易于刻畫)和演化性(體系結(jié)構(gòu)易于動(dòng)態(tài)配置)的構(gòu)件模型SMC(SoftMan Component),由業(yè)務(wù)接口、構(gòu)件體和管理外殼組成。其中,業(yè)務(wù)接口是構(gòu)件與外界的服務(wù)交互點(diǎn);構(gòu)件體用于嵌套包含子構(gòu)件;管理外殼提供支持動(dòng)態(tài)配置的元接口。如圖I所示,SMC構(gòu)件定義為一個(gè)三元組,即SMC =〈BI,CB, MShell〉。各模塊特征描述如下①業(yè)務(wù)接口 BI (Business Interfaces):是構(gòu)件與外界環(huán)境和其它構(gòu)件的交互點(diǎn),封裝了構(gòu)件作為服務(wù)實(shí)體的業(yè)務(wù)功能邏輯。BI接口定義為一個(gè)四元組,即BI = <int erfaceName, type, multiplicity, signature〉。根據(jù)與外界交互的目的不同,接口的 type 分為對(duì)稱的兩類provided和requested。multiplicity連接多重性表達(dá)構(gòu)件之間基于接口的顯式依賴進(jìn)行綁定時(shí)可以允許的連接數(shù)目約定?;{(diào)signature則描述了接口的操作名、返回類型、形參等語(yǔ)法特征。②構(gòu)件體CB (Component Body) :SMC利用構(gòu)件體形象地刻畫構(gòu)件的層級(jí)嵌套特征。在圖I中,復(fù)合構(gòu)件C的構(gòu)件體中封裝了 3個(gè)(a、0和Y)具有一定配置結(jié)構(gòu)的“子構(gòu)件”集。而這些直接“子構(gòu)件”仍可以繼續(xù)嵌套其他的“子構(gòu)件”集, 直至CB為空結(jié)構(gòu)的原子構(gòu)件。③構(gòu)件管理外殼MShell (Management Shell):與傳統(tǒng)構(gòu)件基于容器的內(nèi)核級(jí)運(yùn)行、管理和控制機(jī)制不同,MShell為描述、控制和調(diào)整構(gòu)件的行為和結(jié)構(gòu)從構(gòu)件級(jí)別提供了顯式的高層接口。為了與功能性業(yè)務(wù)接口相區(qū)別,把這些支持動(dòng)態(tài)配置的非功能接口稱為元接口。在圖I中,示意了 SMC構(gòu)件的管理外殼缺省提供3標(biāo)準(zhǔn)元接口, 它們分別是LifeCycleCoordinator(生命周期協(xié)調(diào)元接口)驅(qū)動(dòng)處于運(yùn)行常態(tài)的構(gòu)件進(jìn)入可配置的安全狀態(tài),或者逆向激活;MemberManager(成員管理元接口)用于在構(gòu)件體內(nèi)部添加、刪除或更新子構(gòu)件;BindingConnection(綁定連接元接口 )用于對(duì)構(gòu)件之間的接口綁定進(jìn)行動(dòng)態(tài)配置。上述元接口為動(dòng)態(tài)操縱和控制SMC構(gòu)件的運(yùn)行行為或內(nèi)部結(jié)構(gòu)提供了使能機(jī)制。需要說(shuō)明的是,MShell提供了針對(duì)構(gòu)件微觀行為和結(jié)構(gòu)進(jìn)行特殊管控的“灰盒框架”,但是,它本身并不進(jìn)行任何的控制處理,所有的非功能關(guān)注均由其元接口來(lái)實(shí)現(xiàn)。這些元接口與管理外殼之間松散耦合,使得各種與動(dòng)態(tài)配置相關(guān)的非功能關(guān)注可以獨(dú)立表 達(dá)和封裝。為了支持基于軟件體系結(jié)構(gòu)的動(dòng)態(tài)配置,本發(fā)明選擇可擴(kuò)展標(biāo)記語(yǔ)言XML作為元語(yǔ)言,提出定義和表達(dá)SMC構(gòu)件及其系統(tǒng)體系結(jié)構(gòu)的規(guī)約語(yǔ)言——SMC/ADL (SMCArchitecture Description Language)。圖2基于SMC/ADL的建模元素(業(yè)務(wù)接口、構(gòu)件、接口綁定等),對(duì)圖I所示復(fù)合構(gòu)件的體系結(jié)構(gòu)配置進(jìn)行了抽象刻畫。其中,〈component〉標(biāo)簽描述了構(gòu)件的標(biāo)識(shí)符(name)和類型(type)屬性。業(yè)務(wù)接口特征由〈businessinterface〉元素表達(dá),其type屬性指定了構(gòu)件的類型 provided 或者 requested !multiplicity 連接多重屬性(multiplicity =[l..l]0R[l..n]0R
0R
)描述了構(gòu)件之間基于接口綁定時(shí)的連接數(shù)目約定。例如,對(duì)于requested接口而言,如果其multiplicity = “I. . I”,則表示系統(tǒng)運(yùn)行前,該接口必須進(jìn)行綁定;如果multiplicity =“0. . I”,則表示系統(tǒng)運(yùn)行前此接口不必綁定或者需要時(shí)與另一個(gè)provided接口動(dòng)態(tài)綁定;基調(diào)signature屬性則提供了接口的操作名、返回類型、形參等語(yǔ)法特征描述?!碿omponentbody〉標(biāo)簽描述了構(gòu)件體的配置特征。在構(gòu)件體內(nèi)部,分別利用3個(gè)〈subcomponent〉標(biāo)簽刻畫了構(gòu)件C與構(gòu)件α、β和γ之間的“父-子”包含關(guān)系。為了描述構(gòu)件C內(nèi)部的連接配置情況,定義了 2個(gè)標(biāo)識(shí)構(gòu)件之間綁定關(guān)系的標(biāo)簽一個(gè)是水平綁定〈horizontalbinding〉標(biāo)簽,即指定隸屬于同一父構(gòu)件的、不同直接子構(gòu)件的required和provided接口之間的連接依賴;另一種是垂直綁定〈verticalbinding〉標(biāo)簽,即配置父構(gòu)件與內(nèi)部的直接子構(gòu)件之間的連接關(guān)系。需要說(shuō)明的是,SMC/ADL描述的抽象系統(tǒng)就是一個(gè)包括不同粒度子構(gòu)件的、多層級(jí)、結(jié)構(gòu)化的復(fù)合構(gòu)件,其中每一個(gè)復(fù)合構(gòu)件就是一個(gè)子系統(tǒng);同時(shí),系統(tǒng)也可以看作是一個(gè)粒度最大的復(fù)合構(gòu)件。因此,從這個(gè)意義上來(lái)講,復(fù)合構(gòu)件和系統(tǒng)只有層次上的差異。體系結(jié)構(gòu)描述僅僅從全局配置的角度給出了構(gòu)件的靜態(tài)抽象,構(gòu)件工廠為實(shí)現(xiàn)從體系結(jié)構(gòu)的高層結(jié)構(gòu)模型到可運(yùn)行系統(tǒng)的過(guò)渡提供了可能。它能夠?qū)⒍x的建模元素映射為顯式的體系結(jié)構(gòu)實(shí)例,支持系統(tǒng)模型向可運(yùn)行實(shí)體的轉(zhuǎn)化。在軟件工程領(lǐng)域,成熟的分布式對(duì)象技術(shù)已經(jīng)成為創(chuàng)建構(gòu)件運(yùn)行平臺(tái)的有效方案。SMC構(gòu)件的實(shí)例化也將采用面向?qū)ο?Java平臺(tái))的技術(shù)路線來(lái)實(shí)現(xiàn)。圖3所示為構(gòu)件的實(shí)例化裝置——構(gòu)件工廠的總體架構(gòu),各個(gè)模塊的功能描述如下①元接口實(shí)現(xiàn)框架模塊,遵循構(gòu)件模型的元接口標(biāo)準(zhǔn)定義,在Java平臺(tái)下提供元接口的內(nèi)核編碼實(shí)現(xiàn),為動(dòng)態(tài)創(chuàng)建構(gòu)件實(shí)例提供基礎(chǔ)類庫(kù);②ADL解析器模塊,用于載入基于XML表達(dá)的構(gòu)件體系結(jié)構(gòu)描述文檔,從ADL (Architecture Description Language)中抽取與構(gòu)件實(shí)例化相關(guān)的語(yǔ)義,生成一棵可被字節(jié)碼動(dòng)態(tài)產(chǎn)生器執(zhí)行的實(shí)例化任務(wù)樹(shù)(ITT, Instantiation Task Tree);
③字節(jié)碼動(dòng)態(tài)產(chǎn)生器模塊,一邊遍歷ITT樹(shù),一邊利用ASM字節(jié)碼框架調(diào)用不同的字節(jié)碼生成模板來(lái)創(chuàng)建構(gòu)件實(shí)例對(duì)應(yīng)的各對(duì)象實(shí)體(包括業(yè)務(wù)接口類、元接口類、業(yè)務(wù)接口實(shí)現(xiàn)類、元接口實(shí)現(xiàn)類和上下文類)的字節(jié)數(shù)組byte[];④類動(dòng)態(tài)加載器模塊,用于將創(chuàng)建字節(jié)數(shù)組byte []轉(zhuǎn)換為類的實(shí)例,采用雙親委托的加載鏈機(jī)制,將返回的Class對(duì)象載入JVM,以創(chuàng)建可運(yùn)行的構(gòu)件實(shí)例。從宏觀結(jié)構(gòu)來(lái)看,基于SMC的軟件應(yīng)用可以分解為一組層級(jí)嵌套的構(gòu)件及構(gòu)件之間的交互關(guān)系;從微觀組成來(lái)看,分布對(duì)象技術(shù)支撐下的構(gòu)件化系統(tǒng)本質(zhì)上又表現(xiàn)為對(duì)象風(fēng)格的軟件架構(gòu)。在對(duì)象范型的軟件體系結(jié)構(gòu)中,SMC構(gòu)件實(shí)際上對(duì)應(yīng)于一組具有關(guān)聯(lián)的對(duì)象集合,且本質(zhì)是通過(guò)這些對(duì)象之間的協(xié)作完成構(gòu)件的業(yè)務(wù)功能和演化操作。
圖4為對(duì)象范型下,構(gòu)件實(shí)例映射的一組對(duì)象空間,具體包括以下5類對(duì)象①業(yè)務(wù)接口對(duì)象,構(gòu)件的每個(gè)業(yè)務(wù)接口對(duì)應(yīng)一個(gè)業(yè)務(wù)接口對(duì)象,該對(duì)象擁有業(yè)務(wù)接口實(shí)現(xiàn)對(duì)象的強(qiáng)引用,用于將對(duì)接口的操作調(diào)用分派給對(duì)應(yīng)的實(shí)現(xiàn)對(duì)象來(lái)執(zhí)行;②業(yè)務(wù)接口實(shí)現(xiàn)對(duì)象,與業(yè)務(wù)接口對(duì)象——對(duì)應(yīng),該對(duì)象不僅提供了業(yè)務(wù)接口的具體功能實(shí)現(xiàn);③元接口對(duì)象,由外殼元接口實(shí)例化得到,用于接收外界對(duì)構(gòu)件的動(dòng)態(tài)配置請(qǐng)求, 并委派給相應(yīng)元接口實(shí)現(xiàn)對(duì)象處理;④元接口實(shí)現(xiàn)對(duì)象,每一個(gè)元接口對(duì)象都將對(duì)應(yīng)一個(gè)實(shí)現(xiàn)對(duì)象,用于接受元接口對(duì)象的委托請(qǐng)求,是觀測(cè)、控制和調(diào)整構(gòu)件行為或結(jié)構(gòu)、實(shí)現(xiàn)動(dòng)態(tài)配置邏輯的核心實(shí)體;⑤上下文對(duì)象,用于建立上述對(duì)象集與構(gòu)件之間的映射關(guān)聯(lián),由它來(lái)維護(hù)構(gòu)件自身運(yùn)行的上下文屬性,該對(duì)象將構(gòu)件的其它關(guān)聯(lián)對(duì)象的引用存儲(chǔ)在專用數(shù)據(jù)結(jié)構(gòu)中,以維持各對(duì)象之間的因果聯(lián)系。在界定了構(gòu)件運(yùn)行對(duì)象空間的邊界之后,構(gòu)件工廠的核心功能將變得更加明確, 即依據(jù)構(gòu)件的體系結(jié)構(gòu)描述,將構(gòu)件實(shí)例具體映射為與其一一對(duì)應(yīng)的一組關(guān)聯(lián)對(duì)象集合, 并使得這些對(duì)象之間協(xié)調(diào)配合以實(shí)現(xiàn)構(gòu)件的功能計(jì)算(業(yè)務(wù)服務(wù)邏輯)和非功能計(jì)算(動(dòng)態(tài)配置邏輯)。圖5為ADL解析器模塊的構(gòu)造方法及裝置。ADL解析器是加載、分析和處理構(gòu)件體系結(jié)構(gòu)描述的專用工具,也是構(gòu)件實(shí)例化流程的第一階段。從基本層面上來(lái)講,ADL解析器是流水化作業(yè)的首先,讀取載有體系結(jié)構(gòu)描述的XML文檔(*.smc);然后,AST轉(zhuǎn)換器將其變換成一個(gè)特定的結(jié)構(gòu)化中間表達(dá)——抽象語(yǔ)法樹(shù)(AST樹(shù));繼而,任務(wù)規(guī)劃器一邊遍歷 AST樹(shù),一邊定義構(gòu)件實(shí)例化過(guò)程中的各種任務(wù),最終生成一棵可被字節(jié)碼動(dòng)態(tài)生成器執(zhí)行的實(shí)例化任務(wù)樹(shù)(ITT樹(shù))。AST樹(shù)中的每個(gè)Node映射于體系結(jié)構(gòu)的建模元素及其屬性。其中,每個(gè)Node包括 type(節(jié)點(diǎn)類型)、parent (父節(jié)點(diǎn))、children (子節(jié)點(diǎn)列表)和property (節(jié)點(diǎn)屬性)。 為便于訪問(wèn)AST樹(shù),除根節(jié)點(diǎn)外,其余節(jié)點(diǎn)均含有指向其父節(jié)點(diǎn)的parent域。當(dāng)生成正確的AST樹(shù)之后,任務(wù)規(guī)劃器接管后續(xù)工作。它負(fù)責(zé)遍歷AST樹(shù),每當(dāng)訪問(wèn)到AST樹(shù)中代表構(gòu)件或者接口類型的節(jié)點(diǎn)時(shí),就會(huì)在ITT樹(shù)中注冊(cè)一個(gè)新的任務(wù)節(jié)點(diǎn)。由此可以看出,ITT樹(shù)的每一節(jié)點(diǎn)實(shí)際上表征了一項(xiàng)將參與到構(gòu)件實(shí)例化過(guò)程中的、既相對(duì)獨(dú)立又與其他節(jié)點(diǎn)存在關(guān)聯(lián)和數(shù)據(jù)交換的字節(jié)碼創(chuàng)建任務(wù)。圖6為字節(jié)碼產(chǎn)生器的構(gòu)造方法及裝置。字節(jié)碼動(dòng)態(tài)產(chǎn)生器的職能是執(zhí)行ITT樹(shù)制定的任務(wù)規(guī)劃,以動(dòng)態(tài)生成SMC構(gòu)件映射的類空間。這里需要說(shuō)明的是,采取動(dòng)態(tài)創(chuàng)建構(gòu)件映射的類空間的策略主要基于以下客觀實(shí)際眾所周知,字節(jié)碼是Java編譯器編譯源文件(.java)之后的產(chǎn)物,它的實(shí)例化即為Java對(duì)象。但是,在支持SMC構(gòu)件運(yùn)行的對(duì)象空間中,有些對(duì)象(如服務(wù)接口實(shí)現(xiàn)對(duì)象)是由構(gòu)件的設(shè)計(jì)實(shí)現(xiàn)人員直接提供源碼;而還有些對(duì)象(如外殼元接口實(shí)現(xiàn)對(duì)象、上下文對(duì)象)則是由構(gòu)件工廠自動(dòng)生成的。盡管元接口實(shí)現(xiàn)框架提供了統(tǒng)一的外殼元接口編碼實(shí)現(xiàn),但是,它們并不屬于構(gòu)件的私有源碼資源,更不可能直接實(shí)例化為有效的對(duì)象實(shí)體。由此誕生了字節(jié)碼的動(dòng)態(tài)生成方案,即對(duì)于前一類對(duì)象,為了與構(gòu)件的動(dòng)態(tài)配置機(jī)制相適應(yīng),通過(guò)字節(jié)碼重構(gòu)增強(qiáng)其基礎(chǔ)代碼的功能;而對(duì)于后一類對(duì)象,則基于內(nèi)核實(shí)現(xiàn)框架,完全從無(wú)到有進(jìn)行動(dòng)態(tài)創(chuàng)建。
Objectffeb ASM是輕量級(jí)的Java字節(jié)碼(ByteCode)處理框架。它可以基于訪問(wèn)者模式生成二進(jìn)制格式的字節(jié)碼,還能夠在類被JVM裝入內(nèi)存之前完成動(dòng)態(tài)創(chuàng)建或重構(gòu)?;贏SM框架,字節(jié)碼動(dòng)態(tài)產(chǎn)生器首先,啟動(dòng)對(duì)ITT樹(shù)的深度優(yōu)先遍歷;然后,一邊訪問(wèn)ITT的任務(wù)節(jié)點(diǎn),一邊通過(guò)內(nèi)嵌的調(diào)度器確定任務(wù)類型;接著調(diào)用相應(yīng)的字節(jié)碼producer模板來(lái)構(gòu)造不同的字節(jié)碼對(duì)象,最終衍生出構(gòu)件對(duì)應(yīng)的類集合空間。限于篇幅,這里以代表性的業(yè)務(wù)接口實(shí)現(xiàn)類producer、元接口實(shí)現(xiàn)類producer和上下文類producer為例,闡述不同producer的字節(jié)碼構(gòu)造方法。①業(yè)務(wù)接口實(shí)現(xiàn)類producer :從本質(zhì)上講,SMC構(gòu)件間的交互是通過(guò)其接口處的若干操作調(diào)用來(lái)進(jìn)行的。因而,為了對(duì)構(gòu)件業(yè)務(wù)接口的服務(wù)行為進(jìn)行特殊控制,設(shè)計(jì)了服務(wù)接口實(shí)現(xiàn)類producer,以利用Java字節(jié)碼的動(dòng)態(tài)重構(gòu)技術(shù),自動(dòng)地將攔截型的多維控制代碼(如演化監(jiān)控、日志、權(quán)限等),動(dòng)態(tài)編排與封裝在構(gòu)件服務(wù)接口實(shí)現(xiàn)的Class類中。為了以一種有效的方式完成控制關(guān)注點(diǎn)的動(dòng)態(tài)注入,可以將這些關(guān)注點(diǎn)刻面化,每一個(gè)刻面都對(duì)應(yīng)一個(gè)字節(jié)碼攔截器(命名規(guī)則為*Interceptor)。在服務(wù)接口實(shí)現(xiàn)類producer的協(xié)調(diào)與管理下,攔截型代碼以一定的次序和編制規(guī)則共同作用于類的原方法,完成刻面公共代碼和方法中基礎(chǔ)代碼的動(dòng)態(tài)組合與編排。對(duì)于不同攔截代碼的織入都一律轉(zhuǎn)換成通用的weave InterceptorCodeBlock 方法調(diào)用。攔截器會(huì)把方法 m 的 Method 對(duì)象、MethodV isi tor、編織的位置pos和方法參數(shù)的常量表索引beginlndex傳入weavelnterceptorCodeBlock,該方法內(nèi)部又通過(guò)不同visit事件的先后調(diào)用(時(shí)間的先后),轉(zhuǎn)換成字節(jié)碼的位置調(diào)整(空間的前后),最終產(chǎn)生一個(gè)服務(wù)接口實(shí)現(xiàn)類的Class文件。攔截框架還對(duì)各種控制關(guān)注點(diǎn)進(jìn)行了細(xì)化處理,將每一次的方法攔截細(xì)分為before (前置型)和after (后置型)兩種方式。由此可以看出,為了支持動(dòng)態(tài)演化,業(yè)務(wù)接口實(shí)現(xiàn)類producer實(shí)現(xiàn)了在構(gòu)件服務(wù)接口的方法被訪問(wèn)之前/之后自動(dòng)植入跟蹤代碼或新的控制邏輯。這樣,在系統(tǒng)性能無(wú)明顯額外代價(jià)的情況下重構(gòu)了一個(gè)臨時(shí)class類,不僅沒(méi)有影響構(gòu)件的原有功能,而且以靈活的、實(shí)時(shí)的代碼插裝方式為支持動(dòng)態(tài)配置注入了特殊的驗(yàn)證機(jī)制。②元接口實(shí)現(xiàn)類producer :在外殼元接口的內(nèi)核實(shí)現(xiàn)中,始終貫徹分散關(guān)注、代碼重用和功能拆分原則,將元接口不同控制關(guān)注點(diǎn)的默認(rèn)實(shí)現(xiàn)都保留在獨(dú)立的Abstarct類中來(lái)提供。但是,Java類只能夠繼承單一父類,所以高層接口無(wú)法通過(guò)多重繼承的方式在同一個(gè)類中獲得元接口的多態(tài)實(shí)現(xiàn)。為此,將元接口的多態(tài)實(shí)現(xiàn)視為不同的混入類。每個(gè)混入類要么實(shí)現(xiàn)了元接口定義的若干方法,要么重載其他混入類的特定方法以體現(xiàn)元接口“控制行為”的多態(tài)性。在混入類的實(shí)現(xiàn)中,采用了簡(jiǎn)單而有效的模式編程策略,避免了引入其他混入機(jī)制而帶來(lái)的額外開(kāi)銷。該模式策略如下在接口特定方法的實(shí)現(xiàn)中,如果直接引用超類中的成員屬性或者方法實(shí)現(xiàn),則以“this”為前綴重新命名后再使用,并在類中聲明;如果需要調(diào)用被覆寫的超類中的成員方法,則在引用的方法名稱前用“super”前綴重新標(biāo)識(shí),也在類中聲明;對(duì)于新增的屬性和方法,則不加任何特殊前綴。這樣,在構(gòu)件實(shí)例化的過(guò)程中,再利用線性混入機(jī)制,有序地地將元接口的混入式多態(tài)“行為”有機(jī)地聚合在一個(gè)類中,從而動(dòng)態(tài)生成新的、具有多重繼承優(yōu)點(diǎn)的子類。其基本方法是在List類型的
mixinClasses容器中存放著n個(gè)待混入的混入類的線性列表(MCO, MCI,......, MCn-I),那么新派生的子類C將由mixinClasses列表逆序方式混入繼承得到。即,混入的線性序列為MCn-l繼承MCn-2,MCn-2繼承MCn_3,以此類推,直至MCl繼承超類MCO。由此可見(jiàn),新生成的子類C與它的基類之間的繼承關(guān)系,可以表達(dá)為一個(gè)有向無(wú)環(huán)圖。為此,我們提出由基類構(gòu)造C的全序化規(guī)則類C以基類MCn-I作為全序的最后部分,前面是類MCn-2的全序 (MCn-2作為全序的最后部分,前面是類MCn-3的全序),以此類推,直至類MCBO的全序(類 MCBO作為全序的最后部分,前面為空)。按照線性全序化規(guī)則,在混入一個(gè)Mixin類時(shí),其代碼將做適應(yīng)性修改后,才能結(jié)合到C類中。對(duì)于用“_this_”前綴標(biāo)識(shí)的屬性或者方法成員,截取前綴后直接混入C類中;而對(duì)于用“_super_”前綴標(biāo)識(shí)的成員方法,為了區(qū)分多個(gè)父類中重載的同名成員,正確標(biāo)識(shí)繼承后的引用關(guān)系,利用Map型容器counters保存了以“_super_”前綴命名的重載方法與一個(gè)遞增計(jì)數(shù)器n(從I開(kāi)始)的映射關(guān)系。當(dāng)執(zhí)行動(dòng)態(tài)混入操作時(shí),可以根據(jù)混入的順序依次利用“n”后綴給同名的重載方法更名,并刪除 “super”前綴,既保持了子類命名空間內(nèi)標(biāo)識(shí)符的惟一性,又能夠?qū)⒍嘀乩^承特性注入一個(gè)普通的元接口實(shí)現(xiàn)類,從而滿足了內(nèi)核對(duì)外殼接口功能的運(yùn)行時(shí)支持。③上下文類producer :負(fù)責(zé)維護(hù)構(gòu)件運(yùn)行屬性的上下文類Context由該產(chǎn)生器動(dòng)態(tài)創(chuàng)建。上下文類存儲(chǔ)了與構(gòu)件相關(guān)的各類對(duì)象的reference。與reference注冊(cè)相關(guān)的專用數(shù)據(jù)結(jié)構(gòu)包含4個(gè)集合型的成員變量,分為兩類(如圖7所示)一類是有序的List 列表,包括shellltflmpls和businessltf Impls,分別持有外殼接口實(shí)現(xiàn)對(duì)象和業(yè)務(wù)接口實(shí)現(xiàn)對(duì)象的reference ;另一類Map容器,包含shellltfs和businessltfs,它們各自存儲(chǔ)著指向外殼接口對(duì)象和業(yè)務(wù)接口對(duì)象的指針。上下文對(duì)象具有initial ()方法體,主要實(shí)現(xiàn)兩方面的功能一是,利用new()操作分別創(chuàng)建構(gòu)件各個(gè)外殼元接口的實(shí)現(xiàn)對(duì)象和業(yè)務(wù)接口的實(shí)現(xiàn)對(duì)象,并通過(guò)List列表的add()操作,將上述對(duì)象分別添加至shellltflmpls 和businessltf Impls中;二是,再次利用new()操作創(chuàng)建外殼元接口對(duì)象和業(yè)務(wù)接口對(duì)象,在利用構(gòu)造函數(shù)初始化對(duì)象時(shí),通過(guò)setlmplReference ()方法分別設(shè)置外殼元接口及其實(shí)現(xiàn)對(duì)象,業(yè)務(wù)接口及其實(shí)現(xiàn)對(duì)象的委托關(guān)系;并使用HashMap的put ()操作,將上述對(duì)象的缺省描述字符串與其對(duì)象引用的鍵值對(duì)(String, Object)分別存入shellltfs 和businessltfs容器。此外,context對(duì)象的getShellltfs (String)方法還提供了通過(guò) shellltfs的get()操作獲得任意元接口對(duì)象引用的操作,進(jìn)而使得構(gòu)件對(duì)象空間里的各個(gè)實(shí)體,能夠在上下文邊界內(nèi)方便地獲得所需元接口的對(duì)象引用及其控制邏輯。元接口實(shí)現(xiàn)框基于Java平臺(tái),以抽象類集合的方式提供了默認(rèn)實(shí)現(xiàn)。這樣,在構(gòu)件實(shí)例化的過(guò)程中,就可以通過(guò)繼承、多態(tài)機(jī)制,動(dòng)態(tài)派生出元接口實(shí)現(xiàn)類的子類,最終加載成為元接口實(shí)現(xiàn)對(duì)象而運(yùn)行。接下來(lái),本實(shí)施例將闡述生命周期協(xié)調(diào)器、成員管理器和綁定連接器三個(gè)元接口的內(nèi)核實(shí)現(xiàn)方法。
生命周期協(xié)調(diào)元接口定義及其實(shí)現(xiàn)方法描述如下。在開(kāi)放、多變的分布式環(huán)境下,SMC構(gòu)件之間會(huì)基于功能依賴形成動(dòng)態(tài)而復(fù)雜的交互調(diào)用場(chǎng)景。如果對(duì)正處于運(yùn)行態(tài)的構(gòu)件實(shí)施動(dòng)態(tài)配置,將可能導(dǎo)致系統(tǒng)崩潰。為了維持系統(tǒng)一致性并確保動(dòng)態(tài)配置過(guò)程中系統(tǒng)整體處于相對(duì)穩(wěn)定狀態(tài),在動(dòng)態(tài)配置操作實(shí)施之前,生命周期協(xié)調(diào)器必須驅(qū)動(dòng)目標(biāo)構(gòu)件由運(yùn)行常態(tài)躍遷至相對(duì)“靜止”的可配置狀態(tài);同理,當(dāng)動(dòng)態(tài)配置任務(wù)成功提交后,生命周期協(xié)調(diào)器還應(yīng)將調(diào)整后的系統(tǒng)局部恢復(fù)到可運(yùn)行的常規(guī)狀態(tài)。生命周期協(xié)調(diào)元接口定義如下
interface LifeCycleCoordinator { voidnormalToSafeConfigurationState ();
voidsafeC onfigurati onToN ormal State();
boolean isSafeConfigurationState();
StringgetCurrentState ();
}其中,normalToSafeConfigurationState ()和safeConfigurationToNormalState ()將驅(qū)動(dòng)目標(biāo)構(gòu)件(包括子構(gòu)件)在“運(yùn)行常態(tài)”和“強(qiáng)安全配置狀態(tài)”兩個(gè)宏?duì)顟B(tài)之間透明地躍遷。通過(guò)對(duì)SMC構(gòu)件交互機(jī)制及其特征的縝密分析,我們發(fā)現(xiàn),在對(duì)一個(gè)目標(biāo)構(gòu)件SMC_0BJ實(shí)施生命周期協(xié)調(diào)的過(guò)程中,如果不能正確處理它的重入請(qǐng)求,則很可能因阻塞不當(dāng)而導(dǎo)致SMC_0BJ無(wú)法進(jìn)入預(yù)期狀態(tài)。最簡(jiǎn)單的請(qǐng)求重入情況是,目標(biāo)構(gòu)件SMC_0BJ向另一構(gòu)件SMC'提出服務(wù)請(qǐng)求R,而SMC'為了響應(yīng)該請(qǐng)求又一次向SMC_0BJ發(fā)出新的請(qǐng)求RlR'。顯然,SMC_0BJ的生命周期協(xié)調(diào)器一旦強(qiáng)制阻塞了該請(qǐng)求,將使得目標(biāo)構(gòu)件因不能進(jìn)一步響應(yīng)由自身參與的重入請(qǐng)求,而導(dǎo)致其初始請(qǐng)求R無(wú)法獲得正常應(yīng)答,故SMC_0BJ將陷入死鎖狀態(tài)。為了界定目標(biāo)構(gòu)件何時(shí)進(jìn)入“凍結(jié)”狀態(tài),我們給出如下判定規(guī)則目標(biāo)構(gòu)件進(jìn)入相對(duì)靜止的可配置階段,當(dāng)且僅當(dāng)其到達(dá)“強(qiáng)安全配置”狀態(tài)。相應(yīng)地,目標(biāo)構(gòu)件處于“強(qiáng)安全配置”狀態(tài),當(dāng)且僅當(dāng)以下條件同時(shí)成立①在動(dòng)態(tài)配置即將開(kāi)始之前,目標(biāo)構(gòu)件(包括內(nèi)部子構(gòu)件)自身發(fā)出的全部請(qǐng)求都已經(jīng)得到處理,并且也未響應(yīng)其他構(gòu)件提出的請(qǐng)求;②在動(dòng)態(tài)配置結(jié)束之前,目標(biāo)構(gòu)件(包括內(nèi)部子構(gòu)件)不會(huì)自行向外發(fā)出服務(wù)請(qǐng)求,也不會(huì)響應(yīng)其他構(gòu)件提出的請(qǐng)求。圖8把生命周期協(xié)調(diào)器驅(qū)動(dòng)下的SMC_0BJ及其內(nèi)部子構(gòu)件的狀態(tài)切換過(guò)程劃分為以下幾個(gè)階段,各階段的狀態(tài)特征及其實(shí)現(xiàn)方法描述如下①運(yùn)行常態(tài)(Normal Running):這是SMC_0BJ及其子構(gòu)件實(shí)例化之后的普通可運(yùn)行狀態(tài),動(dòng)態(tài)配置成功提交后也必須將構(gòu)件復(fù)原至此初態(tài)。②準(zhǔn)停態(tài)(Ready for Stop):這是一個(gè)只 有SMC_0BJ才具有的中間狀態(tài),用于表征它已經(jīng)開(kāi)始為到達(dá)預(yù)期終態(tài)做出準(zhǔn)備。當(dāng)SMC_0BJ接收到生命周期協(xié)調(diào)器的準(zhǔn)停消息(READY_F0R_ST0P)之后,它進(jìn)入此狀態(tài)。在“準(zhǔn)停態(tài)”維持期間,SMC_0BJ仍然可以正常響應(yīng)外界請(qǐng)求并經(jīng)處理后返回計(jì)算結(jié)果,也可以接收“準(zhǔn)停態(tài)”之前發(fā)出請(qǐng)求但此時(shí)才返回的處理應(yīng)答,但是,當(dāng)SMC_OBJ由于計(jì)算需要向外界發(fā)出新的服務(wù)請(qǐng)求時(shí),將會(huì)在常態(tài)下的請(qǐng)求R°ut中自動(dòng)追加一個(gè)特殊標(biāo)識(shí)(通過(guò)在參數(shù)消息中建立一個(gè)唯一的特殊值綁定的方式來(lái)實(shí)現(xiàn),簡(jiǎn)記SR°ut§)。我們還規(guī)定,與R°ut§直接相關(guān)的中繼處理請(qǐng)求都會(huì)保留特殊標(biāo)識(shí)。所以,當(dāng)帶有特殊標(biāo)識(shí)的中間請(qǐng)求(R°ut§ I Rl IR2 I…Rn)再次(或多次)被SMC_OBJ接收時(shí),仍然能夠被快速識(shí)別重入身份而立即得到響應(yīng)。此狀態(tài)結(jié)束之前,SMC_OBJ會(huì)向直接子構(gòu)件發(fā)出等停消息(驅(qū)動(dòng)子構(gòu)件進(jìn)入等停階段),然后轉(zhuǎn)入下一狀態(tài)。③等停態(tài)(Wait for Stop) :SMC_0BJ及其子構(gòu)件都具備的狀態(tài),它刻畫了構(gòu)件在等候停止階段的行為特征。對(duì)于SMC_0BJ而言,該階段的終止標(biāo)志是它接收到全體直接子構(gòu)件的允停消息(ENABLE_T0_ST0P)。在此階段內(nèi),SMC_0BJ可以接收其他構(gòu)件返回的任何應(yīng)答,但是,除了有選擇地響應(yīng)帶有Rout §標(biāo)識(shí)的重入請(qǐng)求外,它將強(qiáng)制阻塞其他任何外來(lái)請(qǐng)求。對(duì)于SMC_0BJ內(nèi)部的直接子構(gòu)件來(lái)說(shuō),當(dāng)接收到等停消息(WAIT_F0R_ST0P)后,SP進(jìn)入了“等停態(tài)”(注意,由于構(gòu)件的層級(jí)嵌套特征,這一狀態(tài)實(shí)際上是由外向內(nèi)次第傳播的)。在“等停態(tài)”持續(xù)期間,由于SMC_0BJ作為對(duì)外屏障已經(jīng)發(fā)揮了請(qǐng)求選擇性攔截的作用,所以,子構(gòu)件的行為(請(qǐng)求服務(wù)、接收應(yīng)答、響應(yīng)服務(wù)和返回應(yīng)答)就沒(méi)有必要再受約束。④允停態(tài)(Enable to Stop):在這一狀態(tài)下,SMC_0BJ及其全體子構(gòu)件都不再響應(yīng)任何請(qǐng)求,也不會(huì)發(fā)出任何服務(wù)請(qǐng)求,步入閑置期。對(duì)于復(fù)合的SMC_0BJ來(lái)說(shuō),當(dāng)其最內(nèi)層的子構(gòu)件沒(méi)有任何處理任務(wù)而空閑時(shí),將由“等停態(tài)”轉(zhuǎn)入“允停態(tài)”,并且向直接父構(gòu)件發(fā)出允許停止自身的消息(ENABLE_T0_ST0P)。當(dāng)位于次內(nèi)層的直接父構(gòu)件陸續(xù)接收到其全部子構(gòu)件發(fā)來(lái)的允停消息后,亦將自身狀態(tài)變遷為“允停態(tài)”。如此由內(nèi)即外逐層發(fā)生允停狀態(tài)的傳播,直至SMC_0BJ成為最后到達(dá)“允停態(tài)”的構(gòu)件。此時(shí),SMC_0BJ會(huì)向子構(gòu)件發(fā)出STR0NGLY_SAFE_C0NFI⑶RATION消息,驅(qū)使子構(gòu)件進(jìn)入“強(qiáng)安全配置態(tài)”。⑤強(qiáng)安全配置態(tài)(Strongly Safe Configuration):在此階段內(nèi),SMC_0BJ及其全體子構(gòu)件都處于閑置狀態(tài),既沒(méi)有需要響應(yīng)的服務(wù)請(qǐng)求,也不會(huì)提出服務(wù)請(qǐng)求;并且在對(duì)其實(shí)施動(dòng)態(tài)配置期間,如果沒(méi)有生命周期協(xié)調(diào)器激活,整個(gè)構(gòu)件都將陷入無(wú)行為的“凍結(jié)”狀態(tài)。由此滿足“強(qiáng)安全配置”狀態(tài)的充要條件。上述方法有效避免了生命周期協(xié)調(diào)過(guò)程中因阻塞重入請(qǐng)求而引發(fā)的構(gòu)件異常死鎖,為驅(qū)動(dòng)目標(biāo)構(gòu)件順利進(jìn)入“強(qiáng)安全配置態(tài)”提供了正確性保障。成員管理元接口定義及其實(shí)現(xiàn)方法描述如下。在動(dòng)態(tài)配置安全期內(nèi),成員管理器用于在構(gòu)件的構(gòu)件體內(nèi)部添加、刪除或者更新子構(gòu)件,其元接口定義如下
權(quán)利要求
1.一種支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于, 所述構(gòu)建模型包括業(yè)務(wù)接口、構(gòu)件體和管理外殼;其中,所述業(yè)務(wù)接口模塊是構(gòu)件與外界的服務(wù)交互點(diǎn);所述構(gòu)件體模塊用于嵌套包含子構(gòu)件;所述管理外殼模塊提供支持動(dòng)態(tài)配置的元接口; 所述構(gòu)件工廠用于在Java平臺(tái)下創(chuàng)建構(gòu)件實(shí)例,以實(shí)現(xiàn)構(gòu)件從靜態(tài)體系結(jié)構(gòu)描述到可運(yùn)行實(shí)例的無(wú)縫過(guò)渡。
2.根據(jù)權(quán)利要求I所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述管理外殼模塊提供支持動(dòng)態(tài)配置的元接口,包括 生命周期協(xié)調(diào)元接口,用于提供對(duì)構(gòu)件的運(yùn)行狀態(tài)進(jìn)行動(dòng)態(tài)調(diào)控的接口 ; 成員管理元接口,用于提供對(duì)構(gòu)件內(nèi)的子構(gòu)件成員進(jìn)行動(dòng)態(tài)配置的接口 ; 綁定連接元接口,用于提供對(duì)構(gòu)件之間的接口綁定進(jìn)行動(dòng)態(tài)配置的接口。
3.根據(jù)權(quán)利要求I所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述構(gòu)件工廠用于實(shí)現(xiàn)構(gòu)件從靜態(tài)體系結(jié)構(gòu)描述到可運(yùn)行實(shí)例的無(wú)縫過(guò)渡,所述構(gòu)件工廠包括 元接口實(shí)現(xiàn)框架模塊,用于遵循構(gòu)件模型的元接口標(biāo)準(zhǔn)定義,在Java平臺(tái)下提供元接口的內(nèi)核編碼實(shí)現(xiàn),為動(dòng)態(tài)創(chuàng)建構(gòu)件實(shí)例提供基礎(chǔ)類庫(kù); ADL解析器模塊,用于載入構(gòu)件的體系結(jié)構(gòu)描述,生成一棵可被字節(jié)碼動(dòng)態(tài)產(chǎn)生器執(zhí)行的實(shí)例化任務(wù)樹(shù); 字節(jié)碼動(dòng)態(tài)產(chǎn)生器模塊,用于一邊遍歷所述實(shí)例化任務(wù)樹(shù),一邊基于ASM字節(jié)碼框架創(chuàng)建構(gòu)件實(shí)例對(duì)應(yīng)的各對(duì)象實(shí)體的字節(jié)數(shù)組; 類動(dòng)態(tài)加載器模塊,用于把字節(jié)數(shù)組轉(zhuǎn)換為類的實(shí)例,采用雙親委托的加載鏈機(jī)制,將返回的Class對(duì)象載入JVM,以創(chuàng)建可運(yùn)行的構(gòu)件實(shí)例。
4.根據(jù)權(quán)利要求3所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述的構(gòu)件可運(yùn)行實(shí)例的特征在于基于對(duì)象范型創(chuàng)建與構(gòu)件實(shí)例相映射的一組對(duì)象集,具體包括 業(yè)務(wù)接口對(duì)象,構(gòu)件的每個(gè)業(yè)務(wù)接口對(duì)應(yīng)一個(gè)業(yè)務(wù)接口對(duì)象,該對(duì)象擁有業(yè)務(wù)接口實(shí)現(xiàn)對(duì)象的強(qiáng)引用,用于將對(duì)接口的操作調(diào)用分派給對(duì)應(yīng)的實(shí)現(xiàn)對(duì)象來(lái)執(zhí)行; 業(yè)務(wù)接口實(shí)現(xiàn)對(duì)象,與業(yè)務(wù)接口對(duì)象一一對(duì)應(yīng),該對(duì)象不僅提供了業(yè)務(wù)接口的具體功能實(shí)現(xiàn); 元接口對(duì)象,由外殼元接口實(shí)例化得到,用于接收外界對(duì)構(gòu)件的動(dòng)態(tài)配置請(qǐng)求,并委派給相應(yīng)元接口實(shí)現(xiàn)對(duì)象處理; 元接口實(shí)現(xiàn)對(duì)象,每一個(gè)元接口對(duì)象都將對(duì)應(yīng)一個(gè)實(shí)現(xiàn)對(duì)象,用于接受元接口對(duì)象的委托請(qǐng)求,是觀測(cè)、控制和調(diào)整構(gòu)件行為或結(jié)構(gòu)、實(shí)現(xiàn)動(dòng)態(tài)配置邏輯的核心實(shí)體; 上下文對(duì)象,用于建立上述對(duì)象集與構(gòu)件之間的映射關(guān)聯(lián),由它來(lái)維護(hù)構(gòu)件自身運(yùn)行的上下文屬性,該對(duì)象將構(gòu)件的其它關(guān)聯(lián)對(duì)象的引用存儲(chǔ)在專用數(shù)據(jù)結(jié)構(gòu)中,以維持各對(duì)象之間的因果聯(lián)系。
5.根據(jù)權(quán)利要求3所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述元接口實(shí)現(xiàn)框架模塊的實(shí)現(xiàn)方法包括 生命周期協(xié)調(diào)器,用于將目標(biāo)構(gòu)件及其子構(gòu)件由正常運(yùn)行狀態(tài)正確切換到相對(duì)靜止的安全配置狀態(tài),有效避免生命周期協(xié)調(diào)過(guò)程中因阻塞重入請(qǐng)求而引發(fā)的構(gòu)件異常死鎖;成員管理器,用于在構(gòu)件的構(gòu)件體內(nèi)部動(dòng)態(tài)添加、刪除或者更新子構(gòu)件; 綁定連接器,用于在構(gòu)件的業(yè)務(wù)接口之間動(dòng)態(tài)建立/解除連接,或者對(duì)已經(jīng)存在的綁定進(jìn)行重定向。
6.根據(jù)權(quán)利要求3所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述ADL解析器模塊的實(shí)現(xiàn)裝置包括 AST轉(zhuǎn)換器單元,用于一邊讀取載有體系結(jié)構(gòu)描述的XML文檔,一邊將其變換成一個(gè)特定的結(jié)構(gòu)化中間表達(dá)——抽象語(yǔ)法樹(shù); 任務(wù)規(guī)劃器單元,用于一邊遍歷抽象語(yǔ)法樹(shù),一邊定義構(gòu)件實(shí)例化過(guò)程中的各種任務(wù),最終生成一棵可被字節(jié)碼動(dòng)態(tài)生成器執(zhí)行的實(shí)例化任務(wù)樹(shù)。
7.根據(jù)權(quán)利要求3所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述字 節(jié)碼動(dòng)態(tài)產(chǎn)生器模塊的實(shí)現(xiàn)裝置主要包括 業(yè)務(wù)接口實(shí)現(xiàn)類產(chǎn)生器單元,用于創(chuàng)建業(yè)務(wù)接口實(shí)現(xiàn)類,它基于AOP動(dòng)態(tài)編織技術(shù),可將攔截型的多維控制代碼動(dòng)態(tài)添加到構(gòu)件的業(yè)務(wù)接口實(shí)現(xiàn)類中; 元接口實(shí)現(xiàn)類產(chǎn)生器單元,用于創(chuàng)建元接口實(shí)現(xiàn)類,它基于線性混入技術(shù),將所述元接口實(shí)現(xiàn)框架單元內(nèi)的混入式多態(tài)類聚合在元接口實(shí)現(xiàn)類中; 上下文類產(chǎn)生器單元,用于創(chuàng)建上下文類,它是與每一個(gè)構(gòu)件實(shí)例相對(duì)應(yīng)的背景環(huán)境對(duì)象,由該對(duì)象維護(hù)構(gòu)件自身運(yùn)行的上下文屬性,可將構(gòu)件的其他關(guān)聯(lián)類的引用存儲(chǔ)在專用數(shù)據(jù)結(jié)構(gòu)中,以維持各對(duì)象之間的因果聯(lián)系。
8.根據(jù)權(quán)利要求5所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,元接口實(shí)現(xiàn)框架模塊的生命周期協(xié)調(diào)器用于將目標(biāo)構(gòu)件由正常運(yùn)行狀態(tài)切換到相對(duì)靜止的安全配置狀態(tài),具體包括 向目標(biāo)構(gòu)件發(fā)送第一控制指令,以使目標(biāo)構(gòu)件從正常運(yùn)行狀態(tài)切換到準(zhǔn)停態(tài),在此期間,當(dāng)目標(biāo)構(gòu)件需要向外界發(fā)出新的服務(wù)請(qǐng)求時(shí),將會(huì)在請(qǐng)求中自動(dòng)追加一個(gè)預(yù)設(shè)特殊標(biāo)識(shí),且與該請(qǐng)求直接相關(guān)的中繼處理請(qǐng)求都會(huì)保留特殊標(biāo)識(shí);此狀態(tài)結(jié)束之前,目標(biāo)構(gòu)件向其子構(gòu)件發(fā)送第二控制指令,以驅(qū)動(dòng)子構(gòu)件切換到等停態(tài),它自身則轉(zhuǎn)入等停態(tài);其中所述第一、二控制指令中包括預(yù)設(shè)標(biāo)識(shí); 在等停態(tài)階段,所述目標(biāo)構(gòu)件除了有選擇地響應(yīng)帶有預(yù)設(shè)特殊標(biāo)識(shí)的重入請(qǐng)求外,將強(qiáng)制阻塞其他任何外來(lái)請(qǐng)求;而內(nèi)部子構(gòu)件的計(jì)算行為不受約束,當(dāng)任務(wù)處理完畢后變?yōu)榭臻e,該子構(gòu)件由等停態(tài)切換到允停態(tài),并由內(nèi)向外依次向目標(biāo)構(gòu)件發(fā)送第三控制指令;其中所述第三控制指令中包括預(yù)設(shè)標(biāo)識(shí); 所述目標(biāo)構(gòu)件接收到子構(gòu)件的第三控制指令后,向全體子構(gòu)件發(fā)送第四控制指令,以使所有子構(gòu)件切換到安全配置狀態(tài);其中所述第四控制指令中包括預(yù)設(shè)標(biāo)識(shí); 當(dāng)所有子構(gòu)件切換到安全配置狀態(tài)時(shí),目標(biāo)構(gòu)件也切換到安全配置狀態(tài)。
9.根據(jù)權(quán)利要求5所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述元接口實(shí)現(xiàn)框架模塊的成員管理器用于在構(gòu)件體內(nèi)部動(dòng)態(tài)添加、刪除或者更新子構(gòu)件,具體包括 成員配置合法性檢查單元,用于前攝式驗(yàn)證,采用謂詞型約束檢查以確保成員管理的合法有效; 成員添加單元,用于在構(gòu)件內(nèi)部動(dòng)態(tài)添加指定的子構(gòu)件;成員刪除單元,用于動(dòng)態(tài)刪除指定的子構(gòu)件; 成員更新單元,用于以新的子構(gòu)件替換指定的子構(gòu)件。
10.根據(jù)權(quán)利要求5所述的支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,其特征在于,所述元接口實(shí)現(xiàn)框架模塊的綁定連接器在構(gòu)件的業(yè)務(wù)接口之間動(dòng)態(tài)建立/解除連接,或者對(duì)已經(jīng)存在的綁定進(jìn)行重定向的方法及裝置包括 綁定配置合法性檢查單元,用于前攝式驗(yàn)證,采用謂詞型約束檢查以確保綁定連接配置的合法有效; 綁定建立單元,用于在構(gòu)件業(yè)務(wù)接口之間動(dòng)態(tài)建立連接; 綁定解除單元,用于解除已經(jīng)建立的接口連接關(guān)系; 綁定重定向單元,用于將已經(jīng)存在的接口綁定重新定向到新的接口上。
全文摘要
本發(fā)明公開(kāi)一種支持動(dòng)態(tài)配置的構(gòu)件模型及構(gòu)件工廠,該構(gòu)件包括業(yè)務(wù)接口、構(gòu)件體和管理外殼;其中,構(gòu)件體用于包含子構(gòu)件;管理外殼提供支持動(dòng)態(tài)配置的元接口。在Java平臺(tái)下,構(gòu)件工廠基于體系結(jié)構(gòu)描述實(shí)例化構(gòu)件,包括元接口實(shí)現(xiàn)框架、ADL解析器、字節(jié)碼動(dòng)態(tài)產(chǎn)生器和類動(dòng)態(tài)加載器。其中,元接口實(shí)現(xiàn)框架提供基于體系結(jié)構(gòu)的動(dòng)態(tài)配置方法,包括生命周期協(xié)調(diào)器將構(gòu)件由運(yùn)行狀態(tài)切換到相對(duì)靜止的安全配置狀態(tài);在安全期內(nèi),成員管理器用于在構(gòu)件體內(nèi)部添加、刪除或者更新子構(gòu)件,綁定連接器用于對(duì)構(gòu)件接口之間的連接關(guān)系進(jìn)行動(dòng)態(tài)調(diào)整。本發(fā)明使得第三方可以通過(guò)構(gòu)件元接口對(duì)其體系結(jié)構(gòu)進(jìn)行在線配置,可有效提升系統(tǒng)在運(yùn)行階段的動(dòng)態(tài)擴(kuò)展性。
文檔編號(hào)G06F9/44GK102622227SQ20121004486
公開(kāi)日2012年8月1日 申請(qǐng)日期2012年2月24日 優(yōu)先權(quán)日2011年9月13日
發(fā)明者岳洋, 張青川, 曾廣平, 王 琦, 肖超恩, 艾冬梅 申請(qǐng)人:北京科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1