在會話範圍的bean中,在web應用中的用戶操作的上下文中存儲掛起的執行列表是否安全,然後在會話結束時通過@Predestroy
註釋的方法可靠地執行這些操作(我的意思是,安全上下文@predestroy
方法沒有被稱爲&因此在某些情況下動作沒有被執行,所以!?)。使用@predestroy方法在會話結束時執行掛起的指令?
回答
您可能想要將您的邏輯移至HttpSessionListener實現(它是一個接口)。你會觸發sessionDestroyed事件(通過在你的具體實現中實現該方法)。 (我在當前產品中實現了一個作爲JMX bean來處理運行時的控制會話),這非常容易,也很適合處理這種事情。
TIA
'@ SessionScoped'託管bean的'@ Predestroy'註釋方法位於已由'HttpSessionListener#sessionDestroyed()'調用的JSF場景後面。所以我完全沒有看到它是如何有用和「更安全」的,用自制的實現代替它。 – BalusC 2012-08-16 16:17:31
沒有提供它作爲「更安全」,只是使它的語義目標。是的,有不止一種方式來對這隻貓進行皮膚處理,但是由於他在會話銷燬期間特別感興趣觸發了某些行爲/方面,因此將邏輯放入針對該行爲的bean中可能更有意義。如果他的回調需要在「正常操作」期間不需要的其他豆類/資源,注入它們以便它們在會話銷燬時可用,則可能構成對豆類的污染。再次,沒有顯示代碼,它必須在抽象中權衡。 – him 2012-08-21 16:59:24
它是完全安全的儲存待處理的執行或DB在@PreDestroy方法提交。在這種狀態下,託管bean不會被銷燬。因此,託管bean的狀態將與bean內部的常規方法調用相同。請參閱下面的文檔。
http://docs.oracle.com/javaee/6/tutorial/doc/gmgkd.html#gmghg
「準備一個managed bean的使用@PreDestroy註釋 爲一個managed bean的破壞準備銷燬指定生命週期回調方法,其發信號通知應用程序組件是將被摧毀
在託管bean類或其任何超類中,準備銷燬託管bean 在此方法中,執行任何在bean銷燬之前所需的清理,例如釋放資源該豆已被持有。
用javax.annotation.PreDestroy批註註釋該方法的聲明。 CDI開始破壞bean之前調用這個方法。」
- 1. 執行grails命令時,IntelliJ 11掛起
- 2. 如何在xfce會話結束時執行腳本
- 3. 會話結束時運行腳本
- 4. 使用wkhtmltopdf時,php shell執行會掛起
- 5. PHP - 無法結束會話
- 6. 如何在執行運行時命令後停止java掛起
- 7. SSIS在預執行時掛起-50%完整的sql命令
- 8. EJB 3.1的Singleton會話Bean @PreDestroy方法不叫
- 9. 執行會話超時指示?
- 10. 執行shell命令的獲取結果失敗/掛起
- 11. 在類定義結束時執行mixin方法
- 12. 頁面執行web方法時被掛起
- 13. 程序在執行時掛起
- 14. BCP任務在執行時掛起
- 15. C++程序在執行ntdll.dll時掛起
- 16. Paramiko在執行大型wget命令時掛起
- 17. 通過結構執行命令被掛起
- 18. PHP:ob_end_flush()結束會話
- 19. Win32 SETX命令有時會掛起
- 20. 指定要在許多函數結束時執行的動作
- 21. @PreDestroy方法不叫
- 22. 在父母上執行Angular指令方法時遇到問題
- 23. 會話結束時的PHP事件?
- 24. 使用Net :: SSH遠程SSH命令執行在特定命令中掛起
- 25. 使用Dask計算會導致執行掛起
- 26. HttpClient掛在socketRead0成功執行方法
- 27. jmeter運行調度程序持續時間,但在結束時掛起
- 28. 在結束編輯時執行操作
- 29. 臨時表在會話結束時不會丟失
- 30. 防止會話結束時webroot更改
什麼語言是什麼? – 2012-08-14 18:19:09
那瞬間壞標題是同時,我按下提交按鈕,由於其我的頭銜得到了擦除的錯字錯誤的結果.. – 2012-08-14 18:23:01
@Juan :看看問題標籤 – BalusC 2012-08-14 18:42:23