선언적 트랜잭션이 동작하지 않습니다.
- 작성자 :
- 김*훈
- 작성일 :
- 2021-07-09 16:33:40
- 조회수 :
- 3,972
- 구분 :
- 적용지원(기술지원)
- 진행상태 :
- 완료
Q
https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:psl:transaction:declarative_transaction_management 주소의 가이드를 보고
선언적 트랜잭션을 적용했지만 Exception 상황에서 rollback되지 않습니다.
GenException은 Exception을 상속하는 사용자 정의 Exception입니다.
다음은 트랜잭션을 적용한 서비스패키지의 메소드입니다.
package org.abc.def.service;
클래스명 : MgmtServiceImpl
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class, GenException.class})
@Override
public BasicListResponse approveCertReq(int tid, LoginInfoVo loginInfo, ConfirmParamVo confirmData) throws GenException {
BasicListResponse res = new BasicListResponse();
try {
...
...
if(예외 조건) {
throw new GenException(ErrorCdoe.100,"message");
}
...
...
res.setState(BasicListResponse.STATE_SUCCESS);
} catch(GenException e) {
throw e;
} catch(Exception e) {
log.error("["+tid+"]ERROR:"+e.getMessage(), e);
res.setState(BasicListResponse.STATE_ERROR);
}
return res;
}
위와 같이 try-catch문 안에서 Exception이 발생했을 때 트랜잭션 rollback이 발생하지 않습니다.
설정 관련한 xml 파일 캡쳐 이미지 첨부드립니다.
선언적 트랜잭션을 적용했지만 Exception 상황에서 rollback되지 않습니다.
GenException은 Exception을 상속하는 사용자 정의 Exception입니다.
다음은 트랜잭션을 적용한 서비스패키지의 메소드입니다.
package org.abc.def.service;
클래스명 : MgmtServiceImpl
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class, GenException.class})
@Override
public BasicListResponse approveCertReq(int tid, LoginInfoVo loginInfo, ConfirmParamVo confirmData) throws GenException {
BasicListResponse res = new BasicListResponse();
try {
...
...
if(예외 조건) {
throw new GenException(ErrorCdoe.100,"message");
}
...
...
res.setState(BasicListResponse.STATE_SUCCESS);
} catch(GenException e) {
throw e;
} catch(Exception e) {
log.error("["+tid+"]ERROR:"+e.getMessage(), e);
res.setState(BasicListResponse.STATE_ERROR);
}
return res;
}
위와 같이 try-catch문 안에서 Exception이 발생했을 때 트랜잭션 rollback이 발생하지 않습니다.
설정 관련한 xml 파일 캡쳐 이미지 첨부드립니다.
환경정보
-
- OS 정보 : Mac OS (bigsur)
- 표준프레임워크 버전 : eGovFrameDev-3.10.0
- JDK(JRE) 정보 : 1.8
- WAS 정보 : apache-tomcat-8.5.50
- DB 정보 : mysql
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터 입니다.
기재하신 내용으로는
별다른 문제가 없어 보입니다.
정상적으로 구동되는
교육환경 샘플을 다운로드 받으셔서
테스트 해보시면 좋을듯 합니다.
https://www.egovframe.go.kr/home/sub.do?menuNo=65
lab205-mybatis-tutor 프로젝트에
EmpServiceTest.java 파일을 확인해 보시면
트랜젝션 관련 예제를 확인해 보실수 있습니다.
감사합니다.
표준프레임워크센터 입니다.
기재하신 내용으로는
별다른 문제가 없어 보입니다.
정상적으로 구동되는
교육환경 샘플을 다운로드 받으셔서
테스트 해보시면 좋을듯 합니다.
https://www.egovframe.go.kr/home/sub.do?menuNo=65
lab205-mybatis-tutor 프로젝트에
EmpServiceTest.java 파일을 확인해 보시면
트랜젝션 관련 예제를 확인해 보실수 있습니다.
감사합니다.