Spring не может откатить зафиксированный JDBC-статус.Это то, для чего нужны XADataSources и двухфазная фиксация (обычно через JTA TX manager).
Вы запрашиваете несогласованность данных, пытаясь справиться с этим самостоятельно, потому что это может работать, а может и не работать, в зависимости от того, что и когда не получается.Например, предположим, что этот поток:
- Start TX
- Работать с DS1
- Работать с DS2
- Конец TX
Если коммит на ds1 завершится неудачно, то ds2 останется зафиксированным.Но если фиксация на ds2 завершится неудачно, весь tx потерпит неудачу и ds1 откатится.
Кроме того, вы уверены, что всегда закрываете источники данных в том же порядке, в котором они были открыты (впервые использовались)?Весна может позаботиться об этом, но я не уверен.