我在部署时遇到问题JBoss 6。我的应用程序包含一个无状态 EJB,其中一个方法用@Schedule(hour="1")
注释标记。这种方法使用另一个由@EJB 注解注入的无状态EJB。
@Stateless
public class AuditRecordCleanerBean implements AuditRecordCleanerLocal
{
@EJB
private RecordManager recordManager;
@Schedule(hour="1")
public void moveRecordsToHistoricTable()
{
recordManager.moveRecords();
...
}
}
因为定时器在 JBoss 中是持久的,所以当我重新启动应用程序服务器时,有时可能会在 EJB RecordManager 尚未部署时触发定时器,从而导致 NameNotFoundException。
在 server.log 中,我发现了以下警告:
WARN [org.jboss.ejb3.TimerServiceContainer] (Thread-2) EJBTHREE-2193: using deprecated TimerServiceFactory for restoring timers
可能是这个问题吗?如何在应用程序完全部署后延迟第一个计时器的执行?
最好的问候,法比奥