2016-05-15 66 views
1

作爲一個程序員,當我使用容器管理的事務,我感興趣的應該是什麼事務屬性,即唯一需要的,REQUIRED_NEW等如何在EJB容器內部管理事務?

有人問我最近怎麼樣容器管理所有這些交易,即什麼是線程使用什麼數據結構來追蹤所有正在進行的交易?我沒有閱讀任何描述這一點的文件。你可以請嘗試解釋這個或分享任何教程相關的鏈接?

非常感謝您的時間來閱讀我的問題!

+1

您可以下載來源和調試 –

回答

2

通常,EJB容器本身並不實現事務管理。相反,它使用TransactionManager,通常在一個單獨的模塊中實現。根據具體實現,可能根本沒有任何數據結構:EJB代理可以像調用getTransaction,掛起或根據需要開始(取決於事務屬性)一樣簡單,將Transaction存儲在本地變量中,調用實際的bean實例,然後調用commit,rollback或resume。

TransactionManager幾乎可以肯定地使用某種類型的ThreadLocal來存儲當前事務,並且它可能使用某種輔助線程來跟蹤事務超時。所使用的特定數據結構將根據實施情況在很大程度上變化。

(我從來沒有碰到過描述事務管理器的內部工作的任何文件。看着一個開源實現,可能給的是什麼,可以使用一種數據結構的一些想法。)