我的问题与此相关(可能还有其他问题):
@PreDestroy never called on @ViewScoped
如上所述,既没有简单的解决方案可以在导航时销毁视图范围的bean,也似乎对于会话过期也是如此。
释放(调用@PreDestroy
方法)JSF视图范围bean的非平凡方法会是什么样子,或者更具体地说,会话过期后会怎样?
我正在使用Java EE 6和GlassFish 3.1.2上的Mojarra 2.1.x。
我的问题与此相关(可能还有其他问题):
@PreDestroy never called on @ViewScoped
如上所述,既没有简单的解决方案可以在导航时销毁视图范围的bean,也似乎对于会话过期也是如此。
释放(调用@PreDestroy
方法)JSF视图范围bean的非平凡方法会是什么样子,或者更具体地说,会话过期后会怎样?
我正在使用Java EE 6和GlassFish 3.1.2上的Mojarra 2.1.x。
@SessionScoped
的bean来保存资源(放在某个集合/数组中),并将其注入到@ViewScoped
的bean中,然后依靠session scoped bean的@PreDestroy
方法。虽然这种方式可能会让资源存活的时间比你想要的长一些,但这是最简单、可靠的解决方案。如果你想保留view scoped bean中的@PreDestroy
方法,那么你需要确保最终用户始终通过HTTP POST请求在这个view scoped bean上进行导航。但你无法可靠地保证这一点(最终用户的PC可能会崩溃等)。