gpt4 book ai didi

java - EJB调度中如何设置定时器值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:54 24 4
gpt4 key购买 nike

目前我正在使用以下配置来安排我的调度程序。

 @Schedule(second ="1/10", minute = "*", hour = "*")
private void scheduleUser() {
try {
new UserFacade().insertUserInfo();
} catch (Exception e) {
logger.error("Error in : " + e);
}
}

现在我想在运行时而不是以硬编码的方式设置定时器值。假设我有一个调用 Property 的 bean,它有一个名为 frequency 的字段。

现在我想为 EJB 调度器设置像 new Property().getFrequency() 这样的值。

有什么办法可以做类似下面的事情吗?

 @Schedule(second =new Property().getFrequency(), minute = "*", hour = "*")
private void scheduleUser() {
try {
new UserFacade().insertUserInfo();
} catch (Exception e) {
logger.error("Error in : " + e);
}
}

最佳答案

没有注释,没有。您必须使用编程计时器(Java 7、EE7):

package com.foo;

import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.EJBException;
import javax.ejb.Singleton;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;

@Singleton
public class MyTimer {
@Resource
private TimerService timerService;

@Timeout
public void timeout(Timer timer) {
System.out.println("TimerBean: timeout occurred");
}

public void schedule(Date start, long intervalMilis) {
try{
timerService.createTimer(start, intervalMilis, "my timer");
} catch (EJBException|IllegalArgumentException|IllegalStateException ex) {
Logger.getLogger(MyTimer.class.getName()).log(Level.WARNING, ex.getMessage(), ex);
}
}
}

参见 https://docs.oracle.com/javaee/7/tutorial/ejb-basicexamples004.htm了解更多信息。

关于java - EJB调度中如何设置定时器值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20064754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com