No log was noticed. But maybe we missed it. We will look further. But
definitely no periodic log.

Like that:

@Singleton
@Lock(LockType.READ)
public class TimerScheduler {

    @Resource
    private TimerService timerService;
    @Inject
    Logger logger;
    @Resource
    private BeanManager beanManager;

    public void scheduleEvent(ScheduleExpression schedule, Object event,
Annotation... qualifiers) {

        timerService.createCalendarTimer(schedule, new TimerConfig(new
EventConfig(event, qualifiers), false));
    }

    @Timeout
    private void timeout(Timer timer) {
        final EventConfig config = (EventConfig) timer.getInfo();

        beanManager.fireEvent(config.getEvent(), config.getQualifiers());
    }

    private final class EventConfig implements Serializable {

        private final Object event;
        private final Annotation[] qualifiers;

        private EventConfig(Object event, Annotation[] qualifiers) {
            this.event = event;
            this.qualifiers = qualifiers;
        }

        public Object getEvent() {
            return event;
        }

        public Annotation[] getQualifiers() {
            return qualifiers;
        }
    }
}

2015-02-11 15:54 GMT+01:00 Romain Manni-Bucau <rmannibu...@gmail.com>:

> Hi
>
> how do you use TimerService? No log at all saying there is an issue?
> What's @Timeout method?
>
>
> Romain Manni-Bucau
> @rmannibucau
> http://www.tomitribe.com
> http://rmannibucau.wordpress.com
> https://github.com/rmannibucau
>
>
> 2015-02-11 15:48 GMT+01:00 Matej <gma...@gmail.com>:
> > Hi all.
> >
> > In production under load, we experienced a case were a particular timer
> > stopped working.
> >
> > I thought maybe a runstime exception stops a ScheduleExpression, but
> could
> > not simulate this. Glassfish I know was very sensible to this.
> >
> > Could a low EJB timer thread seeting cause a timer to stop, working.
> >
> > We use tomee 1.7
> >
> > The timer is initialized like that.
> >
> > @Singleton
> > @Lock(LockType.READ)
> > @Startup
> > public class CommEtaUpdateCacheTimer {
> >
> >     @Inject
> >     private TimerScheduler scheduler;
> >
> >     @PostConstruct
> >     public void doit() {
> >         final ScheduleExpression schedule = new ScheduleExpression()
> >                 .hour("*")
> >                 .minute("*")
> >                 .second("*/5");
> >
> >         scheduler.scheduleEvent(schedule, new
> > CommEtaUpdateCacheTimerEvent());
> >     }
> >
> >     public void observe(@Observes CommEtaUpdateCacheTimerEvent event) {
> > /*
> > processing code.
> > */
> >
> >     }
> >
> >     public static class CommEtaUpdateCacheTimerEvent {
> >     }
> > }
> >
> > BR
> >
> > Matej
>

Reply via email to