为什么EJB Timer必须在集群中共享数据库连接?

时间:2013-05-14 08:05:59

标签: ejb ejb-3.0 ejb-3.1

我有一个带有定时方法的单例EJB bean,它每分钟就会向数据库保存一次统计信息。 bean在每个群集节点上单独保存统计信息,因此将它保存在每个节点上也很重要。

我担心的是,由于EJB Timer服务正在共享一个数据库,它只会在其中一个集群节点上运行save-method而不是所有集群节点。这意味着并非所有统计信息都保存到数据库中。文档http://docs.oracle.com/cd/E18930_01/html/821-2418/beahw.html似乎没有提及任何内容。

任何人都知道它是如何运作的?

1 个答案:

答案 0 :(得分:1)

如果使用@Schedule(...,persistent = true)声明计时器,您将获得存储在计时器db(可以迁移)中的集群计时器,因此它只能在一个节点中运行。

如果使用@Schedule(...,persistent = false)声明计时器,您将获得一个未存储在计时器db中的节点计时器(无法迁移),因此将在每个节点上调用它