users@glassfish.java.net

EJB timer - missed expiration

From: <forums_at_java.net>
Date: Mon, 21 Nov 2011 07:10:12 -0600 (CST)

 I've got a simple EJB timer running in GF 3.1.1 that should run a job every
week on Sunday at 02:10

[code] @Singleton public class ScheduledEventServiceBean {      
@Schedule(dayOfWeek = "Sun", hour = "2", minute = "10", persistent = true)  
  public void weeklyCommissionAccounting() {     log.info("Running weekly
commission payment accounting {}", new DateTime());         ...     }
... [/code]   Sometimes the timer doesn't expire at the specified time and I
get no warnings or errors in the logs at all. (the server is running 24x7
with the app deployed)   However on restart GF detects the missed expiration
and will run the job, with an associated log entry:   [code]
[#|2011-11-21T11:59:41.211+0000|INFO|glassfish3.1.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=10;_ThreadName=Thread-2;|Rescheduling
missed expiration for periodic timer '1@@1321073364851@@server@@domain1'
'TimedObject = ScheduledEventServiceBean' 'Application = leadseeker'
'CREATED' 'PERIODIC' 'Container ID = 86577862673629201' 'Sun Nov 13 02:10:00
GMT 2011' '0' '0 # 10 # 2 # * # * # Sun # * # null # null # null # true #
weeklyCommissionAccounting # 0' .  Last timer expiration occurred at Sun Nov
13 02:10:01 GMT 2011|#] [/code]   Any ideas why the expiration is not
occuring at the correct time? As far as I cen tell the annotation is correct
and the fact the GF recognises the event has been missed also indicates this.
Any suggestions for debugging what could be going on here?
 


--
[Message sent by forum member 'buddypine']
View Post: http://forums.java.net/node/866262