使用EJB计时器服务

时间:2011-12-13 00:12:02

标签: java-ee ejb

我正在尝试使用计时器服务执行一小段代码。

我无法在网上找到一个好的示例或教程。 Oracle的教程对我来说有点太过分了,无法掌握我需要的基本实用程序。我只是希望它在程序启动时立即执行,然后每小时执行一次。

样品计时器是什么样的?

2 个答案:

答案 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.
}