Spring JMS 2-phase-commit в java SE
Я не работаю под Java EE.
Я хочу иметь транзакцию XA с использованием Spring для разделения транзакции между БД и JMS.
Предоставляет ли Spring такую функциональность или я должен использовать внешний диспетчер транзакций, такой как Atomikos?
В настоящее время я использую DataSourceTransactionManager для БД, и я вижу, что я также могу использовать JMSTransactionManager. Они работают вместе? Не ясно из документации, так как упоминается JtaTransactionManager.
Пожалуйста, порекомендуйте.
Яир
2 ответа
Spring предоставляет только основу для управления транзакциями, поэтому он не предоставляет никакого менеджера транзакций. Если вы запускаете свое приложение вне контейнера Java EE и вам нужна транзакция между ресурсами, такими как БД и JMS, вы должны использовать внешний TransactionManager, такой как Atomikos или JOTM (Java Open Transaction Manager).
Вы можете обратиться к http://www.javaworld.com/javaworld/jw-04-2007/jw-04-xa.html за более подробной информацией о XA с использованием Spring.
Они локальные, но Spring поддерживает XA (см. этот пост для объяснения и примера кода): http://blog.springsource.com/2011/08/15/configuring-spring-and-jta-without-full-java-ee/