在會話範圍的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. 會話結束時間會話呼叫處理方法嗎?
- 2. 執行播放時掛起命令
- 3. 執行命令時,simplessh庫掛起
- 4. 執行grails命令時,IntelliJ 11掛起
- 5. Web API控制器方法執行結束。沒有HTTP響應。掛起
- 6. 如何在xfce會話結束時執行腳本
- 7. 在Apex會話結束時執行代碼
- 8. 會話結束事件不起作用
- 9. 作業結束時執行命令
- 10. Codeigniter會話掛起
- 11. 會話結束時運行腳本
- 12. 在tomcat會話結束前運行方法
- 13. 執行docker exec命令時執行python腳本掛起
- 14. 如何在會話結束時觸發一個方法#
- 15. 使用wkhtmltopdf時,php shell執行會掛起
- 16. PHP - 無法結束會話
- 17. 如何在執行運行時命令後停止java掛起
- 18. 檢測用戶會話超時並執行方法的時刻
- 19. EJB 3.1的Singleton會話Bean @PreDestroy方法不叫
- 20. 一類屬性,都會在一個方法執行的結束時被清除
- 21. Spring:爲什麼在每個測試課結束時不會調用@PreDestroy?
- 22. SSIS在預執行時掛起-50%完整的sql命令
- 23. 執行會話超時指示?
- 24. 執行shell命令的獲取結果失敗/掛起
- 25. 方法結束後執行線程嗎?
- 26. 在線程上執行方法 - 未執行/結束前
- 27. 在類定義結束時執行mixin方法
- 28. 頁面執行web方法時被掛起
- 29. 程序在執行時掛起
- 30. 程序在執行時掛起
什麼語言是什麼? – 2012-08-14 18:19:09
那瞬間壞標題是同時,我按下提交按鈕,由於其我的頭銜得到了擦除的錯字錯誤的結果.. – 2012-08-14 18:23:01
@Juan :看看問題標籤 – BalusC 2012-08-14 18:42:23