JTA 2PC - с несколькими источниками данных - PullRequest
0 голосов
/ 06 сентября 2011

Я новичок в JTA и пытаюсь реализовать JTA 2 pc. В бизнес-методе

Я хочу, если fun1 не сработает, тогда fun3 должен, но его не происходит.

@Transactional
fun(){

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

У меня были следующие вещи.

  1. Создать источник данных как. У меня есть несколько источников данных

    <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> 
    
  2. с единицей персистентности типа JTA

  3. созданный entityAMangerFactory с использованием вышеуказанного блока dataSource и Persistence 4. получение объекта javax.transaction.TransactionManager и Usertransaction с сервера и настройка Spring JTA для аннотации

  4. Наличие класса бизнес, который аннотируется как транзакционный.

1 Ответ

0 голосов
/ 06 сентября 2011

Убедитесь, что у вас есть драйверы типа XA для каждой базы данных, которая участвует в двухфазной фиксации; в противном случае это не сработает.

Как вы это тестируете? У вас есть фиктивная версия DAO1, которая выдает исключение?

...