我在配置Tomcat - Spring Batch - Atomikos组合时遇到了麻烦 . 我已经配置了以下内容(我没有提到JMS配置)
-
Atomikos DataSource(代理)基于com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory for Oracle XA数据源 .
-
基于transactionManager的JtaTransactionManager基于com.atomikos.icatch.jta.J2eeTransactionManager userTransaction,基于com.atomikos.icatch.jta.J2eeUserTransaction
执行批处理作业时,我收到以下错误:
Caused by: java.lang.RuntimeException: Transaction Service Not Running?
at com.atomikos.icatch.jta.J2eeUserTransaction.checkSetup(J2eeUserTransaction.java:70)
at com.atomikos.icatch.jta.J2eeUserTransaction.getStatus(J2eeUserTransaction.java:125)
at org.springframework.transaction.jta.JtaTransactionManager.
isExistingTransaction(JtaTransactionManager.java:797)
Debugging revealed the following:
Spring Batch使用TaskletStep . 这个类使用一个用DataSourceTransactionManager实例化的PlatformTransactionManager?数据源指的是AtomikosDataSourceBean,看起来没问题 . 我有几个问题:
-
这个DataSourceTransactionManager来自哪里?我已经定义了一个JtaTransactionManager!
-
我认为AtomikosDataSourceBean就像一个连接到JtaTransactionManager的代理 . 为什么Atomikos会出现错误“交易服务未运行?”
Spring 季批次:2.1.8
Atomikos:3.9.3