当会话结束时销毁视图作用域的bean

3

我的问题与此相关(可能还有其他问题):

@PreDestroy never called on @ViewScoped

如上所述,既没有简单的解决方案可以在导航时销毁视图范围的bean,也似乎对于会话过期也是如此。

释放(调用@PreDestroy方法)JSF视图范围bean的非平凡方法会是什么样子,或者更具体地说,会话过期后会怎样?

我正在使用Java EE 6和GlassFish 3.1.2上的Mojarra 2.1.x。


豆子被摧毁的具体原因是什么? - perissf
清理工作,例如在用户午餐时间到期(会话过期)之前删除已上传的临时文件(附件)。 - Kawu
1个回答

5
创建一个@SessionScoped的bean来保存资源(放在某个集合/数组中),并将其注入到@ViewScoped的bean中,然后依靠session scoped bean的@PreDestroy方法。虽然这种方式可能会让资源存活的时间比你想要的长一些,但这是最简单、可靠的解决方案。如果你想保留view scoped bean中的@PreDestroy方法,那么你需要确保最终用户始终通过HTTP POST请求在这个view scoped bean上进行导航。但你无法可靠地保证这一点(最终用户的PC可能会崩溃等)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接