欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在動(dòng)態(tài)類加載器環(huán)境下管理遺留軟件的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的制作方法

文檔序號(hào):6361142閱讀:220來(lái)源:國(guó)知局
專利名稱:在動(dòng)態(tài)類加載器環(huán)境下管理遺留軟件的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域
本公開內(nèi)容總地涉及一種用于便于遺留軟件包(legacy software package)與更復(fù)雜的軟件環(huán)境之間的互操作性的機(jī)制,更具體地,涉及在動(dòng)態(tài)類加載器環(huán)境下管理遺留軟件的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。
背景技術(shù)
在計(jì)算機(jī)科學(xué)中,“序列化”是將結(jié)構(gòu)化數(shù)據(jù)模型類(即,“對(duì)象”)的內(nèi)存表示(in-memory representation)轉(zhuǎn)換或者轉(zhuǎn)化為可以是持久的并且可以使用外部類型標(biāo)識(shí)符識(shí)別的標(biāo)準(zhǔn)外部形式的過程。該序列化過程有時(shí)被稱為“縮小對(duì)象(deflating anobject) ”或者“編列對(duì)象(marshalling an object)”。從外部類型標(biāo)識(shí)符所識(shí)別的持久的標(biāo)準(zhǔn)外部形式提取數(shù)據(jù)模型類的內(nèi)存表示的反向過程被稱為“反序列化”、“擴(kuò)大對(duì)象”或者“反向編列對(duì)象”。數(shù)據(jù)建模軟件產(chǎn)品已被開發(fā)用于序列化和反序列化進(jìn)程。這樣的數(shù)據(jù)建模軟件產(chǎn)品通常使用將外部類型標(biāo)識(shí)符與定義數(shù)據(jù)模型的內(nèi)存表示的數(shù)據(jù)模型類相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),比如,注冊(cè)表(registry)。數(shù)據(jù)建模軟件然后使用該數(shù)據(jù)結(jié)構(gòu)來(lái)識(shí)別這樣的數(shù)據(jù)模型,該數(shù)據(jù)模型的類要被實(shí)例化和配置。遺留數(shù)據(jù)(legacy data)建模軟件產(chǎn)品的一個(gè)示例是基于Java 語(yǔ)言的Eclipse建??蚣?EMF)。從外部模型規(guī)范,EMF為模型提供生成Java類集合的工具和運(yùn)行時(shí)間支持。EMF庫(kù)將來(lái)自各種外部形式(比如,XML)的模型實(shí)例轉(zhuǎn)換為由一個(gè)或者更多個(gè)Java對(duì)象組成的內(nèi)存形式。在至少一些配置中,EMF庫(kù)使用注冊(cè)表來(lái)執(zhí)行轉(zhuǎn)化。注冊(cè)表項(xiàng)(registrykey)是外部類型標(biāo)識(shí)符(比如,統(tǒng)一資源標(biāo)識(shí)符(URI)),注冊(cè)表值是定義模型的內(nèi)存表示的Java類。用于將XML文檔反序列化為Java對(duì)象的EMF軟件將得到該XML文檔的外部類型標(biāo)識(shí)符,在注冊(cè)表中查找外部類型標(biāo)識(shí)符以找到該外部類型標(biāo)識(shí)符的對(duì)應(yīng)Java對(duì)象,然后使Java對(duì)象讀取外部信息并且將它轉(zhuǎn)換為一個(gè)或者更多個(gè)內(nèi)存模型對(duì)象。在存在來(lái)自不同模型的多個(gè)嵌套模型對(duì)象(nested model object)的情況下,當(dāng)EMF反序列化軟件對(duì)XML進(jìn)行解析時(shí),它可以執(zhí)行多次注冊(cè)表查找。許多具有這種功能的軟件包假設(shè)需要反序列化的任何軟件可以僅在注冊(cè)表中查找信息,并且能夠?qū)嵗ヅ涞膬?nèi)存模型類。這樣的軟件還可以假設(shè)實(shí)例化特定模型對(duì)象所需的所有類可供使用。在簡(jiǎn)單的Java URL類加載器環(huán)境下,事實(shí)的確如此,并且EMF使用該機(jī)制。然而,在更復(fù)雜的動(dòng)態(tài)類加載器環(huán)境下,軟件可以被劃分為不同的“捆綁包(bundle) ”。每個(gè)捆綁包可以與描述例如該捆綁包的名稱、該捆綁包的版本和依賴信息的配置元數(shù)據(jù)相關(guān)聯(lián)。每個(gè)捆綁包的元數(shù)據(jù)于是可以被用來(lái)計(jì)算識(shí)別該捆綁包所依賴的捆綁包集合的依賴圖。該依賴關(guān)系集合描述捆綁包可以實(shí)例化的類,并且限制可供該捆綁包使用的類。在這樣的動(dòng)態(tài)類加載器環(huán)境下,特定捆綁包的多個(gè)版本均具有獨(dú)立的存在,并且能夠同時(shí)被其他依賴圖中的其他捆綁包的其他版本使用。這樣的環(huán)境可以被描述為具有元數(shù)據(jù)驅(qū)動(dòng)線(metadata-driven wiring)。具有元數(shù)據(jù)驅(qū)動(dòng)線的更復(fù)雜的動(dòng)態(tài)類加載器環(huán)境的一個(gè)示例是OSGi框架。OSGi框架是基于Java之上的類加載器環(huán)境,但是,不是支持包含所有類的單個(gè)類路徑,OSGi而是支持多個(gè)捆綁包特定的類路徑。EMF的單注冊(cè)表方法可能不能與OSGi的更復(fù)雜的類加載器環(huán)境一起工作。EMF注冊(cè)表包含所有可能的外部類型標(biāo)識(shí)符及其對(duì)應(yīng)的模型類,每一模型可以僅存在這些模型類的一個(gè)版本。如果試圖讀取特定的外部模型格式的OSGi軟件捆綁包不可以訪問必要的類,則它將不能實(shí)例化對(duì)應(yīng)的內(nèi)存表示,即使這些類在單個(gè)注冊(cè)表中。如果存在包含模型類的特定捆綁包的多個(gè)版本,則一次僅一個(gè)版本能夠存在于注冊(cè)表中,即使捆綁包的多個(gè)版本存在并且可供在OSGi環(huán)境下使用。

發(fā)明內(nèi)容
本文公開了用于在動(dòng)態(tài)類加載器環(huán)境(比如OSGi)下管理遺留數(shù)據(jù)建模軟件產(chǎn)品(比如EMF)的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)和方法的各種實(shí)施方案。動(dòng)態(tài)類加載器環(huán)境可以包括可變的多個(gè)軟件捆綁包,并且可以包括軟件捆綁包的多個(gè)版本。遺留數(shù)據(jù)建模軟件產(chǎn)品可以使用將外部類型標(biāo)識(shí)符與數(shù)據(jù)模型類相關(guān)聯(lián)的注冊(cè)表來(lái)創(chuàng)建數(shù)據(jù)模型類的內(nèi)存表示。所述方法的實(shí)施方案可以包括構(gòu)造用于供遺留數(shù)據(jù)建模軟件產(chǎn)品使用的軟件捆綁包的捆綁包特定(bundle-specific)注冊(cè)表。在一些實(shí)施方案中,數(shù)據(jù)模型類可以包括Java類,并且內(nèi)存表示可以包括Java對(duì)象。外部類型標(biāo)識(shí)符可以使用XML來(lái)指定。捆綁包特定注冊(cè)表可以通過Java系統(tǒng)屬性來(lái)指定。在一些實(shí)施方案中,初始化器(initializer)可以在動(dòng)態(tài)類加載器環(huán)境下構(gòu)造用于每個(gè)軟件捆綁包的捆綁包特定注冊(cè)表。監(jiān)聽器(listener)可以構(gòu)造用于進(jìn)入動(dòng)態(tài)類加載器環(huán)境的新的捆綁包的捆綁包特定注冊(cè)表。捆綁包特定注冊(cè)表可以在超注冊(cè)表(super-registry)中被管理。超注冊(cè)表可以取代遺留數(shù)據(jù)建模軟件產(chǎn)品所使用的注冊(cè)表,并且可以將正確的捆綁包特定注冊(cè)表提供給遺留數(shù)據(jù)建模軟件產(chǎn)品。捆綁包特定注冊(cè)表構(gòu)造的實(shí)施方案可以包括使用與軟件捆綁包相關(guān)聯(lián)的配置元數(shù)據(jù)來(lái)計(jì)算依賴圖,所述依賴圖識(shí)別該捆綁包所依賴的軟件捆綁包的依賴子集。注冊(cè)表碎片可以針對(duì)依賴子集的每個(gè)成員而構(gòu)造,并且這些注冊(cè)表碎片可以被合并到捆綁包特定注冊(cè)表中。


圖I是圖示說明根據(jù)本公開的使用遺留數(shù)據(jù)建模軟件產(chǎn)品的動(dòng)態(tài)類加載器環(huán)境的不意圖;圖2是圖示說明根據(jù)本公開的自定義包注冊(cè)表實(shí)現(xiàn)方式的實(shí)施方案的示意圖3是圖示說明根據(jù)本公開的初始化過程的實(shí)施方案的流程圖;圖4是圖示說明根據(jù)本公開的初始化過程的實(shí)施方案的流程圖;圖5是圖示說明根據(jù)本公開的初始化過程的實(shí)施方案的流程圖;圖6是圖示說明根據(jù)本公開的捆綁包監(jiān)聽器的實(shí)施方案的示意圖;以及圖7A和圖7B是圖示說明根據(jù)本公開的新捆綁包進(jìn)入系統(tǒng)的示例性過程和捆綁包離開系統(tǒng)的示例性過程的流程圖。
具體實(shí)施例方式如圖I所圖示說明的,示例性遺留系統(tǒng)100包括硬件110、操作系統(tǒng)120和執(zhí)行環(huán)境130。執(zhí)行環(huán)境130可以是利用分層類加載器系統(tǒng)的任何執(zhí)行環(huán)境。硬件110可以是能夠?qū)崿F(xiàn)遺留系統(tǒng)100的處理器、存儲(chǔ)器、儲(chǔ)存器、聯(lián)網(wǎng)裝置、路由器、布線、發(fā)射機(jī)、接收機(jī)、輸入/輸出裝置、機(jī)器、機(jī)械裝置、電子裝置以及其他物理資源的任何組合。操作系統(tǒng)120可以是能夠結(jié)合硬件110實(shí)現(xiàn)遺留系統(tǒng)100的可執(zhí)行程序代碼、數(shù)據(jù)以及其他軟件或固件的任何組合。遺留系統(tǒng)100中的執(zhí)行環(huán)境130的示例性實(shí)施方案是利用線性父子分層類加載器系統(tǒng)的基礎(chǔ)Java環(huán)境。在基礎(chǔ)Java環(huán)境下,如果子類指定類A的一個(gè)版本,但是子類的層次結(jié)構(gòu)中的父類指定了類A的不同版本,則子類在運(yùn)行時(shí)將加載類A的這個(gè)不同版本,而不管子類的指定如何。遺留系統(tǒng)100中的執(zhí)行環(huán)境130的另一個(gè)示例性實(shí)施方案是利用樹層次結(jié)構(gòu)的類加載器系統(tǒng)的J2EE環(huán)境。在J2EE環(huán)境下,如果子類指定類A的一個(gè)版本,則類A的這個(gè)版本將在運(yùn)行時(shí)被加載,即使子類的兄弟類(或者較低層次的實(shí)體)指定類A的不同版本。然而,如果子類的層次結(jié)構(gòu)中的父類指定類A的不同版本,則子類在運(yùn)行時(shí)仍將加載類A的這個(gè)不同版本,而不管子類的指定如何。所以,盡管J2EE支持相同層次的類隔離,但是父-子類沖突仍然存在。數(shù)據(jù)建模軟件產(chǎn)品140已被開發(fā)用于示例性執(zhí)行環(huán)境130下的類加載器所執(zhí)行的序列化和反序列化。這樣的數(shù)據(jù)建模軟件產(chǎn)品140通常使用將外部類型標(biāo)識(shí)符與定義數(shù)據(jù)模型的內(nèi)存表示的數(shù)據(jù)模型類相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)(比如,默認(rèn)注冊(cè)表150)。數(shù)據(jù)建模軟件140使用默認(rèn)注冊(cè)表150來(lái)識(shí)別這樣的數(shù)據(jù)模型,該數(shù)據(jù)模型的類要被實(shí)例化和配置。圖I還示出了從示例性遺留系統(tǒng)100到示例性系統(tǒng)200的遷移。系統(tǒng)200包括硬件210、操作系統(tǒng)220和執(zhí)行環(huán)境230。執(zhí)行環(huán)境230比執(zhí)行環(huán)境130更復(fù)雜,并且可以是利用在其中顯式依賴關(guān)系(explicit dependency)可以被定義的動(dòng)態(tài)類加載器系統(tǒng)(而不是執(zhí)行環(huán)境130的分層類加載器系統(tǒng))的任何執(zhí)行環(huán)境。硬件210可以是能夠?qū)崿F(xiàn)系統(tǒng)200的處理器、存儲(chǔ)器、儲(chǔ)存器、聯(lián)網(wǎng)裝置、路由器、布線、發(fā)射機(jī)、接收機(jī)、輸入/輸出裝置、機(jī)器、機(jī)械裝置、電子裝置以及其他物理資源的任何組合,并且可以與硬件110類似或者甚至相同。操作系統(tǒng)220可以是能夠結(jié)合硬件210實(shí)現(xiàn)系統(tǒng)200的可執(zhí)行程序代碼、數(shù)據(jù)以及其他軟件或者固件的任何組合,并且可以與操作系統(tǒng)100類似或者甚至相同。系統(tǒng)200中的執(zhí)行環(huán)境230的示例性實(shí)施方案是利用圖解的非分層類加載器系統(tǒng)(比如OSGi)的動(dòng)態(tài)類加載器環(huán)境。在OSGi環(huán)境下,軟件可以被劃分為不同的“捆綁包”。每個(gè)捆綁包可以與描述例如該捆綁包的名稱、該捆綁包的版本以及類依賴關(guān)系信息的配置元數(shù)據(jù)相關(guān)聯(lián)。每個(gè)捆綁包的元數(shù)據(jù)于是可以被用來(lái)計(jì)算識(shí)別該捆綁包所依賴的捆綁包集合的依賴圖。該依賴關(guān)系集合描述捆綁包可以實(shí)例化的類,并且限制可供該捆綁包使用的類。在這樣的動(dòng)態(tài)類加載器環(huán)境下,特定捆綁包的多個(gè)版本均具有獨(dú)立的存在,并且能夠同時(shí)被其他依賴圖中的其他捆綁包的其他版本使用。OSGi框架是基于Java之上的類加載器環(huán)境,但是,不是支持包含所有類的單個(gè)類路徑,OSGi而是支持多個(gè)捆綁包特定類路徑。遺留數(shù)據(jù)建模軟件140的單個(gè)默認(rèn)注冊(cè)表150方法可能不能與更復(fù)雜的環(huán)境230一起工作。這樣的單個(gè)注冊(cè)表150可以包含所有可能的外部類型標(biāo)識(shí)符及其對(duì)應(yīng)的模型類,每一模型可以僅存在這些模型類中的一個(gè)版本。如果試圖讀取特定的外部模型格式的軟件捆綁包不可以使用必要的類,則它將不能實(shí)例化對(duì)應(yīng)的內(nèi)存表示,即使這些類在單個(gè)注冊(cè)表150中。如果存在包含模型類的特定捆綁包的多個(gè)版本,則一次僅一個(gè)版本能夠存在于注冊(cè)表150中,即使該捆綁包的多個(gè)版本存在并且可供在動(dòng)態(tài)類加載器環(huán)境230下使用。被開發(fā)以供復(fù)雜性較低的執(zhí)行環(huán)境130中的類加載器使用的遺留數(shù)據(jù)建模軟件產(chǎn)品140可以通過自定義注冊(cè)表250被配置為供動(dòng)態(tài)類加載器環(huán)境230中的類加載器使用。在圖2中所圖示說明的實(shí)施方案中,動(dòng)態(tài)類加載器環(huán)境230中的軟件被劃分為捆綁包捆綁包A、捆綁包B、捆綁包B. 2、捆綁包C等至捆綁包X。每個(gè)軟件捆綁包可以與它自己的捆綁包特定注冊(cè)表250A-X相關(guān)聯(lián),所述捆綁包特定注冊(cè)表250A-X基于每個(gè)軟件捆綁包的依賴圖來(lái)表示這樣的外部格式集合,該外部格式集合的內(nèi)部格式類可供每個(gè)軟件捆綁包使用。這些捆綁包特定注冊(cè)表250A-X共同形成超注冊(cè)表250。超注冊(cè)表可以被描述為注冊(cè)表的注冊(cè)表。每個(gè)捆綁包特定注冊(cè)表項(xiàng)是與該捆綁包相關(guān)聯(lián)的外部類型標(biāo)識(shí)符,并且捆綁包特定注冊(cè)表值是與這些項(xiàng)相關(guān)聯(lián)的數(shù)據(jù)模型類。這些數(shù)據(jù)模型類定義數(shù)據(jù)模型的內(nèi)存表示。通過使用該多注冊(cè)表方法,給定的軟件捆綁包僅知道如何反序列化這樣的模型對(duì)象,該給定的軟件捆綁包可以使用該模型對(duì)象的類。如果存在特定捆綁包的多個(gè)版本(比如捆綁包B和捆綁包B. 2),則每個(gè)捆綁包具有它自己的注冊(cè)表(分別為250B和250B. 2)、它自己的依賴關(guān)系以及它自己的任何內(nèi)存模型類的版本。如圖I中所示的在動(dòng)態(tài)類加載器環(huán)境230中使用遺留數(shù)據(jù)建模軟件產(chǎn)品140的系統(tǒng)的實(shí)施方案在OSGi環(huán)境下利用Eclipse建??蚣?EMF)。EMF和OSGi兩者都在Java環(huán)境下運(yùn)行。EMF是用于定義和管理數(shù)據(jù)模型的框架。EMF所提供的能力之一是將持久的數(shù)據(jù)模型讀取為由一個(gè)或者更多個(gè)Java對(duì)象構(gòu)成的內(nèi)存格式。如以上所討論的,該處理被稱為反序列化。持久的數(shù)據(jù)模型可以被儲(chǔ)存為各種形式,例如,XML元數(shù)據(jù)交換(XMI)。XMI文件包含XML命名空間QName形式的模型類型信息。換句話講,QName唯一地識(shí)別這樣的數(shù)據(jù)模型,該數(shù)據(jù)模型的實(shí)例已被持久保存在XMI文件中。描述如何將XMI轉(zhuǎn)換為內(nèi)存表示的數(shù)據(jù)被包含在共同構(gòu)成EMF包的各種Java對(duì)象中。EMF通過提供包注冊(cè)表來(lái)支持反序列化,所述包注冊(cè)表將數(shù)據(jù)模型QName映射到對(duì)應(yīng)的EMF包對(duì)象的Java類名稱。在傳統(tǒng)的“平坦的”類路徑環(huán)境下,通常存在單個(gè)EMF包注冊(cè)表。該單個(gè)注冊(cè)表負(fù)責(zé)將EMF已知的QName映射到它們對(duì)應(yīng)的EMF包對(duì)象。該映射帶來(lái)了至少兩個(gè)問題。首先,它允許EMF模型的單個(gè)版本在EMF安裝中被使用。如果你想要EMF模型包的多個(gè)版本,則不同的QName和不同的Java類名稱可以被使用,有效地使得它們成為不同的模型,而不是同一模型的不同版本。這意味著當(dāng)新版本出現(xiàn)時(shí)該方案中使用模型的新版本的軟件應(yīng)該被重寫。其次,平坦的類路徑環(huán)境下的所有軟件共享所有模型。因此,該環(huán)境可能不能被這樣結(jié)構(gòu)化,以使得它可以支持在其中運(yùn)行的多個(gè)應(yīng)用程序,其中一個(gè)應(yīng)用程序可以使用模型集合,而第二應(yīng)用程序可以使用恰巧具有相同的XMI QName或者EMF包Java類名稱的不同的模型集合。在OSGi環(huán)境下,類加載架構(gòu)要復(fù)雜得多。如上所述,它定義軟件的具有它們自己的依賴關(guān)系的“捆綁包”,可以存在這些捆綁包的多個(gè)版本。在該環(huán)境下,支持多個(gè)應(yīng)用程序要容易得多,所述多個(gè)應(yīng)用程序中的每個(gè)應(yīng)用程序或者使用相同數(shù)據(jù)模型的不同版本,或者使用恰巧具有相同的XMI QName或者Java包名稱的完全不同的模型。該環(huán)境是非常動(dòng)態(tài)的捆綁包可以在任何時(shí)間被添加到系統(tǒng),并且可以在任何時(shí)間被移除。不是重寫EMF以在OSGi環(huán)境下工作(這將不僅意味著改變EMF本身,而且還意味著改變使用EMF的應(yīng)用程序),在本實(shí)施方案中,EMF而是被配置來(lái)使用自定義的OSGi優(yōu)化的序列化注冊(cè)表,而不是EMF默認(rèn)靜態(tài)注冊(cè)表。該注冊(cè)表覆蓋(override)通過使用由EMF提供的、允許通過Java系統(tǒng)屬性指定替換注冊(cè)表實(shí)現(xiàn)方式的機(jī)制來(lái)實(shí)現(xiàn)。因此,本實(shí)施方案允許EMF及其應(yīng)用程序在利用OSGi的類加載復(fù)雜性的同時(shí)保持基本上不變。如圖I所示并且如以上所討論的,被開發(fā)供復(fù)雜性較低的執(zhí)行環(huán)境130中的類加載器使用的遺留數(shù)據(jù)建模軟件產(chǎn)品140可以通過管理遺留數(shù)據(jù)建模軟件的一個(gè)或者更多個(gè)靜態(tài)數(shù)據(jù)結(jié)構(gòu)來(lái)被配置為供動(dòng)態(tài)類加載器環(huán)境230下的類加載器使用。在實(shí)施方案中,用于管理這樣的靜態(tài)數(shù)據(jù)結(jié)構(gòu)(比如注冊(cè)表)的系統(tǒng)和方法可以包括,但不限于,自定義注冊(cè)表250、初始化器和監(jiān)聽器。自定義注冊(cè)表圖2圖示說明遺留數(shù)據(jù)建模軟件產(chǎn)品140中的自定義注冊(cè)表250實(shí)現(xiàn)方式。在實(shí)施方案中,自定義注冊(cè)表250可以是Eclipse建??蚣?EMF)包注冊(cè)表。標(biāo)準(zhǔn)EMF軟件允許其使用者安裝覆蓋默認(rèn)注冊(cè)表實(shí)現(xiàn)方式的自定義包注冊(cè)表實(shí)現(xiàn)方式。在這樣的實(shí)施方案中,默認(rèn)注冊(cè)表實(shí)現(xiàn)方式150被更適合于動(dòng)態(tài)類加載器環(huán)境230的自定義注冊(cè)表250取代(參見圖I)。該自定義注冊(cè)表實(shí)現(xiàn)方式250對(duì)于EMF表現(xiàn)得像單個(gè)注冊(cè)表,但是,實(shí)際上,它是注冊(cè)表的匯集用于每個(gè)軟件捆綁包A至X的一個(gè)注冊(cè)表250A至250X。該注冊(cè)表匯集可以被描述為超注冊(cè)表。每個(gè)軟件捆綁包A至X具有它自己的依賴?yán)壈鼒D,所述依賴?yán)壈鼒D包括該捆綁包所需的軟件。每個(gè)軟件捆綁包具有它自己的注冊(cè)表,所述注冊(cè)表包含在該軟件捆綁包的依賴圖中可供使用的那些模型的那些版本。自定義注冊(cè)表實(shí)現(xiàn)方式可以自動(dòng)地確定哪個(gè)軟件捆綁包正試圖使用EMF,找到該軟件捆綁包的對(duì)應(yīng)注冊(cè)表,并且使得它對(duì)于EMF是可見的。當(dāng)另一個(gè)軟件捆綁包使用EMF時(shí),則通過使用該軟件捆綁包的注冊(cè)表,類似的進(jìn)程發(fā)生。因此,EMF相信它正在使用單個(gè)注冊(cè)表,使用EMF的軟件以常規(guī)方式使用它,并且動(dòng)態(tài)類加載器環(huán)境的復(fù)雜能力可以被權(quán)衡利用,而無(wú)需對(duì)EMF實(shí)現(xiàn)方式或者使用EMF的軟件的實(shí)現(xiàn)方式進(jìn)行任何實(shí)質(zhì)性改變。初始化器在實(shí)施方案中,用于在動(dòng)態(tài)類加載器環(huán)境下管理遺留數(shù)據(jù)建模軟件產(chǎn)品的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)可以使用負(fù)責(zé)在啟動(dòng)時(shí)初始化多注冊(cè)表系統(tǒng)的初始化器。在動(dòng)態(tài)類加載器環(huán)境為OSGi的實(shí)施方案中,初始化器可以是激活器(activator)。OSGi系統(tǒng)允許每個(gè)捆綁包具有激活器,所述激活器是每當(dāng)捆綁包被啟動(dòng)或者停止時(shí)就運(yùn)行的一個(gè)軟件。在實(shí)施方案中,用于管理具有OSGi的遺留數(shù)據(jù)建模軟件產(chǎn)品的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)本身被實(shí)現(xiàn)為OSGi捆綁包。該捆綁包的激活器負(fù)責(zé)當(dāng)該捆綁包被啟動(dòng)時(shí)初始化多注冊(cè)表系統(tǒng)并且當(dāng)該捆綁包被停止時(shí)移除它。圖3是圖示說明初始化多注冊(cè)表系統(tǒng)的示例性過程的流程圖300。初始化器查找動(dòng)態(tài)類加載器環(huán)境下當(dāng)前可用的所有捆綁包。在步驟310,如果在所述環(huán)境下仍有未被檢查的軟件包,則初始化器得到320下一個(gè)軟件捆綁包以進(jìn)行檢查。初始化器然后確定330與該軟件捆綁包相關(guān)聯(lián)的數(shù)據(jù)模型類,然后構(gòu)造340用于該軟件捆綁包的注冊(cè)表。初始化器可以使用與軟件捆綁包相關(guān)聯(lián)的元數(shù)據(jù)來(lái)確定該捆綁包的相關(guān)聯(lián)的數(shù)據(jù)模型類。所構(gòu)造的注冊(cè)表項(xiàng)可以是與在步驟330中確定的數(shù)據(jù)模型類相關(guān)聯(lián)的外部類型標(biāo)識(shí)符集合。注冊(cè)表值可以是數(shù)據(jù)模型類。在構(gòu)造340注冊(cè)表之后,初始化器返回到步驟310。如果在所述環(huán)境下仍有未被檢查的軟件捆綁包,則重復(fù)所述過程。如果在步驟310,在所述環(huán)境下并不存在未被檢查的軟件捆綁包,則初始化過程結(jié)束。圖4是圖示說明初始化多注冊(cè)表系統(tǒng)的另一個(gè)示例性過程的流程圖400。初始化器查找在動(dòng)態(tài)類加載器環(huán)境下當(dāng)前可用的所有捆綁包。在步驟410,如果在所述環(huán)境下仍有未被檢查的軟件捆綁包,則初始化器得到420下一個(gè)軟件捆綁包以進(jìn)行檢查。初始化器然后在步驟430確定該軟件捆綁包是否定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類。如果它定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類,則將這些模型類添加440到用于該捆綁包的捆綁包特定注冊(cè)表。注冊(cè)表項(xiàng)可以是與數(shù)據(jù)模型類相關(guān)聯(lián)的外部類型標(biāo)識(shí)符集合,注冊(cè)表值可以是數(shù)據(jù)模型類。在處理了捆綁包所定義的任何數(shù)據(jù)模型類之后,初始化器計(jì)算450這樣的依賴圖,該依賴圖識(shí)別該捆綁包對(duì)其具有直接或者間接依賴關(guān)系的所有其他捆綁包,從而創(chuàng)建軟件捆綁包的依賴子集。在步驟460,如果在依賴子集中仍有未被檢查的軟件捆綁包,則初始化器得到470下一個(gè)子集成員以進(jìn)行檢查。初始化器然后在步驟480確定該子集成員是否定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類。如果它定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類,則將這些模型類添加490到用于軟件捆綁包的捆綁包特定注冊(cè)表。返回到步驟460,如果在依賴子集中仍有未被檢查的軟件捆綁包,則對(duì)該子集的下一個(gè)成員進(jìn)行處理。當(dāng)所有依賴子集成員都已被處理時(shí),該捆綁包的注冊(cè)表完成。然后返回到步驟410,如果在所述環(huán)境下仍有未被檢查的軟件捆綁包,則對(duì)所有剩余的軟件捆綁包重復(fù)整個(gè)過程。如果在步驟410,在所述環(huán)境下并不存在未被檢查的軟件包,則初始化過程結(jié)束。圖5是圖示說明初始化多注冊(cè)表系統(tǒng)的另一個(gè)示例性過程的流程圖500。初始化器查找在動(dòng)態(tài)類加載器環(huán)境下當(dāng)前可用的所有捆綁包。在步驟505,如果在所述環(huán)境下仍有未被檢查的軟件捆綁包,則初始化器得到510下一個(gè)軟件捆綁包以進(jìn)行檢查。初始化器然后在步驟515確定以前是否針對(duì)該軟件捆綁包構(gòu)造了注冊(cè)表碎片。這樣的注冊(cè)表碎片可以僅包含例如該捆綁包的序列化映射。在步驟515,如果沒有注冊(cè)表碎片可供使用,則初始化器在步驟520確定該軟件捆綁包是否定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類。如果它定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類,則構(gòu)造525注冊(cè)表碎片,并且將所構(gòu)造的碎片中的模型類與用于該捆綁包的捆綁包特定注冊(cè)表合并530。但是如果在步驟515,注冊(cè)表碎片可供軟件捆綁包使用,則將該碎片與捆綁包特定注冊(cè)表合并530,從而消除冗余的注冊(cè)表計(jì)算。在處理了或者構(gòu)造了捆綁包的注冊(cè)表碎片之后,初始化器計(jì)算535這樣的依賴圖,該依賴圖識(shí)別該捆綁包對(duì)其具有直接或者間接依賴關(guān)系的所有其他捆綁包,從而創(chuàng)建軟件捆綁包的依賴子集。在步驟540,如果在依賴子集中仍有未被檢查的軟件捆綁包,則初始化器得到545下一個(gè)子集成員以進(jìn)行檢查。初始化器然后在步驟550確定以前是否針對(duì)該子集成員構(gòu)造了注冊(cè)表碎片。在步驟550,如果沒有注冊(cè)表碎片可供使用,則初始化器在步驟555確定該子集成員是否定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類。如果它定義了一個(gè)或者更多個(gè)數(shù)據(jù)模型類,則構(gòu)造560注冊(cè)表碎片,并且將所構(gòu)造的碎片中的模型類與用于該捆綁包的捆綁包特定注冊(cè)表合并565。但是如果在步驟550,注冊(cè)表碎片可供子集成員使用,則將該現(xiàn)有碎片與捆綁包特定注冊(cè)表合并565。返回到步驟540,如果在依賴子集中仍有未被檢查的軟件捆綁包,則對(duì)該子集的下一個(gè)成員進(jìn)行處理。當(dāng)所有依賴子集成員都已被處理時(shí),該捆綁包的注冊(cè)表完成。然后返回到步驟505,如果在所述環(huán)境下仍有未被檢查的軟件捆綁包,則對(duì)所有剩余的軟件捆綁包重復(fù)整個(gè)過程。如果在步驟505,在所述環(huán)境下并不存在未被檢查的軟件捆綁包,則初始化過程結(jié)束。盡管在圖3、圖4和圖5中示出了用于在動(dòng)態(tài)類加載器環(huán)境下管理遺留數(shù)據(jù)建模軟件產(chǎn)品的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)的初始化過程的實(shí)施方案,但是設(shè)想可以使用附加步驟、更少步驟、不同步驟或者這些圖中所描述的步驟中的步驟的組合的其他實(shí)施方案。如前面所討論的,在一些實(shí)施方案中,動(dòng)態(tài)類加載器環(huán)境為OSGi,并且初始化器可以是捆綁包激活器。在這樣的實(shí)施方案中,遺留數(shù)據(jù)建模軟件可以是EMF,并且OSGi環(huán)境下的每個(gè)軟件捆綁包可以定義一個(gè)或者更多個(gè)EMF模型,這些EMF模型的數(shù)據(jù)可以被放置在自定義EMF包注冊(cè)表中。對(duì)于給定的捆綁包X,捆綁包激活器使用該捆綁包X的OSGi配置元數(shù)據(jù)來(lái)計(jì)算X對(duì)其具有直接或者間接依賴關(guān)系的所有捆綁包的依賴圖。對(duì)于所得的依賴圖中的每個(gè)捆綁包,激活器可以找到屬于給定的依賴圖成員的所有EMF模型,并且將它們放置在與捆綁包X相關(guān)聯(lián)的注冊(cè)表中。結(jié)果是這樣的注冊(cè)表,該注冊(cè)表包含整個(gè)OSGi環(huán)境下的所有模型的子集并且對(duì)于捆綁包X是可見的。因此,在這樣的實(shí)施方案中,每個(gè)捆綁包具有它自己的EMF包注冊(cè)表。所有這些注冊(cè)表本身都由自定義包注冊(cè)表(超注冊(cè)表)中的OSGi捆綁包維護(hù)。當(dāng)捆綁包X中的軟件使用EMF時(shí),或者當(dāng)系統(tǒng)軟件代表捆綁包X使用EMF時(shí),自動(dòng)地使得捆綁包X的注冊(cè)表可作為它的單個(gè)包注冊(cè)表供EMF使用。因?yàn)槊總€(gè)捆綁包具有它自己的注冊(cè)表,所以該注冊(cè)表的內(nèi)容可以根據(jù)捆綁包而改變,不同的捆綁包具有相同EMF模型的不同版本,或者恰巧具有相同的QName和/或EMF包Java類名稱的完全不同的EMF模型。OSGi捆綁包監(jiān)聽器在用于在動(dòng)態(tài)類加載器環(huán)境下管理遺留數(shù)據(jù)建模軟件產(chǎn)品的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)的一些實(shí)施方案中,軟件捆綁包可以在任何時(shí)間進(jìn)入或者離開環(huán)境。在這樣的實(shí)施方案中,監(jiān)聽器可以監(jiān)視這樣的捆綁包到達(dá)和離開,并且可以作為響應(yīng)執(zhí)行注冊(cè)表維護(hù)。圖6是圖示說明捆綁包監(jiān)聽器602的示意圖600。在圖示說明的實(shí)施方案中,每當(dāng)捆綁包進(jìn)入或者離開動(dòng)態(tài)類加載器環(huán)境時(shí),監(jiān)聽器602就接收事件。還設(shè)想其他監(jiān)控方法;例如,監(jiān)聽器可以對(duì)新的捆綁包到達(dá)或離開進(jìn)行投票。在動(dòng)態(tài)類加載器環(huán)境為OSGi的實(shí)施方案中,可以自動(dòng)地使用標(biāo)準(zhǔn)OSGi捆綁包監(jiān)聽器功能來(lái)維護(hù)注冊(cè)表。遺留數(shù)據(jù)建模軟件注冊(cè)表的OSGi實(shí)現(xiàn)方式可以創(chuàng)建它自己的捆綁包監(jiān)聽器,所述捆綁包監(jiān)聽器在每當(dāng)捆綁包被添加到OSGi框架或者從OSGi框架移除時(shí)就接收事件。當(dāng)捆綁包被添加時(shí),監(jiān)聽器可以從該捆綁包提取所有的序列化綁定,并且將它們放入用于該捆綁包的專用注冊(cè)表。它還可以創(chuàng)建以輸入捆綁包為根的捆綁包依賴圖,也提取它們的所有序列化捆綁包,并且將它們放置到新的捆綁包的注冊(cè)表中。圖7A是圖示說明捆綁包進(jìn)入系統(tǒng)的過程的示意圖700。捆綁包監(jiān)聽器可以被通知702新的捆綁包已進(jìn)入系統(tǒng),可以構(gòu)造704用于該捆綁包的注冊(cè)表,并且可以將該注冊(cè)表添加706到自定義包注冊(cè)表(超注冊(cè)表)。當(dāng)該捆綁包開始使用遺留數(shù)據(jù)建模軟件時(shí),或者當(dāng)其他軟件代表該捆綁包使用遺留數(shù)據(jù)建模軟件時(shí),使得該捆綁包的注冊(cè)表可供使用。圖7B是圖示說明捆綁包離開系統(tǒng)的過程的流程圖750。每當(dāng)捆綁包離開系統(tǒng)時(shí),捆綁包監(jiān)聽器就被通知752,并且它從注冊(cè)表的注冊(cè)表(超注冊(cè)表)移除756該捆綁包的注冊(cè)表,因?yàn)樗鼘⒉辉俦皇褂?。在?shí)施方案中,捆綁包監(jiān)聽器可以對(duì)進(jìn)入系統(tǒng)的每個(gè)捆綁包構(gòu)造僅包含該捆綁包的序列化映射的注冊(cè)表碎片。每當(dāng)捆綁包被添加時(shí),監(jiān)聽器然后就可以創(chuàng)建依賴圖,并且將所有圖成員的碎片合并到新的捆綁包所使用的注冊(cè)表中。因?yàn)樵诟鱾€(gè)捆綁包的依賴關(guān)系之間可能存在許多重疊,所以注冊(cè)表信息可以被計(jì)算一次,然后根據(jù)需要被并入到給定捆綁包的序列化注冊(cè)表中。在一些實(shí)施方案中,捆綁包監(jiān)聽器可以如上所述并且如圖3、圖4和圖5所示那樣對(duì)新的捆綁包執(zhí)行捆綁包處理。設(shè)想可以使用附加步驟、更少步驟、不同步驟或者分開的圖中所描述的那些步驟中的步驟的組合的其他實(shí)施方案。盡管本公開深入討論了在OSGi環(huán)境下使用EMF的特定實(shí)施方案,但是本領(lǐng)域技術(shù)人員將理解,本文所公開的技術(shù)和方法可以普遍地應(yīng)用于在具有元數(shù)據(jù)驅(qū)動(dòng)線的其他動(dòng)態(tài)類加載器環(huán)境下管理其他遺留軟件包的靜態(tài)數(shù)據(jù)結(jié)構(gòu)。此外,雖然以上描述了根據(jù)所公開的原理的各種實(shí)施方案,但是應(yīng)該理解它們僅以示例性的方式被給出,而非限制性的。因此,本發(fā)明(一個(gè)或多個(gè))的寬度和范圍不應(yīng)被上述任一實(shí)施方案限制,而是應(yīng)該僅根據(jù)本公開公布的權(quán)利要求及其等同形式來(lái)限定。此外,以上優(yōu)點(diǎn)和特征在所描述的實(shí)施方案中被提供,但是不應(yīng)將這些公布的權(quán)利要求的應(yīng)用限于實(shí)現(xiàn)以上任一優(yōu)點(diǎn)或者所有優(yōu)點(diǎn)的過程和結(jié)構(gòu)。此外,本文的段落標(biāo)題是被提供來(lái)與37CFR I. 77的建議一致,或者用于提供本文的結(jié)構(gòu)線索。這些標(biāo)題不應(yīng)限制或表征可以從該公開公布的任何權(quán)利要求中所闡述的一個(gè)或多個(gè)發(fā)明。具體地并且作為示例,盡管標(biāo)題指“技術(shù)領(lǐng)域”,但是權(quán)利要求書不應(yīng)被該標(biāo)題下所選擇的語(yǔ)言限制為描述所謂的技術(shù)領(lǐng)域。進(jìn)一步,“背景技術(shù)”中的技術(shù)的描述不是要被解讀為承認(rèn)該技術(shù)是該公開中的任意一個(gè)或多個(gè)發(fā)明的現(xiàn)有技術(shù)?!鞍l(fā)明內(nèi)容”也不是要被認(rèn)為是在公布的權(quán)利要求書中所闡述的一個(gè)或多個(gè)發(fā)明的特征描述。另外,該公開中對(duì)單數(shù)的“發(fā)明”的任何引用不應(yīng)被用于證明在該公開中僅有一個(gè)新穎點(diǎn)。根據(jù)從該公開公布的多個(gè)權(quán)利要求的限定,可以闡述多個(gè)發(fā)明,并且這些權(quán)利要求相應(yīng)地定義了由其保護(hù)的一個(gè)或多個(gè)發(fā)明,以及它們的等同形式。在所有例子中,這些權(quán)利要求的范圍應(yīng)根據(jù)該公開按照這些權(quán)利要求本身的實(shí)質(zhì)來(lái)理解,而不應(yīng)被本文的標(biāo)題限制。
權(quán)利要求
1.一種用于在動(dòng)態(tài)類加載器環(huán)境下管理遺留數(shù)據(jù)建模軟件產(chǎn)品的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的方法,其中所述動(dòng)態(tài)類加載器環(huán)境包括可變的多個(gè)軟件捆綁包,并且其中所述遺留數(shù)據(jù)建模軟件產(chǎn)品可操作來(lái)使用將外部類型標(biāo)識(shí)符與至少一個(gè)數(shù)據(jù)模型類相關(guān)聯(lián)的注冊(cè)表來(lái)創(chuàng)建所述至少一個(gè)數(shù)據(jù)模型類的內(nèi)存表示,所述方法包括 對(duì)于所述多個(gè)軟件捆綁包的第一軟件捆綁包,構(gòu)造捆綁包特定注冊(cè)表,其中所述捆綁包特定注冊(cè)表包括與所述第一軟件捆綁包相關(guān)聯(lián)的外部類型標(biāo)識(shí)符集合,并且其中所述捆綁包特定注冊(cè)表將所述外部類型標(biāo)識(shí)符集合的每個(gè)成員與至少一個(gè)數(shù)據(jù)模型類相關(guān)聯(lián);以及 當(dāng)創(chuàng)建與所述第一軟件捆綁包相關(guān)聯(lián)的外部類型標(biāo)識(shí)符集合的成員所表示的所述至少一個(gè)數(shù)據(jù)模型類的內(nèi)存表示時(shí),指示所述遺留數(shù)據(jù)建模軟件產(chǎn)品使用所構(gòu)造的捆綁包特定注冊(cè)表。
2.如權(quán)利要求I所述的方法,其中所述多個(gè)軟件捆綁包包括特定軟件捆綁包和所述特定軟件捆綁包的替換版本。
3.如權(quán)利要求I所述的方法,其中所述動(dòng)態(tài)類加載器環(huán)境包括OSGi。
4.如權(quán)利要求I所述的方法,其中所述遺留數(shù)據(jù)建模軟件產(chǎn)品包括EMF(Eclipse建??蚣?,其中所述至少一個(gè)數(shù)據(jù)模型類包括Java類,并且其中所述至少一個(gè)數(shù)據(jù)模型類的內(nèi)存表示包括Java對(duì)象。
5.如權(quán)利要求4所述的方法,其中所述外部類型標(biāo)識(shí)符使用XML(可擴(kuò)展標(biāo)記語(yǔ)言)來(lái)指定。
6.如權(quán)利要求4所述的方法,其中當(dāng)創(chuàng)建與所述第一軟件捆綁包相關(guān)聯(lián)的外部類型指示符集合的成員所表示的所述至少一個(gè)數(shù)據(jù)模型類的內(nèi)存表示時(shí)指示所述遺留數(shù)據(jù)建模軟件產(chǎn)品使用所構(gòu)造的捆綁包特定注冊(cè)表的步驟包括通過Java系統(tǒng)屬性來(lái)指定所述捆綁包特定注冊(cè)表。
7.如權(quán)利要求I所述的方法,還包括在所述動(dòng)態(tài)類加載器環(huán)境下構(gòu)造用于其余多個(gè)軟件捆綁包中的每個(gè)的捆綁包特定注冊(cè)表。
8.如權(quán)利要求7所述的方法,還包括 接收新的軟件捆綁包已進(jìn)入所述動(dòng)態(tài)類加載器環(huán)境的通知;以及 構(gòu)造用于所述新的軟件捆綁包的新的捆綁包特定注冊(cè)表。
9.如權(quán)利要求I所述的方法,其中所述第一軟件捆綁包與配置元數(shù)據(jù)相關(guān)聯(lián),并且其中構(gòu)造用于所述第一軟件捆綁包的捆綁包特定注冊(cè)表的步驟包括 使用所述配置元數(shù)據(jù)來(lái)計(jì)算所述第一軟件捆綁包的依賴圖,其中所述依賴圖識(shí)別所述多個(gè)軟件捆綁包的依賴子集,并且其中所述依賴子集至少包括所述第一軟件捆綁包; 對(duì)于所述依賴子集的每個(gè)成員,構(gòu)造成員特定注冊(cè)表碎片,所述成員特定注冊(cè)表碎片包括所述依賴子集的所述成員所定義的外部類型標(biāo)識(shí)符集合,其中所述成員特定注冊(cè)表碎片將所述外部類型標(biāo)識(shí)符集合的每個(gè)成員與至少一個(gè)數(shù)據(jù)模型類相關(guān)聯(lián);以及 將所述依賴子集的每個(gè)成員的注冊(cè)表碎片合并到單個(gè)注冊(cè)表中,其中所述單個(gè)注冊(cè)表是用于所述第一軟件捆綁包的捆綁包特定注冊(cè)表。
10.如權(quán)利要求9所述的方法,其中所述多個(gè)軟件捆綁包的第二軟件捆綁包與第二配置元數(shù)據(jù)相關(guān)聯(lián),所述方法還包括使用所述第二配置元數(shù)據(jù)來(lái)計(jì)算所述第二軟件捆綁包的第二依賴圖,其中所述第二依賴圖識(shí)別所述多個(gè)軟件捆綁包的第二依賴子集,并且其中所述第二依賴子集至少包括所述第二軟件捆綁包和所述第一依賴子集的成員; 對(duì)于所述第二依賴子集的每個(gè)成員而不是所述第一依賴子集的成員,構(gòu)造成員特定注冊(cè)表碎片,所述成員特定注冊(cè)表碎片包括所述第二依賴子集的所述成員所定義的外部類型標(biāo)識(shí)符集合,其中所述成員特定注冊(cè)表碎片將所述外部類型標(biāo)識(shí)符集合的每個(gè)成員與至少一個(gè)數(shù)據(jù)模型類相關(guān)聯(lián);以及 將所述第二依賴子集的每個(gè)成員的注冊(cè)表碎片合并到第二單個(gè)注冊(cè)表中,其中所述第二單個(gè)注冊(cè)表是用于所述第二軟件捆綁包的捆綁包特定注冊(cè)表。
11.如權(quán)利要求10所述的方法,其中所述第二軟件捆綁包是所述第一依賴子集的成員。
12.一種用于在動(dòng)態(tài)類加載器環(huán)境下管理遺留數(shù)據(jù)建模軟件產(chǎn)品的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的系統(tǒng),其中所述動(dòng)態(tài)類加載器環(huán)境包括可變的多個(gè)軟件捆綁包,并且其中所述遺留數(shù)據(jù)建模軟件產(chǎn)品被配置來(lái)使用將外部類型標(biāo)識(shí)符與至少一個(gè)數(shù)據(jù)模型類相關(guān)聯(lián)的注冊(cè)表來(lái)創(chuàng)建所述至少一個(gè)數(shù)據(jù)模型類的內(nèi)存表示,所述系統(tǒng)包括 初始化器,所述初始化器被配置來(lái)在所述動(dòng)態(tài)類加載器環(huán)境下識(shí)別軟件捆綁包的初始集合; 至少一個(gè)捆綁包特定注冊(cè)表,所述至少一個(gè)捆綁包特定注冊(cè)表由所述初始化器構(gòu)造,其中捆綁包特定注冊(cè)表針對(duì)所述軟件捆綁包的初始集合的每個(gè)成員而構(gòu)造,并且其中每個(gè)捆綁包特定注冊(cè)表將至少一個(gè)外部類型標(biāo)識(shí)符與至少一個(gè)數(shù)據(jù)模型類相關(guān)聯(lián); 超注冊(cè)表,所述超注冊(cè)表管理所述至少一個(gè)捆綁包特定注冊(cè)表,其中所述超注冊(cè)表取代所述遺留數(shù)據(jù)建模軟件產(chǎn)品的默認(rèn)注冊(cè)表,并且其中所述超注冊(cè)表為所述遺留數(shù)據(jù)建模軟件產(chǎn)品提供所構(gòu)造的與第一軟件捆綁包對(duì)應(yīng)的第一捆綁包特定注冊(cè)表,來(lái)用于創(chuàng)建與所述第一軟件捆綁包相關(guān)聯(lián)的外部類型標(biāo)識(shí)符所表示的所述至少一個(gè)數(shù)據(jù)模型類的內(nèi)存表示;以及 監(jiān)聽器,所述監(jiān)聽器被配置來(lái)接收新的軟件捆綁包已進(jìn)入所述動(dòng)態(tài)類加載器環(huán)境的通知,并且被進(jìn)一步配置來(lái)當(dāng)接收到所述通知時(shí)構(gòu)造用于所述新的軟件捆綁包的捆綁包特定注冊(cè)表。
13.如權(quán)利要求12所述的系統(tǒng),其中所述多個(gè)軟件捆綁包包括特定軟件捆綁包和所述特定軟件捆綁包的替換版本。
14.如權(quán)利要求12所述的系統(tǒng),其中所述動(dòng)態(tài)類加載器環(huán)境包括OSGi。
15.如權(quán)利要求12所述的系統(tǒng),其中所述遺留數(shù)據(jù)建模軟件產(chǎn)品包括EMF(Eclipse建模框架),其中所述至少一個(gè)數(shù)據(jù)模型類包括Java類,并且其中所述至少一個(gè)數(shù)據(jù)模型類的內(nèi)存表示包括Java對(duì)象。
16.如權(quán)利要求15所述的系統(tǒng),其中所述外部類型標(biāo)識(shí)符使用XML(可擴(kuò)展標(biāo)記語(yǔ)言)來(lái)指定。
17.如權(quán)利要求15所述的系統(tǒng),其中用所述超注冊(cè)表取代所述遺留數(shù)據(jù)建模軟件產(chǎn)品的默認(rèn)注冊(cè)表的步驟包括通過Java系統(tǒng)屬性來(lái)指定所述超注冊(cè)表。
18.如權(quán)利要求12所述的系統(tǒng),其中所述軟件捆綁包的初始集合的每個(gè)成員與配置元數(shù)據(jù)相關(guān)聯(lián),并且其中構(gòu)造用于每個(gè)集合成員的捆綁包特定注冊(cè)表的步驟包括 使用所述集合成員的相關(guān)聯(lián)的配置元數(shù)據(jù)來(lái)計(jì)算所述集合成員的依賴圖,其中所述依賴圖識(shí)別所述多個(gè)軟件捆綁包的集合成員的依賴子集; 對(duì)于所述依賴子集的每個(gè)成員,構(gòu)造子集成員特定注冊(cè)表碎片,所述子集成員特定注冊(cè)表碎片包括所述子集成員所定義的外部類型標(biāo)識(shí)符集合,其中所述子集成員特定注冊(cè)表碎片將所述外部類型標(biāo)識(shí)符集合的每個(gè)成員與至少一個(gè)數(shù)據(jù)模型類相關(guān)聯(lián);以及 將每個(gè)子集成員的注冊(cè)表碎片合并到單個(gè)注冊(cè)表中,其中所述單個(gè)注冊(cè)表是用于所述集合成員的捆綁包特定注冊(cè)表。
全文摘要
一種用于在動(dòng)態(tài)類加載器環(huán)境下管理遺留數(shù)據(jù)建模軟件產(chǎn)品的靜態(tài)數(shù)據(jù)結(jié)構(gòu)的方法包括在動(dòng)態(tài)類加載器環(huán)境下構(gòu)造用于每個(gè)軟件捆綁包的捆綁包特定注冊(cè)表,并且當(dāng)創(chuàng)建與特定的軟件捆綁包相關(guān)聯(lián)的數(shù)據(jù)模型類的內(nèi)存表示時(shí),指示所述遺留數(shù)據(jù)建模軟件產(chǎn)品使用所述捆綁包特定注冊(cè)表,而不是它的默認(rèn)注冊(cè)表。構(gòu)造捆綁包特定注冊(cè)表可以包括使用所述捆綁包的配置元數(shù)據(jù)來(lái)計(jì)算依賴圖,所述依賴圖識(shí)別所述軟件捆綁包所依賴的其他捆綁包。初始化器可以構(gòu)造捆綁包特定注冊(cè)表的初始集合,并且監(jiān)聽器可以構(gòu)造用于進(jìn)入所述系統(tǒng)的新的軟件捆綁包的捆綁包特定注冊(cè)表。
文檔編號(hào)G06F7/00GK102985907SQ201180034112
公開日2013年3月20日 申請(qǐng)日期2011年5月10日 優(yōu)先權(quán)日2010年5月10日
發(fā)明者M·蘭伯特, L·多梅尼科 申請(qǐng)人:泰必高軟件公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
济阳县| 沙洋县| 邵东县| 新密市| 拉萨市| 班戈县| 哈尔滨市| 合山市| 靖宇县| 乌苏市| 洪江市| 若羌县| 明星| 资兴市| 武安市| 诏安县| 香港| 洪泽县| 廊坊市| 汉阴县| 太原市| 红桥区| 西华县| 枝江市| 蓬安县| 奇台县| 米易县| 临湘市| 佛学| 天津市| 宽甸| 都兰县| 区。| 台北市| 江北区| 海安县| 乌拉特中旗| 绥宁县| 屏南县| 通城县| 卢氏县|