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”:
最後貼上工程代碼的結構圖:
聲明:本文是我在項目實際業務開發之前搭建的架構,其中如出現一些敏感字,聲明不涉及版權問題。
貼出的配置,僅供大家學習。