專利名稱:一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試、監(jiān)控和測試處理技術(shù)領(lǐng)域,尤其涉及一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置及方法。
背景技術(shù):
面向服務(wù)體系結(jié)構(gòu)是一個組件模型,本質(zhì)上是一個相互通信的服務(wù)集,這種通信可能是簡單的數(shù)據(jù)傳送或者兩個以上的服務(wù)組合活動。服務(wù)是由資源(如數(shù)據(jù),程序或設(shè)備),服務(wù)邏輯和消息處理構(gòu)成的,當消息到達一個服務(wù)時激活使用資源的服務(wù)邏輯。
服務(wù)調(diào)用基于分布式環(huán)境下消息交換的標準協(xié)議。萬維網(wǎng)服務(wù)(WebServices)通過標準的接口和協(xié)議為分布在網(wǎng)絡(luò)上的業(yè)務(wù)處理過程提供了開發(fā)和執(zhí)行的基礎(chǔ)。同時,基于這些良構(gòu)的接口和特定約定開發(fā)的網(wǎng)格服務(wù)(Grid Services)得到了廣泛的關(guān)注,特別是那些與服務(wù)實例管理相關(guān)的活動。總體上,萬維網(wǎng)服務(wù)是一種無狀態(tài)服務(wù),如W3C定義;而網(wǎng)格服務(wù)則是一種有狀態(tài)的服務(wù)。萬維網(wǎng)和網(wǎng)格服務(wù)的高層次抽象為服務(wù)開發(fā)者和編程人員屏蔽了大量的底層技術(shù)細節(jié)。一些研究機構(gòu)和業(yè)界已經(jīng)提供了不同的技術(shù)實現(xiàn),如Web Services-Axis,Globus Toolkit,Vega GOS等等。隨著面向服務(wù)計算的普及,服務(wù)開發(fā)者和編程人員也提出了對服務(wù)調(diào)試工具和技術(shù)的需求。
雖然現(xiàn)有編程語言調(diào)試技術(shù)及其擴展(如Sun Microsystems的JDI,IBM的基于JDI技術(shù)的腳本調(diào)試技術(shù),Microsoft的XML Web ServiceDebugging)得到了很好的應(yīng)用,但是由于它們沒有很好地支持對服務(wù)調(diào)用過程的調(diào)試,所以編程人員仍在繼續(xù)使用這些技術(shù)和工具在開發(fā)機器或演示機器上調(diào)試服務(wù)應(yīng)用。作為需求工程研究中重要問題之一,在運行時驗證一個軟件系統(tǒng)是否滿足設(shè)計要求已經(jīng)得到廣泛的共識。其主要原因是即使一個演示的軟件系統(tǒng)在部署前能夠滿足要求,在運行時這些需求也可能被破壞。服務(wù)的開發(fā)面臨同樣的問題,特別是在萬維網(wǎng)規(guī)模下,一個可動態(tài)部署服務(wù)的執(zhí)行環(huán)境中,當很難或甚至無法啟動傳統(tǒng)的調(diào)試模式時。在這種情況下現(xiàn)有調(diào)試器是無法正常工作的,因為執(zhí)行環(huán)境不具備或者沒有啟動相關(guān)調(diào)試所需要的裝置。
雖然面向服務(wù)系統(tǒng)沒有提供像類,對象,方法,遠程調(diào)用的抽象,但是有基于消息處理過程的概念。消息處理機制提供一種支持服務(wù)行為的框架,這些行為包括節(jié)點的角色,單一計算單元的語法和語義,交換模式,可靠性,安全性,相關(guān)關(guān)聯(lián),路由,服務(wù)提供者等等。因此,更有效的服務(wù)調(diào)試方法可以基于這種行為框架。偵測和定位錯誤或故障的方法需要開發(fā)者或編程人員觀察和分析出現(xiàn)問題的服務(wù)行為,然后檢查被觀察的行為是否與所希望的行為相一致。開發(fā)者或編程人員關(guān)注這些服務(wù)行為并采用不同的調(diào)試策略與這些行為進行交互,同時理解所希望的服務(wù)行為。
傳統(tǒng)的源代碼調(diào)試模式是以一對一的方式通過專用規(guī)范和通信協(xié)議來完成程序的調(diào)試工作,這意味著必須強制地啟動和運行被調(diào)試程序。對于服務(wù)計算來說,這種強制的采用專用規(guī)范和通信協(xié)議的調(diào)試模式無法支持萬維網(wǎng)和網(wǎng)格服務(wù)計算環(huán)境下按需的在線服務(wù)調(diào)試,即無法在線進入這種調(diào)試模式。
因此,服務(wù)調(diào)試后端需要提供符合服務(wù)調(diào)試命令請求的信息處理裝置以及遵守服務(wù)計算協(xié)議的信息處理方法。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題有鑒于此,本發(fā)明的一個目的在于提供一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,為面向服務(wù)計算和網(wǎng)格計算的在線服務(wù)調(diào)試提供一種簡單、通用和有效的處理機制。
本發(fā)明的另一個目的在于提供一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法,為面向服務(wù)計算和網(wǎng)格計算的在線服務(wù)調(diào)試提供一種簡單、通用和有效的處理模型。
(二)技術(shù)方案為達到上述一個目的,本發(fā)明提供了一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,該裝置包括調(diào)試角色識別處理單元,用于驗證被調(diào)試服務(wù)調(diào)用的調(diào)試角色,讀取并保存調(diào)試角色重點服務(wù)調(diào)用標識信息;調(diào)試命令信息處理接口單元,用于根據(jù)接收自服務(wù)調(diào)試前端的調(diào)試信息,調(diào)用調(diào)試信息管理器和表達式計算器;服務(wù)行為生成器,用于構(gòu)造服務(wù)行為抽象描述信息及服務(wù)行為抽象描述信息與服務(wù)調(diào)用標識之間的映射,并將構(gòu)造的信息及映射保存到服務(wù)調(diào)試數(shù)據(jù)存儲單元;調(diào)試信息管理器,用于根據(jù)接收自調(diào)試命令信息處理接口單元的調(diào)用信息,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息;表達式計算器,用于計算或更新調(diào)試信息的表達式值,并根據(jù)計算出的表達式值向客戶端發(fā)送服務(wù)調(diào)試命令響應(yīng)信息;服務(wù)調(diào)試數(shù)據(jù)存儲單元,用于保存被調(diào)試服務(wù)執(zhí)行過程中服務(wù)行為抽象描述信息、調(diào)試信息以及服務(wù)上下文信息分別與服務(wù)調(diào)用標識之間的映射關(guān)系。
所述服務(wù)行為抽象描述信息由服務(wù)行為生成器根據(jù)當前服務(wù)上下文信息動態(tài)構(gòu)造,包括行為索引值idx,作用范圍scp,行為調(diào)用類cln和行為輸入選項值opt四個部分。
所述服務(wù)上下文信息的結(jié)構(gòu)包括SC=(DSO,RRM,RPE,AR,M0),其中,DSO用于給出被調(diào)用服務(wù)和操作的描述;RRM用于給出當前的請求和響應(yīng)消息;一個消息包括以下部分主消息部分、附加數(shù)據(jù)和消息對象的方法,表示為RRM=(R,A,M1),其中,R為主請求消息或主響應(yīng)消息;A為零個或多個服務(wù)行為的附加數(shù)據(jù);M1為一組與處理R和A有關(guān)的成員,包括提供基本的消息處理的信息和接口,其全體表示為∑Mi;RPE用于指向服務(wù)調(diào)用處理過程中本地引擎的參照;該引擎提供通用的服務(wù)調(diào)用處理功能;
AR用于給出一組服務(wù)角色;與服務(wù)行為執(zhí)行相關(guān)服務(wù)角色在服務(wù)調(diào)用處理過程中保持恒定,對于調(diào)試角色而言,其中包括相關(guān)的服務(wù)調(diào)用標識信息;M0為一組與處理一個服務(wù)調(diào)用實例中DSO,RRM,RPE和AR相關(guān)的成員;服務(wù)上下文的某些屬性和成員能夠以自省的方式響應(yīng)查詢或更改調(diào)試命令請求,查詢或更改的方法通過帶有正確表達式的調(diào)試命令請求來實現(xiàn)。
所述服務(wù)行為生成器將構(gòu)造的信息及映射保存到服務(wù)調(diào)試數(shù)據(jù)存儲單元,其映射關(guān)系以被調(diào)試服務(wù)調(diào)用標識為主鍵。
所述調(diào)試信息管理器進一步用于更新被調(diào)試服務(wù)的執(zhí)行狀態(tài),設(shè)置或刪除服務(wù)行為斷點,并將相應(yīng)的調(diào)用狀態(tài)和斷點信息及其映射保存到到服務(wù)調(diào)試數(shù)據(jù)存儲單元,其映射關(guān)系以被調(diào)試服務(wù)調(diào)用標識為主鍵。
所述表達式計算器進一步用于依據(jù)當前服務(wù)上下文,以自省的方式響應(yīng)查詢或更改調(diào)試命令請求。
為達到上述另一個目的,本發(fā)明提供了一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法,應(yīng)用于包括調(diào)試角色識別處理單元、調(diào)試命令信息處理接口單元、服務(wù)行為生成器、調(diào)試信息管理器、表達式計算器和服務(wù)調(diào)試數(shù)據(jù)存儲單元的服務(wù)調(diào)試裝置,該方法包括A、服務(wù)調(diào)試裝置接收服務(wù)調(diào)用請求消息,驗證被調(diào)試服務(wù)調(diào)用的調(diào)試角色,如果調(diào)試角色得到驗證,則執(zhí)行步驟B;B、服務(wù)調(diào)試裝置讀取并保存調(diào)試角色重點服務(wù)調(diào)用標識信息,構(gòu)造服務(wù)行為抽象描述信息及服務(wù)行為抽象描述信息與服務(wù)調(diào)用標識之間的映射;C、接收來自服務(wù)調(diào)試器前端的服務(wù)調(diào)試命令請求消息,服務(wù)調(diào)試裝置驗證該服務(wù)調(diào)試命令請求消息是否為調(diào)試信息管理命令請求,如果是,則執(zhí)行步驟D;否則,執(zhí)行步驟E;D、服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用調(diào)試信息管理器,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息,并執(zhí)行步驟H;E、服務(wù)調(diào)試裝置驗證該服務(wù)調(diào)試命令請求消息是否為查詢和更改命令請求,如果是,則執(zhí)行步驟F;否則,執(zhí)行步驟G;
F、服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用表達式計算器,計算或更新調(diào)試信息的表達式值,并執(zhí)行步驟H;G、向客戶端發(fā)送錯誤響應(yīng)消息,并執(zhí)行步驟I;H、服務(wù)調(diào)試裝置發(fā)送服務(wù)調(diào)試命令響應(yīng)消息到客戶端;I、服務(wù)調(diào)試裝置判斷被調(diào)試服務(wù)是否繼續(xù)執(zhí)行,如果是,則執(zhí)行步驟J;否則,重新執(zhí)行步驟C。
J、服務(wù)調(diào)試裝置清理相關(guān)映射表中與該服務(wù)調(diào)用標識有關(guān)的映射信息。
所述步驟A進一步包括如果調(diào)試角色無法得到驗證,則調(diào)用正常服務(wù)請求消息處理過程。
步驟D中所述服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用調(diào)試信息管理器,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息包括D1、對于服務(wù)狀態(tài)設(shè)置請求,更新狀態(tài)映射表中服務(wù)調(diào)用狀態(tài);D2、對于斷點使能請求,設(shè)置并修改斷點使能映射表;D3、對于行為斷點設(shè)置請求,修改行為斷點映射表。
步驟F中所述服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用表達式計算器,計算或更新調(diào)試信息的表達式值包括F1、對于服務(wù)行為描述查詢請求,查詢服務(wù)行為映射表;F2、對于斷點查詢請求,查詢斷點映射表;F3、對于服務(wù)上下文元素查詢請求,查詢服務(wù)上下文映射表,并根據(jù)查詢到的服務(wù)請求上下文和查詢表達式計算相應(yīng)的元素值;F4、對于服務(wù)上下文元素更改請求,根據(jù)查詢到的服務(wù)請求上下文和表達式計算值修改相應(yīng)的元素。
(三)有益效果從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果1、與傳統(tǒng)的調(diào)試技術(shù)相比,本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置及方法,以非入侵及共存的方式執(zhí)行,更有利于減少調(diào)試開銷對系統(tǒng)性能的影響,為面向服務(wù)計算和網(wǎng)格計算的在線服務(wù)調(diào)試提供一種簡單、通用和有效的處理模型和機制。
2、本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置及方法,為服務(wù)調(diào)試提供了一個更高層的抽象,并簡化了萬維網(wǎng)和網(wǎng)格規(guī)模下服務(wù)調(diào)用過程的描述。
3、本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,采用了通用服務(wù)調(diào)試命令接口,通用服務(wù)調(diào)試命令接口使得該裝置的調(diào)用與普通服務(wù)調(diào)用相一致,并以非入侵和共存的工作方式進行服務(wù)調(diào)用的調(diào)試。
4、利用本發(fā)明,能夠動態(tài)生成和跟蹤服務(wù)調(diào)用行為,對基于服務(wù)調(diào)用標識和行為描述的服務(wù)狀態(tài)和行為斷點進行管理,計算基于服務(wù)上下文的表達式。服務(wù)端的調(diào)試信息管理消除了在線服務(wù)調(diào)試中可能造成的對其它正常服務(wù)調(diào)用的不利影響,表達式計算器提供了準確的查詢和修改當前服務(wù)上下文中相關(guān)元素的計算方法。
圖1為本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置的結(jié)構(gòu)框圖;圖2為本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法的實現(xiàn)流程圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進一步詳細說明。
如圖1所示,圖1為本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置的結(jié)構(gòu)框圖,該服務(wù)調(diào)試裝置包括調(diào)試角色識別處理單元10、調(diào)試命令信息處理接口單元11、服務(wù)行為生成器12、調(diào)試信息管理器13、表達式計算器14和服務(wù)調(diào)試數(shù)據(jù)存儲單元15。
其中,調(diào)試角色識別處理單元10用于驗證被調(diào)試服務(wù)調(diào)用的調(diào)試角色,讀取并保存調(diào)試角色重點服務(wù)調(diào)用標識信息。
調(diào)試命令信息處理接口單元11用于根據(jù)接收自服務(wù)調(diào)試前端的調(diào)試信息,調(diào)用調(diào)試信息管理器13和表達式計算器14。
服務(wù)行為生成器12用于構(gòu)造服務(wù)行為抽象描述信息及服務(wù)行為抽象描述信息與服務(wù)調(diào)用標識之間的映射,并將構(gòu)造的信息及映射保存到服務(wù)調(diào)試數(shù)據(jù)存儲單元15。
調(diào)試信息管理器13用于根據(jù)接收自調(diào)試命令信息處理接口單元11的調(diào)用信息,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元15中保存的調(diào)試信息。
表達式計算器14用于計算或更新調(diào)試信息的表達式值,并根據(jù)計算出的表達式值向客戶端發(fā)送服務(wù)調(diào)試命令響應(yīng)信息。
服務(wù)調(diào)試數(shù)據(jù)存儲單元15用于保存被調(diào)試服務(wù)執(zhí)行過程中服務(wù)行為抽象描述信息、調(diào)試信息以及服務(wù)上下文信息分別與服務(wù)調(diào)用標識之間的映射關(guān)系。
本發(fā)明的工作原理及其特征將從以下描述變得明顯,或可通過如下所述的對本發(fā)明的實踐而了解。
在面向服務(wù)體系結(jié)構(gòu)中,服務(wù)調(diào)用由一組有序的抽象的服務(wù)行為來描述。在不同的執(zhí)行環(huán)境中,由于服務(wù)配置、行為選項和調(diào)用方式的不同,使得這種服務(wù)調(diào)用描述在不同程度上也存在差異。因此對于每一次服務(wù)調(diào)用往往需要一種裝置根據(jù)服務(wù)上下文動態(tài)地生成相關(guān)服務(wù)行為的描述,特別是需要在對該服務(wù)調(diào)用進行跟蹤、控制、觀察或定位出現(xiàn)的錯誤情況下。
服務(wù)調(diào)試信息是建立在服務(wù)上下文基礎(chǔ)上的。服務(wù)上下文信息的結(jié)構(gòu)定義為SC=(DSO,RRM,RPE,AR,M0),其中,-DSO給出被調(diào)用服務(wù)和操作的描述;-RRM給出當前的請求和響應(yīng)消息。一個消息包括以下部分主消息部分、附加數(shù)據(jù)和消息對象的方法,表示為RRM=(R,A,M1),其中,R為主請求消息或主響應(yīng)消息(如SOAP消息);A為零個或多個服務(wù)行為的附加數(shù)據(jù);M1為一組與處理R和A有關(guān)的成員,包括提供基本的消息處理的信息和接口,如屬性,域,方法等,其全體表示為∑Mi。
-RPE指向服務(wù)調(diào)用處理過程中本地引擎的參照。該引擎提供通用的服務(wù)調(diào)用處理功能,如服務(wù)注冊,行為描述映射,裝載器等等。
-AR給出一組服務(wù)角色。與服務(wù)行為執(zhí)行相關(guān)服務(wù)角色在服務(wù)調(diào)用處理過程中保持恒定,如,系統(tǒng)角色,有狀態(tài)調(diào)試角色等等。對于調(diào)試角色來說,其中包括相關(guān)的服務(wù)調(diào)用標識信息。
-M0一組與處理一個服務(wù)調(diào)用實例中DSO,RRM,RPE和AR相關(guān)的成員。服務(wù)上下文的某些屬性和成員能夠以自省的方式響應(yīng)查詢或更改調(diào)試命令請求,查詢或更改的方法通過帶有正確表達式的調(diào)試命令請求來實現(xiàn)。
調(diào)試角色識別處理單元在服務(wù)端實現(xiàn)對服務(wù)上下文中調(diào)試角色的處理。對于調(diào)試請求服務(wù)調(diào)用來說,讀取并保存調(diào)試角色中的服務(wù)調(diào)用標識信息。
服務(wù)行為生成器根據(jù)當前服務(wù)上下文動態(tài)創(chuàng)建被調(diào)試服務(wù)調(diào)用的本地行為描述信息。每個行為描述信息由四部分組成行為索引值(idx),作用范圍(scp),行為調(diào)用類(cln)和行為輸入選項值(opt),可表示為bd=(idx,scp,cln,opt)。服務(wù)行為的作用范圍按照全局配置,服務(wù)配置和操作配置分為全局請求(GlobalRequest),全局響應(yīng)(GlobalResponse),服務(wù)請求(ServiceRequest),服務(wù)響應(yīng)(ServiceResponse),傳輸相關(guān)行為(Transport)和操作相關(guān)行為(Operation)。服務(wù)行為生成器首先通過服務(wù)上下文中的本地服務(wù)引擎的參照(RPE),然后根據(jù)該引擎中的被調(diào)用服務(wù)(DSO)的配置按順序生成服務(wù)行為跟蹤的描述信息,最后以被調(diào)試服務(wù)調(diào)用標識(dsid)為主鍵將該描述信息映射到相關(guān)的全局映射表中;即服務(wù)行為生成器將構(gòu)造的信息及映射保存到服務(wù)調(diào)試數(shù)據(jù)存儲單元,其映射關(guān)系以被調(diào)試服務(wù)調(diào)用標識為主鍵。
以下為服務(wù)行為生成器創(chuàng)建服務(wù)行為跟蹤的偽代碼
<pre listing-type="program-listing">vector bt_generator(SC sc){ int idx=1; vector v=new vector(); Iterator it={ GlobalRequest,ServiceRequest,Transport, Operation, ServiceResponse, GlobalResponse}; Configuration cf=sc.RPE.Config; While(it.hasmore()){ String scp=it.next(); If(cf.get(scp)?。絥ull){ For(int k=0;k<cf,get(scp).length;k++){ Read the k’s behavior in cf.get(scp); BDesc bd=<idx,scp,cln,opt>; v.add(bd) idx++;}}} return v; }</pre>調(diào)試信息管理器負責更新被調(diào)試服務(wù)的執(zhí)行狀態(tài),設(shè)置或刪除服務(wù)行為斷點,并以唯一服務(wù)調(diào)用標識(dsid)為主鍵映射相應(yīng)的調(diào)用狀態(tài)和斷點信息。即調(diào)試信息管理器進一步用于更新被調(diào)試服務(wù)的執(zhí)行狀態(tài),設(shè)置或刪除服務(wù)行為斷點,并將相應(yīng)的調(diào)用狀態(tài)和斷點信息及其映射保存到到服務(wù)調(diào)試數(shù)據(jù)存儲單元,其映射關(guān)系以被調(diào)試服務(wù)調(diào)用標識為主鍵。對于被調(diào)試的服務(wù)調(diào)用來說,在每個服務(wù)行為的執(zhí)行邊界檢查其服務(wù)調(diào)用狀態(tài)和斷點設(shè)置,并依此決定下一步的執(zhí)行策略,如繼續(xù)執(zhí)行,單步,掛起,重試等等。服務(wù)行為的索引值可作為行為斷點設(shè)置的標識。
以下為服務(wù)調(diào)試信息管理器中行為斷點設(shè)置偽代碼vector bb_managment(String dsid,String bh_bp){vector v=bh_bpmap.get(dsid);vector bt=bh_tracemap.get(dsid);if(verfy(bt,v,bh_bp)){v.add(bh_bp);}return v;}
如表1所示,表1為調(diào)試信息管理器中定義的服務(wù)控制狀態(tài)。
表1表達式計算器依據(jù)當前服務(wù)上下文,以自省的方式響應(yīng)查詢或更改調(diào)試命令請求。當前服務(wù)上下文的方法(∈M0∪∑Mi)可以被帶有正確參數(shù)的調(diào)試命令請求所調(diào)用。在服務(wù)調(diào)試裝置中,查詢和更改服務(wù)上下文元素的表達式語法表示為QUExpr→Empty|Variable|QUExpr Dot Variable|QUEquDot→.
Empty→nullQUEqu→QUMark QUExpr Equal ConstStringEqual→=QUMark→[Minus QUType|ClearMark]QUType→boolean|byte|integer|char|long|float|double|string|listClearMark→Minus ClearString
ClearString→clearVariable→Identifier以下為表達式計算器處理過程的偽代碼<pre listing-type="program-listing"> Object evaluate(SC sc,String expr){ Set mbset=sc.getallmembers(); Variable v=left of expr; While(submember(v)){ Variable head=head(v); mbset=mbset.head.getallmembers(); v=tail(v);} if(right of expr){ QUType t=QUType of expr; mset.v.set(Convert(right of expr,t));} return mset.v.get(); }</pre>表達式計算器首先獲得服務(wù)上下文的聲明的全部元素(∈M0)并設(shè)置可訪問屬性為真;然后分析處理表達式(expr),如果表達式左部(left ofexpr)為該上下文中元素的元素(以Dot區(qū)分),則逐級計算出相應(yīng)對象聲明的全部元素,并設(shè)置可訪問屬性為真;具體命令請求處理如下(1)對于服務(wù)上下文查詢命令,通過元素名比較獲得該元素的當前值,并經(jīng)相應(yīng)的輸出處理后,響應(yīng)該查詢命令。
(2)對于服務(wù)上下文更改命令,表達式計算器首先確定元素的類型,然后根據(jù)該元素的類型對表達式右部(right of expr)字符串進行類型轉(zhuǎn)換,最后將轉(zhuǎn)換后的結(jié)果賦值給該元素。
(3)對于服務(wù)上下文中的方法調(diào)用,具體操作過程如下過程1如果所調(diào)用的方法,調(diào)用參數(shù)不為空,則處理對應(yīng)的調(diào)用參數(shù)設(shè)置,并以服務(wù)調(diào)用標識(dsid)為主鍵映射該參數(shù)到指定的全局映射表中,對應(yīng)的參數(shù)存儲順序與方法調(diào)用參數(shù)順序相同;過程2處理對應(yīng)服務(wù)上下文中方法調(diào)用請求,并返回處理響應(yīng)結(jié)果。
過程3處理過程結(jié)束后,清理參數(shù)映射表中相關(guān)的調(diào)用參數(shù)。
在服務(wù)調(diào)試裝置中,表達式計算器能夠準確計算和處理當前服務(wù)上下文中元素,進而支持對這些元素的跟蹤、觀察和更改處理。
對于被調(diào)試的服務(wù)調(diào)用,服務(wù)調(diào)試裝置作為一個非入侵的系統(tǒng)服務(wù)調(diào)用在被調(diào)試服務(wù)配置中出現(xiàn),并提供通用的調(diào)試命令接口。調(diào)試命令接口為每一個控制、查詢或修改調(diào)試命令請求提供對應(yīng)的操作,該操作與調(diào)試命令具有相同的名稱,并且在調(diào)試命令消息到達時調(diào)用服務(wù)調(diào)試裝置的功能。這種系統(tǒng)調(diào)試命令接口與普通的服務(wù)以一種共存的方式在同一服務(wù)執(zhí)行環(huán)境中存在。其控制操作包括(1)服務(wù)狀態(tài)操作設(shè)置或修改服務(wù)狀態(tài),如單步執(zhí)行,下一步,繼續(xù),停止,運行等等。
(2)斷點操作設(shè)置或刪除行為斷點,使能或禁止斷點操作。
(3)變更操作變更服務(wù)行為的執(zhí)行順序,如跳過,補償,重試。
查詢或修改操作包括(1)相關(guān)元素操作獲得或設(shè)置相關(guān)服務(wù)上下文的元素信息,設(shè)置或清除參數(shù),方法調(diào)用。
(2)跟蹤操作獲得或保存行為跟蹤信息。
只有當一個包含調(diào)試請求的服務(wù)調(diào)用消息到達時才能打開這種服務(wù)調(diào)試裝置,并構(gòu)造相關(guān)的服務(wù)調(diào)試映射。這些映射以唯一的服務(wù)調(diào)用標識(dsid)來區(qū)分,其控制和影響范圍僅限于對應(yīng)的被調(diào)試服務(wù)調(diào)用。
作為服務(wù)調(diào)試器后端的關(guān)鍵技術(shù)之一,服務(wù)調(diào)試裝置動態(tài)生成和跟蹤服務(wù)調(diào)用行為的抽象描述;在服務(wù)端管理對應(yīng)服務(wù)調(diào)用標識的服務(wù)調(diào)試信息;根據(jù)服務(wù)上下文計算相應(yīng)的服務(wù)調(diào)試請求表達式;并且提供與普通服務(wù)調(diào)用相一致的服務(wù)調(diào)試命令接口。
基于圖1所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置的結(jié)構(gòu)框圖,以及上述對本發(fā)明原理及具體實踐的描述,以下對本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法進行詳細說明。
如圖2所示,圖2為本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法的實現(xiàn)流程圖,應(yīng)用于包括調(diào)試角色識別處理單元、調(diào)試命令信息處理接口單元、服務(wù)行為生成器、調(diào)試信息管理器、表達式計算器和服務(wù)調(diào)試數(shù)據(jù)存儲單元的服務(wù)調(diào)試裝置,其特征在于,該方法包括步驟201在服務(wù)端,服務(wù)調(diào)試裝置接收到包含調(diào)試請求的服務(wù)調(diào)用請求消息,驗證被調(diào)試服務(wù)調(diào)用的調(diào)試角色,如果調(diào)試角色得到驗證,則執(zhí)行步驟202;否則,調(diào)用正常服務(wù)請求消息處理過程,并結(jié)束。
步驟202服務(wù)調(diào)試裝置讀取并保存調(diào)試角色重點服務(wù)調(diào)用標識信息,構(gòu)造服務(wù)行為抽象描述信息及服務(wù)行為抽象描述信息與服務(wù)調(diào)用標識之間的映射。
步驟203服務(wù)調(diào)試裝置接收來自服務(wù)調(diào)試器前端的服務(wù)調(diào)試命令請求消息,驗證該服務(wù)調(diào)試命令請求消息是否為調(diào)試信息管理命令請求,如果是,則執(zhí)行步驟204;否則,執(zhí)行步驟205。
步驟204服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用調(diào)試信息管理器,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息,并執(zhí)行步驟208;在本步驟中,所述服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用調(diào)試信息管理器,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息包括S1、對于服務(wù)狀態(tài)設(shè)置請求,更新狀態(tài)映射表中服務(wù)調(diào)用狀態(tài);S2、對于斷點使能請求,設(shè)置并修改斷點使能映射表;S3、對于行為斷點設(shè)置請求,修改行為斷點映射表。
步驟205服務(wù)調(diào)試裝置驗證該服務(wù)調(diào)試命令請求消息是否為查詢和更改命令請求,如果是,則執(zhí)行步驟206;否則,執(zhí)行步驟207。
步驟206服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用表達式計算器,計算或更新調(diào)試信息的表達式值,并執(zhí)行步驟208;在本步驟中,所述服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用表達式計算器,計算或更新調(diào)試信息的表達式值包括S1′、對于服務(wù)行為描述查詢請求,查詢服務(wù)行為映射表;S2′、對于斷點查詢請求,查詢斷點映射表;S3′、對于服務(wù)上下文元素查詢請求,查詢服務(wù)上下文映射表,并根據(jù)查詢到的服務(wù)請求上下文和查詢表達式計算相應(yīng)的元素值;S4′、對于服務(wù)上下文元素更改請求,根據(jù)查詢到的服務(wù)請求上下文和表達式計算值修改相應(yīng)的元素。
步驟207向客戶端發(fā)送錯誤響應(yīng)消息,并執(zhí)行步驟209。
步驟208服務(wù)調(diào)試裝置發(fā)送服務(wù)調(diào)試命令響應(yīng)消息到客戶端。
步驟209服務(wù)調(diào)試裝置判斷被調(diào)試服務(wù)是否繼續(xù)執(zhí)行,如果是,則重新執(zhí)行步驟203;否則,執(zhí)行步驟210。
步驟210服務(wù)調(diào)試裝置清理相關(guān)映射表中與該服務(wù)調(diào)用標識有關(guān)的映射信息。
以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,其特征在于,該裝置包括調(diào)試角色識別處理單元,用于驗證被調(diào)試服務(wù)調(diào)用的調(diào)試角色,讀取并保存調(diào)試角色重點服務(wù)調(diào)用標識信息;調(diào)試命令信息處理接口單元,用于根據(jù)接收自服務(wù)調(diào)試前端的調(diào)試信息,調(diào)用調(diào)試信息管理器和表達式計算器;服務(wù)行為生成器,用于構(gòu)造服務(wù)行為抽象描述信息及服務(wù)行為抽象描述信息與服務(wù)調(diào)用標識之間的映射,并將構(gòu)造的信息及映射保存到服務(wù)調(diào)試數(shù)據(jù)存儲單元;調(diào)試信息管理器,用于根據(jù)接收自調(diào)試命令信息處理接口單元的調(diào)用信息,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息;表達式計算器,用于計算或更新調(diào)試信息的表達式值,并根據(jù)計算出的表達式值向客戶端發(fā)送服務(wù)調(diào)試命令響應(yīng)信息;服務(wù)調(diào)試數(shù)據(jù)存儲單元,用于保存被調(diào)試服務(wù)執(zhí)行過程中服務(wù)行為抽象描述信息、調(diào)試信息以及服務(wù)上下文信息分別與服務(wù)調(diào)用標識之間的映射關(guān)系。
2.根據(jù)權(quán)利要求1所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,其特征在于,所述服務(wù)行為抽象描述信息由服務(wù)行為生成器根據(jù)當前服務(wù)上下文信息動態(tài)構(gòu)造,包括行為索引值idx,作用范圍scp,行為調(diào)用類cln和行為輸入選項值opt四個部分。
3.根據(jù)權(quán)利要求1或2所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,其特征在于,所述服務(wù)上下文信息的結(jié)構(gòu)包括SC=(DSO,RRM,RPE,AR,M0),其中,DSO用于給出被調(diào)用服務(wù)和操作的描述;RRM用于給出當前的請求和響應(yīng)消息;一個消息包括以下部分主消息部分、附加數(shù)據(jù)和消息對象的方法,表示為RRM=(R,A,M1),其中,R為主請求消息或主響應(yīng)消息;A為零個或多個服務(wù)行為的附加數(shù)據(jù);M1為一組與處理R和A有關(guān)的成員,包括提供基本的消息處理的信息和接口,其全體表示為∑Mi;RPE用于指向服務(wù)調(diào)用處理過程中本地引擎的參照;該引擎提供通用的服務(wù)調(diào)用處理功能;AR用于給出一組服務(wù)角色;與服務(wù)行為執(zhí)行相關(guān)服務(wù)角色在服務(wù)調(diào)用處理過程中保持恒定,對于調(diào)試角色而言,其中包括相關(guān)的服務(wù)調(diào)用標識信息;M0為一組與處理一個服務(wù)調(diào)用實例中DSO,RRM,RPE和AR相關(guān)的成員;服務(wù)上下文的某些屬性和成員能夠以自省的方式響應(yīng)查詢或更改調(diào)試命令請求,查詢或更改的方法通過帶有正確表達式的調(diào)試命令請求來實現(xiàn)。
4.根據(jù)權(quán)利要求1所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,其特征在于,所述服務(wù)行為生成器將構(gòu)造的信息及映射保存到服務(wù)調(diào)試數(shù)據(jù)存儲單元,其映射關(guān)系以被調(diào)試服務(wù)調(diào)用標識為主鍵。
5.根據(jù)權(quán)利要求1所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,其特征在于,所述調(diào)試信息管理器進一步用于更新被調(diào)試服務(wù)的執(zhí)行狀態(tài),設(shè)置或刪除服務(wù)行為斷點,并將相應(yīng)的調(diào)用狀態(tài)和斷點信息及其映射保存到到服務(wù)調(diào)試數(shù)據(jù)存儲單元,其映射關(guān)系以被調(diào)試服務(wù)調(diào)用標識為主鍵。
6.根據(jù)權(quán)利要求1所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,其特征在于,所述表達式計算器進一步用于依據(jù)當前服務(wù)上下文,以自省的方式響應(yīng)查詢或更改調(diào)試命令請求。
7.一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法,應(yīng)用于包括調(diào)試角色識別處理單元、調(diào)試命令信息處理接口單元、服務(wù)行為生成器、調(diào)試信息管理器、表達式計算器和服務(wù)調(diào)試數(shù)據(jù)存儲單元的服務(wù)調(diào)試裝置,其特征在于,該方法包括A、服務(wù)調(diào)試裝置接收服務(wù)調(diào)用請求消息,驗證被調(diào)試服務(wù)調(diào)用的調(diào)試角色,如果調(diào)試角色得到驗證,則執(zhí)行步驟B;B、服務(wù)調(diào)試裝置讀取并保存調(diào)試角色重點服務(wù)調(diào)用標識信息,構(gòu)造服務(wù)行為抽象描述信息及服務(wù)行為抽象描述信息與服務(wù)調(diào)用標識之間的映射;C、接收來自服務(wù)調(diào)試器前端的服務(wù)調(diào)試命令請求消息,服務(wù)調(diào)試裝置驗證該服務(wù)調(diào)試命令請求消息是否為調(diào)試信息管理命令請求,如果是,則執(zhí)行步驟D;否則,執(zhí)行步驟E;D、服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用調(diào)試信息管理器,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息,并執(zhí)行步驟H;E、服務(wù)調(diào)試裝置驗證該服務(wù)調(diào)試命令請求消息是否為查詢和更改命令請求,如果是,則執(zhí)行步驟F;否則,執(zhí)行步驟G;F、服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用表達式計算器,計算或更新調(diào)試信息的表達式值,并執(zhí)行步驟H;G、向客戶端發(fā)送錯誤響應(yīng)消息,并執(zhí)行步驟I;H、服務(wù)調(diào)試裝置發(fā)送服務(wù)調(diào)試命令響應(yīng)消息到客戶端;I、服務(wù)調(diào)試裝置判斷被調(diào)試服務(wù)是否繼續(xù)執(zhí)行,如果是,則執(zhí)行步驟J;否則,重新執(zhí)行步驟C。J、服務(wù)調(diào)試裝置清理相關(guān)映射表中與該服務(wù)調(diào)用標識有關(guān)的映射信息。
8.根據(jù)權(quán)利要求7所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法,其特征在于,所述步驟A進一步包括如果調(diào)試角色無法得到驗證,則調(diào)用正常服務(wù)請求消息處理過程。
9.根據(jù)權(quán)利要求7所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法,其特征在于,步驟D中所述服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用調(diào)試信息管理器,查詢或更新服務(wù)調(diào)試數(shù)據(jù)存儲單元中保存的調(diào)試信息包括D1、對于服務(wù)狀態(tài)設(shè)置請求,更新狀態(tài)映射表中服務(wù)調(diào)用狀態(tài);D2、對于斷點使能請求,設(shè)置并修改斷點使能映射表;D3、對于行為斷點設(shè)置請求,修改行為斷點映射表。
10.根據(jù)權(quán)利要求7所述的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法,其特征在于,步驟F中所述服務(wù)調(diào)試裝置根據(jù)相應(yīng)服務(wù)調(diào)用標識調(diào)用表達式計算器,計算或更新調(diào)試信息的表達式值包括F1、對于服務(wù)行為描述查詢請求,查詢服務(wù)行為映射表;F2、對于斷點查詢請求,查詢斷點映射表;F3、對于服務(wù)上下文元素查詢請求,查詢服務(wù)上下文映射表,并根據(jù)查詢到的服務(wù)請求上下文和查詢表達式計算相應(yīng)的元素值;F4、對于服務(wù)上下文元素更改請求,根據(jù)查詢到的服務(wù)請求上下文和表達式計算值修改相應(yīng)的元素。
全文摘要
本發(fā)明公開了一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置,包括調(diào)試角色識別處理單元、調(diào)試命令信息處理接口單元、服務(wù)行為生成器、調(diào)試信息管理器、表達式計算器和服務(wù)調(diào)試數(shù)據(jù)存儲單元。本發(fā)明同時公開了一種面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試方法。與傳統(tǒng)的調(diào)試技術(shù)相比,本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置及方法,以非入侵及共存的方式執(zhí)行,更有利于減少調(diào)試開銷對系統(tǒng)性能的影響,為面向服務(wù)計算和網(wǎng)格計算的在線服務(wù)調(diào)試提供一種簡單、通用和有效的處理模型和機制。另外,本發(fā)明提供的面向服務(wù)體系結(jié)構(gòu)的服務(wù)調(diào)試裝置及方法,為服務(wù)調(diào)試提供了一個更高層的抽象,并簡化了萬維網(wǎng)和網(wǎng)格規(guī)模下服務(wù)調(diào)用過程的描述。
文檔編號G06F11/36GK1956439SQ20061012786
公開日2007年5月2日 申請日期2006年9月22日 優(yōu)先權(quán)日2006年9月22日
發(fā)明者岳強, 徐志偉, 李偉 申請人:中國科學(xué)院計算技術(shù)研究所