我在 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
可能是这个问题吗? 如何在完全部署应用程序后延迟第一个定时器执行?
祝你好运, 法比奥