EJB3 + JEE6:什么是持久定时器?

时间:2010-04-20 07:47:57

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

我正准备使用新的EJB3 TimerService(作为Java EE 6的一部分),和往常一样,我对JavaDoc的简洁性印象深刻:)

您知道persistent对象的TimerConfig属性有什么影响吗?

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

1 个答案:

答案 0 :(得分:50)

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

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