4 Replies Latest reply on Dec 13, 2013 8:16 AM by Martin Kouba

    Handling exceptions in Quartz Threads

    Immo Benjes Newbie



      I've got a pool of 10 threads and a few Cron jobs. These cron jobs check several different FTP/SFTP or POP connections at different intervals for incoming messages, add them to a processing queue or process the actual messages from the queue.


      That all works fine until I get an exception in one of the threads e.g. DefaultQuartzScheduler_Worker-1 (in this case it was a ValidationException).

      After that the thread is broken and no transaction is active when it tries to access the database:


      15:30:06,231 WARN  [][][org.hibernate.engine.jdbc.spi.SqlExceptionHelper][SqlExceptionHelper] (DefaultQuartzScheduler_Worker-1) SQLSQL Error: 0, SQLState: null

      15:30:06,231 ERROR [][][org.hibernate.engine.jdbc.spi.SqlExceptionHelper][SqlExceptionHelper] (DefaultQuartzScheduler_Worker-1) javax.resource.ResourceException: IJ000460: Error checking for a transaction


      The cron jobs continue to work fine on the Threads DefaultQuartzScheduler_Worker-2 to DefaultQuartzScheduler_Worker-10 but whenever DefaultQuartzScheduler_Worker-1 is used it fails to do anything involving the database.


      How can I recover from that? I basically either want to remove that thread from the pool or 'repair' it.


      I've seen the chapter on Handling Async Exceptions in the Seam documentation using the org.jboss.seam.async.asynchronousExceptionHandler:

      Chapter 22. Asynchronicity and messaging


      That is probably the right place to start but what do I do there? How can I access the thread pool and remove one thread from it or repair it?


      I don't want to cancel the other cron jobs.


      Environment: Seam 2.3 with Quartz on JBoss EAP 6.1