天天看點

SpringMVC+MyBatis+JMS+JTA(分布式事務)

springmvc+mybatis 相信已經是現在企業開發中常用技術了。

因為一些需求,我們需要內建jms(我使用的是activemq),大家應該都知道,mq也可以認為是一個資料源,資料也是資料源。這種情況下,如果我們在一個方法内操作jms和資料庫,我們就需要保證這個方法執行需要滿足原子性。

這也就意味這一個問題,我們要多個資料源在同一個事務中。這裡不枚舉市面上的所有解決方案,其實atomikos jta 是一個比較不錯分布式事務管理器。

當然如果沒有使用到jms,在需要多資料源(也就是需要連接配接多個資料庫)的情況同樣适用。

下面将項目的主要配置貼出來共享:

1、applicationcontext.xml

2、applicationcontext-service.xml

3、activemq-xa.xml

4、spring-mvc.xml

5、config.properties

6、web.xml

7、把log4j.xml 也貼出來吧,興許有的同學能用上

對需要使用資料庫資料源的方法使用 @transactional 注解即可,在配置上,jms的事務我們已經在配置檔案中指定了。如下代碼中指定的 transaction-manager=”jtatransactionmanager”:

最後貼上工程代碼的結構圖:

SpringMVC+MyBatis+JMS+JTA(分布式事務)

聲明:本文是我在項目實際業務開發之前搭建的架構,其中如出現一些敏感字,聲明不涉及版權問題。

貼出的配置,僅供大家學習。