如何使用EJB事務屬性控制事務的範圍

來源:互聯網
上載者:User

EJB事務屬性可以是如下幾個值之一:

Required,RequiresNew,Mandatory,NotSupported,Supports,Never.

1、Required

如果用戶端正運行在某個EJB事務中運行,且調用了EJB中的方法,則該方法在用戶端的EJB事務中運行 。如果用戶端沒有與某個EJB事務相關聯,則容器在運行方法前先啟動一個新EJB事務。Required屬性適合 絕大多數EJB事務,建議把它設定成預設的,至少在開發階段。EJB事務屬性是聲明式的,後期也可以很容 易的修改。

2、RequiresNew

如果用戶端運行在某個EJB事務中,並且調用了EJB中的方法,則容器將採用如下操作:

(1) 掛起用戶端EJB事務

(2) 啟動一個新EJB事務

(3) 把調用委派給方法

(4) 方法執行完畢之後,回複用戶端EJB事務

如果用戶端沒有與某個EJB事務相關聯,則容器在運行方法前先啟動一個新EJB事務。如果確保方法始 終在一個新EJB事務中運行,應該使用RequiresNew屬性。

3、Mandatory

如果用戶端運行在某個EJB事務中且調用了EJB中的方法,則該方法運行在用戶端EJB事務中。如果客戶 端沒有與某個EJB事務相關聯,則容器拋出TransactionRequiredException。如果EJB中的方法必須使用客 戶端的EJB事務,則應該使用Mandatory屬性。

4、NotSupported

如果用戶端在某個EJB事務中運行且調用了EJB中的方法,則容器先掛起用戶端EJB事務,調用方法結束 之後回複用戶端EJB事務。如果用戶端沒有與某個EJB事務相關聯,則容器在運行方法前不啟動EJB事務.對 於不需要EJB事務的方法,可以考慮該屬性。EJB事務需要一定的開銷,NotSupported屬性可以提高效能。

5、Supports

如果用戶端運行在某個EJB事務中且調用了EJB中的方法,則該方法運行在用戶端的EJB事務中。如果客 戶端沒有與某個EJB事務關聯,則容器運行方法前不啟動新的EJB事務。

6、Never

如果用戶端運行在某個EJB事務中且調用了EJB中的方法,則容器拋出RemoteException異常。如果客戶 端沒有與某個EJB事務關聯,則容器運行方法之前不啟動新的EJB事務。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.