Using EJB Timer Service

2020-02-28 23:40发布

I have a small bit of code that I'm trying to execute with the timer service.

I'm having trouble finding a good example or tutorial online. Oracle's tutorial covered a bit too much too quickly for me to grasp the basic utility that I need. I just want it to execute immediately when the program starts and then every hour after that.

What would a sample timer look like?

2条回答
看我几分像从前
2楼-- · 2020-02-29 00:30

If you want your timer to run every hour, containerise the hour using day of the week. Here is an example

@Schedule(dayOfWeek = "*", hour = "*/1", persistent = false)
public void run() {
    // Do your job here.
}
查看更多
别忘想泡老子
3楼-- · 2020-02-29 00:31

That's the simplest to achieve with a @Singleton @Schedule and an additional @PostConstruct to invoke the method directly after construction:

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

}

The only difference is that it doesn't run every hour after startup, but only on every whole hour after startup. That shouldn't really matter, I think?

查看更多
登录 后发表回答