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

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

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

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

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

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

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

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