我有一個ApplicationScoped bean啓動一個單獨的線程來完成一些後臺工作。線程有一個乾淨的終止方法,叫做terminate()。如果沒有通過該方法終止,它會在無限循環中運行,並且如果它發現它沒有任何事情可以休眠一段時間。如何修復JSF應用程序中的線程泄漏?
事情是我處於開發模式(Netbeans - > Maven),每次我重新編譯應用程序時,Maven插件取消部署和重新部署應用程序(最方便的是我必須說),但後臺線程從部署掛起的最後。它最終終止於一個異常,因爲它從睡眠中醒來並嘗試訪問不存在的JPA EntityManager。
我希望在應用程序停止時自動調用terminate()方法。有什麼方法可以實現一個在JSF 2.0規範級別執行此操作的偵聽器?如果不是,那麼在Servlet級別呢?
這是使用GlassFish 3.1.1。
相關:http://stackoverflow.com/questions/ 7499534/applicationscope-bean-that-uses-a-timertask-sheduler-good-or-bad – BalusC