Несколько единиц персистентности в одной транзакции
Я пытаюсь реализовать транзакцию с 2 различными базами данных.
В настоящее время у меня есть единица постоянства для каждой базы данных, и я хотел записать в таблицу A, которая существует в схеме SA, и записать в таблицу B в схеме SB, в той же транзакции.
Я использую weblogic и eclipselink.
Я немного искал, но не нашел примера использования нескольких единиц персистентности в одной транзакции.
Может кто-нибудь сказать мне правильный способ сделать это?
благодарю вас
1 ответ
Решение
Выяснилось, что это должно быть реализовано с использованием источников данных XA.
Каждый блок персистентности должен использовать источник данных XA, а затем принять участие в двухфазной фиксации.
Теперь у меня есть:
- 2 источника данных с драйвером: oracle.jdbc.xa.client.OracleXADataSource и учетные данные для входа в обе базы данных.
- каждая единица персистентности вызывается на фасаде ejb, а эти фасады ejb - на глобальной транзакции.