【问题标题】:Why EJB timers are being deleted after server shutdown?为什么 EJB 计时器在服务器关闭后被删除?
【发布时间】: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


    【解决方案1】:

    在您各自的 IDE 中检查服务器的首选项或设置,并将计时器调高。另外检查您的线程是否同步,根据我的经验,这经常会产生问题。 祝你好运(Y)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 2011-02-20
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      相关资源
      最近更新 更多