在Seam中处理Quartz线程中的异常

时间:2013-12-11 11:07:18

标签: java jboss quartz-scheduler seam

我有一个包含10个线程和一些Cron作业的池。这些cron作业会以不同的时间间隔检查几个不同的FTP / SFTP或POP连接以获取传入消息,将它们添加到处理队列或处理来自队列的实际消息。

一切正常,直到我在其中一个主题中得到异常,例如DefaultQuartzScheduler_Worker-1(在这种情况下,它是ValidationException)。 之后,线程被破坏,并且在尝试访问数据库时没有事务处于活动状态:

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

cron作业继续在Threads DefaultQuartzScheduler_Worker-2上正常工作到DefaultQuartzScheduler_Worker-10但是每当使用DefaultQuartzScheduler_Worker-1时它都无法做任何涉及数据库的事情。

我该如何从中恢复?我基本上要么想从池中删除该线程,要么“修复”它。

我在使用org.jboss.seam.async.asynchronousExceptionHandler看到了Seam文档中处理异步异常的章节: 第22章异步性和消息传递:http://docs.jboss.org/seam/snapshot/en-US/html/jms.html

这可能是正确的开始,但我在那里做什么?如何访问线程池并从中删除一个线程或进行修复?

我不想取消cron工作。

环境:在JBoss EAP 6.1上使用Quartz进行接缝2.3

0 个答案:

没有答案