我正在尝试使用计时器服务执行一小段代码。
我无法在网上找到一个好的示例或教程。 Oracle的教程对我来说有点太过分了,无法掌握我需要的基本实用程序。我只是希望它在程序启动时立即执行,然后每小时执行一次。
样品计时器是什么样的?
答案 0 :(得分:13)
使用@Singleton
@Schedule
以及在构造后直接调用该方法的额外@PostConstruct
,这是最简单的方法:
package com.example;
import javax.annotation.PostConstruct;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
@Singleton
public class SomeBackgroundJob {
@PostConstruct
@Schedule(hour="*/1", minute="0", second="0", persistent=false)
public void run() {
// Do your job here.
}
}
唯一的区别是它不会在启动后每小时运行一次,而是仅在启动后的每一个小时运行。我认为那不应该真的重要吗?
答案 1 :(得分:0)
如果您希望计时器每小时运行一次,请使用一周中的某一天来控制时间。这是一个例子
@Schedule(dayOfWeek = "*", hour = "*/1", persistent = false)
public void run() {
// Do your job here.
}