【问题标题】:EJB3 + JEE6: What is a persistent Timer?EJB3 + JEE6:什么是持久定时器?
【发布时间】:2011-02-10 00:48:36
【问题描述】:

我即将使用新的 EJB3 TimerService(作为 Java EE 6 的一部分),而且像往常一样,JavaDoc 的简洁性给我留下了深刻的印象:)

你知道TimerConfig对象的persistent属性有什么作用吗?

JavaDoc TimerConfig 说:持久性属性确定相应的计时器是否具有跨越创建它的 JVM 的生命周期。它是可选的,默认为 true。

【问题讨论】:

    标签: ejb-3.0 timer java-ee-6


    【解决方案1】:

    persistent 属性意味着容器需要将计时器状态持久化到数据库中。如果您需要保证即使服务器离线(有意或崩溃)也能触发计时器,这一点很重要。当服务器重新上线时,需要执行错过的计时器。将计时器设置为持久性还具有确保计时器仅在一个服务器 JVM(但不一定是创建它的那个)中执行的副作用,无论这对您的产品意味着什么。例如,在集群服务器环境中,这通常意味着即使 EJB 模块在 3 个 JVM 上运行,也只有一个 JVM 会执行计时器。

    persistent=true 是 EJB 3.1 之前唯一可用的选项。一些计时器操作不够关键,无法保证这种级别的可靠性,因此添加了允许非持久计时器的选项。将计时器设置为非持久性还具有确保它在创建它的 JVM 中运行的副作用。这对于更新内存缓存或静态 HTML 很有用。

    【讨论】:

    • 所以一般来说拥有它true 是一个好主意。这是默认的
    • “将计时器状态保存到数据库” - 你能解释一下计时器保存到哪个数据库吗?如果我不使用任何数据库,计时器会被保存吗?
    • @AntonSorokin 答案是特定于供应商的。我建议创建一个关于您的特定供应商的新问题。
    猜你喜欢
    • 2011-12-11
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多