티스토리 뷰
* 상황은 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
- JHipster
- graylog
- 평속
- Docker
- maven
- kotlin
- chrome
- 로드 바이크
- jstl
- Spring MVC 3
- jpa
- jsp
- MySQL
- bootstrap
- JavaScript
- Spring Boot
- 자전거
- node.js
- 로드바이크
- java
- Eclipse
- Tomcat
- Kendo UI Web Grid
- 구동계
- spring
- 알뜰폰
- DynamoDB
- 태그를 입력해 주세요.
- Kendo UI
- CentOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |