EJB3 + JEE6:啥是持久定时器?
Posted
技术标签:
【中文标题】EJB3 + JEE6:啥是持久定时器?【英文标题】: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。
【问题讨论】:
【参考方案1】:persistent 属性意味着容器需要将计时器状态持久化到数据库中。如果您需要保证即使服务器离线(有意或崩溃)也能触发计时器,这一点很重要。当服务器重新上线时,需要执行错过的计时器。将计时器设置为持久性还具有确保计时器仅在一个服务器 JVM(但不一定是创建它的那个)中执行的副作用,无论这对您的产品意味着什么。例如,在集群服务器环境中,这通常意味着即使 EJB 模块在 3 个 JVM 上运行,也只有一个 JVM 会执行计时器。
persistent=true 是 EJB 3.1 之前唯一可用的选项。一些计时器操作不够关键,无法保证这种级别的可靠性,因此添加了允许非持久计时器的选项。将计时器设置为非持久性还具有确保它在创建它的 JVM 中运行的副作用。这对于更新内存缓存或静态 html 很有用。
【讨论】:
所以一般来说拥有它true
是一个好主意。这是默认的
“将计时器状态保存到数据库” - 你能解释一下计时器保存到哪个数据库吗?如果我不使用任何数据库,计时器会被保存吗?
@AntonSorokin 答案是特定于供应商的。我建议创建一个关于您的特定供应商的新问题。以上是关于EJB3 + JEE6:啥是持久定时器?的主要内容,如果未能解决你的问题,请参考以下文章
STM32的APB时钟预分频数到底是怎么确定的?AHB的频率到底是72MH还是啥是有啥决定的?