如何在群集中为一个节点和所有节点运行预定方法?

时间:2012-06-28 12:24:51

标签: java java-ee glassfish ejb cluster-computing

我有一个在集群和EJB 3.1应用程序中运行的Glassfish 3.1.2。我的应用程序中需要两种计划方法:

  • 一种每天只运行一次(在单个节点上)的一种
  • 以及在所有节点上运行的其他类型(每1-2分钟) - 它们不需要运行同步方式!要求只是在每个节点上运行。

我不知道如何从这个集群开始 - 问题,这可能是@Schedule(以及如何)或者我还需要别的东西吗?

2 个答案:

答案 0 :(得分:9)

我遇到了完全相同的问题(需要一个cluster计时器和一个per node计时器)并遇到了这个问题。所以,对于任何有兴趣的人:

如果使用@Schedule(...,persistent = true)声明计时器,您将获得一个存储在计时器db中的cluster计时器(可以迁移)

如果使用@Schedule(...,persistent = false)声明计时器,则会得到一个node计时器未存储在计时器db中(无法迁移)

答案 1 :(得分:0)

您可以查看使用JMS。对于需要在单个节点上运行的方法,请使用队列,对于需要在所有节点上运行的队列,请使用主题。