亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

在分布式網(wǎng)絡(luò)體系結(jié)構(gòu)中建模和動(dòng)態(tài)部署服務(wù)的系統(tǒng)和方法

文檔序號(hào):6655519閱讀:207來(lái)源:國(guó)知局
專利名稱:在分布式網(wǎng)絡(luò)體系結(jié)構(gòu)中建模和動(dòng)態(tài)部署服務(wù)的系統(tǒng)和方法
技術(shù)領(lǐng)域
本發(fā)明涉及分布式網(wǎng)絡(luò)體系結(jié)構(gòu)的領(lǐng)域,更具體地說(shuō),涉及一種用于在分布式網(wǎng)絡(luò)體系結(jié)構(gòu),特別是在作為面向服務(wù)的體系結(jié)構(gòu)的一部分的服務(wù)容器中,建模和動(dòng)態(tài)部署服務(wù)的系統(tǒng)和方法,其中,所述面向服務(wù)的體系結(jié)構(gòu)由以下部分構(gòu)成資源提供者、服務(wù)消費(fèi)者、和向服務(wù)消費(fèi)者提供服務(wù)的服務(wù)容器(即,主機(jī)環(huán)境)。
背景技術(shù)
當(dāng)今IT環(huán)境的形成是由于需要提供在各種系統(tǒng)和應(yīng)用之間的互操作性的手段。大多數(shù)所述系統(tǒng)和應(yīng)用潛在地保持狀態(tài)信息。由于系統(tǒng)和應(yīng)用的狀態(tài)化(stateful)特性,可將系統(tǒng)和應(yīng)用等看作資源。為了提供對(duì)這種資源的狀態(tài)的同種(homogeneous)訪問(wèn),在面向服務(wù)的體系結(jié)構(gòu)資源中,可通過(guò)與單獨(dú)的資源的狀態(tài)有關(guān)的功能接口將它們的狀態(tài)分別暴露為服務(wù)(例如,Web服務(wù))。
如果通過(guò)將資源的狀態(tài)和功能性暴露為服務(wù)(即,通過(guò)功能接口)來(lái)提供對(duì)任意資源(即,物理或邏輯系統(tǒng)或應(yīng)用)的訪問(wèn),則必須使用任意編程語(yǔ)言(例如,Java,Net等)來(lái)開(kāi)發(fā)封裝各個(gè)資源的服務(wù)接口和實(shí)現(xiàn)(例如,Web服務(wù)、網(wǎng)格服務(wù)、CORBA等)。
當(dāng)今隨著新服務(wù)的開(kāi)發(fā)和部署所遇到的問(wèn)題在于現(xiàn)有技術(shù)應(yīng)用開(kāi)發(fā)和部署的靜態(tài)特性。當(dāng)前的開(kāi)發(fā)和部署處理非常剛性,不允許在運(yùn)行時(shí)期間修改現(xiàn)有的服務(wù)。如果要開(kāi)發(fā)新的服務(wù)或者要修改現(xiàn)有的服務(wù),則整個(gè)應(yīng)用生存周期不得不重新開(kāi)始,并且必須將新的特征添加到應(yīng)用的源代碼中,隨后該源代碼通常必須被編譯、進(jìn)一步描述、封裝并傳送到目標(biāo)主機(jī)環(huán)境中,目標(biāo)主機(jī)環(huán)境隨后提供服務(wù)的功能性以供使用(取決于使用的編程語(yǔ)言或方法,在可使用服務(wù)之前可能要執(zhí)行更多步驟。以下將更詳細(xì)描述。)此外,如果將現(xiàn)有的服務(wù)組合為較高層的復(fù)合服務(wù),則開(kāi)發(fā)者必須提供組合兩個(gè)現(xiàn)有服務(wù)的功能性的代碼??偸窃诮r(shí)期間(應(yīng)用或服務(wù)沒(méi)有激活或執(zhí)行),而不是在運(yùn)行時(shí)期間來(lái)完成所述開(kāi)發(fā)和組合現(xiàn)有的服務(wù)。
現(xiàn)有技術(shù)為了更詳細(xì)地解釋當(dāng)前如何在主機(jī)環(huán)境中開(kāi)發(fā)并部署新的服務(wù),

圖1示出在J2EE(即,Java 2企業(yè)版平臺(tái))的情況下如何完成開(kāi)發(fā)和部署的示意性表示的示例。所示內(nèi)容在建立時(shí)(以靜態(tài)方式開(kāi)發(fā)應(yīng)用或服務(wù))和運(yùn)行時(shí)(完成的服務(wù)在主機(jī)環(huán)境中可用并可由服務(wù)消費(fèi)者訪問(wèn))之間進(jìn)行區(qū)分。如果將開(kāi)發(fā)和部署新的服務(wù),則服務(wù)或應(yīng)用開(kāi)發(fā)者必須執(zhí)行多個(gè)預(yù)定的活動(dòng)。首先,必須開(kāi)發(fā)服務(wù)(這包括服務(wù)的功能接口的規(guī)定以及服務(wù)邏輯的功能實(shí)現(xiàn))。其次,必須將完成的服務(wù)編譯為Java字節(jié)碼。然后,必須通過(guò)以所謂的部署描述符的格式添加附加的信息來(lái)進(jìn)一步描述新的代碼,所述部署描述符規(guī)定應(yīng)用服務(wù)的附加行為特性(例如,事務(wù)行為或安全設(shè)置)。在用一個(gè)或許多部署描述符描述了代碼之后,必須將描述符和代碼封裝在一起,成為例如.jar或.ear文件(表示J2EE可執(zhí)行)。接著,必須將所述可執(zhí)行內(nèi)容傳送到將來(lái)的主機(jī)環(huán)境內(nèi)的預(yù)定位置(這通常通過(guò)例如FTP的各種文件傳送來(lái)完成)。下面,開(kāi)發(fā)者或部署者將必須創(chuàng)建需要的數(shù)據(jù)庫(kù)表,并將應(yīng)用的狀態(tài)化部分映射到各個(gè)表。最后,可使用各種方式將可執(zhí)行內(nèi)容安裝到主機(jī)環(huán)境(將其裝入目錄并重新啟動(dòng)服務(wù)器,或調(diào)用安裝客戶機(jī)或管理接口)。通常,這意味著將必須停止主機(jī)環(huán)境(即,J2EE應(yīng)用服務(wù)器),必須安裝可執(zhí)行內(nèi)容,并且必須隨后重新啟動(dòng)服務(wù)器。只有在成功重新啟動(dòng)之后,才最終可由服務(wù)消費(fèi)者使用新的服務(wù)(即,可創(chuàng)建新的狀態(tài)化服務(wù)實(shí)例,并可調(diào)用對(duì)于這些實(shí)例的操作)。順便說(shuō)明,所描述的靜態(tài)處理不僅對(duì)狀態(tài)化服務(wù)有效,而且對(duì)普通的服務(wù)和應(yīng)用開(kāi)發(fā)及部署也是有效的。
如果將幾個(gè)服務(wù)組合為較高層的復(fù)合服務(wù),則必須以與單個(gè)服務(wù)完全相同的方式來(lái)開(kāi)發(fā)新的復(fù)合服務(wù)。對(duì)于每個(gè)新的服務(wù),需要所有的開(kāi)發(fā)步驟(在建立時(shí)期間),這同樣使得現(xiàn)有服務(wù)的組合非常剛性和難以處理。
現(xiàn)有技術(shù)方法的問(wèn)題如下靜態(tài)開(kāi)發(fā)和部署處理使得動(dòng)態(tài)服務(wù)開(kāi)發(fā)以及將現(xiàn)有服務(wù)復(fù)合為更加復(fù)雜的復(fù)合服務(wù)非常剛性和難以處理。此外,不能在運(yùn)行時(shí)期間動(dòng)態(tài)配置服務(wù)(即,它們之后的應(yīng)用實(shí)現(xiàn))(例如,不能在運(yùn)行時(shí)期間調(diào)整事務(wù)行為或安全特征,但是需要在建立時(shí)期間完成所述調(diào)整,并且需要隨后重新配置所述服務(wù))。同樣地,對(duì)于服務(wù)的各種修改強(qiáng)制重新開(kāi)發(fā)已修改的代碼。此外,如果將任何種類的資源表示為服務(wù),則它們需要實(shí)現(xiàn)另外的協(xié)議層,以便將它們的狀態(tài)信息和功能性暴露到面向服務(wù)的領(lǐng)域。
發(fā)明目的本發(fā)明的目的是提供一種用于在網(wǎng)絡(luò)體系結(jié)構(gòu)中開(kāi)發(fā)和部署服務(wù)的系統(tǒng)和方法,其避免現(xiàn)有技術(shù)的缺點(diǎn)。

發(fā)明內(nèi)容
本發(fā)明描述一種用于在分布式網(wǎng)絡(luò)體系結(jié)構(gòu)、特別是在面向服務(wù)的體系結(jié)構(gòu)內(nèi)建模和動(dòng)態(tài)部署服務(wù)的新的系統(tǒng)和方法。作為分布式網(wǎng)絡(luò)體系結(jié)構(gòu)的一部分的服務(wù)容器暴露它的功能性作為服務(wù)。它提供用于部署服務(wù)描述的注冊(cè)服務(wù)。在以任何聲明性描述語(yǔ)言(即,(狀態(tài)化)服務(wù),例如,狀態(tài)化Web服務(wù)的描述)創(chuàng)建新的服務(wù)描述之后,描述提供者在服務(wù)容器調(diào)用注冊(cè)服務(wù),所述服務(wù)容器允許在運(yùn)行時(shí)期間注冊(cè)(即,部署)所述新的服務(wù)描述,而不需要重新啟動(dòng)服務(wù)容器。服務(wù)容器負(fù)責(zé)分析并檢查提交的新的服務(wù)描述的有效性,存儲(chǔ)所述服務(wù)描述,并使得它對(duì)于感興趣的服務(wù)消費(fèi)者可用,以進(jìn)行實(shí)例化。如果新的服務(wù)已成功注冊(cè),則由服務(wù)容器自動(dòng)創(chuàng)建用于訪問(wèn)所述新服務(wù)的新的服務(wù)接口。感興趣的服務(wù)消費(fèi)者可以就被主機(jī)管理的可用服務(wù)查詢主機(jī)環(huán)境,并隨后實(shí)例化一個(gè)新的服務(wù)。服務(wù)消費(fèi)者隨后可以對(duì)給定的服務(wù)實(shí)例調(diào)用任何暴露的服務(wù)操作,其通常遵循請(qǐng)求響應(yīng)模式。
附圖的簡(jiǎn)要說(shuō)明在以下的詳細(xì)書(shū)面描述中,本發(fā)明的上述以及另外的目的、特征和優(yōu)點(diǎn)將變得清楚。在所附權(quán)利要求中闡述本發(fā)明的新穎特征。然而,通過(guò)參照下面的附圖閱讀示例性實(shí)施例的詳細(xì)描述,將最佳地理解本發(fā)明本身,以及本發(fā)明的使用的優(yōu)選模式、另外的目的以及優(yōu)點(diǎn),在附圖中圖1示出現(xiàn)有技術(shù)中的Web服務(wù)開(kāi)發(fā)和部署處理;圖2示出根據(jù)本發(fā)明的新的部署方法;圖3示出在實(shí)現(xiàn)根據(jù)圖2的本發(fā)明的部署方法所需的分布式網(wǎng)絡(luò)體系結(jié)構(gòu)中涉及的當(dāng)事方;圖4示出根據(jù)圖3的用于實(shí)現(xiàn)本發(fā)明的部署方法的分布式網(wǎng)絡(luò)體系結(jié)構(gòu)的涉及的當(dāng)事方的組件;圖5示出根據(jù)權(quán)利要求3的涉及的當(dāng)事方的組件的相互作用示圖;圖6A到圖6G示出根據(jù)本發(fā)明,當(dāng)向服務(wù)容器注冊(cè)任何種類的服務(wù)的資源的新的表示時(shí)的活動(dòng);圖7A到圖7L示出在使用Web服務(wù)容器的Web服務(wù)體系結(jié)構(gòu)中用于服務(wù)的動(dòng)態(tài)部署的本發(fā)明的系統(tǒng)和方法的優(yōu)選實(shí)施例。
關(guān)于圖2,示出了在面向服務(wù)的體系結(jié)構(gòu)中的服務(wù)的開(kāi)發(fā)和動(dòng)態(tài)部署的本發(fā)明的方法的示意性表示,所述面向服務(wù)的體系結(jié)構(gòu)至少包括描述提供者3、主機(jī)環(huán)境4(服務(wù)容器)、以及服務(wù)消費(fèi)者2。在創(chuàng)建了任何聲明性描述語(yǔ)言的服務(wù)描述8(即,以狀態(tài)化Web服務(wù)為例的(狀態(tài)化)服務(wù)的描述)之后,描述提供者3調(diào)用對(duì)主機(jī)環(huán)境4的操作,其允許注冊(cè)10(即,部署)可表示任何種類的資源(例如,狀態(tài)化資源)的新的服務(wù)描述。向主機(jī)環(huán)境4注冊(cè)新的服務(wù)描述,這一操作可在運(yùn)行時(shí)期間發(fā)生,而不需要重新啟動(dòng)主機(jī)環(huán)境以便注冊(cè)或?qū)嵗碌姆?wù),其后,主機(jī)環(huán)境4(例如,應(yīng)用服務(wù)器或服務(wù)容器等)負(fù)責(zé)分析和檢查提交的服務(wù)描述的有效性,以存儲(chǔ)描述的服務(wù)并且使得它可用于感興趣的服務(wù)消費(fèi)者2來(lái)進(jìn)行實(shí)例化。感興趣的服務(wù)消費(fèi)者2可向主機(jī)環(huán)境4查詢被主機(jī)處理的可用服務(wù),并隨后實(shí)例化任何現(xiàn)有的服務(wù)的新的服務(wù)實(shí)例。如果已創(chuàng)建服務(wù)實(shí)例,則可通過(guò)與基礎(chǔ)服務(wù)相應(yīng)的服務(wù)接口12(例如,Web服務(wù)接口)對(duì)其進(jìn)行訪問(wèn),通過(guò)主機(jī)環(huán)境4自動(dòng)暴露基礎(chǔ)服務(wù)(由于主機(jī)環(huán)境也暴露其操作作為服務(wù),所以也可將其稱為主機(jī)服務(wù))。服務(wù)消費(fèi)者2隨后可調(diào)用對(duì)于給定的服務(wù)實(shí)例(在得自描述的服務(wù)類型的服務(wù)接口之后)的任何暴露的服務(wù)操作,其通常遵循請(qǐng)求響應(yīng)模式。
圖3示出在實(shí)現(xiàn)根據(jù)圖2的本發(fā)明的部署方法所需的分布式網(wǎng)絡(luò)體系結(jié)構(gòu)中涉及的當(dāng)事方。
服務(wù)容器4(即,主機(jī)環(huán)境)優(yōu)選的是狀態(tài)化服務(wù)容器,其提供受管理的運(yùn)行時(shí)環(huán)境并提供透明事務(wù)處理、持久保存、消息傳送子系統(tǒng)和工作流引擎,其控制服務(wù)實(shí)例的工作流驅(qū)動(dòng)的操作的執(zhí)行。所述服務(wù)容器可在任何種類的數(shù)據(jù)處理單元上運(yùn)行,所述數(shù)據(jù)處理單元諸如具有處理器、工作存儲(chǔ)器、輔助存儲(chǔ)器、以及在理想狀況下具有網(wǎng)絡(luò)(有線或無(wú)線)接入的普通PC、專用服務(wù)器等。
資源提供者13提供物理或邏輯資源,它們應(yīng)該經(jīng)由服務(wù)容器4提供給潛在服務(wù)消費(fèi)者2。
描述提供者3向服務(wù)容器4提供專用服務(wù)(可能表示狀態(tài)化物理資源)的描述。
服務(wù)消費(fèi)者2對(duì)使用由服務(wù)容器4提供并位于其中的一個(gè)或多個(gè)服務(wù)感興趣。
所有這些涉及的當(dāng)事方可經(jīng)由網(wǎng)絡(luò)連接,并且在這一基礎(chǔ)結(jié)構(gòu)之內(nèi)通信并交換信息。
本發(fā)明詳細(xì)描述資源提供者13可以如何將任何種類的(狀態(tài)化)資源提供給服務(wù)消費(fèi)者2。為了完成這一目的,描述提供者5(可以是資源提供者本身)必須創(chuàng)建表示其選擇的資源的服務(wù)描述。在描述其資源(源代碼)的這種表示之后,他能夠向服務(wù)容器4注冊(cè)所述描述。其中,感興趣的服務(wù)消費(fèi)者2會(huì)創(chuàng)建服務(wù)描述(=資源的類型)的單獨(dú)的實(shí)例并經(jīng)由選擇的協(xié)議(通過(guò)服務(wù)容器的供應(yīng)而定義,至少應(yīng)提供通過(guò)SOAP的Web服務(wù))與它相互作用。
圖4示出所涉及的當(dāng)事方的組件。
服務(wù)容器4至少具有下述組件服務(wù)描述數(shù)據(jù)存儲(chǔ)器22,包含已經(jīng)向服務(wù)容器4注冊(cè)的服務(wù)描述。
服務(wù)實(shí)例數(shù)據(jù)存儲(chǔ)器23,包含屬于服務(wù)存儲(chǔ)器22中的服務(wù)描述的所有實(shí)例。
接口80,包括下面一組子接口40、43,需要它們來(lái)實(shí)現(xiàn)本發(fā)明注冊(cè)服務(wù)接口40,其允許描述提供者注冊(cè)表示任何種類的資源的新服務(wù)的服務(wù)描述,以及服務(wù)接口43,當(dāng)服務(wù)描述的注冊(cè)已經(jīng)成功時(shí)其被自動(dòng)創(chuàng)建。
優(yōu)選的是,將下述進(jìn)一步的子接口包括在服務(wù)容器中信息檢索接口41,其可用于對(duì)所述容器進(jìn)行查詢,以查詢部署的服務(wù)和服務(wù)實(shí)例,以及實(shí)例化服務(wù)接口42,其允許服務(wù)消費(fèi)者對(duì)由所述容器提供的服務(wù)描述進(jìn)行實(shí)例化。
可另外將下述進(jìn)一步的接口包括在服務(wù)容器中刪除服務(wù)實(shí)例接口,其允許服務(wù)消費(fèi)者明確地刪除不再使用的實(shí)例,用于每個(gè)先前向容器注冊(cè)的服務(wù)的接口。使用這一接口以及指向符合這一接口的單獨(dú)的實(shí)例的唯一句柄(handle),服務(wù)消費(fèi)者可訪問(wèn)并操作實(shí)例,以及撤銷(Deregister)描述接口,其用于撤銷不再使用的服務(wù)描述。
資源提供者13提供對(duì)物理和邏輯資源14的訪問(wèn),所述資源14例如CPU(計(jì)算周期)、存儲(chǔ)器(用于數(shù)據(jù)存儲(chǔ)的物理裝置)、網(wǎng)絡(luò)(具有各種質(zhì)量的服務(wù),即,關(guān)于帶寬、吞吐量等的網(wǎng)絡(luò)資源)、軟件服務(wù)(即,數(shù)據(jù)庫(kù)或Web服務(wù)器)、計(jì)費(fèi)服務(wù)、計(jì)量服務(wù)(這種服務(wù)以時(shí)間級(jí)、負(fù)載級(jí)、吞吐量級(jí)等為任何服務(wù)消費(fèi)者計(jì)量資源的使用,并將這一計(jì)量信息提供給實(shí)體服務(wù)消費(fèi)者)、記帳服務(wù)(這種服務(wù)使用經(jīng)由計(jì)費(fèi)和計(jì)量而收集的數(shù)據(jù)來(lái)創(chuàng)建用于資源的使用即付費(fèi)的帳單)。資源提供者13可提供通過(guò)諸如CIM、SNMP、SSH、遠(yuǎn)程登陸等各種方式對(duì)它的資源的訪問(wèn)。
可以由同一個(gè)當(dāng)事方充當(dāng)資源提供者13的角色和描述提供者3的角色。描述提供者以及資源提供者這兩者也可在服務(wù)消費(fèi)者角色方面起到作用。
描述提供者3負(fù)責(zé)創(chuàng)建服務(wù)的描述并向服務(wù)容器注冊(cè)創(chuàng)建的描述,所述服務(wù)容器可優(yōu)選的是狀態(tài)化服務(wù)容器。為了創(chuàng)建服務(wù)描述,服務(wù)提供者3遵守規(guī)定某種聲明性描述語(yǔ)言(即,基于XML)的句法和語(yǔ)義的語(yǔ)法。使用所述語(yǔ)法,以便規(guī)定反映資源的服務(wù)的描述。為了向服務(wù)容器4注冊(cè)所述描述,需要指向容器的注冊(cè)器接口的端點(diǎn)引用。此外,描述提供者需要具有由將被描述的服務(wù)表示的資源的某種信息或某些概念。這也可包括協(xié)議專用信息(以便在后臺(tái)直接訪問(wèn)物理資源)。
服務(wù)消費(fèi)者2僅需要知道如何尋址服務(wù)容器接口43(即,需要指向容器接口的端點(diǎn)的端點(diǎn)引用/URL)??赏ㄟ^(guò)查詢狀態(tài)化服務(wù)提供者的接口動(dòng)態(tài)地獲得服務(wù)消費(fèi)者所需的所有其它信息。
服務(wù)消費(fèi)者2可具有高速緩存或存儲(chǔ)器,以便持久地保存引用服務(wù)和服務(wù)實(shí)例等的句柄。然而,這僅是優(yōu)選的情況,所述高速緩存或存儲(chǔ)器并不是必須強(qiáng)制設(shè)置的。還可使用狀態(tài)化服務(wù)容器的信息檢索接口動(dòng)態(tài)地獲得所有所述信息。
圖5示出根據(jù)權(quán)利要求4的涉及的當(dāng)事方的組件的相互作用示圖。
圖5給出所有的組件如何相互作用的概述,示出新的服務(wù)描述的動(dòng)態(tài)部署或注冊(cè),并演示例如狀態(tài)化服務(wù)實(shí)例的服務(wù)實(shí)例的后續(xù)實(shí)例化,以及與它們的相互作用。
首先,必須由資源提供者提供某種資源(0)??梢愿鞣N方式(即,經(jīng)由SNMP、CIM、SSH、遠(yuǎn)程訪問(wèn)等)提供對(duì)這些資源的實(shí)際訪問(wèn)。
此后,描述提供者創(chuàng)建并注冊(cè)反映實(shí)際資源的服務(wù)描述(1)。
一旦在服務(wù)容器(優(yōu)選的是狀態(tài)化Web服務(wù)容器)中存在可用的服務(wù),則服務(wù)消費(fèi)者可檢索關(guān)于注冊(cè)的服務(wù)和實(shí)例的信息(2;如果有的話)。
在服務(wù)描述已經(jīng)被注冊(cè)之后,可由感興趣的服務(wù)消費(fèi)者對(duì)它們進(jìn)行實(shí)例化(3)。
經(jīng)由分別注冊(cè)的服務(wù)描述的自動(dòng)暴露的服務(wù)接口,服務(wù)消費(fèi)者可隨后與服務(wù)實(shí)例相互作用。因此,服務(wù)消費(fèi)者可調(diào)用對(duì)服務(wù)實(shí)例的操作,并因此改變服務(wù)實(shí)例的狀態(tài)(4)。
如果不再使用服務(wù)實(shí)例,則服務(wù)消費(fèi)者可選擇刪除所述實(shí)例(5)。
可從狀態(tài)化服務(wù)容器撤銷不具有相應(yīng)服務(wù)實(shí)例并且不再使用的服務(wù)描述(6)。
圖6A至圖6G示出根據(jù)本發(fā)明當(dāng)向服務(wù)容器注冊(cè)任何種類服務(wù)的資源的新的表示時(shí)的相互作用。
當(dāng)向服務(wù)容器注冊(cè)任何種類服務(wù)的資源的新的表示時(shí)發(fā)生以下活動(dòng)(見(jiàn)圖6A)描述提供者3使用某種聲明性描述語(yǔ)言的方式定義并聲明它的選擇的服務(wù)描述(即,符合某種將被虛擬化的物理或邏輯資源)??勺詣?dòng)(使用模板)或手動(dòng)完成新的服務(wù)的描述。
描述提供者3調(diào)用服務(wù)容器4的某種注冊(cè)(服務(wù)描述)操作,并由此注冊(cè)服務(wù)描述。服務(wù)容器4利用服務(wù)存儲(chǔ)器分析、驗(yàn)證并注冊(cè)表示新的類型的資源(例如,狀態(tài)化資源)的服務(wù)描述。在成功注冊(cè)之后,提供服務(wù)描述以便進(jìn)行實(shí)例化。
如果注冊(cè)操作成功,則服務(wù)容器4將唯一ID,描述句柄(引用注冊(cè)的服務(wù))返回到描述提供者3。
為了檢索關(guān)于注冊(cè)的服務(wù)、它們的描述和接口以及現(xiàn)有的服務(wù)實(shí)例的信息,提供以下方法檢索服務(wù)信息(見(jiàn)圖6B)
在第一步驟10,服務(wù)消費(fèi)者2可檢索描述句柄(對(duì)已經(jīng)向服務(wù)容器4注冊(cè)的服務(wù)描述的唯一引用)的列表。
具有這種描述句柄,服務(wù)消費(fèi)者2可檢索與描述句柄相應(yīng)的服務(wù)描述20。
此外,服務(wù)消費(fèi)者2還可通過(guò)提交描述句柄作為參數(shù)來(lái)獲得由注冊(cè)的服務(wù)自動(dòng)暴露的服務(wù)接口(即,Web服務(wù)器情況下的WSDL)30。
此外,服務(wù)消費(fèi)者2還可檢索實(shí)例句柄的列表,所述實(shí)例句柄引用屬于由提交的描述句柄描述的服務(wù)的所有服務(wù)實(shí)例40。
在一個(gè)服務(wù)可由服務(wù)消費(fèi)者2使用之前,其需要被實(shí)例化。
實(shí)例化服務(wù)(見(jiàn)圖6C)為了實(shí)例化注冊(cè)的服務(wù),服務(wù)消費(fèi)者2調(diào)用實(shí)例化服務(wù)(...)操作,并傳遞描述句柄(其將成為服務(wù)示例的類型)以及可選數(shù)據(jù)(用于實(shí)例化)作為參數(shù)10??蛇x數(shù)據(jù)可包括用于服務(wù)實(shí)例初始化的狀態(tài)信息,對(duì)于相應(yīng)實(shí)體的所需服務(wù)質(zhì)量要求等。
服務(wù)容器2創(chuàng)建新的服務(wù)實(shí)例并向服務(wù)實(shí)例存儲(chǔ)器注冊(cè)所述新的實(shí)例。服務(wù)實(shí)例符合由服務(wù)規(guī)定的接口。
可選擇性地提交的數(shù)據(jù)也持久地存在于服務(wù)實(shí)例存儲(chǔ)器中。
如果實(shí)例化成功,則服務(wù)消費(fèi)者2獲得唯一實(shí)例句柄,所述實(shí)例句柄引用新創(chuàng)建的服務(wù)實(shí)例。
可經(jīng)由基礎(chǔ)服務(wù)的服務(wù)接口訪問(wèn)現(xiàn)有的服務(wù)實(shí)例。可以預(yù)見(jiàn)服務(wù)消費(fèi)者2和服務(wù)實(shí)例之間的各種相互作用,即,操作調(diào)用、通知產(chǎn)生和接收、對(duì)外部工作流活動(dòng)的調(diào)用、以及服務(wù)質(zhì)量特性的動(dòng)態(tài)變更或設(shè)置。以下描述典型相互作用的方案使用服務(wù)實(shí)例1(見(jiàn)圖6D)如果服務(wù)消費(fèi)者2已經(jīng)保留對(duì)于期望的服務(wù)實(shí)例的引用,則他可向服務(wù)容器4提交這一實(shí)例句柄。
作為提交的實(shí)例句柄的結(jié)果,服務(wù)消費(fèi)者2接收相應(yīng)的描述句柄,其引用服務(wù)實(shí)例的服務(wù)10。
在服務(wù)消費(fèi)者2可與服務(wù)實(shí)例相互作用之前,必須通過(guò)提交服務(wù)實(shí)例所符合的服務(wù)的描述句柄來(lái)獲得服務(wù)接口(20;服務(wù)接口例如可以用WSDL描述)。
在服務(wù)消費(fèi)者2獲得服務(wù)接口之后,可使用經(jīng)由接口暴露的任何操作來(lái)與服務(wù)實(shí)例30相互作用。當(dāng)操作被調(diào)用時(shí),必須傳遞實(shí)例句柄連同可能的其它參數(shù)。
服務(wù)容器4在服務(wù)接口截取操作調(diào)用,并將其路由到正確的服務(wù)實(shí)例(由提交的實(shí)例句柄指示)40。
如果所調(diào)用的操作是復(fù)雜的工作流驅(qū)動(dòng)的操作(通過(guò)工作流執(zhí)行引擎截取和管理),則外部活動(dòng)提供者可提供一個(gè)或多個(gè)包含在工作流操作中的活動(dòng)60。按照由工作流操作定義規(guī)定的順序調(diào)用這些活動(dòng)。
該操作潛在地更新服務(wù)實(shí)例的狀態(tài)。
經(jīng)由服務(wù)容器將潛在返回值返回到服務(wù)消費(fèi)者2。
修改服務(wù)描述(見(jiàn)圖6E)為了修改現(xiàn)有服務(wù),描述提供者調(diào)用修改操作并提交描述句柄連同期望的對(duì)描述的修改作為參數(shù)10。
服務(wù)容器4隨后修改服務(wù)并更新服務(wù)數(shù)據(jù)存儲(chǔ)器20。
此外,向主題注冊(cè)處(topic registry)添加可能的主題,或?qū)⒖赡艿闹黝}從主題注冊(cè)處中去除,因此,修改可持久地存在于主題存儲(chǔ)器中。
可刪除不使用的服務(wù)實(shí)例刪除服務(wù)實(shí)例(見(jiàn)圖6F)如果不再需要一個(gè)現(xiàn)有的服務(wù)實(shí)例,則服務(wù)消費(fèi)者2可調(diào)用刪除操作,并傳遞指向?qū)⒈粍h除的服務(wù)實(shí)例的期望的實(shí)例句柄10。
容器隨后從服務(wù)實(shí)例數(shù)據(jù)存儲(chǔ)器刪除所述實(shí)例20。
下面,服務(wù)消費(fèi)者2接收指示刪除操作是否成功的狀態(tài)碼。
在符合這一類型的所有服務(wù)實(shí)例被禁止存在之后,可動(dòng)態(tài)撤銷不再需要的服務(wù)描述。
撤銷服務(wù)描述(見(jiàn)圖6G)
如果不再需要現(xiàn)有的服務(wù),則服務(wù)消費(fèi)者2可調(diào)用撤銷操作,并傳遞指向?qū)⒈怀蜂N的服務(wù)描述的期望的描述句柄10。
服務(wù)容器4隨后從服務(wù)存儲(chǔ)器撤銷所述描述20。
下面,服務(wù)消費(fèi)者2接收指示撤銷操作是否成功的狀態(tài)碼30。
圖7A至圖7L示出用于在使用Web服務(wù)容器的Web服務(wù)體系結(jié)構(gòu)中的服務(wù)的動(dòng)態(tài)部署的本發(fā)明的系統(tǒng)和方法的優(yōu)選實(shí)施例。
Web服務(wù)容器表示W(wǎng)eb服務(wù)的主機(jī)環(huán)境,用于服務(wù)實(shí)現(xiàn)的生存周期管理、方法調(diào)用的并發(fā)管理、持久保存和事務(wù)服務(wù)。完成這些服務(wù),其還可支持基于主題的管理和安全性。
在該優(yōu)選的實(shí)現(xiàn)中,以聲明性描述語(yǔ)言在Web服務(wù)容器中部署服務(wù),其中,所述聲明性描述語(yǔ)言通過(guò)使用實(shí)體類型描述來(lái)建立模型。
通過(guò)聲明性描述語(yǔ)言來(lái)描述實(shí)體類型,并且實(shí)體類型提出任何可以構(gòu)想的資源類型的面向服務(wù)的表示。當(dāng)以抽象方式完成資源的面向服務(wù)的表示時(shí),可將實(shí)體類型映射到面向服務(wù)的體系結(jié)構(gòu)(即,狀態(tài)化Web服務(wù))的任何可構(gòu)想的實(shí)現(xiàn)。
圖7A示出資源類型、相應(yīng)的實(shí)體類型和一種向潛在服務(wù)客戶暴露實(shí)體類型的可能性之間的關(guān)系。實(shí)體類型提供資源類型的抽象的面向服務(wù)的表示,并定義在面向服務(wù)的領(lǐng)域如何暴露特定資源類型。這種資源和實(shí)體的分離允許對(duì)于哪個(gè)資源類型的屬性以及哪個(gè)狀態(tài)信息將可用的精細(xì)級(jí)別進(jìn)行定義。主機(jī)環(huán)境,例如,狀態(tài)化Web服務(wù)容器隨后將使用Web服務(wù)標(biāo)準(zhǔn)自動(dòng)地暴露抽象的服務(wù)表示。
這種資源建模的方法兼?zhèn)鋷讉€(gè)優(yōu)點(diǎn)。第一,所述方法將實(shí)際資源類型從用于產(chǎn)生資源的抽象的服務(wù)表示的實(shí)體和它們的狀態(tài)分離。第二,所述方法使得可以使用除Web服務(wù)之外的服務(wù)實(shí)現(xiàn)來(lái)暴露資源的狀態(tài)。第三,由于可使用自動(dòng)暴露的服務(wù)接口訪問(wèn)全部的各種資源,所述方法提供各種資源的統(tǒng)一視圖。
可以以使用聲明性描述語(yǔ)言語(yǔ)法的聲明性方式描述邏輯或物理資源。產(chǎn)生的實(shí)體類型描述以抽象和面向服務(wù)的方式表示資源類型(見(jiàn)圖7B中這種描述的示例)。由于實(shí)體類型描述僅定義資源類型的抽象的面向服務(wù)的表示,所以必須將它傳送到Web服務(wù)容器,其自動(dòng)將實(shí)體類型綁定到相應(yīng)的Web服務(wù)接口,并提供生存時(shí)間管理操作,以便注冊(cè)新的實(shí)體類型描述和撤銷現(xiàn)有的實(shí)體類型描述。遵循此推理思路,任何實(shí)體類型描述具有單獨(dú)的生命。
首先,在可通過(guò)Web服務(wù)接口表示或暴露資源類型之前,必須規(guī)定各個(gè)資源類型的實(shí)體類型描述。這通過(guò)使用<entity-type>元素、它的子元素和屬性來(lái)完成。通常,實(shí)體類型描述包括名稱、組、幾個(gè)操作以及與其它實(shí)體類型的關(guān)系。當(dāng)從將被表示的資源類型得到這種實(shí)體類型描述,并且決定暴露哪個(gè)狀態(tài)信息之后,可向Web服務(wù)容器注冊(cè)創(chuàng)建的實(shí)體類型描述。作為注冊(cè)的結(jié)果,Web服務(wù)容器將使得實(shí)體類型的服務(wù)接口對(duì)于潛在的服務(wù)消費(fèi)者可用,并暴露每個(gè)注冊(cè)的新的實(shí)體類型的單獨(dú)的Web服務(wù)接口。此外,每個(gè)注冊(cè)的實(shí)體類型描述被分配通用的唯一標(biāo)識(shí)符,其允許用于進(jìn)一步的引用和實(shí)例化。這種關(guān)于每個(gè)部署的資源的服務(wù)視角利用SOA的優(yōu)點(diǎn),即,跨邊界并獨(dú)立于平臺(tái)的互操作性,因此,以標(biāo)準(zhǔn)化的方式提供表示的資源類型的統(tǒng)一服務(wù)視圖。
一旦實(shí)體類型被注冊(cè)到Web服務(wù)容器,所述實(shí)體類型就經(jīng)由Web服務(wù)容器的生存時(shí)間相應(yīng)管理操作被提供以進(jìn)行實(shí)例化。
在最簡(jiǎn)單的情況下,Web服務(wù)容器僅實(shí)例化期望的實(shí)體類型,而沒(méi)有進(jìn)一步的參數(shù)或隱含的假設(shè)。這產(chǎn)生經(jīng)由正被主機(jī)環(huán)境創(chuàng)建的實(shí)體類型的Web服務(wù)接口訪問(wèn)的新的實(shí)體實(shí)例。如果不再需要這種實(shí)體實(shí)例,則必須使用所述容器的銷毀接口明確地刪除所述實(shí)體實(shí)例。在明確的實(shí)體實(shí)例刪除不適合的情況下(例如,因?yàn)樗囊壮霾铄e(cuò)、不可靠的網(wǎng)絡(luò)連接或僅是因?yàn)樗缓雎粤?,Web服務(wù)容器也向?qū)嵗峁┤鏞GSA中公知的軟狀態(tài)管理語(yǔ)義。因此,可要求容器以給定的生存時(shí)間來(lái)實(shí)例化實(shí)體類型。這可通過(guò)以下操作來(lái)完成規(guī)定實(shí)例必須存活到的將來(lái)的日期和時(shí)間,或者簡(jiǎn)單地聲明允許實(shí)例生存的持續(xù)期的毫秒數(shù)量。在需要實(shí)例的時(shí)間期限長(zhǎng)于當(dāng)它被實(shí)例化時(shí)規(guī)定的時(shí)間期限的情況下,Web服務(wù)容器還提供保持存活(keepAlive)操作,其允許對(duì)于專用的實(shí)體示例定義新的生存時(shí)間。這樣做的優(yōu)點(diǎn)在于容器掌管實(shí)例銷毀,服務(wù)消費(fèi)者可簡(jiǎn)單地不考慮不再使用的實(shí)例。
當(dāng)已經(jīng)創(chuàng)建實(shí)體實(shí)例并且還向其分配了通用唯一身份之后,可經(jīng)由實(shí)體實(shí)例的基礎(chǔ)實(shí)體類型的Web服務(wù)接口訪問(wèn)所述實(shí)體實(shí)例。這使得可以與實(shí)體實(shí)例相互作用,并由此檢索狀態(tài)信息,執(zhí)行作用于實(shí)體實(shí)例的內(nèi)部狀態(tài)的操作或調(diào)用其它外部服務(wù)操作。
圖7C示出實(shí)際資源、實(shí)體實(shí)例和相應(yīng)的Web服務(wù)接口的可行設(shè)置。Web服務(wù)容器4管理兩種Web服務(wù)(例如,狀態(tài)化的),其中的每一個(gè)符合一種不同的實(shí)體類型,并且通過(guò)它們各自的Web服務(wù)接口被暴露。作為Web服務(wù)接口1的基礎(chǔ)的實(shí)體類型提供資源類型RT1的面向服務(wù)的表示。定義Web服務(wù)接口2的實(shí)體類型2表示資源類型RT2。RT1表示現(xiàn)有的物理或邏輯資源類型,可使用某種特定資源協(xié)議(由虛線箭頭指示)遠(yuǎn)程管理所述資源類型的資源實(shí)例(R1a、R1b、R1c和R1d),與之相比,RT2表示純概念上的資源類型,直接在Web服務(wù)容器內(nèi)管理所述資源類型的資源實(shí)例(R2a和R2b),并使得它們持久保存。已經(jīng)由狀態(tài)化Web服務(wù)容器的廠商接口(未示出)創(chuàng)建了幾個(gè)實(shí)體實(shí)例。在實(shí)體類型1的情況下,這些實(shí)例(實(shí)體實(shí)例1a、實(shí)體實(shí)例1b和實(shí)體實(shí)例1c)充當(dāng)對(duì)于位于外部的資源的代理。在這一點(diǎn)上意識(shí)到以下內(nèi)容很重要實(shí)體實(shí)例不能必然地與表示由實(shí)體類型表示的資源類型的實(shí)例的單個(gè)的實(shí)際資源關(guān)聯(lián)。所謂的虛擬化的技術(shù)允許聚集幾個(gè)實(shí)際資源,以便滿足需求多的服務(wù)實(shí)例的需要(由包括R1a、R1b和R1c的合成資源服務(wù)于實(shí)體實(shí)例1a)或允許由同一個(gè)實(shí)際資源來(lái)處理幾個(gè)實(shí)體實(shí)例(實(shí)體實(shí)例1b和實(shí)體實(shí)例1c均作用于R1d)。關(guān)于實(shí)體類型2和它的實(shí)體實(shí)例,可以看出,由于實(shí)際資源與實(shí)體實(shí)例相配合,所以可在沒(méi)有任何特定資源協(xié)議的情況下直接管理資源狀態(tài)。在這種情況下,當(dāng)創(chuàng)建新的實(shí)體實(shí)例時(shí),實(shí)際資源的供應(yīng)僅涉及數(shù)據(jù)庫(kù)表的創(chuàng)建或類似處理,以便使得所述資源狀態(tài)持久保存。每當(dāng)表示外部邏輯或物理資源時(shí),各個(gè)資源的實(shí)際供應(yīng)就會(huì)復(fù)雜得多,并涉及諸如安裝、硬件重新引導(dǎo)或改變網(wǎng)絡(luò)設(shè)置的處理。
實(shí)體操作會(huì)以雙重方式出現(xiàn)并被描述。一方面,它可定義如傳統(tǒng)編程方式中公知的簡(jiǎn)單的程序操作。
這些簡(jiǎn)單的普通操作可通過(guò)普遍的編程構(gòu)成、操作符、參數(shù)和返回語(yǔ)句來(lái)定義。另一方面,也可對(duì)于每個(gè)實(shí)體類型規(guī)定所謂的工作流驅(qū)動(dòng)的操作。與簡(jiǎn)單操作不同,這些更加復(fù)雜的聲明性編程構(gòu)成遵循如從各種工作流方法中可知的更加綜合的語(yǔ)義。它們特別適合定義、管理和監(jiān)控任何類型的控制流,所述控制流掌管如何對(duì)一組給定的單個(gè)活動(dòng)進(jìn)行串行、并行或同步。關(guān)于這些不同種類的實(shí)體類型操作的暴露,外部Web服務(wù)消費(fèi)者無(wú)法在兩種操作類型之間進(jìn)行區(qū)分。雖然Web服務(wù)接口不能暴露它們之間的差別并使得它們的固有區(qū)別對(duì)于它的客戶而言透明,但是這些操作的實(shí)現(xiàn)很好地實(shí)現(xiàn)了所述差別。因此,語(yǔ)言處理器將以兩種不同的操作模式來(lái)執(zhí)行帶有不同語(yǔ)義的操作。
圖7D描述Web服務(wù)體系結(jié)構(gòu)的組件。
第一個(gè)并且是最突出的組件表示W(wǎng)eb服務(wù)容器4,其優(yōu)選的是狀態(tài)化Web服務(wù)容器。盡管如此,初看起來(lái),人們不會(huì)把主機(jī)環(huán)境本身看作是代表單獨(dú)角色,會(huì)這樣認(rèn)為是由于容器與多個(gè)責(zé)任關(guān)聯(lián)。具體說(shuō)來(lái),其負(fù)責(zé)向外部提供一組Web服務(wù)接口,這允許潛在描述提供者注冊(cè)或撤銷新的實(shí)體類型的描述。此外,它必須暴露使得服務(wù)消費(fèi)者2能夠以各種方式創(chuàng)建、管理、組合和銷毀實(shí)體實(shí)例的接口。為了允許服務(wù)消費(fèi)者2實(shí)例化并使用注冊(cè)的實(shí)體類型,容器必須還提供查詢接口,其允許檢索關(guān)于注冊(cè)的描述和現(xiàn)有的實(shí)體實(shí)例(例如,用于引用的唯一句柄)的信息。此外,Web服務(wù)容器4必須提供實(shí)體實(shí)例的受管理的運(yùn)行時(shí)環(huán)境,并負(fù)責(zé)它們的Web服務(wù)接口的自動(dòng)暴露,所述Web服務(wù)接口符合相應(yīng)的實(shí)體類型描述。此外,容器4負(fù)責(zé)持久地存儲(chǔ)注冊(cè)的實(shí)體類型以及實(shí)例狀態(tài)。在實(shí)體實(shí)例表示外部資源的情況下,容器額外需要確保資源的狀態(tài)在實(shí)體實(shí)例內(nèi)得到反映,并且可以被感興趣的服務(wù)消費(fèi)者訪問(wèn)。
資源提供者13資源提供者組件13的責(zé)任在于提供稍后可由實(shí)體類型描述進(jìn)行描述的任何種類的資源。由資源提供者13提供的資源需要可通過(guò)特定資源協(xié)議被訪問(wèn)。
描述提供者3描述提供者3負(fù)責(zé)通過(guò)用聲明性語(yǔ)言描述新的實(shí)體類型來(lái)創(chuàng)建所述新的實(shí)體類型。此外,描述提供者3還負(fù)責(zé)經(jīng)由它的專用注冊(cè)接口向Web服務(wù)容器注冊(cè)新規(guī)定的描述。作為所述體系結(jié)構(gòu)的結(jié)果,將實(shí)體類型的提供者從如傳統(tǒng)方法中可知的單調(diào)和易出差錯(cuò)的部署處理中解脫出來(lái)。
描述提供者不必執(zhí)行編碼、編譯、描述、打包和最終將可執(zhí)行內(nèi)容傳送到主機(jī)環(huán)境中的預(yù)定義位置,描述提供者僅需要調(diào)用對(duì)Web服務(wù)容器自身的接口的專用注冊(cè)操作,并傳遞描述作為調(diào)用參數(shù)。
服務(wù)消費(fèi)者2一旦描述提供者3注冊(cè)了新的實(shí)體類型描述,基于所述實(shí)體類型的新的實(shí)體實(shí)例就可被實(shí)例化。這種新的實(shí)體實(shí)例的創(chuàng)建是服務(wù)消費(fèi)者2的責(zé)任。為了實(shí)例化實(shí)體類型,服務(wù)消費(fèi)者2必須首先查詢Web服務(wù)容器的信息檢索接口并獲得引用期望的實(shí)體類型描述的句柄。在實(shí)例化之后,服務(wù)消費(fèi)者2獲得唯一實(shí)例標(biāo)識(shí)符并可隨后經(jīng)由它的Web服務(wù)接口與實(shí)體實(shí)例相互作用,所述Web服務(wù)接口從實(shí)體類型獲得并符合所述實(shí)體類型。使用基礎(chǔ)實(shí)體類型的Web服務(wù)接口,服務(wù)消費(fèi)者可調(diào)用任何暴露的實(shí)例操作,并因此改變實(shí)體類型的固有狀態(tài)。除非已使用容器的軟狀態(tài)管理接口創(chuàng)建實(shí)體實(shí)例,否則服務(wù)消費(fèi)者2最終也將必須刪除不再使用的現(xiàn)有實(shí)體實(shí)例。
外部消息傳送源和歸宿(sink)15由于狀態(tài)化Web服務(wù)容器不僅支持在生存于主機(jī)環(huán)境之內(nèi)的實(shí)體實(shí)例間發(fā)送和接收異步消息,而且支持在Web服務(wù)容器4和外部當(dāng)事方之間發(fā)送和接收異步消息,所以分別存在外部消息傳送源和外部消息傳送歸宿的角色。在外部消息傳送源的情況下,任意組件能夠通過(guò)容器的消息傳送協(xié)調(diào)(broker)接口創(chuàng)建新的消息傳送目的地。作為現(xiàn)有消息傳送目的地的結(jié)果,允許外部消息傳送源為了公開(kāi)向任何現(xiàn)有的消息傳送主題或隊(duì)列進(jìn)行注冊(cè)。每當(dāng)在這種注冊(cè)的消息傳送源的一部分上發(fā)生特定事件時(shí),將經(jīng)由容器的消息傳送協(xié)調(diào)接口向各個(gè)目的地公開(kāi)指示發(fā)生的事件的新的消息。關(guān)于外部消息傳送歸宿角色,允許外部系統(tǒng)組件創(chuàng)建新的目的地,或預(yù)定感興趣的任何現(xiàn)有目的地。這將導(dǎo)致每當(dāng)向相應(yīng)的消息傳送目的地公開(kāi)消息時(shí),外部消息傳送歸宿將得到通知。
外部服務(wù)提供者16正如狀態(tài)化Web服務(wù)主機(jī)所暗示的,Web服務(wù)容器4遵循面向服務(wù)的體系結(jié)構(gòu)的要求提供其服務(wù)。因?yàn)樯嬗谥鳈C(jī)環(huán)境內(nèi)的實(shí)體實(shí)例也可如同生存于SOA內(nèi)的服務(wù)那樣作用,所以它們可包括在實(shí)體本身內(nèi)不能實(shí)現(xiàn)但是可由另一服務(wù)提供的功能性。這種封裝的功能性可由生存于相同容器中的另一實(shí)體實(shí)例提供,或者可由實(shí)現(xiàn)期望的功能的外部服務(wù)提供者提供。這兩種方法中的前者僅關(guān)注由生存于相同容器內(nèi)的實(shí)體實(shí)例提供的功能性,并且可使用先前建立的關(guān)系進(jìn)行尋址,后者包括外部服務(wù)的調(diào)用??赏ㄟ^(guò)實(shí)體實(shí)例的簡(jiǎn)單操作以及工作流驅(qū)動(dòng)操作兩者來(lái)發(fā)起由外部服務(wù)提供者提供的這些服務(wù)。
Web服務(wù)容器組件4在已經(jīng)描述涉及可動(dòng)態(tài)部署的狀態(tài)化Web服務(wù)容器的一般體系結(jié)構(gòu)的各個(gè)組件之后,現(xiàn)在,這一部分將更近地關(guān)注負(fù)責(zé)實(shí)現(xiàn)實(shí)體的主機(jī)環(huán)境的性能的各個(gè)組件。順便說(shuō)明,很重要的一點(diǎn)在于注意以下的將狀態(tài)化Web服務(wù)容器分解為單個(gè)的組件必須被看作既不是規(guī)定性的也不是特定的實(shí)現(xiàn)。這樣,如下所述的組件表示在應(yīng)用的體系結(jié)構(gòu)中如何反映容器的責(zé)任的一種可行方式。這并不意味著任何所述部分(除了容器的接口)需要由狀態(tài)化Web服務(wù)容器的實(shí)際實(shí)現(xiàn)中的具體對(duì)應(yīng)部分來(lái)表示,而僅是用于更詳細(xì)地說(shuō)明主機(jī)環(huán)境的責(zé)任,以使得這些解釋更加確實(shí)。
圖7E示出所述各個(gè)部分以及它們之間的關(guān)系的示意性示例。
容器接口20(20a-20d)如先前所述,通過(guò)良好定義的Web服務(wù)接口20以面向服務(wù)的方式暴露容器的功能性。將所述接口組成多個(gè)端口類型(20a-20d),其向服務(wù)消費(fèi)者提供具體操作的集合。在圖7E中示出容器的Web服務(wù)接口的端口類型和各個(gè)操作的概述。應(yīng)注意到,在這里,僅是簡(jiǎn)要描述了所述操作。將在對(duì)圖7F至圖7L的描述中給出如何與這些操作相互作用,將傳遞哪些參數(shù)和期待什么返回值的深入說(shuō)明。
當(dāng)然,由狀態(tài)化Web服務(wù)容器的端口類型暴露的功能性必須通過(guò)所提供的服務(wù)的內(nèi)部實(shí)現(xiàn)來(lái)實(shí)現(xiàn)。在圖7E中,由各個(gè)管理器組件示意性地表示了這一點(diǎn)。它們表示體系結(jié)構(gòu)內(nèi)的部分,這些部分等同地負(fù)責(zé)與持久保存層(即,數(shù)據(jù)存儲(chǔ)器)以及服務(wù)運(yùn)行時(shí)環(huán)境相互作用。
服務(wù)接口21(21a/b)任意實(shí)體類型的Web服務(wù)接口21很大程度上依賴于基礎(chǔ)實(shí)體類型描述。如先前所示,實(shí)體類型描述允許定義是否將具體操作暴露為Web服務(wù)操作。只要存在至少一個(gè)屬于給定實(shí)體類型的實(shí)體實(shí)例,就可通過(guò)實(shí)體類型的Web服務(wù)接口21訪問(wèn)聲明將暴露的所有操作的集合。然而,除了聲明的實(shí)體實(shí)例操作之外,還將缺省地暴露另兩個(gè)實(shí)例操作。一方面,將暴露獲取實(shí)體類型(getEntityType)操作,其將返回查詢的實(shí)體實(shí)例的基礎(chǔ)實(shí)體類型;另一方面,將暴露獲取關(guān)系(getRelationships)操作,其將通知服務(wù)消費(fèi)者關(guān)于相應(yīng)的實(shí)體實(shí)例參與的所有關(guān)系。
可在圖7A中找到實(shí)體類型描述以及它的相應(yīng)外部Web服務(wù)接口的具體示例。
運(yùn)行時(shí)環(huán)境60在已注冊(cè)并實(shí)例化新的實(shí)體類型描述之后,實(shí)體實(shí)例將生存于Web服務(wù)容器的服務(wù)運(yùn)行時(shí)環(huán)境60。實(shí)體實(shí)例存在于運(yùn)行時(shí)環(huán)境內(nèi),并且直到它被刪除,可通過(guò)與基礎(chǔ)實(shí)體類型相應(yīng)的Web服務(wù)接口21使用所述實(shí)體實(shí)例。因?yàn)閷?shí)體實(shí)例以依賴內(nèi)容的角色在包含關(guān)系中起作用,或者因?yàn)閷?shí)體實(shí)例以給定的生存時(shí)間進(jìn)行實(shí)例化,而所述時(shí)間已經(jīng)過(guò)去,所以可通過(guò)調(diào)用對(duì)容器的Web服務(wù)接口的刪除實(shí)例(deleteInstance)操作的外部服務(wù)消費(fèi)者、通過(guò)使用專用操作符的實(shí)體實(shí)例、通過(guò)運(yùn)行時(shí)環(huán)境60本身來(lái)啟動(dòng)實(shí)體實(shí)例的刪除。因?yàn)閷?shí)體實(shí)例潛在是狀態(tài)化的,所以運(yùn)行時(shí)環(huán)境60也負(fù)責(zé)確定與實(shí)體實(shí)例或它們之間的關(guān)系有關(guān)的所有數(shù)據(jù)自動(dòng)成為對(duì)于各個(gè)數(shù)據(jù)存儲(chǔ)器而言是持久保存的。此外,運(yùn)行時(shí)環(huán)境60緊密地與事務(wù)管理器相互操作,以便保證在必要的情況下,調(diào)用的操作在正確的事務(wù)上下文中被執(zhí)行。此外,運(yùn)行時(shí)環(huán)境60負(fù)責(zé)將新的實(shí)體實(shí)例和關(guān)系與通用的唯一引用關(guān)聯(lián),并且負(fù)責(zé)在創(chuàng)建所述實(shí)例之后立即調(diào)用對(duì)實(shí)體實(shí)例的正確的回調(diào)(call-back)操作(其被聲明并映射到on-init元素)。與此類似,運(yùn)行時(shí)環(huán)境60也確保發(fā)起各個(gè)如在實(shí)體類型描述中聲明的on-delete回調(diào)操作。同樣,聲明和啟動(dòng)的定時(shí)器的超時(shí)也將導(dǎo)致正確的實(shí)體實(shí)例操作的調(diào)用。此外,運(yùn)行時(shí)環(huán)境60與容器的消息傳送子系統(tǒng)相互操作,并由此負(fù)責(zé)將異步通知傳送到已經(jīng)預(yù)訂各個(gè)目的地的所有消耗消息的實(shí)體實(shí)例,并負(fù)責(zé)調(diào)用對(duì)它們的正確操作。
語(yǔ)言處理器25和工作流引擎26由于在任何聲明性語(yǔ)言中規(guī)定了通過(guò)注冊(cè)操作提交到Web服務(wù)容器的聲明性服務(wù)描述,所以容器需要具有語(yǔ)言處理單元,其能夠解釋提交的實(shí)體類型描述。首先,語(yǔ)言處理器負(fù)責(zé)分析、檢驗(yàn)并驗(yàn)證提交的描述。在示例之后,語(yǔ)言處理器25執(zhí)行并管理對(duì)各個(gè)實(shí)體實(shí)例的操作調(diào)用。這種實(shí)體實(shí)例操作的調(diào)用必須在簡(jiǎn)單操作模式或工組流驅(qū)動(dòng)的操作模式下執(zhí)行。在工作流驅(qū)動(dòng)的操作的情況下,將由工作流引擎26執(zhí)行所述操作,所述工作引擎是語(yǔ)言處理器25的子系統(tǒng)。
工作流引擎26保證與事務(wù)管理器的無(wú)縫互操作,以處理長(zhǎng)時(shí)間運(yùn)行的事務(wù),并且通過(guò)允許和管理補(bǔ)償活動(dòng),使得能夠消除先前終止的子任務(wù)的效果。
事務(wù)管理器27事務(wù)管理器27負(fù)責(zé)處理和管理協(xié)調(diào)以及事務(wù)上下文的創(chuàng)建、執(zhí)行和銷毀。這涉及當(dāng)調(diào)用事務(wù)操作時(shí)新的事務(wù)上下文的創(chuàng)建,以及運(yùn)行事務(wù)和現(xiàn)有的上下文的管理。在簡(jiǎn)單操作的情況下,總是認(rèn)為在ACID特性下執(zhí)行事務(wù)。
然而,在工作流驅(qū)動(dòng)的操作的情況下,假設(shè)使用如在Web服務(wù)商業(yè)事務(wù)構(gòu)架26中定義的狀態(tài)模型來(lái)執(zhí)行事務(wù)。因?yàn)樵谕ǔ.?dāng)各個(gè)Web服務(wù)相互作用時(shí)發(fā)生的長(zhǎng)時(shí)間運(yùn)行的事務(wù)中,分布式事務(wù)的原子性和隔離不能有效地滿足,所以這一模型弱化了嚴(yán)格的ACID要求,而僅要求如在工作流驅(qū)動(dòng)的操作的情況下使用的長(zhǎng)時(shí)間運(yùn)行的事務(wù)必須保證一致性和持續(xù)性。此外,這些事務(wù)考慮到工作流可定義補(bǔ)償活動(dòng),在決定最終結(jié)果的總的工作流的某些其它任務(wù)失敗的情況下,則其可反轉(zhuǎn)先前成功終止的活動(dòng)的效果。
訪問(wèn)控制器28訪問(wèn)控制器負(fù)責(zé)保證只有在訪問(wèn)控制列表中規(guī)定了其實(shí)體類型的實(shí)體實(shí)例被實(shí)際上授予對(duì)于對(duì)目標(biāo)實(shí)體實(shí)例的各個(gè)操作的訪問(wèn)。除此之外,訪問(wèn)控制器還負(fù)責(zé)管理實(shí)體類型的組,其共同訪問(wèn)對(duì)特定實(shí)體類型的給定實(shí)例的一組預(yù)定操作。
消息傳送子系統(tǒng)29為了能夠?qū)崿F(xiàn)實(shí)體實(shí)例和外部消息傳送客戶間的容器協(xié)調(diào)的異步通知,Web服務(wù)容器還提供作為它的相應(yīng)消息傳送子系統(tǒng)29的一部分的消息協(xié)調(diào)器(未示出),所述消息傳送子系統(tǒng)29以傳統(tǒng)消息傳送子系統(tǒng)的特征為基礎(chǔ),并經(jīng)由消息傳送端口類型而暴露它的外部協(xié)調(diào)器接口。通過(guò)其內(nèi)部消息協(xié)調(diào)器,消息傳送子系統(tǒng)29充當(dāng)外部和內(nèi)部消息傳送客戶(消息提供者和消費(fèi)者等)之間的橋,并保證當(dāng)與它有關(guān)的消息被公開(kāi)時(shí),如果存在消息傳送消費(fèi)者,則持久地存儲(chǔ)目的地、預(yù)訂、注冊(cè)以及公開(kāi)的消息。為了保證與新近的Web服務(wù)標(biāo)準(zhǔn)兼容,可擴(kuò)展消息協(xié)調(diào)器的Web服務(wù)接口,以符合最近公布的Web服務(wù)通知規(guī)范17。然而,這帶來(lái)的缺點(diǎn)在于類型隊(duì)列的消息傳送目的地不再被支持。
數(shù)據(jù)存儲(chǔ)器30為了尋址Web服務(wù)容器的狀態(tài)化屬性,容器必須提供一組數(shù)據(jù)存儲(chǔ)器30,其負(fù)責(zé)使得所有各種信息能夠持久保存。以下給出各個(gè)數(shù)據(jù)存儲(chǔ)器的簡(jiǎn)要描述實(shí)體類型數(shù)據(jù)存儲(chǔ)器30a實(shí)體類型數(shù)據(jù)存儲(chǔ)器負(fù)責(zé)保留所有先前注冊(cè)的實(shí)體類型描述,直到它們被撤銷或修改。必須在實(shí)體類型數(shù)據(jù)存儲(chǔ)器30a以及與各個(gè)實(shí)體類型相應(yīng)的實(shí)體實(shí)例之內(nèi)均反映出對(duì)實(shí)體類型的修改。如果修改了帶有生存實(shí)體實(shí)例的實(shí)體類型,則必須也在實(shí)體實(shí)例存儲(chǔ)器或基礎(chǔ)具體資源中反映出所述改變(在實(shí)際資源被建模的情況下)。將已經(jīng)向容器成功注冊(cè)并在實(shí)體類型存儲(chǔ)器內(nèi)持久保存的實(shí)體類型處理成可用于隨后的實(shí)例化。
實(shí)體實(shí)例存儲(chǔ)器30b如果從先前注冊(cè)的實(shí)體類型創(chuàng)建了新的實(shí)體實(shí)例,則實(shí)體實(shí)例數(shù)據(jù)存儲(chǔ)器30b負(fù)責(zé)保存與這一單獨(dú)的實(shí)體實(shí)例有關(guān)的所有狀態(tài)數(shù)據(jù)。
目的地?cái)?shù)據(jù)存儲(chǔ)器30c目的地?cái)?shù)據(jù)存儲(chǔ)30c包括與異步容器協(xié)調(diào)的消息傳送有關(guān)的所有信息。其包括消息傳送目的地(即,主題和隊(duì)列)、對(duì)現(xiàn)有的消息傳送目的地的預(yù)訂以及注冊(cè)。在預(yù)訂的消息消費(fèi)者暫時(shí)不在的情況下,目的地存儲(chǔ)器還負(fù)責(zé)將消息存儲(chǔ)到這種消息傳送歸宿,以便允許消息協(xié)調(diào)器在相應(yīng)的客戶再次出現(xiàn)之后發(fā)送所錯(cuò)過(guò)的消息。
協(xié)議注冊(cè)處30d由于Web服務(wù)容器關(guān)于特定資源協(xié)議必須盡可能地靈活和可擴(kuò)展,因此所述體系結(jié)構(gòu)提供向主機(jī)環(huán)境動(dòng)態(tài)地注冊(cè)對(duì)新的特定資源協(xié)議的支持的可能性。這使得語(yǔ)言處理器也可處理先前不知道的新的協(xié)議。為了存儲(chǔ)新注冊(cè)的協(xié)議,容器提供協(xié)議注冊(cè)處,其連同專用協(xié)議注冊(cè)接口操作2一起使用。
圖7F示出注冊(cè)實(shí)體類型描述的相互作用。
為了注冊(cè)新的實(shí)體類型描述,首先,描述提供者規(guī)定新的實(shí)體類型描述,其描述他選擇的任何種類的資源的行為(即,符合某種物理或邏輯資源)。通過(guò)從頭指定新的描述,可自動(dòng)(通過(guò)使用來(lái)自模板或部分存儲(chǔ)庫(kù)的模板)或手動(dòng)完成新的實(shí)體類型的描述。在聲明新的實(shí)體類型之后,描述提供者可調(diào)用Web服務(wù)容器的注冊(cè)端口類型的注冊(cè)實(shí)體類型(registerEntityType)操作,由此要求主機(jī)環(huán)境注冊(cè)發(fā)送的實(shí)體類型描述。接著,容器分析、驗(yàn)證并向?qū)嶓w類型存儲(chǔ)器注冊(cè)表示狀態(tài)化資源的新的類型的描述。在成功注冊(cè)之后,提供新的實(shí)體類型以進(jìn)行實(shí)例化。如果描述還包括新的目的地的聲明,則將它們存儲(chǔ)到容器的協(xié)調(diào)器的目的地存儲(chǔ)器。作為成功注冊(cè)的結(jié)果,Web服務(wù)容器將通用的唯一描述句柄(引用注冊(cè)的實(shí)體類型)返回到描述提供者。在失敗的情況下,容器就將返回錯(cuò)誤碼。
圖7G示出用于修改現(xiàn)有的實(shí)體類型的相互作用。
如圖7E所示,Web服務(wù)容器的注冊(cè)端口類型還允許在運(yùn)行時(shí)期間修改現(xiàn)有的實(shí)體類型。為了擴(kuò)展或最小化實(shí)體類型的接口,描述提供者可選擇調(diào)用修改實(shí)體類型(modifyEntityType)操作,傳遞指向各個(gè)實(shí)體類型描述的描述句柄和修改的實(shí)體類型描述作為參數(shù)。結(jié)果,Web服務(wù)容器修改現(xiàn)有的實(shí)體類型和相應(yīng)的實(shí)體實(shí)例以適宜于提交的修改,并將所述改變存儲(chǔ)到有關(guān)的數(shù)據(jù)存儲(chǔ)器。結(jié)果,容器將返回指示修改是否已成功采用的狀態(tài)碼。
圖7H示出用于現(xiàn)有的實(shí)體類型的撤銷的相互作用。
如果不再需要一個(gè)現(xiàn)有的實(shí)體類型(即,沒(méi)有留有屬于所述實(shí)體類型的實(shí)體實(shí)例),則描述提供者可選擇調(diào)用撤銷實(shí)體類型(deregieterEntityType)操作,并傳遞指向?qū)⒊蜂N的期望的實(shí)體類型描述的描述句柄。Web服務(wù)容器隨后將從實(shí)體類型存儲(chǔ)器撤銷所述描述。接著,描述提供者將接收指示撤銷操作是否成功的狀態(tài)碼。
實(shí)例化和銷毀在向容器注冊(cè)實(shí)體類型之后,可實(shí)例化并使用它們??山?jīng)由Web服務(wù)容器的實(shí)例化端口類型來(lái)完成新的實(shí)例的實(shí)例化和修改。將在下面的部分描述屬于所述端口類型的操作。
圖7I示出用于實(shí)例化實(shí)體類型的相互作用。
為了實(shí)例化注冊(cè)的實(shí)體類型,服務(wù)消費(fèi)者可調(diào)用Web服務(wù)容器的實(shí)例化實(shí)體類型(instantiateEntityType)操作之一,并傳遞引用將被實(shí)例化的實(shí)體類型的描述句柄作為參數(shù)。如果以給定的生存時(shí)間創(chuàng)建實(shí)例,則Web服務(wù)容器還應(yīng)負(fù)責(zé)在指出的時(shí)間過(guò)去之后銷毀實(shí)體實(shí)例。為了上述原因和管理每個(gè)單獨(dú)的實(shí)例的生存時(shí)間,生存時(shí)間數(shù)據(jù)必須連同實(shí)體實(shí)例的初始化數(shù)據(jù)(如在基礎(chǔ)實(shí)體類型描述中聲明的)被持久保存。如果實(shí)例化處理成功,則Web服務(wù)容器將所述新的實(shí)體實(shí)例與將被返回到服務(wù)消費(fèi)者的通用的唯一實(shí)例句柄關(guān)聯(lián)。如果實(shí)例化失敗,則將通過(guò)將錯(cuò)誤碼返回到服務(wù)消費(fèi)者來(lái)指示這一情況。在以給定的生存時(shí)間創(chuàng)建新的實(shí)體實(shí)例,而需要相應(yīng)實(shí)例的時(shí)間長(zhǎng)于先前設(shè)置的時(shí)間的情況下,服務(wù)消費(fèi)者可選擇(重復(fù)地)調(diào)用保持存活操作,并指示其生存時(shí)間將被延長(zhǎng)的目標(biāo)實(shí)例??蛇x地,服務(wù)消費(fèi)者還可規(guī)定新的生存時(shí)間,在所述生存時(shí)間之后將去除所述實(shí)體。
圖7J示出用于刪除實(shí)體實(shí)例的相互作用。
如果在某個(gè)時(shí)間點(diǎn),不再需要一個(gè)現(xiàn)有的實(shí)體實(shí)例,則可使用實(shí)例化端口類型的刪除實(shí)體類型操作明確地將其刪除。當(dāng)由服務(wù)消費(fèi)者調(diào)用所述操作時(shí),必須傳遞引用將被刪除的實(shí)體實(shí)例的實(shí)例句柄作為參數(shù)。如果服務(wù)消費(fèi)者被授權(quán)執(zhí)行所述操作,則Web服務(wù)容器將調(diào)用實(shí)體實(shí)例的on-delete回調(diào)操作,并隨后從主機(jī)環(huán)境的實(shí)體實(shí)例存儲(chǔ)器去除相應(yīng)實(shí)例。結(jié)果,服務(wù)消費(fèi)者將接收指示刪除操作是否成功的狀態(tài)碼。
服務(wù)使用和相互作用一旦注冊(cè)的實(shí)體類型已被實(shí)例化過(guò)第一次,并且只要存在至少一個(gè)與給定的實(shí)體類型相應(yīng)的實(shí)體實(shí)例,就可通過(guò)各個(gè)實(shí)體實(shí)例的基礎(chǔ)實(shí)體類型的Web服務(wù)接口訪問(wèn)所述各個(gè)實(shí)體實(shí)例。在主機(jī)環(huán)境內(nèi)的服務(wù)特定接口的單獨(dú)的端點(diǎn)上可訪問(wèn)所述服務(wù)特定接口。除了服務(wù)特定操作之外,每個(gè)單獨(dú)的Web服務(wù)接口提供至少兩個(gè)另外的操作。第一、返回給定的實(shí)體實(shí)例的實(shí)體類型的操作;第二、返回相應(yīng)實(shí)體實(shí)例參與的所有關(guān)系(隱含的以及明確的)的操作。
圖7K示出簡(jiǎn)單實(shí)例操作的調(diào)用。
為了說(shuō)明專用實(shí)體實(shí)例如何與服務(wù)消費(fèi)者相互作用,這一部分提供服務(wù)消費(fèi)者調(diào)用對(duì)實(shí)體實(shí)例的簡(jiǎn)單操作的示例。在服務(wù)消費(fèi)者可與給定的實(shí)例相互作用之前,首先,消費(fèi)者必須獲得引用期望的實(shí)體實(shí)例的實(shí)例句柄和在其中可訪問(wèn)基礎(chǔ)實(shí)體類型的Web服務(wù)接口的端點(diǎn)引用。如將在下一部分所述的,為了這一目的,容器提供專門(mén)的自省端口類型,其允許感興趣的服務(wù)消費(fèi)者收集需要的信息。一旦服務(wù)消費(fèi)者獲得了需要的信息,它就可自由地通過(guò)相應(yīng)Web服務(wù)接口訪問(wèn)任何一個(gè)暴露的實(shí)體實(shí)例的操作。通過(guò)尋址Web服務(wù)端點(diǎn)和發(fā)起期望的操作并提供實(shí)例句柄以及另外的必需參數(shù),可完成上述處理。結(jié)果,容器管理的Web服務(wù)端點(diǎn)將截取調(diào)用,并將操作調(diào)用路由到期望的實(shí)體實(shí)例。作為調(diào)用的操作的結(jié)果,相應(yīng)實(shí)體實(shí)例可改變它的內(nèi)部狀態(tài),并將調(diào)用的結(jié)果返回到實(shí)體消費(fèi)者。
圖7L示出工作流驅(qū)動(dòng)的操作調(diào)用。與發(fā)起簡(jiǎn)單實(shí)例操作類似,服務(wù)消費(fèi)者也可選擇調(diào)用在給定的實(shí)體實(shí)例上定義的工作流驅(qū)動(dòng)的操作。如同在簡(jiǎn)單操作的情況下一樣,當(dāng)調(diào)用所述操作時(shí),服務(wù)消費(fèi)者也必須提供實(shí)例句柄以及可能的參數(shù)。當(dāng)最終對(duì)目標(biāo)實(shí)體實(shí)例執(zhí)行操作時(shí),所述操作執(zhí)行如在相應(yīng)實(shí)體類型描述中規(guī)定的活動(dòng)。這也可包括在長(zhǎng)時(shí)間運(yùn)行的事務(wù)上下文下執(zhí)行的外部工作流。如同簡(jiǎn)單操作一樣,工作流驅(qū)動(dòng)的操作最終也可將結(jié)果返回到服務(wù)消費(fèi)者。不過(guò)在大多數(shù)情況下,由于使用異步通知來(lái)通知服務(wù)消費(fèi)者關(guān)于結(jié)果的信息不需要阻止服務(wù)消費(fèi)者的一部分,所以這種處理更加切合實(shí)際。
可以按硬件、軟件或者硬件及軟件的組合來(lái)實(shí)現(xiàn)本發(fā)明??梢园丛谝粋€(gè)計(jì)算機(jī)系統(tǒng)中的集中式方式或不同的部件遍布在幾個(gè)互相連接的計(jì)算機(jī)系統(tǒng)中的分布式方式來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明的工具。適于實(shí)現(xiàn)這里描述的方法的任何種類的計(jì)算機(jī)系統(tǒng)或其它裝置都是適合的。典型的硬件和軟件的組合可以是帶有計(jì)算機(jī)程序的通用計(jì)算機(jī)系統(tǒng),當(dāng)加載并執(zhí)行所述計(jì)算機(jī)程序時(shí),其控制計(jì)算機(jī)系統(tǒng),從而可實(shí)現(xiàn)這里描述的方法。
本發(fā)明還可被嵌入計(jì)算機(jī)程序產(chǎn)品中,其包括能夠?qū)崿F(xiàn)這里描述的方法的所有特點(diǎn),當(dāng)將所述產(chǎn)品加載到計(jì)算機(jī)系統(tǒng)中時(shí),其能夠?qū)崿F(xiàn)這些方法。
此上下文中的計(jì)算機(jī)程序裝置或計(jì)算機(jī)程序表示以任何語(yǔ)言、代碼或符號(hào)的一組指令的表示,所述指令是用來(lái)使具有信息處理能力的系統(tǒng)直接執(zhí)行特定功能,或在以下操作中的任一個(gè)或兩者之后執(zhí)行特定功能a)轉(zhuǎn)換為另一語(yǔ)言、代碼或符號(hào);以不同的材料形式來(lái)再現(xiàn)定義服務(wù)的動(dòng)態(tài)部署支持動(dòng)態(tài)部署的系統(tǒng)提供這樣一種機(jī)制其獲得由開(kāi)發(fā)者或應(yīng)用提供的源代碼,并動(dòng)態(tài)地將其安裝在目標(biāo)服務(wù)容器(即,主機(jī)環(huán)境)中,而不需要進(jìn)一步的用戶交互,也不需要重新啟動(dòng)應(yīng)用服務(wù)器。因此,應(yīng)用對(duì)它的用戶或服務(wù)消費(fèi)者可用。
實(shí)體類型實(shí)體類型通過(guò)聲明性描述語(yǔ)言來(lái)描述,并提供任何可以構(gòu)想的資源類型的面向服務(wù)的表示。當(dāng)以抽象方式完成資源的面向服務(wù)的表示時(shí),可將實(shí)體類型映射到面向服務(wù)的體系結(jié)構(gòu)(即,狀態(tài)化Web服務(wù))的任何可以構(gòu)想的實(shí)現(xiàn)。
實(shí)體實(shí)例實(shí)體實(shí)例表示抽象的面向服務(wù)的實(shí)例,并且可與給定的具體資源實(shí)例關(guān)聯(lián)。任何實(shí)體實(shí)例具有基礎(chǔ)實(shí)體類型,具有身份(由主機(jī)環(huán)境分配給實(shí)例),遵循生存周期,并且將具體值分配給由實(shí)體類型定義的屬性。
資源類型任何實(shí)際的資源實(shí)例(物理的或邏輯的)具有基礎(chǔ)資源類型,其捕獲相應(yīng)資源的重要特性,即,它提供的功能性(例如,文檔的文本處理、復(fù)制、剪切、粘貼),它包括的屬性(即,處理的文檔的名稱,當(dāng)文檔已經(jīng)存儲(chǔ)之后,剪貼板的內(nèi)容),以及它允許這些屬性的可能狀態(tài)。
資源實(shí)例必須將具體的資源實(shí)例看作符合資源類型的實(shí)例。其具有良好定義的身份并保存狀態(tài)信息,即,其為資源的每一個(gè)屬性定義一個(gè)值。
服務(wù)容器服務(wù)容器(即,主機(jī)環(huán)境)優(yōu)選的是狀態(tài)化服務(wù)容器,其提供受管理的運(yùn)行時(shí)環(huán)境并提供透明的事務(wù)處理、持久保存、信息接發(fā)子系統(tǒng)和工作流引擎,所述工作流引擎控制服務(wù)實(shí)例的工作流驅(qū)動(dòng)的操作的執(zhí)行。這種服務(wù)容器可在例如普通PC、專門(mén)服務(wù)器等任何種類的數(shù)據(jù)處理單元上運(yùn)行,所述處理單元具有處理器、工作存儲(chǔ)器、輔助存儲(chǔ)器并在理想狀況下具有網(wǎng)絡(luò)(有線或無(wú)線)接入。
Web服務(wù)Web服務(wù)是被設(shè)計(jì)用來(lái)支持網(wǎng)絡(luò)上的可互相操作的機(jī)器到機(jī)器的相互作用的軟件系統(tǒng)。其具有以機(jī)器可處理的格式(例如,使用WSDL)描述的接口,并允許其它系統(tǒng)以預(yù)定的方式(例如,使用所謂SOAP消息)與它相互作用。
狀態(tài)化Web服務(wù)狀態(tài)化Web服務(wù)包括表示服務(wù)的類型(通過(guò)WSDL描述)的接口,以及零到多個(gè)服務(wù)實(shí)例,其可通過(guò)接口進(jìn)行訪問(wèn),具有身份并遵循良好定義的生存周期。服務(wù)實(shí)例保存內(nèi)部狀態(tài),并表示有限的狀態(tài)自動(dòng)操作,因?yàn)榉?wù)操作的結(jié)果會(huì)依賴于服務(wù)實(shí)例的內(nèi)部狀態(tài)。與網(wǎng)格服務(wù)相似,狀態(tài)化Web服務(wù)定義用于發(fā)現(xiàn)、動(dòng)態(tài)服務(wù)創(chuàng)建、生存時(shí)間管理、通知和一般管理的接口。
面向服務(wù)的體系結(jié)構(gòu)面向服務(wù)的體系結(jié)構(gòu)包括至少一個(gè)服務(wù)容器、服務(wù)消費(fèi)者、資源提供者和描述提供者。所有這些參與者經(jīng)由網(wǎng)絡(luò)連接,并且在所述體系結(jié)構(gòu)內(nèi)通信或交換信息。
權(quán)利要求
1.一種在作為面向服務(wù)的體系結(jié)構(gòu)的一部分的服務(wù)容器中部署服務(wù)的方法,其中,所述服務(wù)容器的特征在于提供自身的注冊(cè)服務(wù)(40),以便將運(yùn)行時(shí)期間的服務(wù)部署到所述服務(wù)容器中,其中,所述注冊(cè)服務(wù)(40)至少包括以下步驟從描述提供者(3)接收服務(wù)描述,其中,所述服務(wù)描述表示資源的服務(wù),并且以聲明性描述語(yǔ)言來(lái)建模,如果所述服務(wù)描述已成功注冊(cè),則在所述服務(wù)容器(4)自動(dòng)創(chuàng)建并提供用于所述服務(wù)描述的服務(wù)接口(43),其中,所述服務(wù)接口允許訪問(wèn)由所述服務(wù)描述表示的服務(wù)。
2.如權(quán)利要求1所述的方法,其中,所述注冊(cè)服務(wù)(40)還包括步驟在暴露新的服務(wù)接口之前,分析并驗(yàn)證所述服務(wù)描述。
3.如權(quán)利要求1所述的方法,其中,所述注冊(cè)服務(wù)(40)還包括步驟如果所述服務(wù)描述已成功注冊(cè),則將引用所述服務(wù)描述的唯一描述句柄(ID)返回到描述提供者。
4.如權(quán)利要求1所述的方法,其中,所述服務(wù)容器(4)的特征還在于提供用于檢索關(guān)于注冊(cè)的服務(wù)的信息的檢索服務(wù)(41),其中,所述檢索服務(wù)包括以下步驟響應(yīng)于服務(wù)消費(fèi)者(2)檢索請(qǐng)求,提供引用已注冊(cè)的服務(wù)的描述句柄的列表;響應(yīng)于包括描述句柄的服務(wù)消費(fèi)者請(qǐng)求,將服務(wù)描述提供給所述服務(wù)消費(fèi)者。
5.如權(quán)利要求4所述的方法,其中,所述檢索服務(wù)還包括以下步驟響應(yīng)于消費(fèi)者請(qǐng)求,將服務(wù)接口信息提供給所述服務(wù)消費(fèi)者。
6.如權(quán)利要求1所述的方法,其中,所述服務(wù)容器的特征還在于提供用于啟動(dòng)注冊(cè)的服務(wù)的實(shí)例化服務(wù)(42),其中,所述實(shí)例化服務(wù)包括以下步驟響應(yīng)于至少包含引用注冊(cè)的服務(wù)的描述句柄的服務(wù)消費(fèi)者的實(shí)例化請(qǐng)求,創(chuàng)建新的服務(wù)實(shí)例并注冊(cè)所述新的實(shí)例;如果所述實(shí)例化已成功,則將唯一實(shí)例句柄提供給服務(wù)消費(fèi)者。
7.如權(quán)利要求6所述的方法,還包括以下步驟從所述服務(wù)消費(fèi)者接收實(shí)例句柄;將描述句柄提供給引用所述服務(wù)實(shí)例的服務(wù)的所述服務(wù)消費(fèi)者;響應(yīng)于包含所述描述句柄的服務(wù)消費(fèi)者請(qǐng)求,將服務(wù)接口提供給所述服務(wù)消費(fèi)者,在所述服務(wù)接口截取由所述服務(wù)消費(fèi)者調(diào)用的操作,并將它路由到正確的服務(wù)實(shí)例;由容器運(yùn)行時(shí)環(huán)境根據(jù)服務(wù)描述截取調(diào)用的操作。
8.如權(quán)利要求1所述的方法,其中,所述服務(wù)容器的特征還在于提供允許服務(wù)消費(fèi)者刪除不再使用的實(shí)例的實(shí)例刪除服務(wù)。
9.如權(quán)利要求1所述的方法,其中,所述服務(wù)容器的特征還在于提供用于撤銷不再使用的服務(wù)描述的撤銷服務(wù)描述服務(wù)。
10.如權(quán)利要求1所述的方法,其中,所述服務(wù)容器是狀態(tài)化Web服務(wù)容器。
11.如權(quán)利要求1所述的方法,其中,通過(guò)使用實(shí)體類型描述來(lái)建模所述服務(wù)描述。
12.一種在面向服務(wù)的環(huán)境中的服務(wù)容器,包括注冊(cè)服務(wù)接口(40),其允許描述提供者(3)注冊(cè)服務(wù)描述,其中,所述服務(wù)描述以聲明性描述語(yǔ)言表示資源的服務(wù);以及服務(wù)接口(43),其被分配給所述服務(wù)描述并且當(dāng)經(jīng)由所述注冊(cè)服務(wù)接口(40)成功地注冊(cè)所述分配的服務(wù)描述時(shí)自動(dòng)地創(chuàng)建。
13.如權(quán)利要求12所述的服務(wù)容器,還包括用于在自動(dòng)創(chuàng)建服務(wù)接口(43)并將其分配給服務(wù)描述之前,分析并驗(yàn)證所述服務(wù)描述的組件。
14.根據(jù)權(quán)利要求13所述的服務(wù)容器,還包括信息檢索服務(wù)接口(41),其用于查詢所述服務(wù)容器關(guān)于部署的服務(wù)或服務(wù)實(shí)例;以及實(shí)例化服務(wù)接口(42),其允許服務(wù)消費(fèi)者實(shí)例化由所述服務(wù)容器(4)提供的服務(wù)描述。
15.根據(jù)權(quán)利要求13所述的服務(wù)容器,還包括服務(wù)描述數(shù)據(jù)存儲(chǔ)器(22),包含已經(jīng)向所述服務(wù)容器注冊(cè)的服務(wù)描述;服務(wù)實(shí)例數(shù)據(jù)存儲(chǔ)器(23),包含屬于所述服務(wù)描述數(shù)據(jù)存儲(chǔ)器中的服務(wù)的所有實(shí)例。
16.根據(jù)權(quán)利要求13所述的服務(wù)容器,還包括撤銷描述服務(wù)接口,其用于撤銷不再使用的服務(wù)描述;刪除服務(wù)實(shí)例接口,允許服務(wù)消費(fèi)者刪除不再使用的實(shí)例。
17.如權(quán)利要求13所述的服務(wù)容器,還包括工作流引擎,其管理由所述服務(wù)實(shí)例提供的工作流驅(qū)動(dòng)的操作的執(zhí)行;協(xié)議專用接口,用于在所述服務(wù)容器和建模的資源之間通信。
18.如權(quán)利要求13所述的服務(wù)容器,其中,所述面向服務(wù)的環(huán)境還包括資源提供者(13)、服務(wù)消費(fèi)者(2)、描述提供者(3),其中,所述面向服務(wù)的環(huán)境使用Web服務(wù)協(xié)議。
19.一種存儲(chǔ)在計(jì)算機(jī)可用介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可讀程序裝置,用于當(dāng)在計(jì)算機(jī)上執(zhí)行所述計(jì)算機(jī)程序產(chǎn)品時(shí),使計(jì)算機(jī)執(zhí)行權(quán)利要求1到權(quán)利要求11的任何一個(gè)的方法。
全文摘要
本發(fā)明描述一種新的用于在分布式網(wǎng)絡(luò)體系結(jié)構(gòu),特別是在面向服務(wù)的網(wǎng)絡(luò)結(jié)構(gòu)中建模和動(dòng)態(tài)部署服務(wù)的系統(tǒng)和方法。作為分布式網(wǎng)絡(luò)體系結(jié)構(gòu)的一部分的服務(wù)容器暴露它的功能性作為服務(wù)。它提供用于部署服務(wù)描述的注冊(cè)服務(wù)。在以任何聲明性描述語(yǔ)言(即,(狀態(tài)化)服務(wù),例如,狀態(tài)化Web服務(wù)的描述)創(chuàng)建新的服務(wù)描述之后,描述提供者在服務(wù)容器調(diào)用注冊(cè)服務(wù),其允許在運(yùn)行時(shí)期間注冊(cè)(即,部署)所述新的服務(wù)描述,而不需要重新啟動(dòng)服務(wù)容器。服務(wù)容器負(fù)責(zé)分析并檢查提交的新的服務(wù)描述的有效性,存儲(chǔ)所述服務(wù)描述,并使得它對(duì)于感興趣的服務(wù)消費(fèi)者可用,以進(jìn)行實(shí)例化。如果新的服務(wù)已成功注冊(cè),則由服務(wù)容器自動(dòng)創(chuàng)建用于訪問(wèn)所述新的服務(wù)的新的服務(wù)接口。感興趣的服務(wù)消費(fèi)者可就被主機(jī)管理的可用服務(wù)查詢主機(jī)環(huán)境,并隨后實(shí)例化新的服務(wù)。服務(wù)消費(fèi)者于是可以調(diào)用任何暴露的對(duì)給定服務(wù)實(shí)例的服務(wù)操作,其通常遵循請(qǐng)求響應(yīng)模式。
文檔編號(hào)G06F9/54GK1942860SQ200580011177
公開(kāi)日2007年4月4日 申請(qǐng)日期2005年2月17日 優(yōu)先權(quán)日2004年4月29日
發(fā)明者尤秦·布雷赫, 格德·布雷特, 薩姆埃爾·穆勒, 亨德里克·瓦格納 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1