專(zhuān)利名稱(chēng)::對(duì)基于組件的軟件系統(tǒng)中的組件進(jìn)行重用的方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及基于組件的軟件系統(tǒng),尤其涉及對(duì)基于組件的軟件系統(tǒng)中的組件重用的方法和裝置。
背景技術(shù):
:在傳統(tǒng)的基于組件的軟件系統(tǒng)中,例如在由Java企業(yè)柄(EnterpriseJavaBean,EJB)、組件對(duì)象模型(ComponentObjectModel,COM)、公共對(duì)象請(qǐng)求代理架構(gòu)(CommonObjectRequestBrokerArchitecture,CORBA)等實(shí)現(xiàn)的軟件系統(tǒng)中,組件的功能是通過(guò)接口來(lái)體現(xiàn)的,同時(shí)組件間的調(diào)用依賴(lài)關(guān)系包含在組件代碼的實(shí)現(xiàn)中。例如,組件A可能在表1中示出的如下代碼實(shí)現(xiàn)中包含對(duì)于組件B和組件C的調(diào)用依賴(lài)關(guān)系。表1__<table>tableseeoriginaldocumentpage6</column></row><table>新興的面向服務(wù)組件模型,例如服務(wù)組件架構(gòu)(ServiceComponentArchitecture,SCA),將面向服務(wù)的概念引入了組件模型和執(zhí)行環(huán)境。例如,在SCA組合模型中包括一系列在實(shí)現(xiàn)和/或使用服務(wù)的服務(wù)組件方面定義SCA系統(tǒng)的配置的工件(artifact)以及描述它們?nèi)绾捂溄釉谝黄鸬倪B接(連線(xiàn))和相關(guān)工件。此外,SCA旨在包括用于服務(wù)組件的和用于連接它們的訪(fǎng)問(wèn)方法的廣泛的技術(shù)。而服務(wù)組件本身可能也需要調(diào)用別的服務(wù),這個(gè)調(diào)用出口稱(chēng)為"引用,,。與傳統(tǒng)的基于組件的軟件系統(tǒng)相比較,基于SCA的軟件系統(tǒng)將組件間的調(diào)用依賴(lài)關(guān)系進(jìn)行了外部化,屬于依賴(lài)關(guān)系外部化軟件系統(tǒng)。換句話(huà)說(shuō),在依賴(lài)關(guān)系外部化軟件系統(tǒng)中,組件之間的調(diào)用依賴(lài)關(guān)系(例如,SCA的"接口"和"引用")是獨(dú)立于組件的具體代碼實(shí)現(xiàn)的(例如通過(guò)可擴(kuò)展標(biāo)記語(yǔ)言(XML)文檔的形式)。因此,例如在基于SCA的軟件系統(tǒng)中,組件A所需要的服務(wù)可以由暴露其服務(wù)的任何組件B來(lái)提供。因此,組件A的代碼實(shí)現(xiàn)中可以不用附加代碼而與組件B鏈接在一起。從一個(gè)角度而言,如果可以將由傳統(tǒng)組件技術(shù)實(shí)現(xiàn)的組件"SCA化,,,那么可以不使用附加代碼而將這些"SCA化"的組件與其他SCA組件組合在一起,由此實(shí)現(xiàn)對(duì)由傳統(tǒng)組件技術(shù)實(shí)現(xiàn)的組件的重用。而且,通過(guò)"SCA化"這些組件也可以受益于基于SCA的軟件系統(tǒng)的管理能力,例如監(jiān)控、日志管理等。因此,廣義而言,存在這樣的需求使得現(xiàn)有基于組件的系統(tǒng)能夠被高級(jí)的基于面向服務(wù)組件模型的應(yīng)用所包含,即使得現(xiàn)有遺存系統(tǒng)適于與新技術(shù)和平臺(tái)進(jìn)行集成。一種解決方案是根據(jù)由將被集成的應(yīng)用所遵循的高級(jí)規(guī)范或標(biāo)準(zhǔn),用明確定義的接口包裝現(xiàn)有遺存系統(tǒng)。公開(kāi)號(hào)為US2003/0055921的美國(guó)專(zhuān)利申請(qǐng)是這種解決方案的一個(gè)示例。在該發(fā)明中,將整個(gè)面向?qū)ο蟮膽?yīng)用包裝為對(duì)象facade,通過(guò)可以為任何標(biāo)準(zhǔn)中間件的連通總線(xiàn)與相對(duì)集成的基于組件的應(yīng)用中的新組件進(jìn)行通信。另一種解決方案是在遺存系統(tǒng)與利用高級(jí)技術(shù)的應(yīng)用之間添加輕量代理。代理在不同協(xié)議之間起調(diào)解作用,其不強(qiáng)制任何一個(gè)對(duì)等方服從任何其它方。作為示例,美國(guó)專(zhuān)利申請(qǐng)公開(kāi)號(hào)為US2006/0041862的美國(guó)專(zhuān)利申請(qǐng)開(kāi)發(fā)了一種API庫(kù),用于允許遺存系統(tǒng)與Web服務(wù)之間的通信,遺存系統(tǒng)需要使用這些API以便與新系統(tǒng)進(jìn)行集成;公開(kāi)號(hào)為US2004/0054812的美國(guó)專(zhuān)利申請(qǐng)集中于遺存系統(tǒng)與其它高級(jí)應(yīng)用之間的數(shù)據(jù)集成。但是,上述這兩種集成方案不能避免修改傳統(tǒng)系統(tǒng)的原始源代碼。期望將遺存系統(tǒng)移植到新平臺(tái)上(例如從Windows操作系統(tǒng)到Linux操作系統(tǒng);從獨(dú)立Web服務(wù)器到J2EE應(yīng)用服務(wù)器)或利用更高級(jí)的技術(shù)(例如,從過(guò)程化范例到面向?qū)ο蠓独?。理解和轉(zhuǎn)換原始遺存系統(tǒng)以及重新部署新移植的系統(tǒng)不僅是消耗時(shí)間的,而且是易出錯(cuò)的,這主要是因?yàn)閳?zhí)行移植工作的軟件工程師并不一定是原始開(kāi)發(fā)者。為了便于遺存系統(tǒng)的轉(zhuǎn)換,投入了大量文獻(xiàn)努力并進(jìn)行了大量實(shí)踐,用來(lái)分析和發(fā)現(xiàn)其相應(yīng)高級(jí)設(shè)計(jì)來(lái)指導(dǎo)源代碼轉(zhuǎn)換。針對(duì)這個(gè)問(wèn)題,一種解決方案集中于源代碼和文件編制本身并采用靜態(tài)分析技術(shù)來(lái)概括目標(biāo)系統(tǒng)的高級(jí)設(shè)計(jì)。在公開(kāi)號(hào)為US6,847,981的美國(guó)專(zhuān)利申請(qǐng)中,分析Servlet代碼以提取WebUI信息、商業(yè)邏輯/Java類(lèi)信息和SQL信息。對(duì)該提取的信息進(jìn)行合成通過(guò)EJB組件生成器來(lái)生成EJB代碼,以將純Web應(yīng)用轉(zhuǎn)換為J2EE基于組件的應(yīng)用。在公開(kāi)號(hào)為US2005/0144226的美國(guó)專(zhuān)利申請(qǐng)中從現(xiàn)有客戶(hù)端/服務(wù)器應(yīng)用通過(guò)將它們分解成單獨(dú)的用戶(hù)接口、商業(yè)邏輯和事件管理層來(lái)生成用于面向服務(wù)的架構(gòu)的開(kāi)放可重用、商業(yè)組件。不同層被包裝為服務(wù)并被重組為基于開(kāi)放標(biāo)準(zhǔn)的應(yīng)用。公開(kāi)號(hào)為US2005/0138603的美國(guó)專(zhuān)利申請(qǐng)?zhí)岢鲇糜趯⑦z存系統(tǒng)移植到基于組件的應(yīng)用的移植過(guò)程和對(duì)于每個(gè)步驟的工作產(chǎn)品,但該發(fā)明的關(guān)鍵步驟仍然涉及分析源代碼、對(duì)組件進(jìn)行挖掘以及將原始源代碼轉(zhuǎn)換為組件程序。另一種解決方案涉及各種用于輪廓化、測(cè)試和觀察系統(tǒng)的行為的方法,包括實(shí)際執(zhí)行和檢驗(yàn)執(zhí)行跟蹤。盡管這種方案提高了對(duì)遺存系統(tǒng)轉(zhuǎn)換的效率,但是難以避免對(duì)源代碼轉(zhuǎn)換的集中手動(dòng)工作??梢?jiàn),以現(xiàn)有技術(shù)實(shí)現(xiàn)基于組件的軟件系統(tǒng)中的組件重用的方案均需要改變組件內(nèi)部代碼實(shí)現(xiàn)。
發(fā)明內(nèi)容為了克服現(xiàn)有技術(shù)中存在的局限性,本發(fā)明提供了一種無(wú)需修改組件實(shí)現(xiàn),而是利用組件依賴(lài)關(guān)系外部化的方式實(shí)現(xiàn)基于組件的軟件系統(tǒng)中組件的重用的技術(shù)方案。根據(jù)本發(fā)明的一方面,提供一種組件重用的方法,用于將第一軟件系統(tǒng)中的所選第一組件重用于第二軟件系統(tǒng),其中第一軟件系統(tǒng)為運(yùn)行于第一運(yùn)行環(huán)境的基于組件的軟件系統(tǒng),并且第二軟件系統(tǒng)為運(yùn)行于第二運(yùn)行環(huán)境的依賴(lài)外化的軟件系統(tǒng)。該方法包括以下步驟分析第一軟件系統(tǒng),確定在第一軟件系統(tǒng)中第一組件的依賴(lài)關(guān)系并且獲取相關(guān)接口信息;利用依賴(lài)關(guān)系和接口信息生成將分別部署在第一運(yùn)行環(huán)境和第二軟件系統(tǒng)中的代理器,其中代理器允許第二軟件系統(tǒng)調(diào)用第一運(yùn)行環(huán)境中的第一組件所提供的服務(wù),并且允許第一組件調(diào)用第二軟件系統(tǒng)中的相關(guān)服務(wù)。根據(jù)本發(fā)明的另一方面,提供一種支持組件重用的系統(tǒng)。該系統(tǒng)包括組件選擇裝置,用于從第一軟件系統(tǒng)中選擇需要在第二軟件系統(tǒng)中重用的第一組件,第一軟件系統(tǒng)為運(yùn)行于第一運(yùn)行環(huán)境的基于組件的軟件系統(tǒng),并且第二軟件系統(tǒng)為運(yùn)行于第二運(yùn)行環(huán)境的依賴(lài)外化的軟件系統(tǒng);分析裝置,用于對(duì)第一軟件系統(tǒng)進(jìn)行分析,確定在第一軟件系統(tǒng)中第一組件的依賴(lài)關(guān)系并且獲取相關(guān)接口信息;生成裝置,用于利用依賴(lài)關(guān)系和接口信息生成將分別部署在第一運(yùn)行環(huán)境和第二軟件系統(tǒng)中的代理器,代理器允許第二軟件系統(tǒng)調(diào)用第一運(yùn)行環(huán)境中的第一組件所提供的服務(wù),并且允許第一組件調(diào)用第二軟件系統(tǒng)中的相關(guān)服務(wù)。根據(jù)本發(fā)明的另一方面,提供一種計(jì)算機(jī)程序產(chǎn)品,用于將第一軟件系統(tǒng)中的所選第一組件重用于第二軟件系統(tǒng),其中第一軟件系統(tǒng)為運(yùn)行于第一運(yùn)行環(huán)境的基于組件的軟件系統(tǒng),并且第二軟件系統(tǒng)為運(yùn)行于第二運(yùn)行環(huán)境的依賴(lài)外化的軟件系統(tǒng)。該計(jì)算機(jī)程序產(chǎn)品被配置于執(zhí)行根據(jù)本發(fā)明的方法。因此,根據(jù)本發(fā)明的技術(shù)方案無(wú)需關(guān)心組件化過(guò)程,為最終用戶(hù)帶來(lái)充分的靈活性以便選擇任何可能的候選組件來(lái)提供服務(wù)。通過(guò)確定組件引用接口和并且將對(duì)這些接口的調(diào)用重新定向到相應(yīng)代理器,將需要重用的組件的依賴(lài)關(guān)系外部化,從而可為諸如基于SCA系統(tǒng)的依賴(lài)關(guān)系外部化系統(tǒng)進(jìn)行重用。而且,更加有利地是根據(jù)本發(fā)明的技術(shù)方案避免了對(duì)傳統(tǒng)基于組件軟件系統(tǒng)中原始源代碼的修改。結(jié)合附圖閱讀本發(fā)明實(shí)施方式的詳細(xì)描述后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚。為了對(duì)本發(fā)明實(shí)施例的特征和優(yōu)點(diǎn)進(jìn)行詳細(xì)說(shuō)明,將參照以下附圖。如果可能的話(huà),在附圖和描述中使用相同或者類(lèi)似的參考標(biāo)號(hào)以指代相同或者類(lèi)似的部分。附圖中件重用的方法的處理流程圖2示意性示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的用于對(duì)基于組件的軟件系統(tǒng)中的組件重用的系統(tǒng)架構(gòu)圖3a-圖3c示出了根據(jù)本發(fā)明實(shí)施方式在第一軟件系統(tǒng)中選擇一個(gè)第一組件以便在第二軟件系統(tǒng)中進(jìn)行重用的示例;圖4a-圖4c示出了根據(jù)本發(fā)明實(shí)施方式在第一軟件系統(tǒng)中選擇多個(gè)第一組件以便在第二軟件系統(tǒng)中進(jìn)行重用的示例;圖5示意性的示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的四種適配器;以及圖6示意性示出了可以實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的計(jì)算設(shè)備。具體實(shí)施例方式以下根據(jù)附圖對(duì)本發(fā)明進(jìn)行說(shuō)明。圖1示出根據(jù)本發(fā)明一個(gè)實(shí)施方式的對(duì)基于組件的軟件系統(tǒng)中的組件重用的方法的處理流程圖,其中將第一軟件系統(tǒng)的組件重用于第二軟件系統(tǒng)。如圖1所示,在步驟S100中,該處理開(kāi)始。在步驟S102中,在第一軟件系統(tǒng)中選擇需要在第二軟件系統(tǒng)中進(jìn)行重用的第一組件。在一個(gè)示例中,第一軟件系統(tǒng)例如前所述的傳統(tǒng)基于組件的軟件系統(tǒng),并且其運(yùn)行環(huán)境為第一運(yùn)行環(huán)境;第二軟件系統(tǒng)是例如基于SCA的軟件系統(tǒng)的依賴(lài)關(guān)系外化的軟件系統(tǒng),并且其運(yùn)行環(huán)境為第二運(yùn)行環(huán)境。用戶(hù)可以根據(jù)需要來(lái)選擇需要在第二軟件系統(tǒng)進(jìn)行重用的組件作為第一組件,可以選擇單個(gè)組件,可以選4奪多個(gè)組件。在步驟S104中,分析第一軟件系統(tǒng)中第一組件的依賴(lài)關(guān)系,確定第一組件中各個(gè)組件所依賴(lài)的組件,將這些依賴(lài)的組件記為第二組件。并且,至少獲取以下接口信息用于調(diào)用第一組件的接口的信息、第一組件所引用的接口的信息。在步驟S106中,依據(jù)所獲得的信息生成與第一組件相關(guān)聯(lián)的用于第二運(yùn)行環(huán)境的第一代理器,生成與第一組件相關(guān)聯(lián)的用于第一運(yùn)行環(huán)境的第二代理器,并且生成與第二組件相關(guān)聯(lián)的用于第一運(yùn)行環(huán)境的第三代理器。第一代理器是在第二軟件系統(tǒng)中重用組件(第一組件)的代理器。在第二軟件系統(tǒng)中對(duì)該重用組件進(jìn)行調(diào)用時(shí),第一代理器能夠接收調(diào)用請(qǐng)求,并且將該調(diào)用請(qǐng)求進(jìn)行協(xié)議轉(zhuǎn)換后重新定向到第一運(yùn)行環(huán)境中的第二代理器。第二代理器是重用組件(即第一組件)在第一運(yùn)行環(huán)境中的代理器。第二代理器通過(guò)協(xié)議轉(zhuǎn)換將接收到的調(diào)用請(qǐng)求轉(zhuǎn)發(fā)給第一組件中的相應(yīng)組件,以便在第二運(yùn)行環(huán)境中執(zhí)行該組件。第三代理器是重用組件所依賴(lài)的組件,即第二組件在第一運(yùn)行環(huán)境中的代理器。在第一組件執(zhí)行期間,如果該第一組件需要調(diào)用其它的組件,也即該第一組件依賴(lài)于第二組件,則由對(duì)應(yīng)的第三代理器接收該調(diào)用的請(qǐng)求,并通過(guò)協(xié)議轉(zhuǎn)換將該請(qǐng)求轉(zhuǎn)發(fā)給第二軟件系統(tǒng)中的第一代理器。第一代理器通過(guò)協(xié)議轉(zhuǎn)換將該調(diào)用請(qǐng)求轉(zhuǎn)發(fā)給在第二軟件系統(tǒng)中對(duì)應(yīng)于第二組件的相應(yīng)組件。在步驟S108中,分別在第一運(yùn)行環(huán)境中和第二運(yùn)行環(huán)境中相應(yīng)地部署需要重用的第一組件和各個(gè)代理器。例如,可以對(duì)第一組件和生成的各個(gè)代理器進(jìn)行打包封裝,然后在第一運(yùn)行環(huán)境中和第二運(yùn)行環(huán)境中對(duì)封裝包進(jìn)行相應(yīng)的部署,從而實(shí)現(xiàn)對(duì)所選的第一組件的重用。在步驟S110中,該處理結(jié)束??梢岳斫?,圖1中各個(gè)步驟的執(zhí)行順序可以與上述描述有所不同,例如可以先針對(duì)第一軟件系統(tǒng)內(nèi)的組件進(jìn)行分析,分析出其中部分或全部組件的依賴(lài)性和接口(步驟S104),然后再選擇需要進(jìn)行重用的第一組件(S102)。優(yōu)選地,可以將分析出的依賴(lài)關(guān)系以圖形化的方式可視地呈現(xiàn)給用戶(hù),以便用戶(hù)直觀地選擇第一組件,并且了解所選第一組件所依賴(lài)的第二組件。圖2示意性示出了根據(jù)本發(fā)明一個(gè)實(shí)施方式的用于對(duì)基于組件的軟件系統(tǒng)中的組件重用的系統(tǒng)架構(gòu)圖。其中,參考標(biāo)號(hào)200表示根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng),用于實(shí)現(xiàn)對(duì)基于組件的軟件系統(tǒng)中的組件重用;參考標(biāo)號(hào)202表示組件選擇裝置,用于對(duì)第一軟件系統(tǒng)中需要進(jìn)行重用的組件進(jìn)行選擇;參考標(biāo)號(hào)204表示分析裝置,用于對(duì)第一軟件系統(tǒng)中的組件進(jìn)行分析以獲得相關(guān)信息;參考標(biāo)號(hào)206表示代理器生成裝置,用于生成在第二軟件系統(tǒng)中重用第一軟件系統(tǒng)的組件所需的各個(gè)代理器;以及參考標(biāo)號(hào)208表示包封裝裝置,用于對(duì)重用組件和生成代理器進(jìn)行包封裝以便后續(xù)將其在相應(yīng)的第一、第二運(yùn)行環(huán)境中進(jìn)行部署。如圖2所示,用戶(hù)可以通過(guò)組件選擇裝置202從諸如傳統(tǒng)基于組件的系統(tǒng)的第一軟件系統(tǒng)中選擇需要進(jìn)行重用的組件作為第一組件。本領(lǐng)域技術(shù)人員應(yīng)該理解,可以選擇一個(gè)或多個(gè)組件作為第一組件。組件選擇裝置202例如可以具有友好的用戶(hù)接口,向用戶(hù)可視化地提供第一軟件系統(tǒng)中組件的信息,并且用戶(hù)可以使用該用戶(hù)接口來(lái)選擇第一軟件系統(tǒng)中需要重用的組件,即第一組件。組件分析裝置204用于對(duì)第一軟件系統(tǒng)中的組件進(jìn)行分析以獲得相關(guān)信息。組件分析裝置204可以分析組件間的依賴(lài)關(guān)系以便確定所選的第一組件所依賴(lài)的組件,即第二組件。作為組件分析裝置204所需的信息輸入,可以通過(guò)多種方式獲取第一軟件系統(tǒng)的組件間的依賴(lài)關(guān)系和組件的接口。例如,一種可能方式是跟蹤方法。其中輸入用于使用第一軟件系統(tǒng)的多個(gè)場(chǎng)景;由場(chǎng)景執(zhí)行引擎在第一軟件系統(tǒng)對(duì)這些場(chǎng)景進(jìn)行解析和執(zhí)行;通過(guò)執(zhí)行,交互跟蹤器(可以基于現(xiàn)有產(chǎn)品建立,例如Tivoli)將負(fù)責(zé)捕獲第一軟件系統(tǒng)組件間的所有交互數(shù)據(jù);依賴(lài)性分析器接著對(duì)交互數(shù)據(jù)進(jìn)行分析并生成指示第一軟件系統(tǒng)組件間依賴(lài)關(guān)系的數(shù)據(jù),該數(shù)據(jù)至少表示a)—組具有組件接口定義的組件;以及b)—組主要表示組件間調(diào)用關(guān)系的依賴(lài)關(guān)系。當(dāng)然,可以理解另一種更為直接的方式就是直接獲得有關(guān)第一軟件系統(tǒng)的設(shè)計(jì)文檔,這樣無(wú)需執(zhí)行復(fù)雜的分析步驟即可獲得有關(guān)第一軟件系統(tǒng)中各個(gè)組件的接口以及組件間依賴(lài)關(guān)系的信息。代理器生成裝置206依據(jù)組件選擇裝置202所提供的關(guān)于第一組件的信息以及組件分析裝置204所提供的關(guān)于第二組件的信息自動(dòng)生成在第二軟件系統(tǒng)中重用第一組件所需的各個(gè)代理器。這些代理器將與第一軟件系統(tǒng)的第一運(yùn)行環(huán)境的中的各個(gè)組件以及第二軟件系統(tǒng)的第二運(yùn)行環(huán)境中的各個(gè)組件相結(jié)合,從而實(shí)現(xiàn)在第二軟件系統(tǒng)中對(duì)第一組件的重用。更具體地,代理器生成裝置206生成與第一組件相關(guān)聯(lián)的用于第二運(yùn)行環(huán)境的第一代理器,生成與第一組件集合相關(guān)聯(lián)的用于第一運(yùn)行環(huán)境的第二代理器,并且生成與第二組件相關(guān)聯(lián)的用于第一運(yùn)行環(huán)境的第三代理器。其中,第二代理器允許對(duì)重用的第一組件進(jìn)行調(diào)用,其名稱(chēng)可以與第一組件的名稱(chēng)相同或不同;以及第三代理器是代表各個(gè)第二組件的代理器,其名稱(chēng)需要與相應(yīng)的第二組件的名稱(chēng)相同;第一代理器具有與第一組件的相同接口,該接口能夠?qū)⑺袑?duì)于第一組件的調(diào)用重新定向到第一組件的第二代理器,而且第一代理器具有可以由第三代理器(如果存在的話(huà))調(diào)用的接口,該接口可以將第三代理器的調(diào)用重新定向到其他第二軟件系統(tǒng)的組件,以將其作為引用的服務(wù)。可選地,包封裝裝置208例如將原始組件、所生成的各個(gè)代理器作為輸入,并生成兩個(gè)輸出組合包,包括將被部署到第二運(yùn)行環(huán)境的第一代理器,其可用于第二軟件系統(tǒng)中的各個(gè)組件進(jìn)行配合;以及將被部署到第一運(yùn)行環(huán)境的部署包,包括第一組件和第二、第三代理器。下面結(jié)合具體的示例描述根據(jù)本發(fā)明如何在第二軟件系統(tǒng)中對(duì)第一軟件系統(tǒng)中的所選組件進(jìn)行重用。圖3a-圖3c示出了根據(jù)本發(fā)明實(shí)施方式在第一軟件系統(tǒng)中選擇一個(gè)第一組件以便在第二軟件系統(tǒng)中進(jìn)行重用的示例。其中,圖3a示意性示出第一軟件系統(tǒng)的示例;圖3b標(biāo)識(shí)出所選第一組件以及其所依賴(lài)的第二組件;圖3c示意性示出第二軟件系統(tǒng)對(duì)第一組件進(jìn)行重用的過(guò)程。如圖3a所示,例如傳統(tǒng)基于組件的系統(tǒng)的第一軟件系統(tǒng)包括四個(gè)組件組件A、組件B、組件C、組件D。其中,組件D調(diào)用組件A,并且組件A調(diào)用組件B和C。若選擇將要在諸如依賴(lài)外化的基于SCA的軟件系統(tǒng)的第二軟件系統(tǒng)中對(duì)圖3a所示第一軟件系統(tǒng)中的組件A進(jìn)行重用,即組件A為第一組件,則需要分析組件A的依賴(lài)關(guān)系。如圖3b中箭頭所示,組件D依賴(lài)于組件A,組件A依賴(lài)于組件B和組件C,所以可以確定針對(duì)組件A的所依賴(lài)組件為組件B和組件C,即組件B和C為第二組件。根據(jù)上文說(shuō)述,為組件A生成第一代理器A,和第二代理器A(圖3c左側(cè)虛框表示在第一運(yùn)行環(huán)境中的代理器),并且分別為組件B和組件C生成第三代理器B和第三代理器C,如圖3c所示,將各個(gè)生成的代理器部署在諸如EJB的第一運(yùn)行環(huán)境和諸如SCA運(yùn)行時(shí)間的第二運(yùn)行環(huán)境中。在第一運(yùn)行環(huán)境中,第二代理器A提供第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議接口,并代理對(duì)第一運(yùn)行環(huán)境中的組件A的調(diào)用。具體地,第二代理器A將第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用通過(guò)協(xié)議轉(zhuǎn)換轉(zhuǎn)換為第一運(yùn)行環(huán)境中的調(diào)用并轉(zhuǎn)發(fā)至組件A的接口,從而調(diào)用實(shí)現(xiàn)所需功能的組件A。第三代理器B和第三代理器C的接口和名稱(chēng)分別與在原第一軟件系統(tǒng)中的組件B和組件C相同。第三代理器B和第三代理器C所提供的接口用以接收來(lái)自組件A的調(diào)用,并將該調(diào)用通過(guò)協(xié)議轉(zhuǎn)換轉(zhuǎn)換為第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用,以便轉(zhuǎn)發(fā)至部署在第二軟件系統(tǒng)中的第一代理器A,。第一代理器A,實(shí)際上可以認(rèn)為是第二軟件系統(tǒng)的組件,例如SCA組件。第一代理器A,一方面作為第二軟件系統(tǒng)中對(duì)所選第一組件進(jìn)行調(diào)用的接口來(lái)提供服務(wù),另一方面還作為第一運(yùn)行環(huán)境中與第二組件對(duì)應(yīng)的第三代理器的接口來(lái)要求服務(wù)。具體地,在第二軟件系統(tǒng)中,第一代理器A,從其他第二軟件系統(tǒng)組件,例如組件E接收第二^:件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用并將該調(diào)用重新定向至第一運(yùn)行環(huán)境中的第二代理器A,并且當(dāng)組件A在執(zhí)行中需要對(duì)組件B和組件C進(jìn)行調(diào)用時(shí),其還從分別代替組件B和組件C的第三代理器B和第三代理器C接收所轉(zhuǎn)換的第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用并將它們重新定向至第二軟件系統(tǒng)的組件,例如在該示例中為組件F和組件G。通常地,第二軟件系統(tǒng)的組件F和組件G的功能分別和第一軟件系統(tǒng)的組件B和組件C類(lèi)似,其能夠?yàn)榻M件A提供所依賴(lài)的服務(wù)。由此,包括組件A、第一代理器A,,第二代理器A以及第三代理器B和第三代理器C的組可以實(shí)現(xiàn)在第二軟件系統(tǒng)中對(duì)組件A的重用而無(wú)需附加代碼或者修改組件A的代碼實(shí)現(xiàn)。圖4a-圖4c示出了根據(jù)本發(fā)明實(shí)施方式在第一軟件系統(tǒng)中選擇多個(gè)第一組件以便在第二軟件系統(tǒng)中進(jìn)行重用的示例。其中,圖4a示意性示出第一軟件系統(tǒng)的示例;圖4b標(biāo)識(shí)出所選多個(gè)第一組件以及其所依賴(lài)的第二組件;圖4c示意性示出第二軟件系統(tǒng)對(duì)多個(gè)第一組件進(jìn)行重用的過(guò)程。如圖4a所示,例如為傳統(tǒng)基于組件的系統(tǒng)的第一軟件系統(tǒng)包括五個(gè)組件組件A、組件B、組件C、組件D和組件E。其中.,組件E調(diào)用組件A和組件B,并且組件A調(diào)用組件C,組件B調(diào)用組件D。若選擇將要在諸如依賴(lài)外化的基于SCA的軟件系統(tǒng)的第二軟件系統(tǒng)中對(duì)圖4a所示第一軟件系統(tǒng)中的組件A和組件B進(jìn)行重用,即組件A和組件B為第一組件,則需要分析組件A和組件B的依賴(lài)關(guān)系。如圖4b中箭頭所示,組件E依賴(lài)于組件A和組件B,組件A依賴(lài)于組件C,組件B依賴(lài)于組件D,所以可以確定4j"對(duì)組件A和組件B的所依賴(lài)組件為組件C和組件D,即組件C和D為第二組件。根據(jù)上文所述,為組件A和B生成第一代理器A&B,和第二代理器A&B,并且分別為組件C和組件D生成第三代理器C和第三代理器D(圖4c左側(cè)虛框表示在第一運(yùn)行環(huán)境中的代理器)。如圖4c所示,將各個(gè)生成的代理器部署在諸如EJB的第一運(yùn)行環(huán)境和諸如SCA運(yùn)行時(shí)間的第二運(yùn)行環(huán)境中。在第一運(yùn)行環(huán)境中,第二代理器A&B提供第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議接口,并代理對(duì)第一運(yùn)行環(huán)境中的組件A和組件B的調(diào)用。具體地,第二代理器A&B將第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用通過(guò)協(xié)議轉(zhuǎn)換為第一運(yùn)行環(huán)境中的調(diào)用并分別轉(zhuǎn)發(fā)至組件A和組件B的接口,從而調(diào)用實(shí)現(xiàn)所需功能的組件A和組件B。第三代理器C和第三代理器D的接口和名稱(chēng)分別與在原第一軟件系統(tǒng)中的組件C和組件D相同。第三代理器C和第三代理器D所提供的接口用以接收來(lái)自組件A的調(diào)用,并將該調(diào)用通過(guò)協(xié)議轉(zhuǎn)換為第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用,以便轉(zhuǎn)發(fā)至部署在第二軟件系統(tǒng)中的第一代理器A&B,。第一代理器A&B,實(shí)際上可以認(rèn)為是第二軟件系統(tǒng)的組件,例如SCA組件。第一代理器A&B,一方面作為第二軟件系統(tǒng)中對(duì)所選第一組件進(jìn)行調(diào)用的接口來(lái)提供服務(wù),另一方面還作為第一運(yùn)行環(huán)境中與第二組件對(duì)應(yīng)的第三代理器的接口來(lái)要求服務(wù)。具體地,在第二軟件系統(tǒng)中,第一代理器A&B,從其他第二軟件系統(tǒng)組件,例如組件E接收對(duì)于組件A和組件B的第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用并將該調(diào)用重新定向至第一運(yùn)行環(huán)境中的第二代理器A&B,并且當(dāng)組件A和組件B在執(zhí)行中需要分別對(duì)組件C和組件D進(jìn)行調(diào)用時(shí),其還從分別代替組件B和組件C的第三代理器C和第三代理器D接收所轉(zhuǎn)換的第二軟件系統(tǒng)可訪(fǎng)問(wèn)協(xié)議調(diào)用并將它們重新定向至第二軟件系統(tǒng)的組件,例如在該示例中為組件F和組件G。通常地,第二軟件系統(tǒng)的組件F和組件G的功能分別和第一軟件系統(tǒng)的組件C和組件D類(lèi)似,其能夠分別為組件A和組件B提供所依賴(lài)的服務(wù)。由此,包括組件A和組件B、第一代理器A&B,、第二代理器A&B以及第三代理器C和第三代理器D的組可以實(shí)現(xiàn)在第二軟件系統(tǒng)中對(duì)組件A和組件B的重用而無(wú)需附加代碼或者修改組件A或者組件B的代碼實(shí)現(xiàn)。通過(guò)上述的具體示例可以理解,當(dāng)選擇了多個(gè)第一組件時(shí)僅需要在第一代理器和第二代理器中增加與之相關(guān)聯(lián)的接口即可實(shí)現(xiàn)。實(shí)際上,根據(jù)本發(fā)明,如何選擇第一軟件系統(tǒng)中的第一組件不對(duì)本發(fā)明構(gòu)成限制。在上述所描述的各種示例,所選擇的第一軟件系統(tǒng)中的第一組件均存在其所依賴(lài)的第二組件。實(shí)際上更為簡(jiǎn)單的情況是,在第一軟'件系統(tǒng)中所選的第一組件不存在所依賴(lài)的第二組件。本領(lǐng)域的技術(shù)人員可以理解,針對(duì)這種情況,上述第三代理器僅提供重新定向到所述第二軟件系統(tǒng)的第一代理器的接口,并且代理器和組件間的調(diào)用過(guò)程與上文所描述的過(guò)程類(lèi)似。為了實(shí)現(xiàn)本發(fā)明的解決方案,需要調(diào)用第一組件的接口的信息以及第一組件所引用的接口的信息。這些接口信息可以通過(guò)上述分析步驟獲得。并且還需要在第一代理器與相關(guān)代理器(第二和第三代理器)之間的通用調(diào)用機(jī)制。例如在第一軟件系統(tǒng)為EJB系統(tǒng)而第二軟件系統(tǒng)為基于SCA的軟件系統(tǒng),則可以利用Webservice來(lái)實(shí)現(xiàn)上述通用調(diào)用機(jī)制,也即作為第一軟件系統(tǒng)和第二軟件系統(tǒng)協(xié)議轉(zhuǎn)換的中介。根據(jù)這些接口和通用調(diào)用機(jī)制,可以生成相關(guān)代理器。通過(guò)上面的描述,根據(jù)本發(fā)明的各種代理器均包括調(diào)用轉(zhuǎn)換的適配器,正如在圖3c和圖4c中各個(gè)代理器中圓形標(biāo)記所示。各個(gè)適配器用于接收一種類(lèi)型的調(diào)用并且通過(guò)協(xié)議轉(zhuǎn)換將其轉(zhuǎn)換為至另一種類(lèi)型的調(diào)用,然后進(jìn)行轉(zhuǎn)發(fā)。根據(jù)本發(fā)明一個(gè)實(shí)施方式,在第一軟件系統(tǒng)為EJB系統(tǒng)而第二軟件系統(tǒng)為基于SCA的軟件系統(tǒng)的情況下,可能需要應(yīng)用到四種類(lèi)型的適配器,如圖5所示。根據(jù)該實(shí)施方式,第二代理器包括將Webservice調(diào)用轉(zhuǎn)換為EJB調(diào)用的適配器(適配器a);第三代理器包括將EJB調(diào)用轉(zhuǎn)換為Webservice的適配器(適配器b);以及第一代理器一方面包括將SCA支持的調(diào)用轉(zhuǎn)換為Webservice調(diào)用的適配器(適配器c),另一方面包括將Webservice調(diào)用轉(zhuǎn)化到SCA支持的調(diào)用的適配器(適配器d)。生成適配器所需的輸入如下接口定義;左側(cè)調(diào)用才幾制;右側(cè)調(diào)用機(jī)制。利用第二代理器所包括的適配器a(Webservice->EJB)作為示例來(lái)說(shuō)明如何實(shí)現(xiàn)適配器。根據(jù)所獲得的接口定義信息并遵循左側(cè)調(diào)用機(jī)制生成代碼框架。在本實(shí)例中,需要生成Webservice框架。有許多現(xiàn)有工具可以運(yùn)用。PublicclassorderSci.vice{PublicStringcreateOrder(Stringorder_in){在每個(gè)操作中,遵循在右側(cè)的調(diào)用機(jī)制來(lái)定位組件并調(diào)用相應(yīng)方法。在本實(shí)例中,使用EJB的JNDI名稱(chēng)來(lái)定位EJB,然后調(diào)用相應(yīng)方法。PublicclassorderService{PublicStringcreateOrder(Stringorder—in){Stringconfirm—out;InitialContextic=newlnitialContext();orderLocaIHomeoih二(OrderLocalHome)ic.lookup("java:comp/env/EJB/order");OrderLocalorder二oih.create();confirm_out二order.createOrder(order—in)returnconfinnout;圖6示意性示出了可以實(shí)現(xiàn)根據(jù)本發(fā)明的實(shí)施例的計(jì)算設(shè)備。圖6中所示的計(jì)算機(jī)系統(tǒng)包括CPU(中央處理單元)601、RAM(隨機(jī)存取存儲(chǔ)器)602、ROM(只讀存儲(chǔ)器)603、系統(tǒng)總線(xiàn)604,硬盤(pán)控制器605、鍵盤(pán)控制器606、串行接口控制器607、并行接口控制器608、顯示器控制器609、硬盤(pán)610、鍵盤(pán)611、串行外部設(shè)備612、并行外部設(shè)備613和顯示器614。在這些部件中,與系統(tǒng)總線(xiàn)604相連的有CPU601、RAM602、ROM603、硬盤(pán)控制器605、鍵盤(pán)控制器606,串行接口控制器607,并行接口控制器608和顯示器控制器609。硬盤(pán)610與硬盤(pán)控制器605相連,鍵盤(pán)611與^t盤(pán)控制器606相連,串行外部設(shè)備612與串行接口控制器607相連,并行外部設(shè)備613與并行接口控制器608相連,以及顯示器614與顯示器控制器609相連。圖6中每個(gè)部件的功能在本
技術(shù)領(lǐng)域:
內(nèi)都是眾所周知的,并且圖6所示的結(jié)構(gòu)也是常規(guī)的。這種結(jié)構(gòu)不僅用于個(gè)人計(jì)算機(jī),而且用于手持設(shè)備,如PalmPC、PDA(個(gè)人數(shù)據(jù)助理)、移動(dòng)電話(huà)等等。在不同的應(yīng)用中,例如用于實(shí)現(xiàn)包含有根據(jù)本發(fā)明的客戶(hù)端模塊的用戶(hù)終端或者包含有根據(jù)本發(fā)明的網(wǎng)絡(luò)應(yīng)用服務(wù)器的服務(wù)器主機(jī)時(shí),可以向圖6中所示的結(jié)構(gòu)添加某些部件,或者圖6中的某些部件可以被省略。圖6中所示的整個(gè)系統(tǒng)由通常作為軟件存儲(chǔ)在硬盤(pán)610中、或者存儲(chǔ)在EPROM或者其它非易失性存儲(chǔ)器中的計(jì)算機(jī)可讀指令控制。軟件也可從網(wǎng)絡(luò)(圖中未示出)下載?;蛘叽鎯?chǔ)在硬盤(pán)610中,或者從網(wǎng)絡(luò)下載的軟件可一皮加載到RAM602中,并由CPU601執(zhí)行,以便完成由軟件確定的功能。盡管圖6中描述的計(jì)算機(jī)系統(tǒng)能夠支持根據(jù)本發(fā)明的提供網(wǎng)絡(luò)內(nèi)容以供脫機(jī)使用的方案,但是該計(jì)算機(jī)系統(tǒng)只是計(jì)算機(jī)系統(tǒng)的一個(gè)例子。本領(lǐng)域的熟練技術(shù)人員可以理解,許多其它計(jì)算機(jī)系統(tǒng)設(shè)計(jì)也能實(shí)現(xiàn)本發(fā)明的實(shí)施例。本發(fā)明還可以實(shí)現(xiàn)為例如由圖6所示計(jì)算機(jī)系統(tǒng)所使用的計(jì)算機(jī)程序產(chǎn)品,其可以包含有用于實(shí)現(xiàn)根據(jù)本發(fā)明的提供網(wǎng)絡(luò)內(nèi)容以供脫機(jī)使用的網(wǎng)絡(luò)應(yīng)用服務(wù)器的代碼;其還可以包含有用于實(shí)現(xiàn)根據(jù)本發(fā)明的用于獲取網(wǎng)絡(luò)內(nèi)容以供脫機(jī)使用的客戶(hù)端模塊的代碼。在使用之前,可以把代碼存儲(chǔ)在其它計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中,例如,存儲(chǔ)在硬盤(pán)或諸如光盤(pán)或軟盤(pán)的可移動(dòng)的存儲(chǔ)器中,或者經(jīng)由因特網(wǎng)或其它計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行下載。雖然結(jié)合附圖描述了本發(fā)明的實(shí)施方式,但是本領(lǐng)域技術(shù)人員可以在所附權(quán)利要求的范圍內(nèi)做出各種變形或修改。權(quán)利要求1.一種組件重用的方法,用于將第一軟件系統(tǒng)中的所選第一組件重用于第二軟件系統(tǒng),其中所述第一軟件系統(tǒng)為運(yùn)行于第一運(yùn)行環(huán)境的基于組件的軟件系統(tǒng),并且所述第二軟件系統(tǒng)為運(yùn)行于第二運(yùn)行環(huán)境的依賴(lài)夕卜化的軟件系統(tǒng),該方法包括以下步驟分析所述第一軟件系統(tǒng),確定在所述第一軟件系統(tǒng)中所述第一組件的依賴(lài)關(guān)系并且獲取相關(guān)接口信息;利用所述依賴(lài)關(guān)系和接口信息生成將分別部署在所述第一運(yùn)行環(huán)境和所述第二軟件系統(tǒng)中的代理器,其中所述代理器允許所述第二軟件系統(tǒng)調(diào)用所述第一運(yùn)行環(huán)境中的所述第一組件所提供的服務(wù),并且允許所述第一組件調(diào)用所述第二軟件系統(tǒng)中的相關(guān)服務(wù)。2.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟確定在所述第一軟件系統(tǒng)中所述第一組件依賴(lài)的第二組件,并且獲取調(diào)用所迷第一組件的接口的信息、以及所述第一組件所引用的接口的信息。3.根據(jù)權(quán)利要求2所述的方法,還包括以下步驟生成與所述第一組件相關(guān)聯(lián)的將部署于所述第二運(yùn)行環(huán)境的第一代理器、與所述第一組件相關(guān)聯(lián)的將部署于所述第一運(yùn)行環(huán)境的第二代理器、以及與所述第二組件相關(guān)聯(lián)的用于所述第一運(yùn)行環(huán)境的第三代理器,其中,所述第一代理器允許將來(lái)自所述第二軟件系統(tǒng)中對(duì)所述第一組件的調(diào)用重新定向到所述第二代理器,所述第二代理器允許對(duì)所述第一組件進(jìn)行調(diào)用,并且所述第三代理允許將來(lái)自所述第一組件的調(diào)用重新定向到所述第一代理器,以便由所述第一代理器重新定向到所述第二軟件系統(tǒng)的相應(yīng)組件。4.根據(jù)權(quán)利要求3所述的方法,還包括以下步驟對(duì)所述第一組件、所述第一代理器、第二代理器以及第三代理器進(jìn)行包封裝生成用于部署的封裝包。5.根據(jù)權(quán)利要求1-4中任何權(quán)利要求所述的方法,其中所述第二軟件系統(tǒng)為基于服務(wù)組件架構(gòu)的軟件系統(tǒng)。6.根據(jù)權(quán)利要求1-5中任何權(quán)利要求所述的方法,其中所述第一運(yùn)行環(huán)境為Java企業(yè)柄運(yùn)行環(huán)境,并且所述第二運(yùn)行環(huán)境為服務(wù)組件架構(gòu)運(yùn)行時(shí)間的運(yùn)行環(huán)境。7.根據(jù)權(quán)利要求6所述的方法,包括以下步驟生成所述第一代理器所包括的將服務(wù)組件架構(gòu)支持的調(diào)用轉(zhuǎn)換為Webservice調(diào)用的適配器,以及將Webservice調(diào)用轉(zhuǎn)換為服務(wù)組件架構(gòu)支持的調(diào)用的適配器;生成所述第二代理器所包括的將Webservice調(diào)用轉(zhuǎn)換為Java企業(yè)柄調(diào)用的適配器;以及生成所述第三代理器所包括的將Java企業(yè)柄調(diào)用轉(zhuǎn)換為Webservice調(diào)用的適配器。8.根據(jù)權(quán)利要求1-7中任一權(quán)利要求所述的方法,其中所述第一組件包括所述第一軟件系統(tǒng)中組件的任何所選組件的集合。9.一種支持組件重用的系統(tǒng),包括組件選擇裝置,用于從第一軟件系統(tǒng)中選擇需要在第二軟件系統(tǒng)中重用的第一組件,所述第一軟件系統(tǒng)為運(yùn)行于第一運(yùn)行環(huán)境的基于組件的軟件系統(tǒng),并且所述第二軟件系統(tǒng)為運(yùn)行于第二運(yùn)行環(huán)境的依賴(lài)外化的軟件系統(tǒng);分析裝置,用于對(duì)所述第一軟件系統(tǒng)進(jìn)行分析,確定在所述第一軟件系統(tǒng)中所述第一組件的依賴(lài)關(guān)系并且獲取相關(guān)接口信息;生成裝置,用于利用所述依賴(lài)關(guān)系和接口信息生成將分別部署在所述第一運(yùn)行環(huán)境和所述第二軟件系統(tǒng)中的代理器,所述代理器允許所述第二軟件系統(tǒng)調(diào)用所述第一運(yùn)行環(huán)境中的所述第一組件所提供的服務(wù),并且允許所述第一組件調(diào)用所述第二軟件系統(tǒng)中的相關(guān)服務(wù)。10.根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述分析裝置還用于確定在所述第一軟件系統(tǒng)中所述第一組件依賴(lài)的第二組件,并且獲取調(diào)用所述第一組件的接口的信息、以及所述第一組件所引用的接口的信息。11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述生成裝置還用于生成與所述第一組件相關(guān)聯(lián)的將部署于所述第二運(yùn)行環(huán)境的第一代理器、與所述第一組件相關(guān)聯(lián)的將部署于所述第一運(yùn)行環(huán)境的第二代理器、以及與所述第二組件相關(guān)聯(lián)的用于所述第一運(yùn)行環(huán)境的第三代理器,其中,所述第一代理器允許將來(lái)自所述第二軟件系統(tǒng)中對(duì)所述第一組件的調(diào)用重新定向到所述第二代理器,所述第二代理器允許對(duì)所述第一組件進(jìn)行調(diào)用,并且所述第三代理允許將來(lái)自所述第一組件的調(diào)用重新定向到所述第一代理器,以便由所述第一代理器重新定向到所述第二軟件系統(tǒng)的相應(yīng)組件。12.根據(jù)權(quán)利要求11所述的系統(tǒng),還包括包封裝裝置,用于對(duì)所述第一組件、所述第一代理器、第二代理器以及第三代理器進(jìn)行包封裝生成用于部署的封裝包。13.根據(jù)權(quán)利要求9-12中任一權(quán)利要求所述的系統(tǒng),其中所述第二軟件系統(tǒng)為基于服務(wù)組件架構(gòu)的軟件系統(tǒng)。14.根據(jù)權(quán)利要求9-13中任一權(quán)利要求所述的系統(tǒng),其中所述第一運(yùn)行環(huán)境為Java企業(yè)柄運(yùn)行環(huán)境,并且所述第二運(yùn)行環(huán)境為服務(wù)組件架構(gòu)運(yùn)行時(shí)間的運(yùn)行環(huán)境。15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述生成裝置還用于生成所述第一代理器所包括的將服務(wù)組件架構(gòu)支持的調(diào)用轉(zhuǎn)換為Webservice調(diào)用的適配器,以及將Webservice調(diào)用轉(zhuǎn)換為服務(wù)組件架構(gòu)支持的調(diào)用的適配器;生成所述第二代理器所包括的將Webservice調(diào)用轉(zhuǎn)換為Java企業(yè)柄調(diào)用的適配器;以及生成所述第三代理器所包括的將Java企業(yè)柄調(diào)用轉(zhuǎn)換為Webservice調(diào)用的適酉己16.根據(jù)權(quán)利要求9-15中任一權(quán)利要求所述的系統(tǒng),其中所述第一組件包括所述第一軟件系統(tǒng)中組件的任何所選集合。17.—種計(jì)算機(jī)程序產(chǎn)品,用于將第一軟件系統(tǒng)中的所選第一組件重用于第二軟件系統(tǒng),其中所述第一軟件系統(tǒng)為運(yùn)行于第一運(yùn)行環(huán)境的基于組件的軟件系統(tǒng),并且所述第二軟件系統(tǒng)為運(yùn)行于第二運(yùn)行環(huán)境的依賴(lài)外化的軟件系統(tǒng),所述計(jì)算機(jī)程序產(chǎn)品被配置于執(zhí)行根據(jù)權(quán)利要求1-8中任一權(quán)利要求所述的方法。全文摘要本發(fā)明提供一種組件重用的方法,用于將第一軟件系統(tǒng)中的第一組件重用于第二軟件系統(tǒng),其中第一軟件系統(tǒng)為運(yùn)行于第一運(yùn)行環(huán)境的基于組件的軟件系統(tǒng),且第二軟件系統(tǒng)為運(yùn)行于第二運(yùn)行環(huán)境的依賴(lài)外化的軟件系統(tǒng)。該方法包括分析第一軟件系統(tǒng),確定在第一軟件系統(tǒng)中第一組件的依賴(lài)關(guān)系并且獲取相關(guān)接口信息;利用依賴(lài)關(guān)系和接口信息生成將分別部署在第一運(yùn)行環(huán)境和第二軟件系統(tǒng)中的代理器,其中代理器允許第二軟件系統(tǒng)調(diào)用第一運(yùn)行環(huán)境中的第一組件所提供的服務(wù),并且允許第一組件調(diào)用第二軟件系統(tǒng)中的相關(guān)服務(wù)。本發(fā)明還提供相應(yīng)的系統(tǒng)和程序產(chǎn)品。通過(guò)本發(fā)明無(wú)需修改組件實(shí)現(xiàn)或者附加代碼即可實(shí)現(xiàn)基于組件的軟件系統(tǒng)中組件的重用。文檔編號(hào)H04L29/06GK101311903SQ20071010485公開(kāi)日2008年11月26日申請(qǐng)日期2007年5月22日優(yōu)先權(quán)日2007年5月22日發(fā)明者俊朱,李實(shí)恭,談華芳,偉趙,黃鶴遠(yuǎn)申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司