I am working with a WebLogic 10.3.5 clustered environment.
My application includes an EJB timer, for which I implemented support as in the following example.
The timer is created for a single shot with a definite timeout, then created again when it’s finished its job. In other words:
- create timer with (say) 5 minutes timeout
- the timer fires and starts its job
- the job ends and a new timer is created with the same period
As far as I know one-shot timers are automatically canceled by the application server when they have been fired.
I am dealing with a very serious problem because now I have a huge number of timer instances.
In the WEBLOGIC_TIMERS table I find a lot of entries instead of just one. All of them have a different START_TIME value and INTERVAL = -1.
This is a production environment, so I have little or no access to it. Weblogic nodes have been restarted but nothing has changed.
How can I solve this ? Can I just delete the rows from WEBLOGIC_TIMERS ?
Well, it turned out that even small differences in system dates between the clustered weblogic servers and the dbms servers can cause the problem I described.
After having them synchronized by the sysadmins, the problem disappeared.