トランザクションを開始したスレッド B が,スレッド A と同じトランザクションコンテキストで処理をするには
スレッド A で開始されたトランザクションコンテキストがだと思うのですが
それには,スレッド B でTransactionManager#resume(Transaction) を
呼び出す必要があり,その前にスレッド A でTransactionManager#suspend() を呼び出す必要があるとおもっています。
●ロジッククラス
-------------------------------------------------------------------------------------------------------------
public class RealizationBLogicImpl implements BLogic<String, RealizationJobContext> {
java.lang.IllegalStateException: Cannot deactivate transaction synchronization - not active
at org.springframework.transaction.support.TransactionSynchronizationManager.clearSynchronization(TransactionSynchronizationManager.java:274)
at org.springframework.transaction.support.TransactionSynchronizationManager.clear(TransactionSynchronizationManager.java:412)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion(AbstractPlatformTransactionManager.java:916)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:712)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632)
at main.java.jp.co.iij_tech.raptor.batch.condor.logic.RealizationBLogicImpl.execute(RealizationBLogicImpl.java:152)
at main.java.jp.co.iij_tech.raptor.batch.condor.logic.RealizationBLogicImpl.execute(RealizationBLogicImpl.java:1)
at jp.terasoluna.fw.batch.core.StandardBLogicExecutor.executeBLogic(StandardBLogicExecutor.java:103)
at jp.terasoluna.fw.batch.core.JobWorker.work(JobWorker.java:125)
at jp.terasoluna.fw.batch.core.JobWorker.work(JobWorker.java:67)
at jp.terasoluna.fw.batch.standard.QueueProcessor.process(QueueProcessor.java:109)
at jp.terasoluna.fw.batch.standard.RunnableQueueProcessor.run(RunnableQueueProcessor.java:98)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
at java.util.concurrent.FutureTask.run(FutureTask.java:123)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
-------------------------------------------------------------------------------------------------------------