本申請涉及數(shù)據(jù)處理領(lǐng)域,具體而言,涉及一種面向服務(wù)架構(gòu)中服務(wù)的處理方法和裝置。
背景技術(shù):
對于客戶端和服務(wù)端通過面向服務(wù)的框架WCF進(jìn)行通信的系統(tǒng),客戶端通過服務(wù)調(diào)用服務(wù)端方法,這樣的系統(tǒng)中包含很多服務(wù),執(zhí)行這些服務(wù)的方法時(shí)可能會拋出多種異常。通常需要在每個(gè)方法中捕獲異常,對異常進(jìn)行處理。系統(tǒng)中一般都有統(tǒng)一的異常處理策略,每個(gè)方法都需要使用相同的策略處理異常。
由于每個(gè)服務(wù)的方法都使用同樣的處理異常策略,這樣當(dāng)修改異常處理策略時(shí),需要每個(gè)服務(wù)的方法中都進(jìn)行修改。即使將這些策略封裝到統(tǒng)一的方法中,也需要在每個(gè)服務(wù)方法中調(diào)用這些方法,而這些調(diào)用和服務(wù)方法本身業(yè)務(wù)邏輯不相關(guān),導(dǎo)致原服務(wù)方法包含不相關(guān)調(diào)用。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本申請實(shí)施例提供了一種面向服務(wù)架構(gòu)中服務(wù)的處理方法和裝置,以至少解決現(xiàn)有技術(shù)中服務(wù)方法中經(jīng)常包含不相關(guān)調(diào)用的技術(shù)問題。
根據(jù)本申請實(shí)施例的一個(gè)方面,提供了一種面向服務(wù)架構(gòu)中服務(wù)的處理方法,包括:在所述服務(wù)被調(diào)用時(shí),通過代理執(zhí)行所述服務(wù);獲取所述代理執(zhí)行所述服務(wù)過程中的異常信息;以及根據(jù)所述異常信息的類別處理所述異常信息。
進(jìn)一步地,根據(jù)所述異常信息的類別處理所述異常信息包括:判斷所述異常信息是否具有第一標(biāo)識,其中,所述第一標(biāo)識用于標(biāo)識所述異常信息的類別;在判斷出所述異常信息具有所述第一標(biāo)識的情況下,從所述面向服務(wù)架構(gòu)的數(shù)據(jù)庫中查詢與所述第一標(biāo)識對應(yīng)的處理方式,并按照查詢到的處理方式處理所述異常信息,其中,所述面向服務(wù)架構(gòu)的數(shù)據(jù)庫中存儲有與不同第一標(biāo)識相對應(yīng)的處理方式;以及在判斷出所述異常信息不具有所述第一標(biāo)識的情況下,調(diào)用預(yù)設(shè)處理方式處理所述異常信息。
進(jìn)一步地,在通過代理執(zhí)行所述服務(wù)之前,所述方法還包括:獲取所述面向服務(wù)架構(gòu)調(diào)用所述服務(wù)的歷史日志;提取所述歷史日志中記錄的異常信息;對提取到的異常信息進(jìn)行分類;以及對每一個(gè)分類后的異常信息添加所述第一標(biāo)識。
進(jìn)一步地,所述方法還包括:添加第二標(biāo)識至所述服務(wù),其中,在所述服務(wù)被調(diào)用時(shí),通過代理執(zhí)行所述服務(wù)包括:在具有所述第二標(biāo)識的所述服務(wù)被調(diào)用時(shí),通過代理執(zhí)行具有所述第二標(biāo)識的所述服務(wù)。
進(jìn)一步地,添加第二標(biāo)識至所述服務(wù)包括:在所述服務(wù)所屬的類中創(chuàng)建與所述代理相關(guān)聯(lián)的所述第二標(biāo)識。
根據(jù)本申請實(shí)施例的一個(gè)方面,提供了一種面向服務(wù)架構(gòu)中服務(wù)的處理裝置,包括:執(zhí)行單元,用于在所述服務(wù)被調(diào)用時(shí),通過代理執(zhí)行所述服務(wù);第一獲取單元,用于獲取所述代理執(zhí)行所述服務(wù)過程中的異常信息;以及處理單元,用于根據(jù)所述異常信息的類別處理所述異常信息。
進(jìn)一步地,所述處理單元包括:判斷模塊,用于判斷所述異常信息是否具有第一標(biāo)識,其中,所述第一標(biāo)識用于標(biāo)識所述異常信息的類別;第一處理模塊,用于在所述判斷模塊判斷出所述異常信息具有所述第一標(biāo)識的情況下,從所述面向服務(wù)架構(gòu)的數(shù)據(jù)庫中查詢與所述第一標(biāo)識對應(yīng)的處理方式,并按照查詢到的處理方式處理所述異常信息,其中,所述面向服務(wù)架構(gòu)的數(shù)據(jù)庫中存儲有與不同第一標(biāo)識相對應(yīng)的處理方式;以及第二處理模塊,用于在所述判斷模塊判斷出所述異常信息不具有所述第一標(biāo)識的情況下,調(diào)用預(yù)設(shè)處理方式處理所述異常信息。
進(jìn)一步地,所述裝置還包括:第二獲取單元,用于在所述執(zhí)行單元通過代理執(zhí)行所述服務(wù)之前,獲取所述面向服務(wù)架構(gòu)調(diào)用所述服務(wù)的歷史日志;提取單元,用于提取所述歷史日志中記錄的異常信息;分類單元,用于對所述提取單元提取到的異常信息進(jìn)行分類;以及第一添加單元,用于對每一個(gè)分類后的異常信息添加所述第一標(biāo)識。
進(jìn)一步地,所述裝置還包括:第二添加單元,用于添加第二標(biāo)識至所述服務(wù),其中,所述執(zhí)行單元包括:執(zhí)行模塊,用于在具有所述第二標(biāo)識的所述服務(wù)被調(diào)用時(shí),通過代理執(zhí)行具有所述第二標(biāo)識的所述服務(wù)。
進(jìn)一步地,所述第二添加單元包括:創(chuàng)建模塊,用于在所述服務(wù)所屬的類中創(chuàng)建與所述代理相關(guān)聯(lián)的所述第二標(biāo)識。
在本申請實(shí)施例中,采用在所述服務(wù)被調(diào)用時(shí),通過代理執(zhí)行所述服務(wù);獲取所述代理執(zhí)行所述服務(wù)過程中的異常信息;以及根據(jù)所述異常信息的類別處理所述異常信息。通過代理執(zhí)行服務(wù),并進(jìn)行異常信息的獲取和處理,實(shí)現(xiàn)了在執(zhí)行異常信息處 理過程中,不需要在服務(wù)方法中調(diào)用這些異常處理方法,進(jìn)而避免服務(wù)方法調(diào)用與本身業(yè)務(wù)邏輯不相關(guān)的調(diào)用,并且通過代理執(zhí)行服務(wù)的方式,將異常信息交由代理處理,達(dá)到了統(tǒng)一調(diào)用代理來執(zhí)行異常處理,解決了現(xiàn)有技術(shù)中服務(wù)方法中經(jīng)常包含不相關(guān)調(diào)用的技術(shù)問題,實(shí)現(xiàn)了通過代理統(tǒng)一執(zhí)行服務(wù)方法,并對執(zhí)行過程中的異常進(jìn)行統(tǒng)一處理的效果。
附圖說明
此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
圖1是根據(jù)本申請實(shí)施例的面向服務(wù)架構(gòu)中服務(wù)的處理方法的流程圖;以及
圖2是根據(jù)本申請實(shí)施例的面向服務(wù)架構(gòu)中服務(wù)的處理裝置的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請方案,下面將結(jié)合本申請實(shí)施例中的附圖,對本申請實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請一部分的實(shí)施例,而不是全部的實(shí)施例?;诒旧暾堉械膶?shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請保護(hù)的范圍。
需要說明的是,本申請的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
首先對本申請實(shí)施例所涉及的技術(shù)術(shù)語作如下解釋:
WCF:微軟開發(fā)的支持一些通信協(xié)議的礦建,為面相服務(wù)構(gòu)建的一整套框架。
契約:面相服務(wù)的概念,包括服務(wù)契約、數(shù)據(jù)契約等,在本申請實(shí)施例中特指服務(wù)契約,相當(dāng)于接口,定義包含了哪些操作。
服務(wù):目前比較流行的分布式系統(tǒng)中使用的通信技術(shù),這是一套標(biāo)準(zhǔn),不依賴于 具體的編程語言和系統(tǒng),即跨語言邊界、跨系統(tǒng),不同語言和不同系統(tǒng)之間可以通過服務(wù)進(jìn)行交互。
根據(jù)本申請實(shí)施例,提供了一種面向服務(wù)架構(gòu)中服務(wù)的處理方法的實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本申請實(shí)施例的一種面向服務(wù)架構(gòu)中服務(wù)的處理方法的流程圖,如圖1所示,該方法主要包括如下步驟S102至步驟S106:
S102:在服務(wù)被調(diào)用時(shí),通過代理執(zhí)行服務(wù),即,在面向服務(wù)架構(gòu)中的服務(wù)被調(diào)用時(shí),不直接執(zhí)行服務(wù)方法,而是將調(diào)用委托給代理,通過代理來執(zhí)行服務(wù)方法。
S104:獲取代理執(zhí)行服務(wù)過程中的異常信息。代理執(zhí)行服務(wù)方法過程中,捕獲執(zhí)行過程中遇到的異常(即錯誤),當(dāng)捕獲到異常后,可以先將異常記錄到日志中。
S106:根據(jù)異常信息的類別處理異常信息。由于通過代理執(zhí)行服務(wù),相當(dāng)于將服務(wù)方法的執(zhí)行權(quán)限轉(zhuǎn)交給代理,因此,在獲取到代理執(zhí)行服務(wù)過程中的異常信息后,需要代理進(jìn)一步根據(jù)異常信息的類別來對異常信息進(jìn)行處理。一般而言,面向服務(wù)架構(gòu)中,通過會出現(xiàn)的異常包括如下類別:網(wǎng)絡(luò)超時(shí),系統(tǒng)錯誤,業(yè)務(wù)邏輯錯誤,非法參數(shù),實(shí)體錯誤,查詢錯誤,重復(fù)配置,配置不存在,實(shí)體有依賴,需要登錄,用戶名或密碼錯誤,權(quán)限不足,Profile不存在,帳號不存在和Solution不存在。
本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理方法,通過代理執(zhí)行服務(wù),并進(jìn)行異常信息的獲取和處理,實(shí)現(xiàn)了在執(zhí)行異常信息處理過程中,不需要在服務(wù)方法中調(diào)用這些異常處理方法,進(jìn)而避免服務(wù)方法調(diào)用與本身業(yè)務(wù)邏輯不相關(guān)的調(diào)用,并且通過代理執(zhí)行服務(wù)的方式,將異常信息交由代理處理,達(dá)到了統(tǒng)一調(diào)用代理來執(zhí)行異常處理,解決了現(xiàn)有技術(shù)中服務(wù)方法中經(jīng)常包含不相關(guān)調(diào)用的技術(shù)問題,實(shí)現(xiàn)了通過代理統(tǒng)一執(zhí)行服務(wù)方法,并對執(zhí)行過程中的異常進(jìn)行統(tǒng)一處理的效果。
可選地,在通過代理執(zhí)行服務(wù)之前,本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理方法還包括:獲取面向服務(wù)架構(gòu)調(diào)用服務(wù)的歷史日志;提取歷史日志中記錄的異常信息;對提取到的異常信息進(jìn)行分類;以及對每一個(gè)分類后的異常信息添加第一標(biāo)識。
在本申請實(shí)施例中,可以對面向服務(wù)架構(gòu)中所出現(xiàn)的異常信息進(jìn)行標(biāo)注,比如可以定義ServiceException,ServiceException包括Type屬性和Message屬性,其中,Type屬性表明異常類別,Message屬性是異常說明,在執(zhí)行服務(wù)過程中,如果捕獲到 異常信息,主要是根據(jù)異常信息中的ServiceException來確定異常信息的類別。
可選地,根據(jù)異常信息的類別處理異常信息包括:判斷異常信息是否具有第一標(biāo)識,其中,第一標(biāo)識用于標(biāo)識異常信息的類別;在判斷出異常信息具有第一標(biāo)識的情況下,從面向服務(wù)架構(gòu)的數(shù)據(jù)庫中查詢與第一標(biāo)識對應(yīng)的處理方式,并按照查詢到的處理方式處理異常信息,其中,面向服務(wù)架構(gòu)的數(shù)據(jù)庫中存儲有與不同第一標(biāo)識相對應(yīng)的處理方式;在判斷出異常信息不具有第一標(biāo)識的情況下,調(diào)用預(yù)設(shè)處理方式處理異常信息。
具體地,對應(yīng)以ServiceException進(jìn)行標(biāo)注的方式,主要是判斷異常信息中是否具有ServiceException,如果判斷為ServiceException,可以將該異常信息封裝為FaultException<ServiceException>,并查詢與該ServiceException對應(yīng)的處理方式,并按照查詢到的處理方式處理異常信息。如果不是,可以說明該異常信息不是服務(wù)約定的異常,是不期望發(fā)生的異常,這樣的異常不能直接暴露給客戶。因此這里將異常詳細(xì)信息進(jìn)行屏蔽,不讓用戶看到這些異常詳細(xì)信息,一方面用戶沒有必要看到這些信息,另一方面避免因?yàn)檫@些信息泄漏系統(tǒng)內(nèi)部實(shí)現(xiàn),造成可能的安全隱患。當(dāng)然,如果異常信息中不具有ServiceException,還可以創(chuàng)建新的ServiceException,Type為系統(tǒng)異常,Message為系統(tǒng)錯誤,相當(dāng)于在該異常信息再次出現(xiàn)時(shí),便不再是從未出現(xiàn)過的異常,通過添加的ServiceException則可以調(diào)用相應(yīng)的處理方式。
其中,對于具ServiceException的異常信息,客戶端收到該異常信息后,根據(jù)異常類別進(jìn)行有針對性的操作。比如針對需要登錄錯誤,跳轉(zhuǎn)到登錄界面。其他大部分錯誤類別是彈出對話框,顯示異常信息。
可選地,本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理方法還包括:添加第二標(biāo)識至服務(wù),其中,在服務(wù)被調(diào)用時(shí),通過代理執(zhí)行服務(wù)包括:在具有第二標(biāo)識的服務(wù)被調(diào)用時(shí),通過代理執(zhí)行具有第二標(biāo)識的服務(wù)。第二標(biāo)識用于標(biāo)記需要調(diào)用代理的服務(wù)。
即,在面向服務(wù)架構(gòu)的服務(wù)中注入標(biāo)記,后續(xù)當(dāng)注入標(biāo)記的服務(wù)被調(diào)用時(shí),都會委托給代理,由代理執(zhí)行服務(wù)方法的調(diào)用。在本申請實(shí)施例中,可以以在服務(wù)所屬的類中創(chuàng)建與代理相關(guān)聯(lián)的第二標(biāo)識的方式,來實(shí)現(xiàn)添加第二標(biāo)識至服務(wù)。比如:可以在第二標(biāo)記中為服務(wù)實(shí)例創(chuàng)建代理,對服務(wù)實(shí)例的方法調(diào)用都被委托給代理。具體的,可以定義繼承自ProxyAttribute類,在該類的CreateInstance方法中創(chuàng)建上面定義的代理。
通過以上描述可以看出,本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理方法, 實(shí)現(xiàn)了將服務(wù)方法執(zhí)行都委托給代理,由代理統(tǒng)一執(zhí)行所有服務(wù)方法,并捕獲方法執(zhí)行過程中出現(xiàn)的異常,對異常進(jìn)行統(tǒng)一處理。
根據(jù)本發(fā)明實(shí)施例,還提供了一種面向服務(wù)架構(gòu)中服務(wù)的處理裝置。該面向服務(wù)架構(gòu)中服務(wù)的處理裝置可以執(zhí)行上述面向服務(wù)架構(gòu)中服務(wù)的處理方法,上述面向服務(wù)架構(gòu)中服務(wù)的處理方法也可以通過該面向服務(wù)架構(gòu)中服務(wù)的處理裝置實(shí)施。
圖2是根據(jù)本申請實(shí)施例的面向服務(wù)架構(gòu)中服務(wù)的處理裝置的示意圖。如圖2所示,該面向服務(wù)架構(gòu)中服務(wù)的處理裝置主要包括執(zhí)行單元10、第一獲取單元20和處理單元30,其中:
執(zhí)行單元10用于在服務(wù)被調(diào)用時(shí),通過代理執(zhí)行服務(wù),即,在面向服務(wù)架構(gòu)中的服務(wù)被調(diào)用時(shí),不直接執(zhí)行服務(wù)方法,而是將調(diào)用委托給代理,通過代理來執(zhí)行服務(wù)方法。
第一獲取單元20用于獲取代理執(zhí)行服務(wù)過程中的異常信息。代理執(zhí)行服務(wù)方法過程中,捕獲執(zhí)行過程中遇到的異常(即錯誤),當(dāng)捕獲到異常后,可以先將異常記錄到日志中。
處理單元30用于根據(jù)異常信息的類別處理異常信息。由于通過代理執(zhí)行服務(wù),相當(dāng)于將服務(wù)方法的執(zhí)行權(quán)限轉(zhuǎn)交給代理,因此,在獲取到代理執(zhí)行服務(wù)過程中的異常信息后,需要代理進(jìn)一步根據(jù)異常信息的類別來對異常信息進(jìn)行處理。一般而言,面向服務(wù)架構(gòu)中,通過會出現(xiàn)的異常包括如下類別:網(wǎng)絡(luò)超時(shí),系統(tǒng)錯誤,業(yè)務(wù)邏輯錯誤,非法參數(shù),實(shí)體錯誤,查詢錯誤,重復(fù)配置,配置不存在,實(shí)體有依賴,需要登錄,用戶名或密碼錯誤,權(quán)限不足,Profile不存在,帳號不存在和Solution不存在。
本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理裝置,通過代理執(zhí)行服務(wù),并進(jìn)行異常信息的獲取和處理,實(shí)現(xiàn)了在執(zhí)行異常信息處理過程中,不需要在服務(wù)方法中調(diào)用這些異常處理方法,進(jìn)而避免服務(wù)方法調(diào)用與本身業(yè)務(wù)邏輯不相關(guān)的調(diào)用,并且通過代理執(zhí)行服務(wù)的方式,將異常信息交由代理處理,達(dá)到了統(tǒng)一調(diào)用代理來執(zhí)行異常處理,解決了現(xiàn)有技術(shù)中服務(wù)方法中經(jīng)常包含不相關(guān)調(diào)用的技術(shù)問題,實(shí)現(xiàn)了通過代理統(tǒng)一執(zhí)行服務(wù)方法,并對執(zhí)行過程中的異常進(jìn)行統(tǒng)一處理的效果。
可選地,本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理裝置還包括第二獲取單元、提取單元、分類單元和第一添加單元,在執(zhí)行單元10通過代理執(zhí)行服務(wù)之前,第二獲取單元用于獲取面向服務(wù)架構(gòu)調(diào)用服務(wù)的歷史日志;提取單元用于提取歷史日志中記錄的異常信息;分類單元用于對提取單元提取到的異常信息進(jìn)行分類;第一添加單元用于對每一個(gè)分類后的異常信息添加第一標(biāo)識。
在本申請實(shí)施例中,可以對面向服務(wù)架構(gòu)中所出現(xiàn)的異常信息進(jìn)行標(biāo)注,比如可以定義ServiceException,ServiceException包括Type屬性和Message屬性,其中,Type屬性表明異常類別,Message屬性是異常說明,在執(zhí)行服務(wù)過程中,如果捕獲到異常信息,主要是根據(jù)異常信息中的ServiceException來確定異常信息的類別。
可選地,處理單元30主要包括判斷模塊、第一處理模塊和第二處理模塊,其中,判斷模塊用于判斷異常信息是否具有第一標(biāo)識,其中,第一標(biāo)識用于標(biāo)識異常信息的類別;第一處理模塊用于在判斷模塊判斷出異常信息具有第一標(biāo)識的情況下,從面向服務(wù)架構(gòu)的數(shù)據(jù)庫中查詢與第一標(biāo)識對應(yīng)的處理方式,并按照查詢到的處理方式處理異常信息,其中,面向服務(wù)架構(gòu)的數(shù)據(jù)庫中存儲有與不同第一標(biāo)識相對應(yīng)的處理方式;第二處理模塊用于在判斷模塊判斷出異常信息不具有第一標(biāo)識的情況下,調(diào)用預(yù)設(shè)處理方式處理異常信息。
具體地,對應(yīng)以ServiceException進(jìn)行標(biāo)注的方式,主要是判斷異常信息中是否具有ServiceException,如果判斷為ServiceException,可以將該異常信息封裝為FaultException<ServiceException>,并查詢與該ServiceException對應(yīng)的處理方式,并按照查詢到的處理方式處理異常信息。如果不是,可以說明該異常信息不是服務(wù)約定的異常,是不期望發(fā)生的異常,這樣的異常不能直接暴露給客戶。因此這里將異常詳細(xì)信息進(jìn)行屏蔽,不讓用戶看到這些異常詳細(xì)信息,一方面用戶沒有必要看到這些信息,另一方面避免因?yàn)檫@些信息泄漏系統(tǒng)內(nèi)部實(shí)現(xiàn),造成可能的安全隱患。當(dāng)然,如果異常信息中不具有ServiceException,還可以創(chuàng)建新的ServiceException,Type為系統(tǒng)異常,Message為系統(tǒng)錯誤,相當(dāng)于在該異常信息再次出現(xiàn)時(shí),便不再是從未出現(xiàn)過的異常,通過添加的ServiceException則可以調(diào)用相應(yīng)的處理方式。
其中,對于具ServiceException的異常信息,客戶端收到該異常信息后,根據(jù)異常類別進(jìn)行有針對性的操作。比如針對需要登錄錯誤,跳轉(zhuǎn)到登錄界面。其他大部分錯誤類別是彈出對話框,顯示異常信息。
可選地,本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理裝置還包括第二添加單元,該第二添加單元用于添加第二標(biāo)識至服務(wù),其中,執(zhí)行單元包括執(zhí)行模塊,該執(zhí)行模塊用于在具有第二標(biāo)識的服務(wù)被調(diào)用時(shí),通過代理執(zhí)行具有第二標(biāo)識的服務(wù)。第二標(biāo)識用于標(biāo)記需要調(diào)用代理的服務(wù)。
即,在面向服務(wù)架構(gòu)的服務(wù)中注入標(biāo)記,后續(xù)當(dāng)注入標(biāo)記的服務(wù)被調(diào)用時(shí),都會委托給代理,由代理執(zhí)行服務(wù)方法的調(diào)用。在本申請實(shí)施例中,第二添加單元主要包括創(chuàng)建模塊,該創(chuàng)建模塊用于在服務(wù)所屬的類中創(chuàng)建與代理相關(guān)聯(lián)的第二標(biāo)識,來實(shí)現(xiàn)添加第二標(biāo)識至服務(wù)。比如:可以在第二標(biāo)記中為服務(wù)實(shí)例創(chuàng)建代理,對服務(wù)實(shí)例 的方法調(diào)用都被委托給代理。具體的,可以定義繼承自ProxyAttribute類,在該類的CreateInstance方法中創(chuàng)建上面定義的代理。
通過以上描述可以看出,本申請實(shí)施例所提供的面向服務(wù)架構(gòu)中服務(wù)的處理裝置,實(shí)現(xiàn)了將服務(wù)方法執(zhí)行都委托給代理,由代理統(tǒng)一執(zhí)行所有服務(wù)方法,并捕獲方法執(zhí)行過程中出現(xiàn)的異常,對異常進(jìn)行統(tǒng)一處理。
所述面向服務(wù)架構(gòu)中服務(wù)的處理裝置包括處理器和存儲器,上述執(zhí)行單元10、第一獲取單元20和處理單元30等均作為程序單元存儲在存儲器中,由處理器執(zhí)行存儲在存儲器中的上述程序單元來實(shí)現(xiàn)相應(yīng)的功能。
處理器中包含內(nèi)核,由內(nèi)核去存儲器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個(gè)或以上,通過調(diào)整內(nèi)核參數(shù)來統(tǒng)一處理異常。
存儲器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM),存儲器包括至少一個(gè)存儲芯片。
本申請還提供了一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),適于執(zhí)行初始化有如下方法步驟的程序代碼:在服務(wù)被調(diào)用時(shí),通過代理執(zhí)行服務(wù);獲取代理執(zhí)行服務(wù)過程中的異常信息;以及根據(jù)異常信息的類別處理異常信息。
上述本申請實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本申請的上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本申請各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以 是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本申請的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本申請的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請的保護(hù)范圍。