2011-09-06 3 views
0

와 나는 JTA에 새로운 오전 그리고 난 fun1 다음 fun3도하지만이 일이 안 실패하면 내가 원하는 JTA이 PC .IN 비즈니스 방법JTA 2PC는 - 여러 데이터 소스

을 구현하기 위해 노력하고 있습니다.

@Transactional 
fun(){ 

testDao1.fun1(); 
testDao2.fun3(); 
} 

다음과 같은 것들이 있습니다. .I는 JTA 유형의를 4.getting 위의 데이터 소스는 및 지속성 부 를 사용

  • 생성 entityAMangerFactory이다 퍼시스턴스 유닛을 갖는 다수의 데이터 소스를

    <bean id="dataSource" class="org.apache.commons.dbcp.managed.BasicManagedDataSource" 
        destroy-method="close"> 
        <property name="driverClassName" value="org.postgresql.xa.PGXADataSource" /> 
        <property name="url" value="${database.interimws.email.url}" /> 
        <property name="username" value="${database.interimws.email.username}" /> 
        <property name="password" value="${database.interimws.email.password}" /> 
        <property name="defaultAutoCommit" value="false" />   
        <property name="maxActive" value="${database.maxactive}" /> 
        <property name="maxIdle" value="${database.maxidle}" /> 
        <property name="maxWait" value="${database.maxwait}" /> 
    </bean> 
    
  • 가지고

    1. 소스 만들기 서버의 javax.transaction.TransactionManager 및 Usertransaction 객체 및 주석 용 spring jta 구성

    2. 트랜잭션으로 주석 처리 된 bussiness 클래스가 있습니다.

  • +0

    어떤 서버를 사용하고 있습니까? – beny23

    답변

    0

    2 단계 커밋에 참여하는 모든 데이터베이스에 대해 XA 유형 드라이버가 있어야합니다. 그렇지 않으면 작동하지 않습니다.

    어떻게 테스트하나요? 예외를 던지는 DAO1 모의 버전이 있습니까?

    +0

    응답 해 주셔서 감사합니다. oracle.jdbc.xa.client.OracleXADataSource 및 org.postgresql.xa.PGXADataSource를 사용하고 있습니다. 두 가지 모두 XA 유형 –

    +0

    입니다. 설명해 주셔서 감사합니다. – duffymo

    +0

    그리고 testDao1.fun1() falis testDao2.fun3()이 롤백되지 않을 때 기대되는 결과가 나오지 않습니다. BasicManagedDataSource defaultAutoCommit = false로 설정하십시오. –

    관련 문제