EJB事務處理

2021-08-30 03:38:53 字數 876 閱讀 1165

在session bean中跨資料庫的事務處理的解決,我又學習了一些資料,覺得在ejb中異常的處理還是有許多要注意的地方。

在ejb中通常分兩類異常,一類為系統異常,一類為應用程式異常(這裡暫不包含jvm的 異常,對 jvm 異常我們一般也無能為力),對於應用程式的異常,ejb容器不會去自動處理,這就象我在上篇blog中說的,當我們在進行跨資料庫操作時丟擲了 sqlexception異常,容器不會管,所以做不到事務的回滾,我們必須要手動的呼叫sessioncontext的方法來讓容器處理異常,達到事務 的一致性;而對於系統異常,ejb容器是會自動去處理的,即使我們對它進行了catch,ejb容器仍然會知道,會去處理,所以這給了我們處理跨資料庫操 作維持事務的第二種方法,就是我們在ejb方法中捕獲我們實際運算元據庫的異常然後重新丟擲乙個系統異常,例如ejbexception,這樣容器就會察 覺接手處理,從而達到跨資料庫事務的自動維護。在這裡有個細節就是我要是在業務邏輯處理中丟擲ejbexception,而在ejb方法中手動進行了 catch,則此時容器是不會覺察到系統異常的,但如果我仍在dao中丟擲ejbexception,我在session bean中呼叫它,竟然不用手寫catch,容器會自動捕獲進行處理,並且能做到事務的維護,當然我在dao中丟擲乙個ejbexception會顯的極 不合適;所以最好還是在ejb方法中捕獲dao丟擲的應用程式異常,而在catch中丟擲乙個ejbexception,讓容器去處理,事實上這時你是不 能再在ejb方法中去catch這個ejbexception了,容器不讓你這樣寫**。

可見ejb容器的異常處理還是挺完備的(有點象廢話),對於其完善的異常處理和聲名性事務管理還要再學習學習。

慢慢發現ejb還是有很多值得學習和使用的地方,並非現在所謂的輕量級解決方案所說的一無事處,,關於其在分布式系統中的應用有時間真應該花點時間好好研究一下!!

PB事務處理

1 資料視窗更新,只要dberror有錯誤,而事先沒有做過任何commit工作,那麼rollback可以回滾到上次commit位置,即上次commit後所有的資料將被回滾。2 如果是直接寫入sql語句,只要資料庫出現錯誤,那麼rollback可以回滾到上次commit的位置,即上次commit後所有...

MySQL事務處理

start transaction,commit和rollback語法 start transaction begin work commit work and no chain no release rollback work and no chain no release set autocom...

ASP事務處理

asp事務處理。測試資料庫為sql server,伺服器為本機,資料庫名為test,表名為a,兩個欄位id int 主鍵標識,num int set conn server.createobject adodb.connection strconn provider sqloledb.1 persi...