我有兩個java應用程序:其中一個插入記錄到表1。 第二個應用程序先讀取N個項目並將其刪除。 當第一個應用程序插入數據密集型時,第二個失敗,當我嘗試刪除任何CannotSerializeTransactionException行時。我沒有看到任何問題:只有在插入事務完成時,插入的項目纔會在選擇/刪除中可見。我該如何解決它?謝謝。插入期間數據庫刪除失敗
TransactionTemplate tt = new TransactionTemplate(platformTransactionManager);
tt.setIsolationLevel(Connection.TRANSACTION_SERIALIZABLE);
tt.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
List<Record> records = getRecords(); // jdbc select
if (!records.isEmpty()) {
try {
processRecords(records); // no database
removeRecords(records); // jdbc delete - exception here
} catch (CannotSerializeTransactionException e) {
log.info("Transaction rollback");
}
} else {
pauseProcessing();
}
}
});
pauseProcessing() - 睡眠
public void removeRecords(int changeId) { String sql = "delete from RECORDS where ID <= ?";
getJdbcTemplate().update(sql, new Object[]{changeId});}
您可能需要顯示您正在使用哪些代碼來幫助人們 – 2010-09-06 14:32:05
您如何控制交易?你的兩個應用程序在同一個容器中運行嗎? – rsilva4 2010-09-06 14:36:30
不,應用程序是分開的:第一個是基於tomcat的webservice,第二個是在另一個服務器上運行的java standalone – alex543 2010-09-06 14:38:48