【问题标题】:Destroying view-scoped beans when session ends会话结束时销毁视图范围的 bean
【发布时间】:2012-10-26 07:10:06
【问题描述】:

我的问题与这个(可能还有其他)有关:

@PreDestroy never called on @ViewScoped

正如那里所说,没有简单的解决方案可以在导航时销毁视图范围的 bean,而且会话到期时似乎也是如此。

在会话到期后立即发布(调用 @PreDestroy 方法)JSF 视图范围 bean 的非平凡方法会是什么样子,或者更具体地说是什么?

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

【问题讨论】:

  • 销毁 bean 的具体原因是什么?
  • 清理工作,例如删除在用户吃午饭(会话到期)之前上传的临时文件(附件)。

标签: jsf jakarta-ee jsf-2 glassfish view-scope


【解决方案1】:

创建一个@SessionScoped bean 来保存资源(在某个集合/数组中?)并将其注入@ViewScoped bean,然后依赖会话范围bean 的@PreDestroy

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2016-12-24
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多