tomee-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bodo Pfelzer <bodo.pfel...@business-logics.de>
Subject Re: Persistent timers not working in TomEE?
Date Fri, 10 Mar 2017 11:54:21 GMT
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 <bodo.pfelzer@business-logics.de>:
>
>> 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> <bodo.pfelzer@business-logics.de>:
>>>>
>>>> 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
>>>>
>>>>
>>>>
>>>>
>>>>
>>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message