當前位置:編程學習大全網 - 源碼下載 - 多數據源 spring怎麽管理事務的

多數據源 spring怎麽管理事務的

在SpringSide 3 中,白衣提供的預先配置好的環境非常有利於用戶進行快速開發,但是同時也會為擴展帶來壹些困難。最直接的例子就是關於在項目中使用多個數據源的問題,似乎 很難搞。在上壹篇中,我探討了SpringSide 3 中的數據訪問層,在這壹篇中,我立誌要解決多數據源配置的難題,我的思路是這樣的:

第壹步、測試能否配置多個DataSource

第二步、測試能否配置多個SessionFactory

第三步、測試能否配置多個TransactionManager

第四步、測試能否使用多個TransactionManager,也就是看能否配置多個

基本上到第四步就應該走不通了,因為Spring中似乎不能配置多個,而且@transactional註解也無法讓用戶選擇具體使用哪個TransactionManager。也就是說,在SpringSide的應用中,不能讓不同的數據源分別屬於不同的事務管理器,多數據源只能使用分布式事務管理器,那麽測試思路繼續如下進行:

第五步、測試能否配置JTATransactionManager

如果到這壹步,項目還能順利在Tomcat中運行的話,我們就算大功告成了。但我總認為事情不會那麽順利,我總覺得JTATransactionManager需要應用服務器的支持,而且需要和JNDI配合使用,具體是不是這樣,那只有等測試後才知道。如果被我不幸言中,那麽進行下壹步:

第六步、更換Tomcat為GlassFish,更換JDBC的DataSource為JNDI查找的DataSource,然後配置JTATransactionManager

下面測試開始,先假設場景,還是繼續用上壹篇中提到的簡單的文章發布系統,假設該系統運行壹段時間後非常火爆,單靠壹臺服務器已經無法支持巨大的用戶數, 這時候,站長想到了把數據進行水平劃分,於是,需要建立壹個索引數據庫,該索引數據庫需保存每壹篇文章的Subject及其內容所在的Web服務器,而每 壹個Web服務器上運行的項目,需要同時訪問索引數據庫和內容數據庫。所以,需要創建索引數據庫,如下:

[java] view plain copy

create database puretext_index;

use puretext_index;

create table articles(

id int primary key auto_increment,

subject varchar(256),

webserver varchar(30)

);

第壹步測試,配置多個DataSource,配置文件如下:

application.properties:

[java] view plain copy

jdbc.urlContent=jdbc:mysql://localhost:3306/PureText useUnicode=true&characterEncoding=utf8

jdbc.urlIndex=jdbc:mysql://localhost:3306/PureText_Index useUnicode=true&characterEncoding=utf8

  • 上一篇:神武遊戲源代碼
  • 下一篇:構思是什麽意思?
  • copyright 2024編程學習大全網