在GlassFish 4.1/Java 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.发布于 2015-12-14 22:53:49
这是目标IDE NetBeans (是的,不是容器GlassFish本身)中的一个怪癖,只有当在IDE上关闭“保存整个重新部署的会话”选项时才是可复制的,该选项必须在NetBeans 8.1之前完成。

(右击服务器并从子菜单中选择"property“选项似乎打开了上面的框架)。
在NetBeans 8.1之前,打开这个选项是不可能的。这样做会抛出一个exception。因此,在随后的重新部署中,会话不被维护。因此,这些消息就会出现。
这在NetBeans 8.1中不再存在。重新部署应用程序会发出以下安全消息。
Info: keepstate options resolved to true, saving appId 95015048510636032 for application Project.
Info: keepstate options resolved to true, saving appId 95015048510636032 for application Project.
Finer: initialize identitymaps
Info: Timers will not be destroyed since keepstate is true for application Project
Info: Timers will not be destroyed since keepstate is true for application Project因此,在重新部署期间,持久性定时器是活动的。当应用程序被重新部署时,它们不会被销毁。
https://stackoverflow.com/questions/32286602
复制相似问题