0
Java 봄 Microsoft SQL Server 2005 - 9.00.4035.00 (X64) 11 월 24 일 2008 16:17:31 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition 윈도우 NT 5.2 (64 비트) (3790 빌드 : 서비스 팩 2)Java 스프링 트랜잭션이 롤백 할 수 없습니다. 연결 개체가 닫혀있는 잘못된 상태입니다.
을 일반적으로 매우 잘
<tx:advice id="TxAdvice" transaction-manager="TransactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="java.lang.Throwable"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor pointcut="execution(* com.rdc.*.*Dao.*(..))" advice-ref="TxAdvice"/>
</aop:config>
작동하는 다음 그러나 다음과 같은 방법을 실행하는 동안 내가 이상한 상황을 발견 나는 트랜잭션 관리자를 사용하고 2 번째 줄에서 데이터베이스 잠금이 발생하고 sqlserver 2008에서 데이터베이스 잠금 시간이 초과되고 문 1 레코드가 롤백되는 대신 영구적으로됩니다. 따?
public void linkDao(){
insert(); // 1
update(); // 2
delete(); // 3
}
StackTrace: org.springframework.transaction.TransactionSystemException: Could not roll back JDBC transaction; nested exception is java.sql.SQLException: Invalid state, the Connection object is closed.
at org.springframework.jdbc.datasource.DataSourceTransactionManager.doRollback(DataSourceTransactionManager.java:279)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:823)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:800)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:339)