JobStore持久化(第二篇)
12.使用JobStoreCMT持久化
之前讲的JobStoreTX中的大部分配置,都是适用于JobStoreCMT。
JobStoreCMT被设计用来参与到容器的事务边界内。这意味着容器创建一个JTA事务并使之对于JobStore可用。Quartz与JobStore的交互保持在这个事务中。假如出现问题,Quartz,Quartz 能给容器一个信号,它希望通过调用事物的 setRollbackOnly() 使事物回滚。
12.1 配置使用JobStoreCMT
首先告知Quartz使用JobStoreCMT来持久化
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreCMT
12.3 配置DriverDelegate
参考上面讲的JobStoreTX.
13.为JobStoreCMT配置数据源
与JonStoreTX一样,这里也需要一个DataSource才可以使用JobStoreCMT,但是JobStoreCMT需要两个数据源,而不是一个。
问:为什么JobStoreCMT需要两个Dataspurce呢??
答:JobStoreCMT 的原始作者,Jeffrey Wescott,设计 JobStoreCMT 使用一个标准的 JDBC 连接来做它“自己的工作”,同时,代表客户端(如部署 Job) 的工作在执行时是使用一个在容器控制之下有自身事物的 JDBC 连接。即使 Quartz 处在一个大事物中,这种设计也允许用户与 Quartz 交互,而无需 JobStoreCMT 非得使用应用服务器的事物管理器(例如,经由 Us