2

Tomcat – Spring Batch – Atomikos の組み合わせの構成に問題があります。以下を構成しました(JMS構成については言及していません)

  • Oracle XA データソース用の com.atomikos.tomcat.EnhancedTomcatAtomikosBeanFactory に基づく Atomikos DataSource (プロキシ)。

  • com.atomikos.icatch.jta.J2eeTransactionManager に基づく transactionManager に基づく JtaTransactionManager com.atomikos.icatch.jta.J2eeUserTransaction に基づく userTransaction

バッチ ジョブを実行すると、次のエラーが表示されます。

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)

デバッグにより、次のことが明らかになりました。

Spring Batch は TaskletStep を利用します。このクラスは、DataSourceTransactionManager でインスタンス化された PlatformTransactionManager を使用しますか? データソースは AtomikosDataSourceBean を参照していますが、問題ないようです。いくつか質問があります:

  • この DataSourceTransactionManager はどこから来たのですか? JtaTransactionManager を定義しました!
  • AtomikosDataSourceBean は、JtaTransactionManager に接続するためのプロキシのように機能すると思いました。Atomikos に「トランザクション サービスが実行されていません」というエラーが表示されるのはなぜですか?</li>

春のバッチ: 2.1.8

アトミコス: 3.9.3

4

0 に答える 0