EJB计时器服务线程安全吗?

时间:2011-11-22 14:45:19

标签: jboss ejb-3.0

EJB计时器服务线程安全吗? 当多线程调用创建timerservice时,然后使用自己的timerservice来创建 计时器。 jboss容器如何排队这些事件并启动计时器?感谢

1 个答案:

答案 0 :(得分:0)

虽然这是一个老问题,但它仍然是当前的问题。 我认为你可能指的是在多服务器环境中运行的计时器服务之间的并发性,因为线程安全通常是指在同一个JVM上运行的进程,并通过同步方法解决。

在多服务器环境中,如果您不希望在完全相同的预定时间同时触发相同的EJB计时器,则可以将它们存储在共享资源(例如数据库)中并在某些资源上有序地触发它们服务器,不干扰其他服务器。

主要方法似乎是定义持久EJB计时器和具有可序列化事务隔离的数据源,因此一次只能有一个服务器更新计时器计划控制表。基于此,我看到了两种可能的方法:

  1. 启用了定时器服务JBoss服务器配置为在集群中运行,因此EJB定时器一次只能在一个节点上触发(即单次执行定时器)。 [1]
  2. 在非群集环境中,您可以选择启用EJB Timer执行的服务器,并在其他服务器上禁用该执行。
  3. 这当然不是所有可能性的完整列表,但我认为这可能是在多服务器环境中配置EJB计时器的起点。

    <强>的引用:

    [1]:JBoss - 掌握老板 - 创建集群EJB 3计时器
          - http://www.mastertheboss.com/jboss-server/wildfly-8/creating-clustered-ejb-3-timers

    [2]:JBoss - 掌握老板 - 配置WildFly Batch Job Repository
          - http://www.mastertheboss.com/jboss-server/wildfly-8/configuring-wildfly-batch-job-repository

    [3]:StackOverFlow - How to disable Timer service in Wildfly 10?