会话结束时销毁视图范围的bean

Kaw*_*awu 3 jsf glassfish java-ee jsf-2 view-scope

我的问题与此(或其他)有关:

@PreDestroy从未在@ViewScoped上调用

如此处所述,没有简单的解决方案来解决在导航时销毁视图范围的Bean的问题,并且在会话期满时似乎也是如此。

释放(调用该@PreDestroy方法)JSF视图范围的Bean 的非平凡方法会是什么样子,或者更确切地说,是会话期满后立即释放?

我在GlassFish 3.1.2上使用Java EE 6和Mojarra2.1.x。

Bal*_*usC 5

创建一个@SessionScopedBean来保存资源(在某些集合/数组中?)并将其注入@ViewScopedBean中,然后依赖于@PreDestroy会话作用域Bean的。

没错,这样资源的寿命比您想要的长一点,但这是您可以获得的最简单,最可靠的解决方案。如果要将@PreDestroyBean 保留在视图范围的bean中,则需要以某种方式确保最终用户始终通过HTTP POST请求在此视图范围的bean上执行导航。您无法可靠地保证(最终用户的PC可能崩溃等)。