我有一个@ViewScoped
bean,它有一个带@PreDestroy
注释的方法,可以确保关闭一些远程连接。但是,当用户导航时不会调用该方法。
有什么可以做错的吗?我是否必须在任何地方注册任何内容才能使其正常工作?
这是一个简单的公共方法(void
),不会抛出任何异常。
我正在使用带有Tomcat 7.0.12的JSF 2(MyFaces)。这可能是Tomcat的一个问题吗?
更新
@PostConstruct
注释工作正常。
答案 0 :(得分:12)
这是一个已知问题,遗憾的是,如果不通过所讨论的视图范围bean进行所有导航,解决这个问题并非易事。另见JSF-impl issue 1839。这不仅包括最终用户更改浏览器地址栏中的URL或关闭窗口/选项卡的情况。当会话被破坏时,他们的@PreDestroy
也不会被调用。然而,发布了规范的增强请求,以便在会话销毁期间消除悬空视图:JSF-spec issue 905。