2011-08-10 31 views
0

我有產生MyResourceManager一個POJO生產者。垃圾處理器何時執行?

@TraderResouceManager @RequestScoped公共MyResourceManager(){... ...}

MyResourceManger注入SLSB

@Inject @TraderDB私人MyResourceManager RM;

的處理器是一個如下所示

公共無效接近(@Disposes @TraderResouceManager MyResourceManager RM){ rm.close(); }

問題

什麼時候結束()執行?

是否關閉交易前或結束交易後?

編輯:這個問題或許需要更多的解釋。讓我們拿一個數據庫連接比喻。

我用@RequestScoped創建一個@producer,使用pojo爲每個請求創建一個新的連接。

我需要做的是處理在請求端的連接。 該連接由其他bean共享(現在稱爲SLSB)。在給定的請求中,可能有許多bean在事務內部運行。 因此,另外我需要在所有事務邏輯關閉後關閉連接。

問題 當我使用容器管理的事務時,我能用上述代碼實現這種行爲嗎?

回答

0

關閉()噹噹前請求被終止,因爲你的生產者方法是請求範圍的執行。如果您從JSF請求或servlet調用SLSB,那麼這些請求的生命週期將決定何時處理MyResourceManager。如果您的SLSB是遠程的,一旦呼叫返回就會被終止。

+0

請參閱我的問題編輯。 –