@PreDestroy从未调用@ViewScoped

gee*_*daa 16 jsf annotations javabeans jsf-2

我有一个@ViewScopedbean,它有一个带@PreDestroy注释的方法,可以确保关闭一些远程连接.但是,当用户导航时不调用该方法.

有什么可以做错的吗?我是否必须在任何地方注册任何内容才能使其正常工作?

这是一个简单的公共方法(void),不会抛出任何异常.

我正在使用带有Tomcat 7.0.12的JSF 2(MyFaces).这可能是Tomcat的问题吗?

UPDATE

@PostConstruct注释工作正常.

Bal*_*usC 14

这是一个已知问题,遗憾的是,如果不通过所讨论的视图范围bean进行所有导航,则无法轻松解决.另见JSF-impl issue 1839.这不仅包括最终用户更改浏览器地址栏中的URL或关闭窗口/选项卡的情况.@PreDestroy当会话被破坏时,也不会调用它们.然而,已经发布了对规范的增强请求,以便在会话销毁期间消除悬空视图:JSF规范问题905.