I did a build on trunk and now undeploy of triggers works great
I tested a scenario with two apps:
- one uses the "default scheduler"
- one uses a custom scheduler defined in WEB-INF/application.conf
When I undeploy one app triggers are deleted from the "right" db and the
other scheduler continues to work
This feature was important because when you reload your app (during
development) you would like
- to rename your EJBTimered-bean
- to change automatic timers defined with @Schedule (before this
enhancement if you declared your timer to be executed once a minute, you
could not change it without dropping/recreating quartz tables)
For me it's all OK about Quartz now
Some docs/examples have to be written because configuring a
persistent/clustered Quartz is not very simple (I can write it)
I'm coming from GF3, I think that now TomEE 1.1 is better than it !!!
http://docs.oracle.com/cd/E18930_01/html/821-2418/beahw.html
From the GF command line you can list timers
http://docs.oracle.com/cd/E19798-01/821-1751/giojd/index.html
maybe it would be usefull to have such command and a command to erase a
trigger (because undeploy of the trigger failed and there is no way to
drop it)
but I really do not need these commands
great job !
thank you
- Enrico
Il 21/08/2012 20:25, Romain Manni-Bucau ha scritto:
unscheduled the trigger job however not sure it is the only cause.
btw your lines are no more up to date i think so not sure of the cause,
can you give it try with the up to date snapshot please?
*Romain Manni-Bucau*
*Twitter: @rmannibucau*
*Blog: http://rmannibucau.wordpress.com*
2012/8/21 Enrico Olivelli <[email protected]>
When I undeploy an app with an EJB timer, the trigger is not removed, so
when quartz tries to reload the trigger from DB gets a NullPointer exception
I suggest:
- to remove triggers/jobdata from Quartz on "undeploy"
- to handle this situation, maybe tring to remove the failing trigger (or
give quartz a "noop" task?!?!?)
rave: MisfireHandler: Error handling misfires: Couldn't retrieve trigger:
null
org.quartz.**JobPersistenceException: Couldn't retrieve trigger: null
[See nested exception: java.lang.**NullPointerException]
at org.quartz.impl.jdbcjobstore.**JobStoreSupport.**retrieveTrigger(**
JobStoreSupport.java:1524)
at org.quartz.impl.jdbcjobstore.**JobStoreSupport.**
recoverMisfiredJobs(**JobStoreSupport.java:968)
at org.quartz.impl.jdbcjobstore.**JobStoreSupport.**doRecoverMisfires(
**JobStoreSupport.java:3187)
at org.quartz.impl.jdbcjobstore.**JobStoreSupport$**
MisfireHandler.manage(**JobStoreSupport.java:3947)
at org.quartz.impl.jdbcjobstore.**JobStoreSupport$**
MisfireHandler.run(**JobStoreSupport.java:3968)
Caused by: java.lang.NullPointerException
at org.apache.openejb.core.timer.**EjbTimerServiceImpl.**
getDefaultScheduler(**EjbTimerServiceImpl.java:121)
at org.apache.openejb.core.timer.**EjbTimerServiceImpl.**readObject(**
EjbTimerServiceImpl.java:117)
at sun.reflect.**NativeMethodAccessorImpl.**invoke0(Native Method)
at sun.reflect.**NativeMethodAccessorImpl.**invoke(**
NativeMethodAccessorImpl.java:**57)
at sun.reflect.**DelegatingMethodAccessorImpl.**invoke(**
DelegatingMethodAccessorImpl.**java:43)