2013-12-20 50 views
0

關於EJB 3.0事務傳播,我有以下基本問題。EJB 3.0事務傳播

這是我的場景:EJB服務 - > POJO - > EJB Dao。由於組織內的一些限制,我需要堅持這種架構。

因此,在EJB服務Tx啓動時,我直接指向返回本地EJB DAO的POJO。現在在EJB DAO的方法中,我注入了持久化上下文和實體管理器,並且方法已用TransactionAttribute(Required)註解。所以我的問題是,如果在DAO EJB中將使用服務EJB的事務上下文,或者由於其間的POJO層,它將啓動新的事務。

任何幫助,將不勝感激。

Thanks..Vijay

回答

1

由於交易從「EJB服務」開始,就被傳播到了「EJB DAO」。事務被設置爲一種局部線程(至少在概念上,我不知道實現如何實現)。這是除非POJO執行任何操作,例如在新創建的線程中運行DAO(對於手動創建的線程 - 對Java EE不適用)。

+0

謝謝Nikos。 POJO的職責主要是完成一些內存中的邏輯並使用DAO層進行持久化。爲此,它通過上下文查找檢索本地引用並調用其上的方法。所以我想它應該沒問題 – user2214717

+0

是的,它會(實際上我添加了線程創建的東西,僅僅是爲了覆蓋這個異常情況)。 –

+0

在新創建的線程中運行*對於Java EE不適用。但是,您必須使用容器管理線程池中的線程,以便諸如事務,安全上下文等可以正確傳播。 –