ejb事務屬性可以具有以下幾個值:
required
如果執行事務中的客戶呼叫企業bean的方法,則方法執行於客戶的事務中。如果客戶沒有關聯到事務中,容器會在執行入方法之前啟動乙個新的事務。
required屬性是cmt中企業bean所有的事務屬性中隱含的事務屬性。一般除非你需要過載其他的事務屬性,否則不需要指定required屬性。因為事務屬性是宣告性的,你可以隨後很簡單地更改它。
requiresnew
如果客戶端執行在事務裡,並且呼叫了企業bean的方法,容器就會執行下列步驟:
1,掛起客戶端事務
2,啟動乙個新的事務
3,委派這個方法的呼叫
4,在方法結束後重新恢復客戶斷事務
如果客戶端沒有關聯到乙個事務中,容器就會在執行這個方法之前的啟動乙個新的事務。
如果你想確保這個方法總是執行在乙個新的事務中,你就可以用requiresnew屬性。
mandatory
如果執行於事務中的客戶呼叫了企業bean的方法,方法在客戶的事務中執行。如果客戶沒有關聯到事務中,容器就會丟擲transactionrequiredexception。
如果企業bean方法必須用客戶事務則採用mandatory屬性。
notsupported
如果執行在乙個事務裡的客戶呼叫了企業bean的方法,容器會在呼叫之前中止客戶事務。在呼叫結束後,容器會恢復客戶事務。
如果客戶沒有關聯到乙個事務中,容器不會在執行到方法前啟動乙個新的事務。
用notsupported屬性標識不需要事務的方法。因為事務會帶來更高的效能支出,所以這個屬性可以提高效能。
supports
如果執行在事務中的客戶呼叫了企業bean方法,這個方法執行於客戶事務中。如果客戶沒有關聯到事務中,容器不會在執行這個方法之前啟動乙個新的事務。
因為方法的事務行為是多變的,所以你要小心使用supports屬性。
never
如果執行在事務中的方法呼叫了企業bean的方法,容器會丟擲remoteexception。如果客戶沒有關聯到事務,則容器不會在執行入方法之前啟動乙個新的事務。
EJB事務管理服務
最有用的容器服務可能就是事務管理服務,當應用出現失敗或異常時,它保證了資料庫的完整性。你可以簡單地將為乙個pojo 方法申明它的事務屬性。這樣容器就可以在合適的上下文中執行這個方法。最常見的事務是定義在session bean 的方法上,方法中所有的資料庫操作只有在方法正常退出時才會提交,如果方法丟...
EJB事務處理
在session bean中跨資料庫的事務處理的解決,我又學習了一些資料,覺得在ejb中異常的處理還是有許多要注意的地方。在ejb中通常分兩類異常,一類為系統異常,一類為應用程式異常 這裡暫不包含jvm的 異常,對 jvm 異常我們一般也無能為力 對於應用程式的異常,ejb容器不會去自動處理,這就象...
EJB 事務注意事項
在上篇文章我們提到 當執行多個事務的時候 並且這些事務方式資料庫中的相同資料會出現一系列的併發問題 這些問題彙總起來總共有以下幾類.丟失更新 撤銷乙個事務時,把其他事務已提交的更新資料覆蓋。髒讀 乙個事務讀到另乙個事務為提交的更新資料。不可重複讀 乙個事務讀到另乙個事務已提交的更新資料。幻像讀 乙個...