Проблема UserTransaction в Java - PullRequest
       26

Проблема UserTransaction в Java

2 голосов
/ 30 сентября 2010

У меня есть существующий проект, который использует 2 базы данных (DB2), и записи, которые сохраняются в 2 базах данных, связаны между собой. Так что транзакции должны поддерживаться. Например, каждый раз, когда нужно добавить что-то новое, необходимо сделать записиx количество таблиц в базе данных 1 и y количество таблиц в базе данных 2.Теперь в ранее существовавшем коде (разработанном somone else) я вижу нечто вроде

UserTransaction utx = getTranscationU();  
//getTranscation() is a user defined method as show   below

public UserTransaction getTransactionU()  {
        InitialContext ic = new InitialContext();
        return (UserTransaction) ic.lookup("java:comp/XYZ");
    }

, поэтому в коде соблюдается следующая последовательность:

  1. start utx
  2. создание отдельных менеджеров сущностей ems для db1 и db2
  3. создание записей в обеих таблицах с использованием этого ems
  4. , если выбрасывается какое-либо исключение, тогда откат utx

сейчасу меня вопрос

  1. будет ли этот код проверять, введены ли записи как в дБ, так и ни в одну из них?
  2. Может ли кто-нибудь объяснить мне, что делает код внутри getTransactionU ()?
  3. где определяется XYZ?

1 Ответ

2 голосов
/ 30 сентября 2010
  1. Когда при инициализации UserTransaction оба менеджера сущностей используют источники данных, связанные с менеджером транзакций, все его операции будут включены в транзакцию. Транзакция должна быть XATransaction (распределенной), если вы обращаетесь к различным базам данных.
  2. Метод getTransactionU () обращается к каталогу именования контейнера Java EE через JNDI, где должен быть настроен менеджер транзакций.
  3. Это путь к диспетчеру транзакций, установленному на вашем сервере.
...