Hi!

I successfully configured tomee for using an external database to enable a
persistent timer service.
I tried the TimerSessionBean example within the JavaEE6 Tutorial
(http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html).
The quartz database tables get the job informations, but I face a problem
with programmatically added timeouts:
They don't seem to be executed, about 90 seconds after the trigger time the
following message is written to the log file:

[Timestamp] org.quartz.impl.jdbcjobstore.JobStoreSupport recoverMisfiredJobs
INFO: Handling 2 trigger(s) that missed their scheduled fire-time.
[Timestamp] org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler
manage
SCHWERWIEGEND: MisfireHandler: Error handling misfires: Couldn't store
trigger
'OPEN_EJB_TIMEOUT_TRIGGER_GROUP.OPEN_EJB_TIMEOUT_TRIGGER_SchedulerBeanPersisted_1'
for 'OPENEJB_TIMEOUT_GROUP.OPENEJB_TIMEOUT_JOB' job:null
org.quartz.JobPersistenceException: Couldn't store trigger
'OPEN_EJB_TIMEOUT_TRIGGER_GROUP.OPEN_EJB_TIMEOUT_TRIGGER_SchedulerBeanPersisted_1'
for 'OPENEJB_TIMEOUT_GROUP.OPENEJB_TIMEOUT_JOB' job:null [See nested
exception: java.lang.NullPointerException]
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1212)
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.doUpdateOfMisfiredTrigger(JobStoreSupport.java:1026)
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.recoverMisfiredJobs(JobStoreSupport.java:975)
        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.TimerData.writeObject(TimerData.java:120)
        at sun.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
        at java.util.HashMap.writeObject(HashMap.java:1001)
        at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
        at
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
        at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
        at
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
        at
org.quartz.impl.jdbcjobstore.StdJDBCDelegate.serializeObject(StdJDBCDelegate.java:3011)
        at
org.quartz.impl.jdbcjobstore.StdJDBCDelegate.serializeJobData(StdJDBCDelegate.java:3036)
        at
org.quartz.impl.jdbcjobstore.StdJDBCDelegate.updateTrigger(StdJDBCDelegate.java:1168)
        at
org.quartz.impl.jdbcjobstore.JobStoreSupport.storeTrigger(JobStoreSupport.java:1207)
        ... 5 more

Having a look into TimerData.java shows that timeoutMethod seems to be null.

What must be done to get the programmtic timeout running?

Best regards,
Thomas



--
View this message in context: 
http://openejb.979440.n4.nabble.com/Use-external-database-for-persistent-timer-service-tp4658321p4658373.html
Sent from the OpenEJB User mailing list archive at Nabble.com.

Reply via email to