Complete - task 70: Parallel job transactions

This commit is contained in:
dsyer
2008-01-24 13:23:22 +00:00
parent d8da44cc92
commit 3f6f0a94e7
2 changed files with 7 additions and 2 deletions

View File

@@ -24,6 +24,7 @@ import org.springframework.jdbc.support.lob.LobHandler;
import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationAdapter;
import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.util.Assert;
public class StagingItemReader extends JdbcDaoSupport implements ItemReader, ResourceLifecycle, DisposableBean,
StepContextAware {
@@ -75,7 +76,6 @@ public class StagingItemReader extends JdbcDaoSupport implements ItemReader, Res
if (keys == null) {
keys = retrieveKeys().iterator();
logger.info("Keys obtained for staging.");
registerSynchronization();
initialized = true;
}
}
@@ -152,6 +152,8 @@ public class StagingItemReader extends JdbcDaoSupport implements ItemReader, Res
getBuffer().add(next);
key = next;
logger.debug("Retrieved key from list: " + key);
Assert.state(TransactionSynchronizationManager.getSynchronizations().contains(synchronization),
"Appropriate transaction synchronization not registered for this thread.");
}
}
}
@@ -165,6 +167,7 @@ public class StagingItemReader extends JdbcDaoSupport implements ItemReader, Res
private StagingBuffer getBuffer() {
if (!TransactionSynchronizationManager.hasResource(BUFFER_KEY)) {
TransactionSynchronizationManager.bindResource(BUFFER_KEY, new StagingBuffer());
registerSynchronization();
}
return (StagingBuffer) TransactionSynchronizationManager.getResource(BUFFER_KEY);
}
@@ -233,10 +236,12 @@ public class StagingItemReader extends JdbcDaoSupport implements ItemReader, Res
}
public void rollback() {
logger.debug("Resetting buffer on rollback: " + list);
iter = new ArrayList(list).iterator();
}
public void commit() {
logger.debug("Clearing buffer on commit: " + list);
list.clear();
iter = new ArrayList().iterator();
}