2013-08-25 3 views
1

Я задаю этот вопрос, потому что я не нашел хорошую статью о Google, которая охватывает хотя бы половину моего вопроса. Я новичок в транзакциях и надеюсь получить ответ, который кратко раскрывает основные трудности в мире Java EE, связанные с транзакциями XA.Проблемы с Java и XA-транзакциями

Мои вопросы

  1. Каковы общие трудности с XA транзакций в Java.
  2. Каковы трудности с транзакциями XA во время интеграции с различными инфраструктурами (самой популярной Java EE)? Например, если первая БД работает через Hibernate, а вторая - через MyBatis, возникает ли проблема в настройке транзакций XA?
  3. Что относительно транзакций XA для нескольких поставщиков баз данных? Например, первый db - PostgreSQL, второй - H2.
  4. Возможно, другие проблемы?
  5. Что относительно Весны и Спящего режима?

P.S.

Я не ожидаю, что кто-то сразу ответит на все вопросы выше. Если вы можете дать ответ на один вопрос или даже дать несколько интересных ссылок, пожалуйста, добро пожаловать!

+2

Это пять вопросов, поэтому он слишком широк. – Beryllium

+0

Начните делать что-то вместо того, чтобы воображать все проблемы, с которыми вы можете столкнуться, и если вы столкнулись с проблемой, вернитесь сюда. Это не место, чтобы задавать такие неопределенные вопросы. –

ответ

1

Я использую XA в производстве, и вот мой опыт.

  • Имея распределенные транзакции добавляет значительную сложность управления транзакциями: это труднее контролировать то, что происходит, когда ТЕ имеют несколько участников, это труднее иметь дело с ошибками и восстановлением (2 фазы фиксации может дать сбой и оставить сделки " сомнительно »), сложнее правильно настроить (оптимизация распределенных tx не стандартизирована, например, последняя оптимизация участника), и, наконец, сложнее протестировать. Учитывайте все это, прежде чем идти этим путем.

  • Контейнер абстрактных соединений пула за «источником данных». Если вы настроите инфраструктуру стойкости на использование правильного источника данных XA, она будет участвовать в распределенном tx. Тем не менее, системы настойчивости полагаются на концепцию сеанса для кэширования изменений данных. Обычно вы не контролируете ситуацию, когда все происходит в реальной транзакции. Кроме того, с помощью кэша, в структурах стойкости необходимо зарегистрировать крючок, чтобы сбросить изменения в кеш при совершении транзакции. С распределенными транзакциями проблемы упорядочения событий и согласованности кэша усложняются.

Если вы можете, не используйте XA.

Смежные вопросы