Java Quartz Spring 交易支持

Java Quartz Spring transaction support

我需要在 Quartz 作业详细信息 bean 中编写数据库逻辑。我可以在没有任何明确声明的情况下这样做吗,或者如何正确地做到这一点以确保它在事务中运行?

最好举个例子,但我建议您只需将 @Transactional 添加到 运行 的方法中即可。应该可以了。

更多信息在这里: http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/annotation/Transactional.html

看来您想将 Quartz 作业执行包装在全局事务中,以符合对另一个数据库的某些事务操作。

根据 Quartz 文档 here,您基本上必须:

  • 使用 JobStoreCMT 或其子类作为 Quartz 作业存储(例如 Spring 中的 LocalDataSourceJobStore);
  • org.quartz.scheduler.wrapJobExecutionInUserTransaction设为真;
  • 在您自己的代码中以 JTA 方式管理事务。

通常,对于上面的最后一步,如果您使用 Spring,您可以简单地:

  • @Transactional标记job.execute()
  • 将两个事务管理器(Quartz 的和您自己的数据库的)链接在一起,就像 here;