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