在 GlassFish 4.1/Java EE 7 的单例会话 bean 中使用 EJB 计时器,如下所示。
@Singleton
@LocalBean
@Startup
public class BackgroundJobManager {
@PersistenceContext
private EntityManager entityManager;
@PostConstruct
private void init() {
// Do something.
}
@Schedule(hour = "*/1", minute = "0", second = "0", persistent = false)
public void doHourlyJob() {
// Do something hourly.
}
@Schedule(hour = "*", minute = "*/1", second = "0", persistent = false)
private void doOnEveryMinute() {
// Do something on every minute.
}
}
尽管日志级别是INFO
,但在(重新)部署应用程序时,服务器终端上会出现以下有点奇怪的警告。
Info: No timers to be deleted for id: 94427432094072832
Info: No timers to be deleted for id: 94427432094072832
这是什么意思?它是可以避免的还是容器试图严重警告某些事情(在这种情况下是否有任何修复)?
服务器还在启动时记录以下行。
Info: Portable JNDI names for EJB TimerBean: [java:global/ejb-timer-service-app/TimerBean, java:global/ejb-timer-service-app/TimerBean!org.glassfish.ejb.persistent.timer.TimerLocal]
Info: Loading application [ejb-timer-service-app] at [/ejb-timer-service-app]
Info: ejb.timer_service_started
Info: ==> Restoring Timers ...
Info: EclipseLink, version: Eclipse Persistence Services - 2.6.0.v20150309-bf26070
Info: /file:/C:/Program Files/glassfish-4.1/glassfish/domains/domain1/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App login successful
Info: There are no EJB Timers owned by this server
Info: <== ... Timers Restored.