Java JBoss EJB2定时器服务-多服务器,单定时器表?

Java JBoss EJB2定时器服务-多服务器,单定时器表?,java,jboss,ejb,jboss5.x,ejb-2.x,Java,Jboss,Ejb,Jboss5.x,Ejb 2.x,我在JBoss文档中找不到这个,所以我在这里询问 多个非集群JBoss实例是否可以访问并共享同一个计时器表(由EJB2计时器服务使用),而不会相互干扰,或者每个实例都需要自己的表 在集群的情况下,集群中的节点都有权访问计时器表,还是直接通过网络共享信息 提前感谢您的澄清 Rich这是一个老问题,但可能对某些人仍然有用,所以我将尝试回答它 假设相同的计时器表可以在不在集群中执行的不同服务器之间共享(事实上,我认为这是可能的),将出现与TimerService实现相关的几个问题,例如:假设每个服务器

我在JBoss文档中找不到这个,所以我在这里询问

多个非集群JBoss实例是否可以访问并共享同一个计时器表(由EJB2计时器服务使用),而不会相互干扰,或者每个实例都需要自己的表

在集群的情况下,集群中的节点都有权访问计时器表,还是直接通过网络共享信息

提前感谢您的澄清


Rich

这是一个老问题,但可能对某些人仍然有用,所以我将尝试回答它

假设相同的计时器表可以在不在集群中执行的不同服务器之间共享(事实上,我认为这是可能的),将出现与TimerService实现相关的几个问题,例如:假设每个服务器都部署了相同的计时器,每个计时器的实例是否与此表上的不同记录关联?。如果是这样,那么当计时器过期时,将多次执行业务逻辑。如果部署过程仅为每个计时器生成一条记录,那么当不同的TimerService尝试同时访问/修改相同的信息时,TimerService是否正确执行

另一方面,如果此想法背后的动机是实现某种容错,那么仍然存在一个问题,即所有服务器必须部署相同的计时器,否则TimerService可以尝试执行未部署在服务器中的计时器

提供高可用性的解决方案已经实现,称为HATimerService

在集群中只有一个表,但区别在于每次都存在一个唯一的活动TimerService,当执行TimerService的节点失败时,另一个节点成为主节点,因此节点之间不存在计时器信息交换,因为数据库中有可用的信息