you added org.quartz.scheduler.jmx.export=true
then Quartz published a MBean for each Scheduler (instanceName)

I this is enough to cleanup "orphan" triggers
thanks


Il 22/08/2012 19:19, Romain Manni-Bucau ha scritto:
getting the HEAD you should get some info through JMX

*Romain Manni-Bucau*
*Twitter: @rmannibucau*
*Blog: http://rmannibucau.wordpress.com*




2012/8/22 Romain Manni-Bucau <[email protected]>

great to hear you like tomee :)

if you want to write docs please do, we'll be happy to integrate them in
our doc pages :)

the comman dis not bad and we have already some command pattern (for tomee
maven plugin, karafee and ssh console), could even be done through JMX i
think, it is clearly something to think a bit more but can be a great added
value

*Romain Manni-Bucau*
*Twitter: @rmannibucau*
*Blog: http://rmannibucau.wordpress.com*




2012/8/22 Enrico Olivelli <[email protected]>

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<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<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<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)



Reply via email to