思考Spring攔截技術(shù)與Web Service異常處理的結(jié)合
通常,良好的架構(gòu)都會(huì)有很好的異常處理模式,Web Service也不例外。例外的是,當(dāng)你的項(xiàng)目比較龐大的時(shí)候,你的業(yè)務(wù)方法可能很多并且你并不了解他們的內(nèi)部實(shí)現(xiàn)。
作為一個(gè)優(yōu)秀的Web Service架構(gòu)師,你需要解決Web服務(wù)跟這些業(yè)務(wù)異常的結(jié)合問題。
現(xiàn)實(shí)是我們都不想關(guān)心這些業(yè)務(wù)類的實(shí)現(xiàn),盡管這些異常從Java類拋出,并且Web服務(wù)必須處理這些
異常,起碼,你需要讓客戶端知道:web服務(wù)端拋出異常。
以XFire為例, 假設(shè)有一個(gè)Web服務(wù)A和一個(gè)調(diào)用A的客戶端B
A服務(wù)端 B客戶端
當(dāng)B->A發(fā)起一個(gè)Web服務(wù)請(qǐng)求,A拋出異常的時(shí)候,會(huì)直接new XFireFault并扔向XFire客戶端。
解耦思路帶領(lǐng)下,應(yīng)該先將異常處理剝離出來。
于是,有
A服務(wù)-A異常處理handler? B客戶端-B異常處理handler
這樣,從架構(gòu)的角度,A/B均無需考慮異常問題。
XFire客戶端可以通過addFaultHandler來增加異常處理,XFire服務(wù)端則可以通過典型的AOP異常攔截來隔離
業(yè)務(wù)邏輯和Web服務(wù)之間的紐帶。
posted on 2006-08-26 00:24 david.turing 閱讀(3305) 評(píng)論(2) 編輯 收藏 所屬分類: SOA/WebService