【发布时间】:2014-12-23 06:36:21
【问题描述】:
我正在使用 Glassfish 4 部署 EJB bean,这些 bean 应该创建持久的 EJB 计时器 (TimerConfig),只要服务器继续运行而不会中断,一切都会正常运行。当服务器关闭时出现问题(我故意将其关闭以进行测试用例)然后重新启动。一旦服务器重新启动,仍在等待其 timeOut 到来的计时器将被删除。这没有任何意义,因为计时器被创建为持久的,但每次我运行上面解释的测试用例时仍然会被删除。 以下是重启服务器后出现的部分日志信息:
Info: Loading EJBTimerService. Please wait.
Info: visiting unvisited references
Info: visiting unvisited references
Info: visiting unvisited references
Info: visiting unvisited references
Info: visiting unvisited references
Info: EJB5181: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.5.0.v20130507-3faac2b
Info: JTS5014: Recoverable JTS instance, serverId = [100]
Info: file:/C:/Users/Josimar/AppData/Roaming/NetBeans/8.0/config/GF_4.0/domain1/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App login successful
Info: [1] EJB Timers owned by this server will be restored when timeout beans are loaded
Info: <== ... Timers Restored.
Info: EJB5181:Portable JNDI names for EJB SchedulerUtil: [java:global/ApplicationCIB/framework.egov.scheduler/SchedulerUtil, java:global/ApplicationCIB/framework.egov.scheduler/SchedulerUtil!mn.interactive.framework.egov.scheduler.utils.SchedulerUtil]
Warning: Container org.glassfish.webservices.JAXWSContainer@9730004 doesn't support class com.sun.xml.ws.api.server.Module
然后是有关被删除计时器的信息:
Info: [1] timers deleted for id: 93015853473529856
Info: No timers to be deleted for id: 93015853473529856
Info: No timers to be deleted for id: 93015853473529856
Info: No timers to be deleted for id: 93015853473529856
Info: No timers to be deleted for id: 93015853473529856
Info: No timers to be deleted for id: 93015853473529856
Info: No timers to be deleted for id: 93015853473529856
Info: No timers to be deleted for id: 93015853473529856
因此,一旦相应的@TimeOut 出现,就不会对该计时器执行任何操作。
如何让计时器在服务器关闭后仍然存在?
【问题讨论】:
标签: java jakarta-ee timer