在JBoss 4.0.5.GA中运行并行计划

时间:2011-05-10 14:42:50

标签: jboss scheduler jboss-4.0.x

我正在尝试在jboss-service.xml中定义两个调度程序。一个调度程序经常运行,并且执行时间很短。另一个调度程序每天运行一次,但需要花费大量时间来执行。我的jboss-service.xml的摘录如下:

<!-- Frequent, fast -->
<mbean code="org.jboss.varia.scheduler.Scheduler" 
       name=":service=FrequentSchedule,schedule=frequent">
    <attribute name="InitialStartDate">NOW</attribute>
    <attribute name="SchedulePeriod">5000</attribute>
    <!-- Other attributes... -->
</mbean>

<!-- Infrequent, slow -->
<mbean code="org.jboss.varia.scheduler.Scheduler"
       name=":service=InfrequentSchedule,schedule=infrequent">
    <attribute name="InitialStartDate">0</attribute>
    <attribute name="SchedulePeriod">86400000</attribute>
    <!-- Other attributes... -->
</mbean>

此配置的结果是频繁调度程序以预期频率执行,直到执行长时间运行的调度程序为止。此时,在长时间运行的计划完成之前,不再执行频繁的计划。来自org.jboss.varia.scheduler.Scheduler的Javadoc:

  

注意:调度程序实例仅允许一次运行一个计划。       因此,当您要运行两个计划时,请使用此MBean创建实例。       MBean的建议对象名称是:: service = Scheduler,schedule =

我试图遵循这个建议,但它没有奏效。如果有人有任何经验可以让JBoss 4.0.5.GA上并行运行多个调度程序,那么任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

解决,在mbean

中添加此属性
<attribute name="TimerName">jboss:service=TimerNew</attribute>

正如在JBoss-Scheduler-Quartz中解释的那样,使用另一个服务Timer,允许在不同的服务定时器上使用不同的mbean。所以每个计时器都是独立的(并行)。