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