WebSphere Adapter 客戶定製的錯誤繫結
簡介: WebSphere Adapter 6.2 中引入了一個非常重要的功能 — 錯誤繫結。通過錯誤繫結, Adapter 能夠對異常(Exception)實現不同的處理流程。本文首先介紹錯誤繫結的工作機制,然後講述了 WebSphere Adapter 預定義的一些錯誤繫結以及侷限,最後以 JDBC Adapter 為例項講述瞭如何配置客戶定製的錯誤繫結。
關於 WebSphere Adapter 錯誤繫結原理與應用,可以參加作者的另外一篇文章(連結如下:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0912_wuwei_adaptererror/),本文中,作者將簡單的描述一下為什麼客戶需要錯誤繫結,WebSphere Adapter 目前所支援的錯誤繫結,客戶定製的錯誤繫結的意義與實現方法。
錯誤繫結是 WebSphere Adapter 提供的一種與程式語言無關的處理業務邏輯異常的機制,通過此錯誤處理機制,能夠將執行時異常和業務邏輯異常進行區分,並給應用系統的呼叫者提供更為有意義的錯誤資料。
錯誤繫結的意義在於,可以提供給客戶一種機制來區分執行時異常和業務邏輯異常,使用者處理業務邏輯異常時不需要去檢查冗長的執行時異常日誌,而是直接處理返回的錯誤業務物件。基於這種機制,可以大大減少使用者處理異常的代價,並且所返回的錯誤資料更加具體,更有意義。
在本章節中,我們將用 WebSphere Adapter for JDBC 為例子,簡單回顧一下錯誤繫結的處理過程,請見下圖 1:
如上圖所示,當 WebSphere Adapter 遇到異常 (Exception) 時,WebSphere Adapter 先呼叫錯誤選擇器 (Fault Selector) 判斷此異常是否為 WebSphere Adapter 支援的錯誤,如果不是,則不做處理,如果是,則呼叫錯誤選擇器生成對應的錯誤名字 (Fault Name)。然後根據錯誤名字找到對應的錯誤繫結型別 (Fault Binding Type),最後呼叫錯誤繫結型別生成相應的錯誤資料 (Fault Data),並將此錯誤資料返回給呼叫者。
由此可見,使用者可以自定義錯誤選擇器來判斷什麼型別的異常應該被處理為錯誤,同時也可以自定義錯誤繫結實現在錯誤物件中放置定製的錯誤資訊。
WebSphere Adapter 作為一個與各種 EIS 系統進行連線的產品,支援兩大類的產品,一類稱作 Application Adapter,用來連線諸如 SAP,Siebel,Oracle EBS 等不同的應用系統,另外一類稱為 Technology Adapter,用於通過 JDBC,Email,FTP 等標準與相應的系統互動。各個不同的 Adapter 在其錯誤繫結上有某些相似之處。基於此種考慮,WebSphere Adapter 在其基礎實現類中定義了 5 種通用的錯誤繫結,每個 Adapter 既可以直接使用這 5 種錯誤繫結,也可以很方便的定義自己特殊的錯誤繫結。WebSphere 基礎實現類中定義的錯誤繫結,是最常見錯誤型別,除了這 5 個錯誤繫結之外,每個 Adapter 還自己擴充套件了一些預定義好的錯誤繫結,來滿足自身 adapter 對於錯誤處理的需要,以 JDBC Adapter 為例,擴充套件了 IntegrityConstraintFault,ObjectNotFoundFault,UniqueConstraintFault 3 個錯誤繫結,用以滿足 JDBC Adapter 的錯誤處理的需要。
下表 1 列舉了 WebSphere Adapter 基礎實現類中定義的錯誤繫結的型別:
錯誤型別名稱 | 錯誤型別實現類 | 錯誤型別業務物件 |
---|---|---|
DUPLICATE_RECORD | DuplicateRecordException | DuplicateRecordFault |
MATCHES_EXCEEDED_LIMIT | MatchesExceededLimitException | MatchesExceededLimitFault |
MULTIPLE_MATCHING_RECORDS | MultipleMatchingRecordsException | MultipleMatchingRecordsFault |
RECORD_NOT_FOUND | RecordNotFoundException | RecordNotFoundFault |
MISSING_DATA | MissingDataException | MissingDataFault |
通過前面的章節讀者已經可以發現,每個 Adapter 預先定義好的錯誤繫結數量都是有限的,這樣就會帶來一個問題,WebSphere Adapter 預定義的錯誤繫結的型別不能滿足客戶的所有需求,例如:客戶在訪問資料庫時遇到 Table Locked 這個 SQL 錯誤資訊,顯然屬於業務層面的異常,但是目前的 WebSphere Adapter for JDBC 就不能夠將該型別的異常按照錯誤繫結的機制進行處理,客戶需要按照一般的執行時異常進行處理,造成很大的不便。
問題在於,每個客戶所期望的錯誤繫結型別都不一致,對於 WebSphere Adapter 而言,很難預先定義好所有的錯誤繫結型別來供使用者使用,所以需要有一種機制讓客戶自己定製相應的錯誤繫結,這就是我們為什麼需要客戶定製的錯誤繫結。
從上面的分析可以看出,實現客戶定製的錯誤繫結所需要的工作是:
1)定製的錯誤業務物件。
2)定製錯誤選擇器。
3)定製錯誤繫結實現類
4)配置定製的錯誤選擇器,錯誤繫結,錯誤業務物件到需要該定製錯誤的功能操作上
下面的章節將以 WebSphere Adapter for JDBC 為例,實現一個使用者定製的錯誤繫結。
使用者場景中,使用 WebSphere Adapter for JDBC 支援的儲存過程業務物件從資料庫中提取資料。使用者使用的儲存過程需要訪問多張資料表,由於有併發的應用程式也在同時訪問這些資料表,因此在呼叫儲存過程的過程中有時候會得到“Record is already locked”這類 SQL 異常。使用 JDBC Adapter 預設提供的錯誤繫結,該類 SQL 異常不能被處理為錯誤,只能當作執行時異常處理,會導致使用者的異常處理程式碼非常複雜。因此使用者需要實現自己定製的錯誤繫結,將這類 SQL 異常處理為錯誤業務物件,以簡化業務流程處理。
根據前文所述,客戶的第一個工作是定義錯誤業務物件,在這個例項中,為了簡單起見,我們新定義的錯誤業務物件直接繼承於 Adapter 基礎實現類定義的基礎錯誤業務物件,新定義的錯誤業務物件命名為 myFault,定義清單如下:
相關文章
- Websphere Adapter 中錯誤處理的原理與應用WebAPT
- EXP客戶端版本差異造成的錯誤客戶端
- mysql客戶端連線的幾個常見錯誤MySql客戶端
- WebSphere客戶端遷移的一般問題Web客戶端
- 七、Spring Boot 錯誤處理原理 & 定製錯誤頁面Spring Boot
- 除錯 JEE 企業級應用 - 使用 WebSphere Integration Developer 整合測試客戶端除錯WebDeveloper客戶端
- 怎樣在websphere環境外的客戶端呼叫webshphere的ejb?Web客戶端
- 執行news例子說ejb沒有繫結錯誤
- WebSphere客戶端遷移的常見問題解決二Web客戶端
- Oracle客戶端非預設路徑安裝出現的錯誤Oracle客戶端
- 禁止客戶端 誤 truncate table客戶端
- gmail客戶端設定AI客戶端
- 用 WebSphere CloudBurst 實現定製: 使用指令碼包定製超級模式WebCloud指令碼模式
- [WCF安全系列]繫結、安全模式與客戶端憑證型別:總結篇模式客戶端型別
- React 中 呼叫 lodash.debounce 不錯誤繫結 this 解決方案React
- WebSphere Adapter和WebSphere Process Server為SAP構建RESTful整合,第1 部分WebAPTServerREST
- 禁止客戶端誤刪除tablespace客戶端
- 客戶主記錄的結構
- SQLDeloper IO 錯誤: The Network Adapter could not establish the connectionSQLAPT
- DropDownList設定客戶端事件客戶端事件
- Nacos - 客戶端心跳續約及客戶端總結客戶端
- vue2.0 練習中報錯問題處理(資料繫結錯誤)Vue
- Flutter 新聞客戶端 - 12 採用 sentry 平臺收集錯誤Flutter客戶端
- NetSuite CRM客戶關係管理系統及其定製化開發UI
- win10系統設定登入錯誤次數及鎖定賬戶的方法Win10
- rsync 客戶端同步的時候報錯客戶端
- 解決一切listview或者adapter等類似的資料錯誤,點選錯誤的問題。ViewAPT
- oracle客戶端NLS_LANG的設定Oracle客戶端
- SonicWALL Global VPN客戶端連線出現Failed to open the IPSec driver錯誤客戶端AI
- 客戶資料庫升級後出現ORA-30004錯誤資料庫
- Swoole 使用on()繫結事件報錯事件
- php連結nsq客戶端PHP客戶端
- 胖客戶端程式總結客戶端
- js 定時器 繫結classJS定時器
- ora-01031錯誤(在客戶端以SYS使用者登陸報錯)客戶端
- TNS-12560: TNS:protocol adapter error 錯誤解決ProtocolAPTError
- Android效能優化之UncaughtExceptionHandler定製自己的錯誤日誌系統Android優化Exception
- 微軟配置錯誤導致大量敏感資料洩露,全球客戶受影響微軟