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異常處理的效能問題
- HIVEMapJoin異常問題處理總結Hive
- Linux記憶體異常問題處理Linux記憶體
- crontab導致CPU異常的問題分析及處理
- 異常篇——異常處理
- 異常-throws的方式處理異常
- 異常處理
- 請問EJB容器如何處理異常
- [轉載] Java異常處理習題Java
- 異常處理與異常函式函式
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- Java 異常處理Java
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL
- Swift 異常處理Swift
- JS異常處理JS
- app異常處理APP
- Oracle 處理異常Oracle
- MySQL異常處理MySql
- 異常處理 (轉)
- 異常處理機制(二)之異常處理與捕獲
- RFT的異常處理方式
- 異常處理的反模式模式
- 使用@FeignClient中的fallback屬性處理介面呼叫異常問題client
- 異常-try...catch的方式處理異常1
- 異常-try...catch的方式處理異常2
- JSP 異常處理如何處理?JS
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- windows核心程式設計---未處理異常,向量化異常處理與C++異常Windows程式設計C++
- jmeter問題處理隨筆1 - CSV取值資料異常處理(包含"號,","號的情況)JMeter