我有一个
@ViewScoped
bean,它有一个带有 @PreDestroy
注释的方法,应该确保关闭一些远程连接。但是,当用户离开时,不会调用该方法。
有什么可能做错的事吗?我是否必须在任何地方注册任何东西才能使其正常工作?
这是一个简单的公共方法(
void
),不会抛出异常。
我正在使用 JSF 2 (MyFaces) 和 Tomcat 7.0.12。难道是Tomcat的问题?
更新
@PostConstruct
注释工作正常。
这是一个已知问题,不幸的是,如果不让所有导航都通过相关视图作用域 bean 进行,那么解决起来并不简单。另请参阅JSF-impl 问题 1839。这仅不包括最终用户更改浏览器地址栏中的 URL 或关闭窗口/选项卡的情况。当会话被销毁时,它们的
@PreDestroy
也不会被调用。然而,已经发布了对该规范的增强请求,以便无论如何都能在会话销毁期间销毁悬空视图:JSF 规范问题 905。