@PreDestroy从未调用@ViewScoped

时间:2011-06-16 08:04:03

标签: jsf jsf-2 annotations javabeans

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

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

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

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

更新

@PostConstruct注释工作正常。

1 个答案:

答案 0 :(得分:12)

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