자료실 샘플소스 멀티 DataSource 트랜젝션 관련 다시 문의드립니다
- 작성자 :
- 정*진
- 작성일 :
- 2014-09-29 10:04:32
- 조회수 :
- 768
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
기본 샘플로 테스트해 봤을경우 어느쪽도 rollback이 안됩니다..
public void insertDept(DeptVO deptVO) throws Exception {
// 부서번호(deptNo) 자동생성
String deptNo = egovIdGnrService.getNextStringId();
deptVO.setDeptNo(deptNo);
deptMapper.insertDept(deptVO);
throw new Exception("Exception!");
}
확인 부탁드립니다.
감사합니다.
public void insertDept(DeptVO deptVO) throws Exception {
// 부서번호(deptNo) 자동생성
String deptNo = egovIdGnrService.getNextStringId();
deptVO.setDeptNo(deptNo);
deptMapper.insertDept(deptVO);
throw new Exception("Exception!");
}
확인 부탁드립니다.
감사합니다.
A
안녕하세요. 정재진님.
해당 예제를 확인한 결과, 다중 DataSource 사용에 대한 부분 설명을 위하여 transaction 설정이 되어 있지 않은 상태여서 발생된 것 같습니다.
1.
해결 방법은 다음과 같은 transaction 설정을 src/main/resources/META-INF/spring/context-transaction.xml 파일을 생성하셔서 추가하시면 되실 것 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx" expression="execution(* egovframework..*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" />
</aop:config>
</beans>
2. dataSource 지정은 여러 dataSource 중 transaction 관리를 원하시는 dataSource를 지정하시면 되실 것 같습니다.
3. /ex-MultiDataSource/src/main/webapp/WEB-INF/spring/dispatcher-servlet.xml 에서
<context:component-sacn> 설정 부분에 다음을 추가해주십시오.
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
그럼, 즐거운 하루되십시오.
감사합니다.
해당 예제를 확인한 결과, 다중 DataSource 사용에 대한 부분 설명을 위하여 transaction 설정이 되어 있지 않은 상태여서 발생된 것 같습니다.
1.
해결 방법은 다음과 같은 transaction 설정을 src/main/resources/META-INF/spring/context-transaction.xml 파일을 생성하셔서 추가하시면 되실 것 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="requiredTx" expression="execution(* egovframework..*Impl.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="requiredTx" />
</aop:config>
</beans>
2. dataSource 지정은 여러 dataSource 중 transaction 관리를 원하시는 dataSource를 지정하시면 되실 것 같습니다.
3. /ex-MultiDataSource/src/main/webapp/WEB-INF/spring/dispatcher-servlet.xml 에서
<context:component-sacn> 설정 부분에 다음을 추가해주십시오.
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
그럼, 즐거운 하루되십시오.
감사합니다.