티스토리 뷰
* 상황은 Spring MVC 3 환경의 Service 클래스에서 아래와 같이 서로 다른 dataSource를 가지는 DAO의 CRUD를 하나의 비즈니스 로직으로 여겨 트랜잭션 처리를 해야 한다.
aDAO.update();
anotherDAO.update();
* 기본적으로 Spring MVC 3에서 트랜잭션 처리는 하나의 dataSource를 대상으로만 이루어진다. 2개 이상의 dataSource에 대한 CRUD를 하나의 트랜잭션으로 처리할 수 있는 방법은 없을까?
* 구글링 결과 JTA를 사용해야 하며 transactionManager 클래스로 JtaTransactionManager 클래스를 이용하라고 한다. 이 클래스는 컨테이너에 종속성을 가지기 때문에 컨테이너마다 설정이 다르다고 한다.
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/comp/UserTransaction" />
</bean>
* 또는 아래와 같이 간단하게 한줄로 끝낼수도 있다.
<tx:jta-transaction-manager />
* 컨테이너가 Tomcat일 경우 /conf/context.xml 파일의 <Context> 엘러먼트 안에 아래 설정을 추가해야 한다.
<Transaction factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60" />
* 관련 링크
http://stackoverflow.com/a/7196375 (skaffman)
http://stackoverflow.com/a/5080761 (Darren)
http://blog.codecentric.de/en/2012/03/integration-of-a-transaction-manager-in-tomcat-for-spring-and-openjpa/ (Andreas Fritz)
- Total
- Today
- Yesterday
- MySQL
- Eclipse
- 자전거
- 태그를 입력해 주세요.
- node.js
- CentOS
- 평속
- JavaScript
- Kendo UI
- bootstrap
- chrome
- jstl
- Docker
- Tomcat
- 구동계
- spring
- kotlin
- maven
- DynamoDB
- java
- Kendo UI Web Grid
- Spring MVC 3
- 로드 바이크
- jsp
- 로드바이크
- jpa
- graylog
- 알뜰폰
- Spring Boot
- JHipster
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |