@PreDestroy never called on @ViewScoped

只愿长相守 提交于 2019-12-17 10:50:11

问题


I have a @ViewScoped bean that has a method with an @PreDestroy annotation that should make sure some remote connections are closed. However, the method is not called when the user navigates away.

Is there anything one can do wrong? Do I have to register anything anywhere in order to make it work?

It's a simple public method (void) that throws no exception.

I'm using JSF 2 (MyFaces) with Tomcat 7.0.12. Could it be a problem with Tomcat?

UPDATE

The @PostConstruct annotation works fine.


回答1:


This is a known issue and unfortunately not trivial to solve without letting all the navigation take place through the view scoped bean in question. See also JSF-impl issue 1839. This does only not cover cases where the enduser changes the URL in browser address bar or closes the window/tab. Their @PreDestroy will also not be called when the session get destroyed. An enhancement request for the specification has however been posted to get the dangling views to destroy during session destroy anyway: JSF-spec issue 905.



来源:https://stackoverflow.com/questions/6368840/predestroy-never-called-on-viewscoped

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!