gpt4 book ai didi

timer - EJB 3 计时器执行多次

转载 作者:行者123 更新时间:2023-12-01 01:20:04 27 4
gpt4 key购买 nike

我的 EJB 3 计时器在多次启动时遇到了一些问题。
我没有在注释中配置计时器,而是使用编程配置,如许多博客中所述。这是我的代码:

@Singleton
@Startup
public class AutoAssignTask extends AbstractDirectoryMonitor {

@Resource
private TimerService timer;

@Inject
@PropertyResource(name = "timer.hour", resource = "/DL4/app.conf")
private String hour;
@Inject
@PropertyResource(name = "timer.minute", resource = "/DL4/app.conf")
private String minute;
@Inject
@PropertyResource(name = "timer.second", resource = "/DL4/app.conf")
private String second;

@EJB
private AutoAssignService autoAssignService;

@PostConstruct
public void init() {
// initializing with an expression.
this.initSchedule();
}
protected void initSchedule() {
ScheduleExpression exp = new ScheduleExpression();
if (!StringUtils.isEmpty(this.getHour())) {
exp.hour(this.getHour());
}
if (!StringUtils.isEmpty(this.getMinute())) {
exp.minute(this.getMinute());
}
if (!StringUtils.isEmpty(this.getSecond())) {
exp.second(this.getSecond());
}
this.getTimer().createCalendarTimer(exp);
}

@Timeout
public void process() {
// do something
AutoAssignTask.LOG.info("starting job.");
}

现在假设我每分钟配置一个计时器,当我查看我的日志时,我得到了两倍的“开始工作”日志,证明它开始工作两次。

关于什么是错的任何想法?

最佳答案

这个问题可能很老了,但看起来(至少对于 JBoss EAP 7 ),计时器存储在 %JBOSS_HOME%\standalone\data\timer-service-data 中以 XML 格式。所以它很可能是从他们的多个 ScheduleExpression 中读取的。 .

至少我的情况是这样。删除所有 XML 并重新部署应用程序解决了问题。

关于timer - EJB 3 计时器执行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9928897/

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