2013-04-01 2 views
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) 

답변

0

아마도 많은 문제가 발생한 후이 문제는 SqlServer의 b/c가 메모리 부족으로 바뀌었을 가능성이 있습니다.

좀 momeory을 확보하기 위해이 명령을 시도

DBCC FREESYSTEMCACHE (‘ALL’) WITH MARK_IN_USE_FOR_REMOVAL;