Spring автономная JMS + JDBC одиночная транзакция

1

В настоящее время у меня есть spring JMS listener который прослушивает EMS topic и получает сообщение, обрабатывая его и сохраняет его. Тем не менее, я хотел бы сделать все это в рамках одной транзакции. Я знаю, что это требует XA поскольку есть два глобальных ресурса, которые должны зарегистрироваться в Transaction Manager. Это может быть достигнуто благодаря JTA который обеспечивает пружина. Однако, поскольку мое приложение является автономным, мне нужно включить стороннюю JTA standalone реализацию, такую как Bitronix или JOTM. Я спрашиваю об этом, потому что, поскольку оба являются источниками ресурсов, JTA по умолчанию должен справиться с этим.

Теги:
spring
spring-jms

1 ответ

1
Лучший ответ

Да, вам нужно будет включить стороннюю реализацию TransactionManager, которая поддерживает XA.

Большинство серверов приложений, например JBoss, свяжут XA TransactionManager по своему выбору. Это одна из причин выбора ApplicationServer над чем-то вроде Tomcat или отдельного приложения; конфигурация таких вещей, как транзакции XA, в основном выполняется для вас.

Иногда ApplicationServer слишком тяжеловес (хотя я думаю, что это становится проблемой), или вы не можете его использовать. В этом случае вы несете ответственность за реализацию TransactionManager, если хотите использовать XA.

Вы можете выбрать из реализаций, таких как: JBossTS, Atomicos Transaction Essentials или Bitronix JTA.

Spring включает в себя реализацию JTATransactionManager. Это будет либо использовать предварительно настроенные местоположения, чтобы обнаружить выбранную реализацию XA, если вы работаете в ApplicationServer, или, альтернативно, вам нужно настроить ее самостоятельно, если вы находитесь в автономной среде.

Есть несколько отличных ресурсов при настройке XA TransactionManager с Spring:

  1. http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/
  2. http://www.javaworld.com/article/2077714/java-web-development/xa-transactions-using-spring.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню