Remember this issue i think

If that's what i think it is a limitation of quartz itself
in org.quartz.impl.jdbcjobstore.StdJDBCDelegate#getObjectFromBlob

it uses a ObjectInputStream which is not app classloader aware (weird since
quartz itself has the info through its ClassLoadHelper).

You can hack the org.quartz.impl.jdbcjobstore.DriverDelegate to workaround
it. I decided to not hack it since that's a quartz issue for me.

*Romain Manni-Bucau*
*Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
*Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
*LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
*Github: https://github.com/rmannibucau*



2013/5/21 Thomas Schuler <thomas.schu...@opentext.com>

> Hi Romain!
>
> As I did for a different topic before (Use external database for
> persistent timer service), I can offer you an eclipse project:
> Attached the packed eclipse project.
> As only mails within a size of 1 MB are allowed: please add
> openejb-client-4.5.0.jar to the lib/clients folder and
> javaee-api-6.0-4-tomcat.jar to the lib folder.
>
> Please check README.txt how to adapt to your local system.
>
> It includes a simple example "Timer" demonstrating a scheduled bean
> without persistence.
>
> The example "Timer (persisted)" demonstrates a persisted scheduled bean -
> the programmatic timer includes the TimerData object.
>
> Best regards,
>         Thomas
>
> -----Original Message-----
> From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> Sent: Dienstag, 21. Mai 2013 11:28
> To: dev@tomee.apache.org
> Subject: Re: Timer service - different behaviour if external quartz tables
> are used or not
>
> No,
>
> should be fine, if you can share a failiing project (maven project on
> github runnable with mvn tomee:run is the best you can do to ease our work
> ;).
>
>
> *Romain Manni-Bucau*
> *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> *Blog: **http://rmannibucau.wordpress.com/*<
> http://rmannibucau.wordpress.com/>
> *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> *Github: https://github.com/rmannibucau*
>
>
>
> 2013/5/21 Thomas Schuler <thomas.schu...@opentext.com>
>
> > Hi Romain!
> >
> > Attached application.properties and tomee.xml used for testing timer
> > persistence.
> > We did not configure org.quartz.scheduler.classLoadHelper.class.
> > The simple example is a war file.
> > Should I try openejb.quartz.use-TCCL=true with an ear file too?
> >
> > Best regards,
> >         Thomas
> >
> >
> > -----Original Message-----
> > From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> > Sent: Dienstag, 21. Mai 2013 11:14
> > To: dev@tomee.apache.org
> > Subject: Re: Timer service - different behaviour if external quartz
> > tables are used or not
> >
> > Did you configure org.quartz.scheduler.classLoadHelper.class? If not
> > you should be ok.
> >
> > Which config do you use?
> >
> > Do you deploy an ear?
> >
> > *Romain Manni-Bucau*
> > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> > *Blog: **http://rmannibucau.wordpress.com/*<
> > http://rmannibucau.wordpress.com/>
> > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> > *Github: https://github.com/rmannibucau*
> >
> >
> >
> > 2013/5/21 Thomas Schuler <thomas.schu...@opentext.com>
> >
> > > Hi Romain!
> > >
> > > I tried both adding openejb.quartz.use-TCCL=true to
> > > application.properties or system.properties as you suggested.
> > > But I still got the same behavior as described before.
> > >
> > > Best regards,
> > >         Thomas
> > >
> > > -----Original Message-----
> > > From: Romain Manni-Bucau [mailto:rmannibu...@gmail.com]
> > > Sent: Dienstag, 21. Mai 2013 10:27
> > > To: dev@tomee.apache.org
> > > Cc: d...@openejb.apache.org
> > > Subject: Re: Timer service - different behaviour if external quartz
> > > tables are used or not
> > >
> > > hi
> > >
> > > did you try adding openejb.quartz.use-TCCL=true to either
> > > application.properties or system.properties?
> > >
> > > *Romain Manni-Bucau*
> > > *Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
> > > *Blog: **http://rmannibucau.wordpress.com/*<
> > > http://rmannibucau.wordpress.com/>
> > > *LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
> > > *Github: https://github.com/rmannibucau*
> > >
> > >
> > >
> > > 2013/5/21 tschuler <thomas.schu...@opentext.com>
> > >
> > > > Hi!
> > > >
> > > > We want to use scheduled beans (TomEE 1.6.0 snapshot - about two
> > > > weeks
> > > > old) and add an own Serializable object (TimerData) while timer
> > > creation, e.g.
> > > > timerService.createTimer(Date, TimerData).
> > > >
> > > > We observed a different behaviour if persistence for timers is
> > > > used or
> > > not.
> > > >
> > > > -----
> > > >
> > > > No timer persistence (as configured for an out of the box TomEE):
> > > > The scheduled bean is triggered, the TimerData object is available
> > > > (timer.getInfo())
> > > >
> > > > -----
> > > >
> > > > Timer persistence is activated and an external database is used:
> > > > The scheduled bean is not triggered, the following exception occurs:
> > > >
> > > > SCHWERWIEGEND: An error occurred while scanning for the next
> > > > triggers to fire.
> > > > org.quartz.JobPersistenceException: Couldn't acquire next trigger:
> > > > Couldn't retrieve trigger: java.lang.ClassNotFoundException:
> > > > timerPersisted.server.TimerData [See nested exception:
> > > > org.quartz.JobPersistenceException: Couldn't retrieve trigger:
> > > > java.lang.ClassNotFoundException: timerPersisted.server.TimerData
> > > > [See nested exception: java.io.IOException:
> > java.lang.ClassNotFoundException:
> > > > timerPersisted.server.TimerData]]
> > > >         at
> > > >
> > > >
> > > org.quartz.impl.jdbcjobstore.JobStoreSupport.acquireNextTrigger(JobS
> > > to
> > > reSupport.java:2840)
> > > >         [...]
> > > > Caused by: org.quartz.JobPersistenceException: Couldn't retrieve
> > trigger:
> > > > java.lang.ClassNotFoundException: timerPersisted.server.TimerData
> > > > [See nested exception: java.io.IOException:
> > java.lang.ClassNotFoundException:
> > > > timerPersisted.server.TimerData]
> > > >         at
> > > >
> > > >
> > > org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveTrigger(JobStor
> > > eS
> > > upport.java:1524)
> > > >         [...]
> > > > Caused by: java.io.IOException: java.lang.ClassNotFoundException:
> > > > timerPersisted.server.TimerData
> > > >         at
> > > >
> org.apache.openejb.core.timer.TimerData.readObject(TimerData.java:134)
> > > >         [...]
> > > > Caused by: java.lang.ClassNotFoundException:
> > > > timerPersisted.server.TimerData
> > > >         at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
> > > >         [...]
> > > >
> > > > If the TimerData object is added to a jar file and the jar file is
> > > > inserted to the TomEE\lib directory:
> > > > The scheduled bean is triggered as expected.
> > > >
> > > > -----
> > > >
> > > > Why must the TimerData object be available in the global TomEE
> > > > classpath in case of timer persistence?
> > > > Is there a way to get it running without putting
> "application-specific"
> > > > classes to the global TomEE lib folder?
> > > >
> > > > Best regards,
> > > > Thomas
> > > >
> > > >
> > > >
> > > > --
> > > > View this message in context:
> > > > http://openejb.979440.n4.nabble.com/Timer-service-different-behavi
> > > > ou
> > > > r- if-external-quartz-tables-are-used-or-not-tp4663101.html
> > > > Sent from the OpenEJB Dev mailing list archive at Nabble.com.
> > > >
> > >
> >
>

Reply via email to