ChainedTransactionManager를 이용한 글로벌트랜잭션
ChainedTransactionManager는 정말 획기적인 것 같다.
2pc의 글로벌트랜잭션을 하기 위하여 XA datasource를 이용하던지, 분산처리를 할 수 있는 오픈소스를 사용하여야만 하였다.
하지만 stand alone 에서도 또는 tomact에서! 아주 쉽게 2pc 처리를 할 수 가 있다.
즉, 글로벌 트랜잭션으로 묶을 수 가있다.
환경 : spring 3.1
tomcat 6.0
maven project
maven을 사용하고 있다면 아래의 jar파일을 우선적으로 가져와야한다.
# pom.xml 설정
dependencies에 아래와 같이 선언한다.
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j-tx</artifactId>
<version>2.1.0.RELEASE</version>
<exclusions>
<exclusion>
<artifactId>cglib</artifactId>
<groupId>cglib</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
<version>1.8</version>
</dependency>
# 데이터소스 설정
데이터소스는 dbcp로 설정!!
<!-- DataSource from DBCP -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${database.driver.ClassName}" />
<property name="url" value="${database.url}" />
<property name="username" value="${database.username}" />
<property name="password" value="${database.password}" />
</bean>
<bean id="dataSource_remote" class="org.apache.commons.dbcp.BasicDataSource">
블라~블라~
</bean>
# context 설정
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager"/>
-> proxy-target-class="true"는 class class 기반 일경우에 true~!!! Interface 기반이면 삭제 해도 무관하다 default가 false 이다!
<bean id="transactionManagerAcet"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionManagerAcetRemote"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource_remote" />
</bean>
<bean id="transactionManager" <--- 대표가 되는 트랜잭션 manager~!
class="org.springframework.data.neo4j.transaction.ChainedTransactionManager"
lazy-init="false">
<constructor-arg>
<list>
<ref bean="transactionManagerAcet" />
<ref bean="transactionManagerAcetRemote" />
</list>
</constructor-arg>
</bean>
괜찮은 것 같다.
- 끝 -