EJB3的異常處理問題
這個問題是我在Jboss的SEAM的message例子裡面遇到的.
情況這樣:
程式由JSF呼叫SessionBean呼叫EntityManager去刪除一個實體物件。
而同時我是先從資料庫中刪除了這條記錄,並且期待捕獲到一個併發錯誤。
SessionBean程式碼片斷如下:
try {
//刪除一個ejb3的實體類message
em.remove(message);
message = null;
} catch (Exception e) {//這個捕獲沒有任何意義.
e.printStackTrace();//事實上資料庫裡面已經沒有這條記錄了,我已經在外部把它刪除掉,但是一般資料庫執行刪除語句沒有返回錯誤.所以沒有進入.
return null;
}
System.out.println("pass");//正常執行
但是最後,Jboss的EJB3服務是由AOP實現的,SessionBean的函式支援事務,函式執行完,在他提交的時候由hibernate的Commit函式去檢測,發現了併發錯誤。這時候程式碼無法進行任何處理。error return 0 expert is 1,希望返回1,但是實際上沒有刪除任何行.
我想問一下彭老師,這是EJB3的介面定義有問題,因為它沒有返回異常,還是AOP的實現上存在缺陷呢?如何捕獲這類異常,如果他是由AOP實現的.
情況這樣:
程式由JSF呼叫SessionBean呼叫EntityManager去刪除一個實體物件。
而同時我是先從資料庫中刪除了這條記錄,並且期待捕獲到一個併發錯誤。
SessionBean程式碼片斷如下:
try {
//刪除一個ejb3的實體類message
em.remove(message);
message = null;
} catch (Exception e) {//這個捕獲沒有任何意義.
e.printStackTrace();//事實上資料庫裡面已經沒有這條記錄了,我已經在外部把它刪除掉,但是一般資料庫執行刪除語句沒有返回錯誤.所以沒有進入.
return null;
}
System.out.println("pass");//正常執行
但是最後,Jboss的EJB3服務是由AOP實現的,SessionBean的函式支援事務,函式執行完,在他提交的時候由hibernate的Commit函式去檢測,發現了併發錯誤。這時候程式碼無法進行任何處理。error return 0 expert is 1,希望返回1,但是實際上沒有刪除任何行.
我想問一下彭老師,這是EJB3的介面定義有問題,因為它沒有返回異常,還是AOP的實現上存在缺陷呢?如何捕獲這類異常,如果他是由AOP實現的.
相關文章
- .net異常處理的效能問題
- 異常的處理
- 異常-throws的方式處理異常
- 異常篇——異常處理
- SVN異常處理——禁止訪問
- 異常處理
- 使用@FeignClient中的fallback屬性處理介面呼叫異常問題client
- JSP 異常處理如何處理?JS
- [轉載] Java異常處理習題Java
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理
- SpringMVC異常處理SpringMVC
- 異常處理機制(二)之異常處理與捕獲
- 異常-try...catch的方式處理異常1
- 異常-try...catch的方式處理異常2
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- 3大問題!Redis快取異常及處理方案總結Redis快取
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- NodeJS之異常處理NodeJS
- JAVA_異常處理Java
- React Native 異常處理React Native
- Spring Boot 異常處理Spring Boot
- PHP 核心 - 異常處理PHP
- GRpc異常處理FilterRPCFilter
- python異常捕捉處理Python