安排下一次运行时间不正确

时间:2017-06-29 09:16:27

标签: java java-ee timer jboss wildfly

我有一个简单的时间表,如下所示,应该从下午6点到晚上10:30每30分钟运行一次。

import javax.ejb.Schedule;
import javax.ejb.Schedules;
import javax.ejb.Singleton;

@Singleton
public class XxxJob {

  @Schedules({
    @Schedule(minute = "0,30", hour = "18-22", dayOfWeek = "Mon-Fri",
              timezone = "Europe/London", persistent = false)
  })
  public void process() {
    //...
  }
}

但是当我在Wildfly控制台上检查计时器的细节时,我看到了:

  

{"剩余时间" => 30039141L,"下一个超时" => 1498757400000L,"日历计时器" =>真,#&34;持久性" =>假,"时间表" => {"一年" => " *""一个月" => " *""天的日" => " *""&#34星期几-; => "周一至周五""小时" => #&34; 18-22""分钟" => " 0,30""第二" => " 0""时区" => "欧洲/伦敦""启动" =>未定义,"端" =>未定义}}

它表示下一次运行(next-timeout)位于1498757400000L(epoch millis),但对应于2017-06-29T18:30+01:00[Europe/London]而不是18:00。

为什么计时器计划在18:30而不是18:00运行?

注1:如果我将时间表修改为仅在18:00运行,则按预期工作:

@Schedule(minute = "0", hour = "18", dayOfWeek = "Mon-Fri",
          timezone = "Europe/London", persistent = false)

注2:如果删除@Schedules注释,它也会按预期工作。

0 个答案:

没有答案