我正在使用wildfly maven插件将Java应用程序部署到本地jboss服务器。
我创建了一个带有@Schedule
注释的类,如下所示:
@Startup
@Singleton
@Slf4j
public class ClassName {
@Schedule(hour = "*", minute = "*", second = "*/20", persistent = false)
public void method() {
// Code
log.info("some log");
}
}
现在,在部署时出现以下错误:
错误[org.jboss.as.ejb3.timer](EJB默认-1)WFLYEJB0020:调用计时器超时错误:[id = 879a76e7-b06d-458c-a722-70d8f1d40bc2 timedObjectId = xx-yy-server-1.0- SNAPSHOT.xx-yy-server-1.0-SNAPSHOT.ClassName自动计时器?:true持久吗?:false timerService=org.jboss.as.ejb3.timerservice.TimerServiceImpl@42cdd9a initialExpiration = null intervalDuration(以毫秒为单位)= 0 nextExpiration =星期二10月15日17:21:00 CEST 2019 timerState = IN_TIMEOUT info = null]:javax.ejb.EJBException:java.lang.NullPointerException
有人知道这是什么原因吗?我对使用Java进行调度相当陌生,因此可能有些愚蠢,但是我无法在线找到任何内容。
谢谢!
Hello
,因此,正如本Stackoverflow question所述,所有超时限制都适用,并且当您要安排多个计时器时,建议使用@Stateless EJB
而不是@Singleton
来推荐更多限制。
@Startup annotation
通知EJB容器在启动时初始化Bean,您可能会滥用它。