2015/06/05

XA, JTA, Atomikos and Spring


  • [번역]JTA와 XA, 그리고 Atomikos
  • Atomikos 3.7 - Spring3.1 - Tomcat7 Integration
  • 스프링(Spring) 3.2 + Atomikos 3.8.0 + Tomcat 7로 분산트랜젝션 구성하기
  • [Spring 3 - Transaction] JTA를 이용한 글로벌/분산 트랜잭션
  • Understanding Java EE Support
  • Atomikos Spring integration
  • JAVA 애플리케이션을 XA 구성 하기 위해서는 DBMS부터 XA 설정이 되어야 하는데, MS-SQL SERVER의 경우 XA 구성은 JDBC 드라이버에 설정 파일들이 포함되어 있다. CPU 아키텍처 별로 sqljdbc_xa.dll 파일을 구분하여 SQL SERVER INSTANCE가 설치 되어 있는 BINN 폴더로 복사를 해야하고, xa_install.sql 파일의 스크립트를 실행해서 XA user와 권한을 등록해야 한다. 또한 Windows OS에서도 설정을 해야 하는데 제어판 > 관리도구 > 구성 요소 서비스(Component Service) > 컴퓨터 >> Local DTC 속성 > 보안 탭 > XA 트랜잭션 사용 체크를 반드시 해야 한다. JDBC Connection URL을 확인 SQL-SERVER의 경우 ClassName을 com.microsoft.sqlserver.jdbc.SQLServerXADataSource라고 지정해줘야한다. 오라클도 마찬가지. XA 클래스네임을 반드시 확인하자.
  • Understanding XA Transactions
  • Spring application-context 설정
    <bean id="eslDataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
        <property name="uniqueResourceName" value="mssql" />
        <property name="xaDataSourceClassName" value="#{db['esl.driverClassName']}" />  
        <property name="xaProperties">
            <props>
                <prop key="user">#{db['esl.username']}</prop>
                <prop key="password">#{db['esl.password']}</prop>
                <prop key="URL">#{db['esl.url']}</prop>
            </props>
        </property>
        <property name="testQuery" value="Select 1" />
        <property name="minPoolSize" value="10" />
        <property name="maxPoolSize" value="10" />
    </bean>
    
    <bean id="AtomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
        <property name="forceShutdown" value="false" />
    </bean>
     
    <bean id="AtomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
        <property name="transactionTimeout" value="300" />
    </bean>
     
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
        <property name="transactionManager" ref="AtomikosTransactionManager" />
        <property name="userTransaction" ref="AtomikosUserTransaction" />
    </bean>

    댓글 없음:

    댓글 쓰기