我正在使用同時使用JMS和Hibernate的獨立應用程序。Spring同步Hibernate和JMS事務
如果我希望跨兩種資源進行交易,則文檔建議使用JTA。
但是,現在用@Transaction註釋的DAO方法(和HibernateTransactionManager),這似乎已經工作。當我在JmsTemplate上調用send()時,不會立即發送消息,而是在方法返回時使用Hibernate會話提交JMS會話。
我不知道這是如何沒有JtaTransactionManager,所以我檢查了源代碼。事實證明,Hibernate的包裝器和JmsTemplate都使用TransactionSynchronizationManager註冊會話,並且在Hibernate會話提交時JMS會話將被提交。
這和JTA交易有什麼不同。我可以用它來代替後者嗎?
您是否檢查其中一個失敗時會發生什麼?他們兩個都回滾了嗎? –