Same result: With TomEE-7.0.2 standard configuration, a persistent Timer is not triggered after server restart. With quartz connected to the database, the Timer is not known by timerService.getTimers() but the Timer is triggered.
On 10.03.2017 13:04, Romain Manni-Bucau wrote: > I d do yes to be sure. > > Le 10 mars 2017 12:54, "Bodo Pfelzer" <[email protected]> a > écrit : > >> I compared the sources of 1.7.4 and 7.0.2 regarding the packae >> org.apache.openejb.core.timer. From that I did not expect big >> differences. But I could give it a try. I think I should try the variant >> with quartz connected to a database? >> >> On 10.03.2017 12:45, Romain Manni-Bucau wrote: >>> I see, >>> >>> did you try on tomee 7? recall we fixed some things in that are, not sure >>> it fixes this exact case but 1.7 is quite old on that topic >>> >>> >>> Romain Manni-Bucau >>> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>> <https://blog-rmannibucau.rhcloud.com> | Old Blog >>> <http://rmannibucau.wordpress.com> | Github <https://github.com/ >> rmannibucau> | >>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory >>> <https://javaeefactory-rmannibucau.rhcloud.com> >>> >>> 2017-03-10 12:36 GMT+01:00 Bodo Pfelzer <[email protected] >>> : >>> >>>> In my EJB I use timerService.createTimer() to schedule a task for next >>>> month. And this task should be executed regardless whether the server is >>>> restarted or not in the meantime. >>>> >>>> On 10.03.2017 12:29, Romain Manni-Bucau wrote: >>>>> the timerstore need is mainly to handle the transactionality AFAIK and >>>>> doesnt assume anything about quartz or not. We can surely drop a part >>>> today. >>>>> Not sure what you mean by "persistent quartz timer are wanted", have to >>>>> admit I almost always use not persistent timers. >>>>> >>>>> Do you try to solve a particular issue? >>>>> >>>>> >>>>> Romain Manni-Bucau >>>>> @rmannibucau <https://twitter.com/rmannibucau> | Blog >>>>> <https://blog-rmannibucau.rhcloud.com> | Old Blog >>>>> <http://rmannibucau.wordpress.com> | Github <https://github.com/ >>>> rmannibucau> | >>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory >>>>> <https://javaeefactory-rmannibucau.rhcloud.com> >>>>> >>>>> 2017-03-10 12:17 GMT+01:00 Bodo Pfelzer <bodo.pfelzer@business-logics. >> de >>>>> : >>>>> >>>>>> Hi Romain, >>>>>> >>>>>> I do not really understand the interplay between quartz, TimerStore >> and >>>>>> EjbTimerServiceImpl. As far as I understand, EjbTimerServiceImpl >> writes >>>> all >>>>>> Timers into quartz and TimerStore. TimerStore contains the Timers that >>>> are >>>>>> visible to the EJB and quartz contains the Timers that are actually >>>>>> executed. Reading https://issues.apache.org/jira/browse/OPENEJB-1867 >> I >>>>>> assume, that using persistent quartz timers is allowed and even wanted >>>> in >>>>>> TomEE, but the persisted timers are neglected by TimerStore during >>>> startup. >>>>>> My ugly patch (see attached file) copies the Timers persisted by >> quartz >>>>>> into TimerStore. >>>>>> >>>>>> But I do not understand the need for the TimerStore itself. In my >>>> opinion >>>>>> one could avoid the duplicate storage of Timers and retrieve >> everything >>>>>> from quartz itself, especially when using different GroupNames for >>>>>> different deployments. Is there any reason for that? Otherwise I would >>>> like >>>>>> to adjust EjbTimerServiceImpl in a way that does not need a >> TimerStore, >>>> or >>>>>> at least try a "QuartzTimerStore". But modifiying the group name would >>>> be >>>>>> nice for that. >>>>>> >>>>>> Bodo >>>>>> >>>>>> On 09.03.2017 15:00, Romain Manni-Bucau wrote: >>>>>> >>>>>> Hi >>>>>> >>>>>> needs a custom timerstore I think (seehttps://issues.apache.org/ >>>> jira/browse/TOMEE-785) >>>>>> Romain Manni-Bucau >>>>>> @rmannibucau <https://twitter.com/rmannibucau> <https://twitter.com/ >>>> rmannibucau> | Blog<https://blog-rmannibucau.rhcloud.com> < >>>> https://blog-rmannibucau.rhcloud.com> | Old Blog<http://rmannibucau. >>>> wordpress.com> <http://rmannibucau.wordpress.com> | Github < >>>> https://github.com/rmannibucau> <https://github.com/rmannibucau> | >>>>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> < >>>> https://www.linkedin.com/in/rmannibucau> | JavaEE Factory< >>>> https://javaeefactory-rmannibucau.rhcloud.com> <https://javaeefactory- >>>> rmannibucau.rhcloud.com> >>>>>> 2017-03-09 14:44 GMT+01:00 Bodo Pfelzer <bodo.pfelzer@business-logics. >>>> de> <[email protected]>: >>>>>> I tried to configure persistent timers in TomEE-1.7.4 by adding: >>>>>> >>>>>> org.apache.openejb.quartz.jobStore.class >>>>>> org.apache.openejb.quartz.impl.jdbcjobstore.JobStoreCMT >>>>>> org.apache.openejb.quartz.jobStore.driverDelegateClass >>>>>> org.apache.openejb.quartz.impl.jdbcjobstore.StdJDBCDelegate >>>>>> org.apache.openejb.quartz.jobStore.dataSource >>>> ActiveDataSource >>>>>> org.apache.openejb.quartz.jobStore.nonManagedTXDataSource >>>>>> NoTxActiveDataSource >>>>>> org.apache.openejb.quartz.dataSource.ActiveDataSource.jndiURL >>>>>> openejb:Resource/ActiveDataSource >>>>>> org.apache.openejb.quartz.dataSource.NoTxActiveDataSource.jndiURL >>>>>> openejb:Resource/NoTxActiveDataSource >>>>>> >>>>>> to my system.properties. And yes, my EJB method annotated with >> @Timeout >>>>>> gets called, even if TomEE was restarted during the creation of the >>>>>> timer and its expiration. But two things do not work as expected: >>>>>> >>>>>> timerServer.getTimers() returns an empty collection after restart >> though >>>>>> active timers exist. And perhaps even worse: Old timers get >> overwritten >>>>>> by new ones, since MemoryTimerStore.counter always starts from zero >>>>>> after restart. >>>>>> >>>>>> Am I missing something in my configuration? How could I replace >>>>>> MemoryTimerStore? >>>>>> >>>>>> Best regards, >>>>>> Bodo >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>
